nDPI 的论文阅读和机制解析
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 的论文阅读和机制解析的更多相关文章
- [论文阅读]阿里DIN深度兴趣网络之总体解读
[论文阅读]阿里DIN深度兴趣网络之总体解读 目录 [论文阅读]阿里DIN深度兴趣网络之总体解读 0x00 摘要 0x01 论文概要 1.1 概括 1.2 文章信息 1.3 核心观点 1.4 名词解释 ...
- [论文阅读] RNN 在阿里DIEN中的应用
[论文阅读] RNN 在阿里DIEN中的应用 0x00 摘要 本文基于阿里推荐DIEN代码,梳理了下RNN一些概念,以及TensorFlow中的部分源码.本博客旨在帮助小伙伴们详细了解每一步骤以及为什 ...
- 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)
今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
- 转 Java Classloader机制解析
转 Java Classloader机制解析 发表于11个月前(2014-05-09 11:36) 阅读(693) | 评论(0) 9人收藏此文章, 我要收藏 赞1 慕课网,程序员升职加薪神器,点 ...
- NASNet学习笔记—— 核心一:延续NAS论文的核心机制使得能够自动产生网络结构; 核心二:采用resnet和Inception重复使用block结构思想; 核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。
from:https://blog.csdn.net/xjz18298268521/article/details/79079008 NASNet总结 论文:<Learning Transfer ...
- 论文阅读笔记:《Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling》
论文阅读:<Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling& ...
- [论文阅读]阿里DIEN深度兴趣进化网络之总体解读
[论文阅读]阿里DIEN深度兴趣进化网络之总体解读 目录 [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 0x00 摘要 0x01论文概要 1.1 文章信息 1.2 基本观点 1.2.1 DIN的 ...
- BERT 论文阅读笔记
BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...
随机推荐
- 洛谷P4781 【模板】拉格朗日插值(拉格朗日插值)
题意 题目链接 Sol 记得NJU有个特别强的ACM队叫拉格朗,总感觉少了什么.. 不说了直接扔公式 \[f(x) = \sum_{i = 1}^n y_i \prod_{j \not = i} \f ...
- border实现三角形的原理
前言:网上最普遍的实现三角形的方法,就是通过控制border来实现,那为什么可以呢? 原理 我们先来看看border的表现形式. #box{ width:100px; height:100px; ba ...
- javascript实现数据结构: 树和森林
树的3种常用链表结构 1 双亲表示法(顺序存储结构) 优点:parent(tree, x)操作可以在常量时间内实现 缺点:求结点的孩子时需要遍历整个结构 用一组连续的存储空间来存储树的结点,同时在每个 ...
- Codeforces Round #417 B. Sagheer, the Hausmeister
B. Sagheer, the Hausmeister time limit per test 1 second memory limit per test 256 megabytes Som ...
- 通过Application存取公共数据比如登录信息等..
Android系统在运行每一个程序应用的时候,都会创建一个Application对象,用于存储与整个应用相关的公共变量.一个Android应用只会生成一个Application对象,在不同的Activ ...
- 【眼见为实】自己动手实践理解数据库READ COMMITTED && MVCC
[READ COMMITTED] 首先设置数据库隔离级别为读已提交(READ COMMITTED): set global transaction isolation level READ COMMI ...
- 关于Spring MVC中的表单标签库的使用
普通的MVC设计模式中M代表模型层,V代表视图层,C代表控制器,SpringMVC是一个典型的MVC设置模式的框架,对于视图和控制器的优化很多,其中就有与控制器相结合的JSP的表单标签库. 我们先简单 ...
- 毕向东_Java基础视频教程第19天_IO流(18~19)
第19天-18-IO流(流操作规律 - 1) 通过三个步骤来明确"流操作"的规律: 明确数据流的"源和目的" 源, 输入流: InputStream/Reade ...
- 彻底澄清c/c++指针概念
传统的指针概念教科书上已经写的很详细了,这里作为一些补充 在声明一个指针变量的时候 double *ptr: 这是声明了一个ptr的指针变量,ptr本身是地址,它的数据类型是double *,在变 ...
- npm使用过程中的一些错误解决办法及npm常用命令和技巧
node,npm在前端开发流程中提供了非常完善的自动化工具链,但是同样由于其复杂性导致有很多奇奇怪怪的问题.本文将记录使用过程中出现的一些问题及其解决方法备案. 国内由于gfw问题,导致很多国外的网站 ...