CN101997859B - 识别tcp流中的数据包的载荷的方法和设备 - Google Patents

识别tcp流中的数据包的载荷的方法和设备 Download PDF

Info

Publication number
CN101997859B
CN101997859B CN200910168622.4A CN200910168622A CN101997859B CN 101997859 B CN101997859 B CN 101997859B CN 200910168622 A CN200910168622 A CN 200910168622A CN 101997859 B CN101997859 B CN 101997859B
Authority
CN
China
Prior art keywords
signature
load
header
tcp
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200910168622.4A
Other languages
English (en)
Other versions
CN101997859A (zh
Inventor
温嘉佳
赵邑新
向哲
李立
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN200910168622.4A priority Critical patent/CN101997859B/zh
Priority to US12/869,828 priority patent/US8526318B2/en
Publication of CN101997859A publication Critical patent/CN101997859A/zh
Application granted granted Critical
Publication of CN101997859B publication Critical patent/CN101997859B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种识别TCP流中的数据包的载荷的方法和设备。该方法包括:根据TCP流中的数据包的报头中的信息计算载荷签名;将所述载荷签名与预先存储的文件签名进行比较;响应于多个数据包的所述载荷签名与所述预先存储的文件签名匹配,确定所述TCP流中的数据包的载荷属于所述预先存储的文件签名所对应的文件。本发明能够以更高效且成本更低的方案来实现TCP流的监控和识别。

Description

识别TCP流中的数据包的载荷的方法和设备
技术领域
本发明一般地涉及网络数据传输,更特别地涉及一种识别TCP流(TCP stream)中的数据包的载荷的方法和设备。
背景技术
近年来,P2P(Peer-to-Peer,对等网络)流量迅猛增加。技术公司CacheLogic 2006年的研究报告显示,多达70%的ISP(Internet ServiceProvider,因特网服务提供商)流量都是P2P流量。
简单地说,P2P就是一种用于不同计算机用户之间,不经过中继设备直接交换数据或服务的技术,它允许因特网用户直接使用对方的文件。每个人可以直接连接到其他用户的计算机,并进行文件的交换,而不需要连接到服务器上再进行浏览与下载。在P2P工作方式中,每一个客户终端既是客户端又是服务器,这使得网络模型趋向于“扁平化”。
P2P计算机网络使用网络中参与方之间的各种各样的连接,并且利用网络中参与方的累积带宽而不是传统的集中式资源。在传统的集中式资源的情况下,相对较少的服务器提供了服务或应用的核心内容。P2P网络通常用于经由自组(ad hoc)连接来连接多个节点。对于很多应用来说,P2P网络都是非常有用的。这类应用的常见例子包括使用P2P技术来共享包含音频、视频、数据或任意数字格式的内容的文件,以及使用P2P技术来传送诸如电话流量之类的实时数据,等等。此外,P2P在深度搜索、分布计算、协同工作等方面也大有用途。
在P2P用户享受到便捷服务的同时,ISP却在为P2P所带来的各种问题而头痛不已。对于ISP来说,P2P技术存在的主要问题如下。
第一,随着P2P技术的大量应用,对运营商的网络带宽形成了很大的压力。例如,高昂的骨干网转接代价(transit toll)、高峰时段期间大量P2P流量负载造成的网络拥塞,等等。此外,当前大多数P2P工具为了保证传输质量,往往会创建大量的连接,而这些连接并未传输数据,白白地消耗着宝贵的网络资源。并且,由于P2P流量对如NGN(NextGeneration Network,下一代网络)、3G(3rd Generation,第三代移动通信)等承载网的电信级业务造成极大冲击,导致网络服务质量下降、电信级业务得不到保证,等等。
第二,大量的P2P应用充斥网络,也对网络安全带来了一定的风险,例如恶意软件利用P2P应用进行传播,敏感信息的泄漏,等等。
第三,P2P的广泛使用很可能引起潜在的法律问题,例如知识产权方面的纠纷。
以上种种弊端,都迫使运营商必须对P2P业务进行管理和控制。
最常见的管理和控制技术,即“限流+限连接数”技术,表现为对带宽和连接数量两方面的限制,带宽限制的结果表现为用户的P2P下载速度下降,而连接数量限制的结果则表现为P2P连接用户数目下降,两者都能达到限制P2P流量的目的。
但是,单纯地封堵P2P并不能完全解决问题,更合理有效的做法是引导P2P业务的合理应用。P2P缓存(P2P Cache)技术正是为了解决这一问题而诞生的。
Thomas Mennecke于2006年5月13日发表的“Largest Thai ISP CachesP2P Traffic”(泰国最大的ISP对P2P流量进行缓存)一文(参见网页http://www.slyc k.com/story1185_largest_thai_isp_caches_p2p_traffic)中提供了对P2P缓存的详细描述,在此通过引用的方式包含其内容。
P2P缓存使得ISP能够通过有效地管理与P2P使用相关联的高峰和低谷来更好地在其网络上承载P2P业务。P2P缓存释放了网络带宽,使得ISP不需要购买更多带宽以满足日益增长的需要,并使得ISP不需要通过字节封顶(byte cap)、策略或流量整形来限制P2P使用。因此,P2P缓存为所有用户提供了一种改进的体验。其中,P2P用户通过使用P2P缓存改进了文件共享,而非P2P用户则由于不再受到由P2P流量引起的拥塞而体验到更好的网络性能。
据估计,经由P2P请求的五分之四的文件都能够由P2P缓存提供服务。由于P2P请求的数量远远高于HTTP/Web请求的数量,因此对P2P缓存的利用率也会远远高于HTTP/Web缓存,使得建立P2P缓存相对于HTTP/Web缓存来说能够获得更高的收益。
P2P缓存涉及使用专门的通信硬件、磁盘存储器和相关联的软件为P2P数据创建缓存或临时存储空间。将所创建的缓存放置在ISP网络中,使其与因特网转接链路协同定位或者被置于关键汇聚点处或每个电缆头端处。
图1是现有技术的P2P缓存系统的示意性框图。在图1所示的P2P缓存系统100中采用了例如DPI(Deep_Packet_Inspection,深度包检测)技术之类的现有检测技术,并且路由器101-103、客户端104-106、P2P缓存107均为现有技术中已知的。
以客户端104和105为例,在没有建立P2P缓存107的情况下,如前所述,客户端104可以直接连接到客户端105,并进行文件的交换。
一旦建立了P2P缓存107,网络就会将P2P流量透明地导向P2P缓存107。P2P缓存107直接向客户端104提供文件服务,或者将请求传递给远程P2P用户(例如客户端105)并同时缓存该数据以用于下一个用户(例如客户端106)。
如上所述,P2P缓存107通常结合称为DPI的网络流量检测和控制技术而工作。ISP使用DPI技术来了解其网络上正在传送何种流量,并且将其分离并以最有效率的递送方式进行处理。
DPI技术是一种基于应用层的流量检测和控制技术,当IP(Internet Protocol,网际协议)数据包、TCP(Transmission ControlProtocol,传输控制协议)或UDP(User Datagram Protocol,用户数据报协议)数据流通过基于DPI技术的带宽管理系统时,该系统通过深入读取IP包载荷的内容来对OSI(Open System Interconnection,开放系统互连)七层协议中的应用层信息进行重组,从而得到整个文件的内容,然后按照系统定义的管理策略对流量进行整形操作。网页http://en.wikipedia.org/wiki/Deep_packet_inspection上给出了对DPI技术的详细描述,在此通过引用的方式包含其内容。
由于DPI技术需要深入读取IP包载荷的内容并得到整个文件的内容,因此其操作成本很高,这使得利用DPI的当前P2P缓存解决方案不能高效地监控和识别P2P流。此外,由于需要对关于整个文件的检测信息进行存储,DPI技术还会导致需要庞大的存储容量。
因此,需要一种更高效且成本更低的方案来实现P2P流的监控和识别。
发明内容
根据本发明的第一方面,提供了一种识别TCP流中的数据包的载荷的方法,包括:检测所述TCP流,以获取TCP流中的数据包;根据所述TCP流中的数据包的报头中的信息计算载荷签名;将所述载荷签名与预先存储的文件签名进行比较;响应于多个数据包的所述载荷签名与所述预先存储的文件签名匹配,确定所述TCP流中的数据包的载荷属于所述预先存储的文件签名所对应的文件。
根据本发明的第二方面,提供了一种识别TCP流中的数据包的载荷的设备,包括:检测装置,用于检测所述TCP流,以获取TCP流中的数据包;计算装置,用于根据所述TCP流中的数据包的报头中的信息计算载荷签名;比较装置,用于将所述载荷签名与预先存储的文件签名进行比较;确定装置,用于响应于多个数据包的所述载荷签名与所述预先存储的文件签名匹配,确定所述TCP流中的数据包的载荷属于所述预先存储的文件签名所对应的文件。
由于只需要对TCP流中的数据包报头进行检测,利用数据包的校验和来识别TCP载荷中的内容,而不需要对数据包的内容(即载荷)进行分析,因此本发明具有如下优点:
能够提供快速的包检测和内容识别;
实现成本非常低廉,具有很低的存储成本和计算成本;以及
不必对现有的系统结构进行改造,易于部署。
此外,由于中间节点只是在TCP流经过时,根据数据包报头中的信息进行计算,得到载荷签名,因此不需要对现有TCP/IP协议进行任何修改。
附图说明
根据以下参照附图对本发明实施例的详细描述,本发明的其他目的、特征、应用和优点将变得明显,其中相同的参考标号代表相同或相应的组件或步骤,其中:
图1是现有技术的P2P缓存系统的示意性框图;
图2是根据本发明的通用实施例的方法的示意性流程图;
图3是TCP数据包的示意图;
图4是从算法的级别上示出在发送端如何产生校验和的示意图;
图5是一个示例性TCP流及其载荷签名的示意图;
图6是本发明的一个示例性实施例的用于描述载荷签名的两种模式的示意图;
图7是典型的P2P应用eMule的示意图;
图8是另一典型的P2P应用BT(BitTorrent)的示意图;
图9是根据本发明的设备的示意性框图;并且
图10是根据本发明的系统的一个实施例的示意性框图。
具体实施方式
下面结合具体实施例对本发明进行详细描述。
随着P2P的大量应用,P2P流量成为城域网的主要流量,下载型和视频类业务占P2P流量的大部分。由于P2P对称特点和P2P流量比例的增加,导致城域网流量模型逐渐从不对称模型向对称模型迁移。P2P流向处于一种无序的状态,某城域网流量监控数据表明,流到城域网外的P2P流量占全网流量的60%以上。
下面以电影的P2P下载为例来说明本发明。例如,由于某个影片的热映,在城市的某个城区中,甚至在规模较大的住宅小区中,大量用户同时通过诸如eMule或BT之类的P2P软件集中下载该影片。那么,在高峰时段,例如20:00-24:00之间,这些用户之间的大量P2P流量将有可能影响常规电信级业务的正常运营,甚至造成网络拥塞。如果运营商能够有效检测这种相对集中的P2P流量,并在相应的城区或小区内部署适当的存储设备,例如P2P缓存,直接从该存储设备向该城区或小区内的用户提供该影片的下载,就可以将这些大量的P2P流量限制在该城区或小区内,从而有效地减轻整个网络的负担。此外,如果运营商能够将此作为一项新业务来开发和部署,这也可以成为运营商新的利润增长点。实际上,由于下载型和视频类业务在P2P流量中所占据的绝对优势,其所引起的P2P流量是非常惊人的。因此,如果运营商能够合理地引导和利用这种潮流,那么无论是对于减轻网络负担、提高服务质量来说还是对于优化业务类型、创造更多利润来说,显然都是非常有利的。
运营商可以采用多种方式来引导和利用上述P2P流。仍以热映影片为例进行说明。运营商可以事先获知近期内哪些影片正在热映,并在获得版权许可的情况下得到对应的电影文件并将其存储在适当的存储设备,例如P2P缓存中。当P2P流经过时,检测该P2P流中传送的内容,如果该P2P流中传送的内容正是某部热映影片,则可以直接从该存储设备向用户提供该热映影片。为了进行这种检测,本发明提出了一种识别TCP流中的数据包的载荷的方法和设备。
图2是根据本发明的通用实施例的方法的示意性流程图。当P2P流经过中间节点时,该中间节点可以按照图2所示的步骤来对该P2P流中的内容进行检测。
在步骤S201中,检测TCP流,以获取TCP流中的数据包。
在步骤S202中,根据TCP流中的数据包报头中的信息计算该数据包的载荷签名。具体说明如下:
首先对TCP数据包进行简单描述。
图3是TCP数据包的示意图。由于TCP数据包的结构在本领域中是公知的,因此图3中仅示出了与本发明密切相关的数据包报头中的伪报头和TCP报头部分,而省略了数据包报头中的其他部分。但是,应当理解,实际的数据包报头还可以包括其他字段。在例如DPI技术的现有技术中,当对TCP数据包进行检测时,都必须对载荷中的内容进行分析。而在本发明中,可以只对数据包报头进行检测,利用其中的TCP报头中的校验和来识别载荷中的内容,而不需要对数据包的内容(即载荷)进行分析。也就是说,在本发明的方案中,只需要涉及图3中的伪报头和TCP报头,特别是该TCP报头中的校验和字段。
根据TCP协议,在P2P流的发送端,可以按照如下方式产生TCP报头中的校验和。即,以每16比特为单位将TCP报头、载荷和伪报头中的字段补码相加,得到值A。将值A按位取反,然后加1。将如此得到的16比特的值填入校验和字段,然后将数据包发送出去。
下面从算法的级别上描述校验和的产生。图4是从算法的级别上示出在发送端如何产生校验和的示意图。TCP的16位校验和是包含在TCP报头中的字段。在发送端,按照图4所示的方式产生该校验和。初始时,TCP校验和字段内置0。将TCP报头、TCP载荷和伪报头中包含的字段,按照16比特宽度的补码进行相加,即以16比特为单位的补码相加,或者说将每16比特的补码相加。如此得到的值称为值A。例如,假定值A为16比特的2进制数1001 1101 0101 0100。将值A按位取反,加1。即1001 1101 0101 0100→0110 0010 1010 1011(按位取反)→0110 0010 1010 1100(加1)。然后将所得到的该16比特的值0110 00101010 1100填入校验和字段,将数据包发送出去。
接下来,对如何根据以上描述的TCP数据包中的校验和计算载荷签名进行描述。TCP数据包中的报头字段、伪报头字段以及载荷都会影响校验和,因此,可以将TCP报头其他字段和伪报头的字段的“影响”或贡献减去,剩下的值则是对载荷的计算的和,将其作为载荷的签名。这样可以简单而快速地计算每个数据包的载荷签名。
具体而言,在截取了TCP数据包后,将TCP报头中的校验和减1,然后按位取反,得到值A。以每16比特为单位将TCP报头中除校验和之外的字段以及伪报头中的字段补码相加,得到值B,将值B按位取反,然后加1,得到值B’。然后,将值A与值B’相加,将所得到的结果作为载荷签名。
下面从算法的级别上描述载荷签名的计算方法。在中间节点,例如路由器或交换机上,TCP报头(包括校验和字段)和伪报头均可知。为了计算载荷的签名,需要将值A中TCP报头其他字段和伪报头的字段的“影响”或贡献(称为值B)减去,剩下的值则是对载荷的计算的和,将其作为载荷的签名。即需要计算A-B。为此,按照如下过程进行操作。将TCP报头中除校验和之外的字段按照16比特宽度补码相加,再与伪报头中的字段按照16比特补码相加,如此得到的值即为值B。将值B按位取反,然后加1,得到值B’。将校验和减1,然后按位取反,则恢复到值A。然后将值A与值B’相加,就得到了载荷的签名。应当注意,其中用到了这样的性质:
A-B=A+(B按位取反,然后加1)
例如:
A= 0110 0010 1010 1100(2进制)
B= 1101 0110 1011 0101(2进制)
B按位取反= 0010 1001 0100 1010(2进制)
B按位取反,加1= 0010 1001 0100 1011(2进制)
A-B= 1000 1011 1111 0111(2进制)
A+(B按位取反,加1)= 1000 1011 1111 0111(2进制)
在本发明中,A就是TCP报头(不含校验和的部分)、TCP载荷和伪报头中包含的字段之和,B就是伪报头与TCP报头中不含校验和的部分之和。
这样,再利用加法本身所具有交换律和结合律,即可保证载荷签名的计算结果是确定的。
应当理解,预先存储的文件签名与检测时生成的载荷签名的方式是对应的,预先存储时是以什么方式生成签名,那么检测时就以什么方式生成签名。图4仅仅是校验和产生的一个示例。如果以其他方式生成校验和,那么预先存储的文件签名与检测时生成的载荷签名的具体算法也会相应改变。
更进一步,本领域技术人员也可以不利用上述校验和,而是采用其他算法,例如常规的哈希算法或者将来开发的任何哈希算法来生成载荷签名。举例而言,在此情况下,在发送端,需要先对载荷应用哈希算法,生成对应于该载荷内容的信息,并将该信息加入TCP报头中或者以其他方式连同TCP数据包一起发送。相应地,需要预先按照相同的哈希算法生成该载荷所对应的签名,并将其存储在签名存储库中。然后,在执行对TCP流内容的检测时,根据所截取的TCP包中的上述信息来计算载荷签名,将计算出的载荷签名与预先存储在签名存储库中的文件签名进行比较。
另外,本领域技术人员还可以根据具体应用对本发明的生成载荷签名的方法进行各种改变和优化。例如,将利用上述校验和或其他哈希算法得到的签名与一个所需的常量相加,然后将该相加的结果用作本发明的载荷签名。或者,将利用上述校验和或其他哈希算法得到的每一个签名分别与相应的权重相乘,然后将相乘的结果用作本发明的载荷签名。基于本发明,本领域技术人员可以构思出多种载荷签名的计算方式。
图5是一个示例性TCP流及其载荷签名的示意图。在图4所示的例子中,该TCP流为P2P流,该P2P流的内容的是1GB的视频文件,该视频文件被分割为大小为1M个TCP数据包1,2,3,......,N。
例如,可以为该TCP流中的每个TCP数据包计算一个载荷签名,该载荷签名的大小为2B,即16比特。上述TCP流中的全部TCP数据包的载荷签名组成该TCP流的载荷签名,将其称为流签名。这种情况如图4中的流签名I所示。
应当理解,术语“流签名”只是为了指代方便而引入的概念,其仅仅是对TCP流中的所选取的多个TCP数据包的载荷签名的统称,并不意味着本发明的方案必须包括生成“流签名”的附加步骤。实际上,只要能够计算出TCP流中的所需的多个TCP数据包的载荷签名即可。
载荷签名是标识载荷的标签,如果载荷签名相同则基本上可以确定载荷相同。如上所述,载荷签名是一个16比特的二进制数,载荷签名相同即意味着对应的16比特的二进制数相等。然而,仍然存在载荷签名不能正确标识载荷的情况。通过计算可以得到,对于单个TCP数据包,其载荷签名未命中的概率为10%,即10-1。但是,连续的载荷签名,即流签名,正确标识流中的内容的概率则会非常高。
例如,每个TCP数据包的载荷签名为2B,通过计算可以得到不同数据包具有相同校验和的概率为1/216。因此,对于16B的流签名(即仅由该TCP流中的8个TCP数据包的载荷签名组成流签名),不同的TCP流具有相同的16B的载荷签名的概率将会非常低,即1/2128。当然,如果选择32B(即由该TCP流中的16个TCP数据包的载荷签名组成流签名)的流签名、64B(即由该TCP流中的32个TCP数据包的载荷签名组成流签名)的流签名或更大数目的字节数作为流签名,其准确率甚至会更高(即,将一个电影文件的TCP流误认为另一电影文件的TCP流的概率会更低)。
返回图2,在步骤S203中,将在步骤S202中得到的载荷签名与预先存储的文件签名进行比较。
例如,文件的签名可以是通过以下步骤产生的:
预先将所述文件分成多个具有特定长度的部分,其中一个所述具有特定长度的部分能够在一个数据包中传输。采用与步骤S202所述载荷签名的产生方式相同的方式,分别为至少一部分所述具有特定长度的部分生成签名。
其中可以针对不同的协议对文件进行分割。例如,针对eMule,可以将文件分割成1300字节的多个部分。针对BT,可以将文件分为1380字节的多个部分。
例如,图7是典型的P2P应用eMule的示意图。在eMule中,每一个文件被分割为很多部分,每部分的大小为9.28MB,每部分又接着被分割为很多大小为180KB的块。下载中的客户端可以在任意给定的时间内从任意源下载文件的一个部分和从该源下载这个文件部分的所有块。在传输中,该180KB的块又接着被分割为1300字节的长度。在每一个TCP数据包中传输一个1300字节长度的部分。然后,可以对这些TCP数据包应用图6所示的方法。Yoram Kulbak和Danny Bickson于2005年1月17日发表在“The Hebrew University of Jerusalem”上的“TheeMule Protocol Specification”(eMule协议规范)一文中提供了对eMule的详细描述,在此通过引用的方式包含其内容。
图8是另一典型的P2P应用BT的示意图。在BT中,每一个文件被分割为相同大小的分片。在传输中,根据网络MTU(MaximumTransmission Unit,最大传输单元)对这些大小相同的分片进行进一步的分割,得到长度为1380字节的部分。然后,在每一个TCP数据包中传输一个1380字节长度的部分。然后,可以对这些TCP数据包应用图6所示的方法。网页http://wiki.theory.org/BitTorrentSpecification上的“TheBitTorrent Specification”(BitTorrent规范)一文(2006年)中提供了对BT的详细描述,在此通过引用的方式包含其内容。
可以将文件的签名存储为签名列表,签名列表就是在TCP流中传输该文件时的载荷签名的列表。该列表可以在文件传输前生成,也可以截取TCP流按照上述步骤S202的计算而生成。还应当理解,签名列表只是载荷签名的存储方式的示例。根据具体应用,还可以采用其他形式来存储载荷签名。无论以何种形式存储载荷签名,都不影响本发明的实现。
文件的签名列表可以存储所有载荷签名(以下称为完整签名模式),也可以只存储一部分载荷签名(以下称为简化签名模式)。
图6是本发明的一个示例性实施例的用于描述载荷签名的两种模式的示意图。在图6中,示出了如何计算大小为1GB、时长为120分钟的电影文件的载荷签名。假定该1GB的电影文件被分为1KB的TCP数据包进行传送,则对于该电影文件,将有1M个TCP数据包。以下将结合图6对完整签名模式和简化签名模式进行说明。
首先来看完整签名模式。如上所述,对于上述1M个TCP数据包,将会有1M个载荷签名。考虑每个载荷签名的大小为16比特,并且所有的数据包都被用来计算流签名(参见图5的流签名I),则该电影文件的载荷签名(或者说流签名)的大小仅为2MB。对于1GB的电影文件来说,2MB的签名列表不能算是一个很大的值。
然后来看简化签名模式(参见图5的流签名II)。简化签名模式是一种相对于上述完整签名模式来说能显著节省存储空间的签名模式。例如,以每8K个签名仅存储8个签名的频率对完整签名进行选取,而不存储其余8K-8个签名。也就是说,节省了8K-8个签名的存储空间。为了计算方便,通常取8K个签名的前8个,这样,在简化签名模式中,签名列表包含第1至8,8K至8K+8,...8nK至8nK+8个数据包的载荷签名。利用这种模式,对于该1GB的电影文件,签名列表中的签名个数仅为1K。假定每个签名大小为16比特,则该电影文件的签名列表(或者说流签名)的大小仅为2KB。因此,对于每个1GB的电影文件,只需要2KB大小的签名,这对于诸如路由器之类的中间节点来说显然是非常宽松的要求。这样,一个具有2GB存储器的路由器能够容纳大约1M个电影文件的签名列表。
因此,运营商、内容提供商或其他主体可以根据具体应用来确定是选择完整签名模式还是简化签名模式。对于简化签名模式,还可以根据具体应用和所需要达到的准确率来选择流签名的具体大小。根据以上描述可知,实际上,对于每8K个签名,仅存储8个签名,就已经能够达到很高的准确率。这一准确率对于实际应用来说已经完全足够了。可以看出,本发明的方案不仅大大节省了路由器等中间节点的存储空间,而且所需的计算量也是非常小的。
应当理解,8K个签名选择连续的8个签名仅仅是一个实施例。其中8K的选择是基于图6的例子,其中1G的影片是120分钟,那么1分钟的片长覆盖的数据包的个数是1M/120=8333,约等于8K。对于每一段签名选择存储的一部分连续签名的个数与用户要求的识别准确度有关。例如用户要求识别的准确度为D,存储的连续签名的个数为N,每个签名的误判概率为e,那么N的选取需要满足如下条件:1/eN<D。
对于签名列表是完整签名模式,则可以在任意时刻截取TCP流,并在步骤S202中计算签名载荷。步骤S203则可以在任何时刻将载荷签名与签名列表进行比较都可以得到正确的结果。
对于签名列表是简化签名模式,则可以其每隔一段时间,例如每1分钟,对P2P流进行一次扫描,以截取TCP流。在步骤S202中,计算截取的TCP流中根据简化签名模式的采样频率被采用的数据包的载荷签名。例如,简化签名模式的采用频率是每8K个签名取前8个,则只计算TCP流中第1至8,8K至8K+8,...8nK至8nK+8个数据包的载荷签名。这样,如果每隔1分钟对TCP流进行一次扫描,可以判断被截取的TCP数据包中是否带有数据流中的第1至8,8K至8K+8,...8nK至8nK+8个数据包。如果是,则进行步骤S202和S203。如果没有简化模式所采用的数据包,则等待下一次扫描。
接着,在步骤S204,响应于一个或多个数据包的载荷签名与预先存储的文件签名匹配,确定TCP流中数据包载荷的内容正是预先存储的文件签名所对应的文件。在此,“匹配”意味着数据包的载荷签名与预先存储的文件签名相同。
应当理解,对于小的文件或识别精度要求不高的情况下,根据载荷签名匹配来确定对应的文件是可能的。对于大文件或识别精度要求高的情况下,则最好采用几个连续载荷签名,也就是流签名的匹配来确定文件更好。
在步骤S204中确定TCP流中数据包载荷的内容正是特定文件,例如热映影片之后,其处理流程与现有技术P2P缓存系统中完全相同。即,如在“背景技术”部分中所述,此时路由器1103可以将P2P流量透明地导向P2P缓存1107。P2P缓存1107直接向客户端1104提供文件服务,或者将请求传递给远程P2P用户1105并同时缓存该数据以用于下一个用户1106。
应当注意,可以按照图2所示的方法事先产生电影文件的载荷签名,并将其预先存储在签名存储库902(参见图9和10)中,以便在步骤S203中使用。如上所述,可以将该电影文件的签名存储为签名列表,其中一个电影文件对应于该签名列表中的一个条目。对于同一部影片,可能会存在多个电影文件版本。可以针对每一个版本都存储一个条目,但为了节约成本,更为适当的做法是只针对几个主流版本分别存储一个条目。显然,即使属于同一部影片,只要电影文件版本不同,就应当作为不同的文件来分别处理。
图9是根据本发明的设备的示意性框图。如图所示,识别设备901包括检测装置9011、计算装置9012、比较装置9013和确定装置9014。识别设备901可以位于路由器、交换机或任意其他的中间节点上。
根据本发明的一个实施例(参见图10),客户端1104已通过路由器1101和1103与客户端1105建立P2P连接,并进行文件交换。在此情况下,由检测装置9011对TCP流进行检测,以获取TCP流中的数据包。例如,每隔一段时间,如每1分钟,对客户端1104与客户端1105之间的TCP流进行一次扫描。
由计算装置9012根据扫描到的TCP流中的数据包(参见图3和图4)报头中的信息计算该数据包的载荷签名。接着,由比较装置9013将在计算装置9012中得到的载荷签名与预先存储的文件签名(例如存储在图9和10所示的签名存储库902中)进行比较。接着,响应于多个数据包的载荷签名与预先存储的文件签名匹配,由确定装置9014确定TCP流中的数据包的载荷的内容属于预先存储的文件签名所对应的文件。
根据确定装置9014的确定结果,运营商、内容提供商或其他主体可以根据具体应用对该TCP流进行进一步处理。例如,正如在现有技术中一样,响应于识别设备901识别出当前TCP流中的数据包的载荷的内容属于特定文件,网络可以将P2P流量透明地导向P2P缓存1107。P2P缓存1107直接向客户端1104提供文件服务,或者将请求传递给远程P2P用户(例如客户端1105)并同时缓存该数据以用于下一个用户(例如客户端1106)。此外,可以将该确定结果用于对P2P用户进行限流,可以将该确定结果用于防止恶意软件的传播,也可以将该确定结果用于进行版权保护,等等。
根据本发明的一个优选实施例,比较装置9013与签名存储库902进行通信,将载荷签名与该签名存储库902中预先存储的文件签名进行比较。仍以电影文件为例,在该签名存储库902中,一个电影文件对应于该签名列表中的一个条目。对于同一部影片,可能会存在多个电影文件版本。可以针对每一个版本都存储一个条目,但为了节约成本,更为适当的做法是只针对几个主流版本分别存储一个条目。显然,即使属于同一部影片,只要电影文件版本不同,就应当作为不同的文件来分别处理。应当注意,尽管在图9中将签名存储库902示出为在识别设备901外部,但根据具体应用的需要,签名存储库902也可以位于识别设备901的内部。
根据本发明的一个优选实施例,用于计算载荷签名的数据包报头中的信息包括TCP报头和伪报头。
根据本发明的进一步的实施例,TCP报头包括校验和,并且基于TCP报头、载荷和伪报头中的字段来产生该校验和。
根据本发明的进一步的实施例,计算装置9012将校验和中对应于TCP报头和伪报头的部分从该校验和中去除,从而得到载荷签名。
根据本发明的进一步的实施例,计算装置9012将TCP报头中的校验和减1,然后按位取反,得到值A。以每16比特为单位将TCP报头中除校验和之外的字段以及伪报头中的字段补码相加,得到值B,将值B按位取反,然后加1,得到值B’。然后,将值A与值B’相加,将所得到的结果作为载荷签名。
根据本发明的一个优选实施例,识别设备901可以包括用于预先将所述文件分成多个具有特定长度的部分的装置,其中一个所述具有特定长度的部分能够在一个数据包中传输。识别设备901还可以包括用于为至少一部分所述具有特定长度的部分生成签名的装置,其中为至少一部分所述具有特定长度的部分生成签名的方式与根据所述TCP流中的数据包的报头中的信息计算载荷签名的方式相同,如同以上参考图6所述。如上所述,识别设备901包括的签名存储库902用于存储为至少一部分所述具有特定长度的部分生成的所述签名。应当理解,签名存储库902只是用于存储为至少一部分所述具有特定长度的部分生成的所述签名的装置的示例。根据具体应用,还可以采用其他存储装置来存储载荷签名。无论以何种存储装置存储载荷签名,都不影响本发明的实现。
应当注意,根据具体应用的需要,识别设备901中的各个装置可以位于同一个实体设备上,也可以分别位于不同的实体设备上。
图10是根据本发明的系统的一个实施例的示意性框图。在图10所示的系统1100中采用了根据本发明的方法。其中,路由器1101和1102均为现有技术中的路由器,路由器1103为改进的路由器。该改进的路由器1103中包括图9所示的识别设备901(在图10中未示出)。客户端1104-1106以及P2P缓存1107可以是现有技术中已知的。图10中的签名存储库与图9中的签名存储库902是相同的。
应当注意,图1和图10都只是示例性的,实际的系统可以包括更多的设备。例如,为简便起见,图10中仅示出了3个路由器和3个客户端。实际上,系统中可以包括更多的路由器,一个路由器可以连接更多的客户端,并且可以有更多的路由器被升级为改进的路由器。应当理解,尽管图10中将签名存储库示出为位于与改进的路由器分离的设备上,但实际上该签名存储库也可以位于该改进的路由器上。
此外,尽管在图10中将根据本发明的设备示出为位于路由器上,但实际上,本发明的设备可以位于交换机或任意其他中间节点上,甚至位于某客户端上。与此类似,签名存储库可以位于任意中间节点上,甚至位于某客户端或P2P缓存上。
将图1与图10进行对比不难看出,只需对少量现有设备进行简单的升级,就能够实现本发明的技术方案。因此,在本发明中,不必对现有的系统结构进行任何改动。
应当注意,尽管以P2P应用为例对本发明进行了描述,但本发明并不局限于此,而是适用于一个单独的文件被分割为多个大小相等的部分的各种应用。此外,尽管将本发明描述为结合P2P缓存而使用,但本发明并不局限于此。在完成根据本发明的检测之后,可以根据各种具体的应用来确定如何使用检测结果。另外,尽管本发明的设备优选地由运营商来进行部署,但实际上,取决于具体的网络环境和管理规定,可能会由不同的主体来执行这种部署。另外,尽管以电影文件为例对本发明进行了描述,但本发明并不局限于此,而是适用于各种文件内容。
本发明可以采取完全硬件实现、完全软件实现或者同时包含硬件单元和软件单元的实现的形式。在优选的实施例中,本发明是以软件实现的,该软件包括但不限于固件、驻留软件、微代码等。
此外,本发明可以采取可从计算机可用介质或计算机可读介质访问的计算机程序产品的形式,该介质提供程序代码以供计算机或任意指令执行系统使用或者结合计算机或任意指令执行系统而使用。出于本描述的目的,计算机可用介质或计算机可读介质可以是任意切实可行的装置,其可以包含、存储、传送、传播或传输程序以供计算机或任意指令执行系统、装置或设备使用或者结合计算机或任意指令执行系统、装置或设备而使用。
在前面的详细描述中,参考了形成该描述的一部分的附图,其中通过图示示出了可以实现本发明的特定实施例。上面已经充分详细地描述了这些实施例及其某些变型,以便本领域的普通技术人员可以实现本发明。应当理解,在不偏离本发明的本质或范围的情况下,可以采用其他适合的实施例,并且可以进行逻辑的、机械的和电学的改变。例如,在不偏离本发明的本质或范围的情况下,可以以任何方式对图中示出的功能块进行进一步的合并或分离。为了避免不必要的细节,本说明书省略了本领域的普通技术人员公知的某些信息。因此,以上的详细说明并非意在限于在此提出的特定形式,相反,其意在覆盖可以合理地包括在所附权利要求的本质和范围内的那些变更、修改以及等效形式。

Claims (7)

1.一种识别TCP流中的数据包的载荷的方法,包括:
检测所述TCP流,以获取TCP流中的数据包;
根据所述TCP流中的数据包的报头中的信息计算载荷签名;
将所述载荷签名与预先存储的文件签名进行比较;以及
如果所述载荷签名与所述预先存储的文件签名匹配,则确定所述TCP流中的数据包的载荷属于所述预先存储的文件签名所对应的文件,
所述的方法进一步包括:
预先将所述文件分成多个具有特定长度的部分,其中一个所述具有特定长度的部分能够在一个数据包中传输,所述具有特定长度的部分作为该数据包的载荷;
为至少一部分所述具有特定长度的部分生成文件签名,其中为至少一部分所述具有特定长度的部分生成文件签名的方式与根据所述TCP流中的数据包的报头中的信息计算载荷签名的方式相同;以及
存储为至少一部分所述具有特定长度的部分生成的所述文件签名,
其中将文件签名存储为签名列表,签名列表采用简化签名模式,即只存储一部分载荷签名,
其中用于计算所述载荷签名的所述数据包的报头中的信息包括TCP报头和伪报头,
其中所述TCP报头包括校验和,其中所述校验和是基于所述TCP报头、所述载荷和所述伪报头中的字段产生的,
其中所述根据所述TCP流中的数据包的报头中的信息计算载荷签名进一步包括:
将所述校验和中对应于所述TCP报头和所述伪报头的部分从所述校验和中去除,从而得到所述载荷签名。
2.根据权利要求1所述的方法,其中所述将所述校验和中对应于所述TCP报头和所述伪报头的部分从所述校验和中去除进一步包括:
将所述校验和减1,然后按位取反,得到值A;
以每16比特为单位将所述TCP报头中除校验和之外的字段以及所述伪报头中的字段补码相加,得到值B,将所述值B按位取反,然后加1,得到值B’;
将所述值A与所述值B’相加。
3.根据权利要求1所述的方法,其中所述TCP流是P2P流。
4.一种识别TCP流中的数据包的载荷的设备,包括:
检测装置,用于检测所述TCP流,以获取TCP流中的数据包;
计算装置,用于根据所述TCP流中的数据包的报头中的信息计算载荷签名;
比较装置,用于将所述载荷签名与预先存储的文件签名进行比较;
确定装置,用于如果多个数据包的所述载荷签名与所述预先存储的文件签名匹配,则确定所述TCP流中的数据包的载荷属于所述预先存储的文件签名所对应的文件,
所述的设备,进一步包括:
用于预先将所述文件分成多个具有特定长度的部分的装置,其中一个所述具有特定长度的部分能够在一个数据包中传输,所述具有特定长度的部分作为该数据包的载荷;
用于为至少一部分所述具有特定长度的部分生成文件签名的装置,其中为至少一部分所述具有特定长度的部分生成文件签名的方式与根据所述TCP流中的数据包的报头中的信息计算载荷签名的方式相同;以及
用于存储为至少一部分所述具有特定长度的部分生成的所述文件签名的装置,
其中将文件签名存储为签名列表,签名列表采用简化签名模式,即只存储一部分载荷签名,
其中用于计算所述载荷签名的所述数据包的报头中的信息包括TCP报头和伪报头,
其中所述TCP报头包括校验和,其中所述校验和是基于所述TCP报头、所述载荷和所述伪报头中的字段产生的,
其中所述计算装置进一步用于:
将所述校验和中对应于所述TCP报头和所述伪报头的部分从所述校验和中去除,从而得到所述载荷签名。
5.根据权利要求4所述的设备,其中所述计算装置将所述校验和中对应于所述TCP报头和所述伪报头的部分从所述校验和中去除进一步包括:
将所述校验和减1,然后按位取反,得到值A;
以每16比特为单位将所述TCP报头中除校验和之外的字段以及所述伪报头中的字段补码相加,得到值B,将所述值B按位取反,然后加1,得到值B’;
将所述值A与所述值B’相加。
6.根据权利要求4所述的设备,其中所述设备是路由器或交换机。
7.根据权利要求4所述的设备,其中所述TCP流是P2P流。
CN200910168622.4A 2009-08-28 2009-08-28 识别tcp流中的数据包的载荷的方法和设备 Active CN101997859B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN200910168622.4A CN101997859B (zh) 2009-08-28 2009-08-28 识别tcp流中的数据包的载荷的方法和设备
US12/869,828 US8526318B2 (en) 2009-08-28 2010-08-27 Method and device of identifying the payload of a data packet in a TCP stream

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910168622.4A CN101997859B (zh) 2009-08-28 2009-08-28 识别tcp流中的数据包的载荷的方法和设备

Publications (2)

Publication Number Publication Date
CN101997859A CN101997859A (zh) 2011-03-30
CN101997859B true CN101997859B (zh) 2014-10-08

Family

ID=43624766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910168622.4A Active CN101997859B (zh) 2009-08-28 2009-08-28 识别tcp流中的数据包的载荷的方法和设备

Country Status (2)

Country Link
US (1) US8526318B2 (zh)
CN (1) CN101997859B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9051768B2 (en) * 2011-05-24 2015-06-09 Overhead Door Corporation Force profiling barrier operator systems
US9292397B1 (en) * 2012-05-14 2016-03-22 Netload, Inc. Light-weight method and apparatus for testing network devices and infrastructure
US8953451B2 (en) * 2012-06-14 2015-02-10 The Boeing Company Apparatus, methods, and systems for character set surveying of network traffic
JP6172546B2 (ja) * 2012-12-28 2017-08-02 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. トラフィックステアリング方法、デバイス、及びシステム
WO2015009231A1 (en) * 2013-07-17 2015-01-22 Emerging Sense, Affärsutveckling Ab Selective revocation of certificates
KR101587161B1 (ko) 2014-09-03 2016-01-20 한국전자통신연구원 실시간 네트워크 안티바이러스 수행 장치 및 방법
US11100046B2 (en) * 2016-01-25 2021-08-24 International Business Machines Corporation Intelligent security context aware elastic storage
US10437829B2 (en) 2016-05-09 2019-10-08 Level 3 Communications, Llc Monitoring network traffic to determine similar content
US10631018B2 (en) 2017-08-15 2020-04-21 The Nielsen Company (Us), Llc Methods and apparatus of identification of streaming activity and source for cached media on streaming devices
US10693892B2 (en) * 2017-12-11 2020-06-23 International Business Machines Corporation Network attack tainting and tracking
CN108600194B (zh) * 2018-03-30 2021-03-23 上海兆芯集成电路有限公司 网络接口控制器
CN111683036B (zh) * 2020-02-29 2022-05-27 新华三信息安全技术有限公司 数据存储方法、装置以及报文识别方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101505218A (zh) * 2009-03-18 2009-08-12 杭州华三通信技术有限公司 攻击报文的检测方法和装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328349B2 (en) * 2001-12-14 2008-02-05 Bbn Technologies Corp. Hash-based systems and methods for detecting, preventing, and tracing network worms and viruses
AU2001280818A1 (en) * 2000-07-25 2002-02-05 Peribit Networks, Inc. Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data
US6728929B1 (en) * 2001-02-16 2004-04-27 Spirent Communications Of Calabasas, Inc. System and method to insert a TCP checksum in a protocol neutral manner
US7363278B2 (en) 2001-04-05 2008-04-22 Audible Magic Corporation Copyright detection and protection system and method
US7359962B2 (en) * 2002-04-30 2008-04-15 3Com Corporation Network security system integration
US7515612B1 (en) * 2002-07-19 2009-04-07 Qlogic, Corporation Method and system for processing network data packets
US7454499B2 (en) * 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method
GB0303192D0 (en) * 2003-02-12 2003-03-19 Saviso Group Ltd Methods and apparatus for traffic management in peer-to-peer networks
EP1645136B1 (en) 2003-06-20 2017-07-05 Nielsen Media Research, Inc. Signature-based program identification apparatus and methods for use with digital broadcast systems
US7703138B2 (en) * 2004-12-29 2010-04-20 Intel Corporation Use of application signature to identify trusted traffic
US7856661B1 (en) * 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
WO2008020428A2 (en) * 2006-08-15 2008-02-21 Celtro Ltd. Method and system for saving bandwidth during broadcasting/multicasting
US8312558B2 (en) 2007-01-03 2012-11-13 At&T Intellectual Property I, L.P. System and method of managing protected video content

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101505218A (zh) * 2009-03-18 2009-08-12 杭州华三通信技术有限公司 攻击报文的检测方法和装置

Also Published As

Publication number Publication date
US8526318B2 (en) 2013-09-03
CN101997859A (zh) 2011-03-30
US20110051614A1 (en) 2011-03-03

Similar Documents

Publication Publication Date Title
CN101997859B (zh) 识别tcp流中的数据包的载荷的方法和设备
CN101409706B (zh) 一种边缘网络中的数据分发方法、数据分发系统及相关设备
Kaliyar et al. LiDL: Localization with early detection of sybil and wormhole attacks in IoT networks
CN102630378B (zh) 基于描述文件的个体化数据通信方法及设备
CN104320304A (zh) 一种易扩展的多方式融合的核心网用户流量应用识别方法
CN110149323B (zh) 一种具有千万级tps合约处理能力的处理装置
CN104640092A (zh) 识别垃圾短信的方法、客户端、云端服务器和系统
US20120011566A1 (en) System and method for sensor network authentication based on xor chain
Zhang et al. Cuckoo-RPL: cuckoo filter based RPL for defending AMI network from blackhole attacks
CN105279217B (zh) 可重构内容对象
Blanc et al. Benchmarking of lightweight cryptographic algorithms for wireless IoT networks
Zuo et al. P4Label: packet forwarding control mechanism based on P4 for software-defined networking
Natalino et al. Content placement in 5G‐enabled edge/core data center networks resilient to link cut attacks
Shafiee Sarjaz et al. Securing BitTorrent using a new reputation-based trust management system
CN103746768B (zh) 一种数据包的识别方法及设备
CN103281158A (zh) 深度网络通信粒度检测方法及其检测设备
CN101753456B (zh) 一种对等网络流量检测方法及其系统
CN102664904A (zh) 被动模式下的隐藏文件传输服务定位方法
Sunitha et al. Key Observation to Prevent IP Spoofing in DDoS Attack on Cloud Environment
CN106101079A (zh) 一种实现签名加密的方法和系统
CN115314319A (zh) 一种网络资产识别方法、装置、电子设备及存储介质
Dong et al. InterestFence: Countering interest flooding attacks by using hash-based security labels
Krumov et al. Resilient peer-to-peer live-streaming using motifs
Kapetanidou et al. Avoiding notorious content sources: A content-poisoning attack mitigation approach
Zhao et al. Secure public storage auditing protocol for privacy-preserving fog-to-cloud computing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant