TopGit
Đánh giá repo GitHub

nDPI: Deep Packet Inspection Library Mã Nguồn Mở

ntop/nDPI
NTopGit review image for ntop/nDPI
Review by Topgit.dev for ntop/nDPI, with GitHub repository stats and README context.
Nhận định nhanh

nDPI là library mã nguồn mở của ntop để nhận diện protocol ứng dụng trong network traffic, theo giấy phép LGPL-3.0. Đây là library C dùng để nhúng vào mã nguồn của bạn, không phải ứng dụng hoàn chỉnh, và README thừa nhận phát hiện không đảm bảo chính xác tuyệt đối. Hãy dùng nếu bạn xây công cụ giám sát hoặc chặn traffic bằng C; bỏ qua nếu bạn muốn dashboard traffic dựng sẵn, vì vai trò đó thuộc về ntopng hoặc nProbe cento.

Sao
★ 4.7k
Fork
⑂ 1.0k
Người đóng góp
👥 203
Ngôn ngữ
C
Giấy phép
LGPL-3.0
Chủ đề
Security
Cập nhật
Oct 2026
Trang chủ
GitHub

Tìm Hiểu nDPI: Một Library Deep Packet Inspection

nDPI, được ntop xây dựng và duy trì, là một library deep packet inspection viết bằng C, theo giấy phép LGPLv3. Nó phân loại network traffic theo protocol và có quy trình để thêm dissector mới — đăng ký một protocol ID, viết hàm phát hiện trong src/lib/protocols/, rồi gắn nó vào các struct trạng thái flow. ntopng và nProbe cento nhúng nDPI để xử lý kết quả phân loại đó.

Năng Lực Cốt Lõi Trong Phát Hiện Protocol Mạng

  • ✓Phát hiện protocol ứng dụng bên trong network traffic bằng deep packet inspection, đúng như các topic của repo (cybersecurity, deep-packet-inspection, dpi, network, traffic-analysis).
  • ✓Có thể biên dịch riêng library bằng cờ --with-only-libndpi, để nhúng mà không kéo theo các công cụ và bộ kiểm thử mẫu đi kèm.
  • ✓Hỗ trợ build ngoài cây thư mục nguồn (mkdir build && cd build && ../configure && make) song song với luồng build chuẩn ./autogen.sh && ./configure && make.
  • ✓Có ba điểm chạy kiểm thử riêng biệt: ./tests/do.sh cho kiểm thử hồi quy theo file PCAP, ./tests/do-unit.sh cho kiểm thử đơn vị, và ./tests/do-dga.sh cho phát hiện DGA (domain-generation-algorithm), tất cả chạy được cùng lúc bằng make check.
  • ✓Có quy trình được đánh số, gồm mười hai bước, để thêm một dissector protocol mới, từ việc đăng ký protocol ID trong ndpi_protocol_ids.h đến cập nhật doc/protocols.rst.
  • ✓Có thể build kèm hỗ trợ nBPF tùy chọn bằng cách clone thêm dự án PF_RING riêng của ntop, cần thiết để chạy toàn bộ bộ kiểm thử đơn vị với PCRE2.
  • ✓Build được trên Linux, FreeBSD, macOS, và Windows (qua MSYS2, Mingw-w64, hoặc Visual Studio với windows/nDPI.sln), riêng Windows cần npcap ở chế độ tương thích WinPcap.
  • ✓Có nền tảng từ một bài báo được bình duyệt tại IWCMC 2014 của Deri và cộng sự về phát hiện gói tin tốc độ cao, cùng nhiều buổi trình bày hội nghị công khai từ 2017 đến 2025.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao ↗

Biên Dịch Và Cài Đặt nDPI Trên Nhiều Nền Tảng

Biên dịch nDPI từ mã nguồn bắt đầu bằng ./autogen.sh && ./configure, rồi đến make; nếu build lỗi tại croaring.c, hãy cấu hình lại với --enable-old-croaring. Thêm cờ --with-only-libndpi vào configure sẽ chỉ build library, bỏ qua các công cụ và bộ kiểm thử đi kèm, và dự án cũng hỗ trợ build ngoài cây thư mục nguồn (mkdir build && cd build && ../configure && make). Biên dịch cần bộ công cụ GNU chuẩn (autoconf, bison, flex, automake, libtool, pkg-config, và gettext) cùng gcc hoặc Clang. Trên Debian/Ubuntu, danh sách gói cần cài gồm libjson-c-dev, libnuma-dev, libpcap-dev, librrd-dev, libmaxminddb-dev, và libpcre2-dev, còn Arch Linux và FreeBSD mỗi hệ có danh sách gói riêng trong README (FreeBSD dùng gmake, không phải make). macOS cài các gói phụ thuộc tương tự qua Homebrew. Windows có ba đường build: MSYS2, Mingw-w64, hoặc Visual Studio qua windows/nDPI.sln, và cả ba đều cần cài npcap ở chế độ tương thích WinPcap. Để chạy bộ kiểm thử, dùng ./tests/do.sh cho kiểm thử hồi quy PCAP, ./tests/do-unit.sh cho kiểm thử đơn vị, và ./tests/do-dga.sh cho kiểm thử phát hiện DGA, hoặc chạy tất cả cùng lúc bằng make check.

Tích Hợp nDPI Để Phân Tích Và Chặn Traffic

nDPI không tự giám sát hay chặn traffic; đây là một library bạn nhúng vào ứng dụng, và README nói rõ bước nhúng này là bắt buộc để dùng được kết quả của nó. Để chặn traffic được chọn, một ứng dụng gọi vào logic phân loại của nDPI trong lúc xử lý gói tin, rồi tự áp dụng quyết định lọc dựa trên protocol mà nDPI trả về. Các công cụ của chính ntop theo đúng mô hình này: ntopng và nProbe cento đều nhúng nDPI để biến luồng gói tin thô thành khả năng giám sát và chặn có nhận biết protocol. Nếu bạn đang mở rộng phạm vi phát hiện thay vì chỉ dùng nó, README cũng ghi lại quy trình dựng tài liệu (pip install -r doc/requirements.txt, rồi make doc, và make doc-view để xem thử ở máy local) sau khi bạn thêm hoặc sửa một dissector.

Điểm mạnh

  • ✓Giấy phép LGPL-3.0 cho phép bạn nhúng nDPI vào ứng dụng độc quyền mà không phải mở mã nguồn của chính bạn, khác với các lựa chọn chỉ có GPL.
  • ✓Có quy trình cụ thể, từng bước để thêm dissector protocol mới, thay vì để người đóng góp tự dò ngược mã nguồn.
  • ✓Ba loại kiểm thử riêng biệt (hồi quy PCAP, đơn vị, phát hiện DGA) cho một mức độ tin cậy nhất định rằng thay đổi không âm thầm phá vỡ các phát hiện hiện có.
  • ✓Build sạch trên Linux, FreeBSD, macOS, và Windows, với danh sách gói riêng cho từng bản phân phối được nêu rõ cho Debian/Ubuntu, Arch, và FreeBSD.
  • ✓Có nền tảng từ nhiều buổi trình bày hội nghị công khai suốt cả thập kỷ cùng một bài báo được bình duyệt, nên cách tiếp cận phát hiện không phải là thứ thiếu tài liệu học thuật.

Những Điều Cần Lưu Ý Khi Dùng nDPI

  • △Chính README thừa nhận việc phát hiện protocol không đảm bảo không lỗi hay chính xác tuyệt đối. Bạn cần tự kiểm chứng kết quả cho traffic thực tế của mình trước khi tin tưởng dùng nó trong production.
  • △nDPI chỉ là một library; muốn giám sát hay chặn traffic, bạn phải nhúng nó vào một ứng dụng khác như ntopng hay nProbe cento, chứ bản thân nDPI không tự làm việc đó.
  • △Biên dịch từ mã nguồn đòi hỏi một bộ công cụ GNU cùng các library như libpcap, json-c, và PCRE2; README không nhắc đến bản binary dựng sẵn nào.
  • △Thêm một protocol mới phải chạm vào ít nhất sáu file, và để có đầy đủ kiểm thử đơn vị, bạn còn phải clone và build thêm dự án PF_RING/nBPF riêng của ntop.
  • △Tên nDPI mang tình trạng nhãn hiệu đã đăng ký tại cả Mỹ và EU, theo README, điều đáng lưu ý nếu bạn định phân phối lại hoặc đổi thương hiệu một sản phẩm dựng trên nó.

Các Dự Án Liên Quan Đến nDPI

nfstream — công cụ trích xuất đặc trưng luồng mạng viết bằng Python, được chính README của nDPI liệt kê là dự án liên quan, phù hợp nếu bạn muốn làm việc với đặc trưng ở mức flow bằng Python thay vì một library C.nDPId — một dự án liên quan khác được nêu trong README, một trình chạy nền nhẹ bọc quanh nDPI để triển khai trực tiếp thay vì tích hợp ở dạng library.Suricata — engine phát hiện và ngăn chặn xâm nhập có sẵn khả năng nhận diện protocol riêng, đáng cân nhắc nếu bạn muốn một IDS dựng sẵn thay vì một library DPI để tự nhúng.Zeek — nền tảng giám sát bảo mật mạng với các bộ phân tích protocol riêng, một lựa chọn khác nếu bạn muốn một framework phân tích đầy đủ thay vì tự ráp một hệ thống quanh library DPI.

Câu Hỏi Thường Gặp Về nDPI

Giấy phép của nDPI là gì?

nDPI được phát hành theo GNU Lesser General Public License phiên bản 3 (LGPL-3.0), cho phép bạn nhúng nó vào phần mềm độc quyền mà không phải mở mã nguồn của chính bạn.

nDPI có thể dùng để chặn network traffic không?

Bản thân nDPI là một library, không phải công cụ chặn độc lập, nên việc chặn đòi hỏi nhúng nó vào một ứng dụng; README nêu ntopng và nProbe cento là ví dụ dùng nDPI theo cách này để chặn traffic được chọn.

Độ chính xác trong phát hiện protocol của nDPI như thế nào?

README của nDPI nói rõ độ chính xác không được đảm bảo tuyệt đối: dự án không cam kết phần mềm không lỗi hay chính xác 100% khi nhận diện protocol, nên kết quả cần được kiểm chứng cho traffic cụ thể của bạn.

nDPI hỗ trợ biên dịch trên những hệ điều hành nào?

nDPI biên dịch được trên Linux (có hướng dẫn riêng cho Debian/Ubuntu và Arch), FreeBSD (dùng gmake thay vì make), macOS qua Homebrew, và Windows qua MSYS2, Mingw-w64, hoặc Visual Studio, riêng Windows cần cài npcap ở chế độ tương thích WinPcap.

Làm sao để thêm hỗ trợ cho một protocol mạng mới vào nDPI?

Thêm một protocol vào nDPI nghĩa là đăng ký một ID riêng trong ndpi_protocol_ids.h, viết code phát hiện trong src/lib/protocols/, thêm biến trạng thái flow vào struct liên quan trong ndpi_typedefs.h, gắn hàm tìm kiếm vào ndpi_private.h, và cập nhật doc/protocols.rst, theo đúng quy trình mười hai bước của README.

nDPI có phải là nhãn hiệu đã đăng ký không?

README của nDPI nói rằng cái tên nDPI có tình trạng nhãn hiệu đã đăng ký tại cả Hoa Kỳ và Liên minh châu Âu.

Vấn đề nDPI giải quyết

Port không nói thật. Một lập trình viên xây công cụ giám sát mạng hoặc bảo mật cần biết thứ gì thực sự đang chạy trên một kết nối, chứ không chỉ port nào đang được dùng, vì port có thể bị dùng lại hoặc cố tình che giấu để né bộ lọc. Tự viết logic phát hiện cho từng protocol từ đầu nghĩa là phải theo dõi từng đặc thù của mỗi protocol mãi mãi. README của nDPI nhắm thẳng vào khoảng trống đó: một tập dissector protocol được duy trì cùng một quy trình rõ ràng để thêm dissector mới, để một dự án không phải tự xây lớp phát hiện đó từ con số không.

Trường hợp sử dụng tốt nhất

  • •Nhúng khả năng phát hiện protocol vào một công cụ giám sát mạng hoặc bảo mật viết bằng C của riêng bạn, thay vì tự viết dissector từ đầu.
  • •Xây tính năng chặn traffic dựa trên kết quả phân loại của nDPI, theo cách ntopng và nProbe cento đang làm.
  • •Mở rộng nDPI bằng một dissector cho protocol nội bộ hoặc độc quyền mà nDPI chưa nhận diện, theo đúng quy trình từng bước trong README.
  • •Nghiên cứu học thuật về phân loại network traffic, trích dẫn bài báo IWCMC 2014 của dự án làm tài liệu tham khảo.

Ai nên dùng — và ai nên bỏ qua

Hãy thử nDPI nếu bạn đang viết một công cụ giám sát mạng, bảo mật, hoặc định hình traffic bằng C (hoặc thứ gì đó có thể liên kết với một library C) và cần phân loại protocol mà không muốn tự viết dissector cho từng protocol. Nó cũng phù hợp với nhà nghiên cứu muốn một cách triển khai DPI có tài liệu, có thể trích dẫn để xây dựng hoặc so sánh. Bỏ qua nếu bạn muốn một ứng dụng hoàn chỉnh: nDPI không có giao diện và không có chế độ chặn độc lập, nên bạn phải tự nhúng nó hoặc dùng ntopng/nProbe cento, những công cụ đã làm sẵn phần tích hợp đó.

Repo liên quan

Nguồn & ghi công

Thông tin và trích dẫn lấy từ repo GitHub ntop/nDPI và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 14 thg 8, 2026Đánh giá bởi Henry
← Về TopGit

Muốn nghe thêm một ý kiến về nDPI?

Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về nDPI.

GitHub