nDPI 的論文閱讀和機制解析
阿新 • • 發佈:2018-10-27
使用 drop 擁塞 而是 進行 解析器 pac 防火墻 網絡
nDPI: Open-Source High-Speed Deep Packet Inspection
Wireless Communications & Mobile Computing Confer 2014
背景
- 根據端口號來識別協議類型,但大於某個值以後,端口號動態變化
- http協議會攜帶一系列其他頁面內容,防火墻若根據端口號判斷,則其他頁面可以通過http的80端口通過防火墻
- 不僅是為了創造一份報告,而是為了解決安全問題
- ML的可以測量的任務更少
- ML只能用於一些被動測量分析,不能用於一些關鍵的測量任務(流量擁塞)
- 開源好處:不開源貴,協議拓展受運營商支配,
- dpi處理包必須比流量監測速率要快,否則會引起丟包(DPI processing must be faster than the
traffic rate to be monitored as otherwise it would result
in packet drops)
nDPI需要滿足
- 高可靠性內聯應用協議策略控制
- 子協議的定義
- 和開源的應用結合。
- 提取基礎的網絡流量和關鍵信息
原有框架
nDPI基於opendpi,opendpi已停止維護
- 包處理,解析ip和基礎端口信息
- 解析器插件,負責檢測協議
不足
- 數據類型為靜態,可辨認協議數存在限制
- 匹配協議時,若第一個匹配不會返回,而是進行更多的協議匹配,造成額外檢測開銷
- 不支持加密協議的檢測
- 多線程、共享全局變量導致不安全性。
- 很多部分都有問題檢測設計,造成額外開銷。
- 協議並未分層,所有類型的流都按照同樣的協議順序檢測
- 沒有運行時配置能力
- 不支對流量的 metadata 解析
nDPI改進機制
- 支持的協議越多,解析的參數越多,檢測的時間越久
- 在檢測開始時一次性將所有協議初始化,無需運行過程的penalty
- 流只解析一次,若第一次匹配不成功,則保留流的解析信息
- 針對未解析的流,nDPI先根據傳輸層協議類型和端口號,來猜測匹配的協議,提升匹配速度
- 如果存在一個登記好的針對包的端口和協議的解析器,那就優先使用這個。
- 如果沒有協議匹配這個包,那麽後面的包也不會被檢測。
- 一旦有協議匹配,那麽就停止檢測,
- 每個流需要檢測包的數目根據協議來確定,大多數是 2~3 個包,最多8個包。
- 使用 Aho-Corasick 算法處理字符匹配。
- 內存使用:內存主要用於 ndpi 的配置和和字符串的自動匹配。無自定義配置的情況下,使用210KB的內存,使用自定義配置時,會上升25KB。
- 記錄每個流的信息,每個流大約占用1KB
nDPI 的論文閱讀和機制解析