开源DPI方案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

nDPI分析一.概述nDPI是一套由ntop维护的、超越了流行的OpenDPI的库。在GPL许可下发布,它的目标是增加新的协议,扩展原有的库;它有针对性的对只有在OpenDPI收费版本才支持的协议进行了扩展。除了UNIX平台外,它还支持Windows,为你提供了交叉平台的DPI经验。此外,还可以修改nDPI,禁止某些非必要的使DPI引擎变慢特性,以更好的适应流量监控应用。ntop和nProbe都是用了nDPI来增加应用成协议识别,而不用管所使用的端口。这个意思就是说它既可以侦测非标准端口的已知协议(例如,非80端口上的http),相反也可以侦测80端口上的Skype流量。这就意味着当前的所谓端口=应用的概念不再成立了。我们一直持续的扩展nDPI,迄今(截止现在)为止已经支持了170个协议,具体如下协议:FTPPOPSMTPIMAPDNSIPPHTTPMDNSNTPNETBIOSNFSSSDPBGPSNMPXDMCPSMBSYSLOGDHCPPostgreSQLMySQLTDSDirectDownloadLinkI23V5AppleJuiceDirectConnectSocratesWinMXVMwarePANDOFiletopiaiMESHKontikiOpenFTKazaa/FasttrackGnutellaeDonkeyBittorrentOFFAVIFlashOGGMPEGQuickTimeRealMediaWindowsmediaMMSXBOXQQMOVERTSPFeidianIcecastPPLivePPStreamZattooSHOUTCastSopCastTVAntsTVUplayerVeohTVQQLiveThunder/WebthunderSoulseekGaduGaduIRCPopoJabberMSNOscarYahooBattlefieldQuakeVRRPSteamHalflife2WorldofWarcraftTelnetSTUNIPSECGREICMPIGMPEGPSCTPOSPFIPinIPRTPRDPVNCPCAnywhereSSLSSHUSENETMGCPIAXTFTPAFPStealthNetAiminiSIPTruphoneICMPv6DHCPv6ArmagetronCrossFireDofusFiestaFlorensiaGuildwarsHTTPApplicationActivesyncKerberosLDAPMapleStorymsSQLPPTPWARCRAFT3WorldofKungFuMEEBOFaceBookTwitterDropBoxGmailGoogleMapsYouTubeSkypeGoogleDCERPCNetFlow_IPFIXsFlowHTTPConnect(SSLoverHTTP)HTTPProxyNetflixCitrixCitrixOnline/GotoMeetingApple(iMessage,FaceTime…)WebexWhatsAppAppleiCloudViberAppleiTunesRadiusWindowsUpdateTeamViewerTuentiLotusNotesSAPGTPUPnPLLMNRRemoteScanSpotifyH323OpenVPNNOECiscoVPNTeamSpeakTorCiscoSkinnyRTCPRSYNCOracleCorbaUbuntuONECNNWikipediaWhois-DASCollectdRedisZeroMQMegaco互联网正在朝着使用SSL来加密内容的方向发展。为了让nDPI支持加密连接,我们添加了针对SSL(包括客户端和服务端)证书解密模块。这样,我们就可以找出协议使用的加密证书。这允许我们可以鉴别诸如Citrix在线和苹果iCloud这样的不能被发现的协议。二.nDPI原理2.1检测模块的初始化初始化检测模块完善参考数据结构typedefstructndpi_detection_module_struct{包含主要的结构:1.TCP协议带payload检测函数2.TCP协议不带payload检测函数3.UDP协议带payload检测函数4.UPD协议不带payload检测函数5.其他的协议检测函数}2.2数据检测流程2.3数据检测模块(以skype为例)以skype为例,简述skype检测过程2.3.1skype注册函数ndpi_search_skype()标题中的函数在2.1中检测模块初始化的时候被注册到ndpi_detection_module_struct中:voidndpi_search_skype(structndpi_detection_module_struct*ndpi_struct,structndpi_flow_struct*flow){}参数分析:1.structndpi_detection_module_struct*ndpi_struct即上文2.1中检测模块初始化时生成的结构体,包含了协议分析函数;2.structndpi_flow_struct*flow该结构体包含了网络包中的数据。2.3.2skype协议检测函数Voidndpi_search_skype(structndpi_detection_module_struct*ndpi_struct,structndpi_flow_struct*flow){ndpi_check_skype(ndpi_struct,flow);}voidndpi_check_skype(structndpi_detection_module_struct*ndpi_struct,structndpi_flow_struct*flow){具体的skype协议解析过程;}三.移植工作量从这里下载源代码使用nDPI库非常方便,要编译这个库,你必须首先满足以下预备条件:GNUautotools/libtoolgawkgcc为了满足预备条件你只要执行以下命令就行:FedorayumgroupinstallDevelopmenttoolsyuminstallautomakelibpcap-develgcc-c++libtoolDebianapt-getinstallbuild-essentiallibpcap-devMacOSXportinstallXXX(Pleaseinstallmacports)一旦完成上面,你就可通过以下操作来编译nDPI:cdnDPIsourcecodedirectory./autogen.sh./configureMake接下来编译ndpiReader,通过以下命令:cdnDPIsourcecodedirectory/examplemake四.升级如果是支持新协议的话,只要按照nDPI的要求,可以新增协议解析器。比较方便扩展。五.性能评估待评估六.官方支持程度支持比较好。L7-FILTER分析一.概述在Linux的防火墙体系Netfilter下有一个独立的模块L7filter。从字面上看Netfilter是对网络数据的过滤,L7filter是基于数据流应用层内容的过滤。不过实际上L7filter的本职工作不是对数据流进行过滤而是对数据流进行分类。它使用模式匹配算法把进入设备的数据包应用层内容与事先定义好的协议规则进行比对,如果匹配成功就说明这个数据包属于某种协议。L7filter是基于数据流工作的,建立在Netfilterconnstrack功能之上。因为一个数据流或者说一个连接的所有数据都是属于同一个应用的,所以L7filter没有必要对所有的数据包进行模式匹配,而只匹配一个流的前面几个数据包(比如10个数据包)。当一个流的前面几个数据包包含了某种应用层协议的特征码时(比如QQ),则这个数据流被L7filter识别;当前面几个数据包的内容没有包含某种应用层协议的特征码时,则L7filter放弃继续做模式匹配,这个数据流也就没有办法被识别。做模式识别是一个很消耗计算资源的操作,特别是在网络应用下因为数据量很多所以更体现出对资源的占用上。在Linux内核,L7filter其实非常影响网络处理的效率。所以在没有十分必要的时候尽量不要采用L7filter做流量分类。现在出现了一个运行在Linux用户空间的版本L7filter-userspace,这个软件运行时不会影响内核,但是处理效率会更低。实际上L7filter-userspace调用了netlink协议族的功能,整个处理过程至少进行了两次的数据包拷贝操作。layer7filter的设计初衷是通过iptables将正则表达式表示的特征码传给内核模块,内核根据连接表匹配数据包。注意正则表达式是完全以字符串形式交给内核模块的,内核部分再将这个正则表达式进行翻译或“编译”,这也是为什么l7的patch文件中有一大堆正则库文件,据说是作者优化的内核版的正则库。不过话说回来,在对性能要求不高的应用上,L7filter确实给我们提供了一个功能强大的网络流量管理工具。L7-filter支持的协议125个左右,列表:ProtocolsThepatternnameiswhatyoumustusewhenissuingl7-filtercommands.Thenamesbelowlinktothepatternfiles.Selectcolumnheadingstosort.badthirdlineinreplaytv-ivs.patwikinamespeedqualitygroupnotesdescription100bao100bao-aChineseP2Pprotocol/program-(OSCARandTOC)aimwebcontentAIMwebcontent-ads/newscontentdownloadedbyAOLInstantMessengerapplejuiceAppleJuice-P2Pfilesharing-://

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功