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 的论文阅读和机制解析的更多相关文章

  1. [论文阅读]阿里DIN深度兴趣网络之总体解读

    [论文阅读]阿里DIN深度兴趣网络之总体解读 目录 [论文阅读]阿里DIN深度兴趣网络之总体解读 0x00 摘要 0x01 论文概要 1.1 概括 1.2 文章信息 1.3 核心观点 1.4 名词解释 ...

  2. [论文阅读] RNN 在阿里DIEN中的应用

    [论文阅读] RNN 在阿里DIEN中的应用 0x00 摘要 本文基于阿里推荐DIEN代码,梳理了下RNN一些概念,以及TensorFlow中的部分源码.本博客旨在帮助小伙伴们详细了解每一步骤以及为什 ...

  3. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  4. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  5. 转 Java Classloader机制解析

    转 Java Classloader机制解析 发表于11个月前(2014-05-09 11:36)   阅读(693) | 评论(0) 9人收藏此文章, 我要收藏 赞1 慕课网,程序员升职加薪神器,点 ...

  6. NASNet学习笔记——   核心一:延续NAS论文的核心机制使得能够自动产生网络结构;    核心二:采用resnet和Inception重复使用block结构思想;    核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。

    from:https://blog.csdn.net/xjz18298268521/article/details/79079008 NASNet总结 论文:<Learning Transfer ...

  7. 论文阅读笔记:《Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling》

    论文阅读:<Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling& ...

  8. [论文阅读]阿里DIEN深度兴趣进化网络之总体解读

    [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 目录 [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 0x00 摘要 0x01论文概要 1.1 文章信息 1.2 基本观点 1.2.1 DIN的 ...

  9. BERT 论文阅读笔记

    BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...

随机推荐

  1. js delete 操作符

    delete操作符很陌生,很少会用到,但是既然碰到了,就mark一下: delete 操作符用于删除一个对象的属性: 注意点:只能删除自己的属性,从原型链上继承的属性是无法删除的:

  2. csharp: Linq keyword example

    /// <summary> /// http://www.dotnetperls.com/linq /// </summary> public partial class Li ...

  3. 理解webpack4.splitChunks之maxAsyncRequests

    maxAsyncRequests和maxInitialRequests有相似之处,它俩都是用来限制拆分数量的,maxInitialRequests是用来限制入口的拆分数量而maxAsyncReques ...

  4. jQuery轮播图(二)利用构造函数和原型创建对象以实现继承

    本文是在我开始学习JavaScript继承时,对原型继承的一些理解和运用.文中所述的继承方式均是使用js特有的原型链方式,实际上有了ES6的类之后,实现继承的就变得十分简单了,所以这种写法现在也不在推 ...

  5. 使用nodeJs安装Vue-cli (win10 使用管理员身份)

    TIP:win10下安装,使用管理员身份进行,否则会有权限限制. 1,安装完成node,node有自带的npm,可以直接在cmd中,找到nodeJs安装的路径下,进行命令行全局安装vue-cli.(n ...

  6. Git 拉取Gitee仓库报错:“fatal: unable to access ''": Failed to connect to 127.0.0.1 port 1080: Connection refused”

    1.报错信息: 2.本地查看是否Git使用了代理 git config --global http.proxy 3.取消代理 git config --global --unset http.prox ...

  7. Android 退出app,后台推送的服务也停止了,怎么可以做到不停止后台服务呢?

    service粘性等的那4种方式试了,三星的可以,小米老款手机可以,新款不行,华为新款也不行,还有魅族什么的,都不行,新款的手机上都有一个安全中心,只有在安全中心里面添加上允许app自启动才可以 怎么 ...

  8. 基于PMBOK的项目管理知识体系

  9. 如何写一个能在gulp build pipe中任意更改src内容的函数

    gulp在前端自动化构建中非常好用,有非常丰富的可以直接拿来使用的plugin,完成我们日常构建工作. 但是万事没有十全十美能够完全满足自己的需求,这时我们就要自己动手写一个小的函数,用于在gulp ...

  10. kettle使用命令行传入数据库链接参数(ip、数据库、端口、用户、密码)执行job时子转换失败。

    使用cmd 传参数执行 kettle job 遇到错误: 错误原因,无法找到文件.... 原来使用,通过目录指定转换,好处是:当以文件资源库保存时,可以直接将文件夹复制走,直接运行就可以,不需要单独针 ...