note

nDPI

nDPI : Open-Source High-Speed Deep Packet Inspection pdf

논문을 다 읽고 나니 ntop을 만든 곳에서 만든 거라는 걸 알게 되었다.

기존에 존재하는 OpenDPI가 개발자가 상용화로 방향을 바꿔 더 이상 관리가 되지 않아 이를 개량한 것이 nDPI라고.
철저하게 open source로 개발하고, OpenDPI가 제공하지 않는 meta data extraction도 제공한단다. Open source로 개발하는 이유는 DPI 특성상 계속해서 라이브러리의 개량이 필요한데 한 두 사람이 할 수 있는 일이 아니라고 생각했기 때문이라고. 물론 상용화를 해서 그 일만 담당하는 직원이 있어도 가능하겠지만, 현실적으로 기존에 존재하는 major vendor와의 경쟁을 생각하면 그리 쉬운 일은 아닐 거다. 기존 업체가 제공하지 않는 기능을 제공하거나 정확도 혹은 성능이 좋은 제품을 제공하면서 동시에 많은 protocol을 인식해야 할 텐데 그럴려면 많은 투자가 필요한데 기능, 성능의 우수성은 차지하고 protocol 개수는 닭과 달걀의 문제가 될 수 있다. 그런 면에서 open source로 개발한 것은 좋은 판단이라고 생각되는데 nDPI를 이용한 reference system의 발굴이 더욱 중요하다.

DPI is a time-consuming activity as protocols (in particular P2P) change quite often. This means that it’s necessary to update the code from time to time and add extensions. We would encourage anyone out there to help us adding or enhancing new protocols: we will put your contributions on our SVN and make them available to everyone free of charge. In fact the main reason why we decided to go for nDPI instead of using the original library, is that the company behind OpenDPI has never replied to our offers to merge the extensions we coded onto the original source code

C로 작성되어 있고, core library와 plugin dissector로 구성되어 있다(Wireshark과 유사한 구조. Wireshark도 지속적으로 추가될 프로토콜을 지원하기 위해 이런 구조를 가지고 있다)

OpenDPI가 가졌던 non-thread safe 구조를 개선해서 많은 global 변수 등을 제거했다고.

동적으로 configuration을 변경할 수 있어 동작 중에도 protocol header만으로 판단할 수 있는 경우를 손쉽게 추가할 수 있다고(반면 OpenDPI는 모든 지원 프로토콜은 dissector를 가져야 한다고 가정해서 새로운 프로토콜을 지원하려면 무조건 라이브러리를 변경해야 했다고. 반면 nDPI는 configuration을 통해 TCP/port-X는 protocol Y와 같이 추가할 수 있다고)

nDPI는 linux kernel 혹은 user-space application으로 사용할 수 있음.

잘 알려진 UDP 기반 프로토콜 – DNS, NetFlow 그리고 SNMP등은 1개 패킷만으로 판단이 가능하지만, BitTorrent는 8개 가량의 패킷이 필요했다고

HTTPS의 경우 초반에 SSL 동작에 필요한 initial key exchange를 분석해서 판단한다고. 이때 접근하는 서버의 이름을 통해 대략적인(?) 서비스를 추정한다고.

The trend of Internet traffic is going towards encrypted content often using SSL. In order to let nDPI support encrypted connections, we have added a decoder for SSL (both client and server) certificates, thus we can figure out the protocol using the encryption certificate. This allows us to identify protocols such as Citrix Online and Apple iCloud that otherwise would be undetected.

필요한 경우 IP 기반의 검출도 수행. iTunes나 iMessages는 Apple이 소유한 IP주소의 서버로 메시지를 보내므로 이 정보를 활용

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s