多线程用户态网络协议栈系统的NAT数据审计方法和系统技术方案

技术编号:20855158 阅读:22 留言:0更新日期:2019-04-13 10:48
本发明专利技术公开了一种用于多线程用户态网络协议栈系统的NAT数据审计方法,包括:分别在M个线程中添加M个队列,其中,M为多线程用户态网络协议栈系统流处理的线程个数;将数据流的上行数据包加入该数据流的上行数据所在线程中标号为P的队列中,将下行数据包加入该数据流的下行数据所在线程中标号为P的队列中;将各个线程的N号队列的数据进行出队列操作后送入线程N;将各个线程的数据送入审计模块进行审计。由此,解决了多线程网络协议栈对于NAT数据流分布在不同线程与审计需要数据流分布在同一个线程中的冲突,同时利用队列实现了无锁的方式将处于不同线程中的数据流上下行数据包归到同一个线程中,且零拷贝的方式入队列不影响系统性能。

【技术实现步骤摘要】
多线程用户态网络协议栈系统的NAT数据审计方法和系统
本专利技术涉及网络通信
,特别地,涉及一种用于多线程用户态网络协议栈系统的NAT数据审计方法和系统。
技术介绍
随着网络流量不断的加大,传统的内核网络协议栈被替换成多线程的用户态网络协议栈。在多线程用户态的网络协议栈中,用户态网卡驱动根据网络数据包的源IP和目的IP(或者源IP、源端口、目的IP、目的端口及协议)进行同源同宿,将数据包分到不同的线程中,这样就可以利用多线程多CPU进行数据转发,提高网络吞吐量。在NAT(NetworkAddressTranslation,网络地址转换)环境下,在多线程用户态协议栈系统(网关服务器)的不同网口上接收用户同一条数据流的上下行数据包,由于网口接收的源IP、目的IP不一样,故网卡的同源同宿(RSS)技术的hash值不同,将数据包分发到不同的线程中。即,将NAT数据的一条数据流的上下行数据包分布在系统的不同线程中。审计模块用于对网络数据内容进行还原,因此,需要一条数据流的上下行数据包在同一个线程中,这样才能保证不跨越线程地高效地审计数据。由于需要NAT(网络地址转换)的数据流的上下行数据包根据同源同宿无法被分配的同一个线程中,这样,审计模块就无法高效甚至不能审计到应用数据。
技术实现思路
本专利技术的目的在于提供一种用于多线程用户态网络协议栈系统的NAT数据审计方法和系统。本专利技术解决其技术问题采用的技术方案是:提供一种用于多线程用户态网络协议栈系统的NAT数据审计方法,包括以下步骤:S1、分别在M个线程中添加M个队列,其中,M为所述多线程用户态网络协议栈系统流处理的线程个数;S2、将数据流的上行数据包加入该数据流的上行数据所在线程中标号为P的队列中,将下行数据包加入该数据流的下行数据所在线程中标号为P的队列中,其中,P为大于等于0且小于等于M-1的自然数;S3、将各个线程的N号队列的数据进行出队列操作后送入线程N;S4、将各个线程的数据送入审计模块进行审计。在本专利技术提供的用于多线程用户态网络协议栈系统的NAT数据审计方法中,在步骤S1中,在对上行数据进行源地址转换前,在上行数据所在线程中添加所述M个队列;在对下行数据进行目的地址转换后,在下行数据所在线程中添加所述M个队列。在本专利技术提供的多线程用户态网络协议栈系统的NAT数据审计方法中,所述步骤S2包括:利用同源同宿算法计算所述数据流的关键值;将所述关键值除以M后取余的值分别作为所述数据流在上行数据所在线程和下行数据所在线程的哈希值;将所述上行数据包和所述下行数据包的内存地址分别写入该数据流的上行数据所在线程和下行数据所在线程中标号为所述哈希值的队列中。相应地,本专利技术还提供一种用于多线程用户态网络协议栈系统的NAT数据审计系统,包括:队列添加模块,用于分别在M个线程中添加M个队列,其中,M为所述多线程用户态网络协议栈系统流处理的线程个数;第一数据处理模块,用于将数据流的上行数据包加入该数据流的上行数据所在线程中标号为P的队列中,将下行数据包加入该数据流的下行数据所在线程中标号为P的队列中,其中,P为大于等于0且小于等于M-1的自然数;第二数据处理模块,用于将各个线程的N号队列的数据进行出队列操作后送入线程N;审计模块,用于对各个线程的数据进行审计。在本专利技术提供的用于多线程用户态网络协议栈系统的NAT数据审计系统中,所述队列添加模块包括第一添加单元和第二添加单元,所述第一添加单元用于在对上行数据进行源地址转换前,在上行数据所在线程中添加所述M个队列;所述第二添加单元用于在对下行数据进行目的地址转换后,在下行数据所在线程中添加所述M个队列。在本专利技术提供的用于多线程用户态网络协议栈系统的NAT数据审计系统中,所述第一数据处理模块包括:关键值计算单元,用于利用同源同宿算法计算所述数据流的关键值;哈希值计算单元,用于将所述关键值除以M后取余的值分别作为所述数据流在上行数据所在线程的和下行数据所在线程的哈希值;数据写入单元,用于将所述上行数据包和所述下行数据包的内存地址分别写入该数据流的上行数据所在线程和下行数据所在线程中标号为所述哈希值的队列中。本专利技术的用于多线程用户态网络协议栈系统的NAT数据审计方法和系统具有以下有益效果:本专利技术提供的用于多线程用户态网络协议栈系统的NAT数据审计方法,通过在每个线程中增加队列,将数据流的上行数据包和下行数据包分别加入上行数据所在线程和下行数据所在线程中标号相同的队列中;然后将各个线程的N号队列的数据进行出队列操作后送入线程N后送入模块进行审计。由此,将数据的上下行就过度到同一个线程中,解决了多线程网络协议栈对于NAT数据流分布在不同线程与审计需要数据流分布在同一个线程中的冲突,同时利用队列,实现了无锁的方式将处于不同线程中的数据流上下行数据包归到同一个线程中,且零拷贝的方式入队列,不影响系统性能。附图说明图1为本专利技术一实施例提供的用于多线程用户态网络协议栈系统的NAT数据审计方法的流程示意图;图2为图1所示的步骤S2的流程示意图;图3所示为现有技术中进行NAT数据审计时数据的流向图。图4所示为利用本专利技术提供的用于多线程用户态网络协议栈系统的NAT数据审计方法的数据流向图。图5为本专利技术一实施例提供的用于多线程用户态网络协议栈系统的NAT数据审计系统的原理图。具体实施方式为了使本
的技术人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。以下结合附图和实施例对本专利技术做进一步的解释说明。图1为本专利技术一实施例提供的用于多线程用户态网络协议栈系统的NAT数据审计方法的流程图;如图1所示,本专利技术提供的用于多线程用户态网络协议栈系统的NAT数据审计方法包括以下步骤:S1、分别在M个线程中添加M个队列,其中,M为所述多线程用户态网络协议栈系统流处理的线程个数;S2、将数据流的上行数据包加入该数据流的上行数据所在线程中标号为P的队列中,将下行数据包加入该数据流的下行数据所在线程中标号为P的队列中,其中,P为大于等于0且小于等于M-1的自然数;S3、将各个线程的N号队列的数据进行出队列操作后送入线程N;S4、将各个线程的数据送入审计模块进行审计。在步骤S1中,在每一个线程(包括上行数据所在线程和下行数据所在线程)中添加与该系统流处理线程数一致的队列个数。即系统流处理线程数为M,则为每一个线程添加M个队列,总共添加M乘以M个队列。进一步地,由于线程分为上行数据所在线程和下行数据所在线程,所以,在步骤S1中,在对上行数据进行源地址本文档来自技高网
...

【技术保护点】
1.一种用于多线程用户态网络协议栈系统的NAT数据审计方法,其特征在于,包括以下步骤:S1、分别在M个线程中添加M个队列,其中,M为所述多线程用户态网络协议栈系统流处理的线程个数;S2、将数据流的上行数据包加入该数据流的上行数据所在线程中标号为P的队列中,将下行数据包加入该数据流的下行数据所在线程中标号为P的队列中,其中,P为大于等于0且小于等于M‑1的自然数;S3、将各个线程的N号队列的数据进行出队列操作后送入线程N;S4、将各个线程的数据送入审计模块进行审计。

【技术特征摘要】
1.一种用于多线程用户态网络协议栈系统的NAT数据审计方法,其特征在于,包括以下步骤:S1、分别在M个线程中添加M个队列,其中,M为所述多线程用户态网络协议栈系统流处理的线程个数;S2、将数据流的上行数据包加入该数据流的上行数据所在线程中标号为P的队列中,将下行数据包加入该数据流的下行数据所在线程中标号为P的队列中,其中,P为大于等于0且小于等于M-1的自然数;S3、将各个线程的N号队列的数据进行出队列操作后送入线程N;S4、将各个线程的数据送入审计模块进行审计。2.根据权利要求1所述的用于多线程用户态网络协议栈系统的NAT数据审计方法,其特征在于,在步骤S1中,在对上行数据进行源地址转换前,在该数据流的上行数据所在线程中添加所述M个队列;在对下行数据进行目的地址转换后,在该数据流的下行数据所在线程中添加所述M个队列。3.根据权利要求1所述的用于多线程用户态网络协议栈系统的NAT数据审计方法,其特征在于,所述步骤S2包括:利用同源同宿算法计算所述数据流的关键值;将所述关键值除以M后取余的值分别作为所述数据流在上行数据所在线程和下行数据所在线程的哈希值;将所述上行数据包和所述下行数据包的内存地址分别写入该数据流的上行数据所在线程和下行数据所在线程中标号为所述哈希值的队列中。4.一种用于多线程用户态网络协议栈系统的NAT数据审计系统,其特征在于,包括:队列添加...

【专利技术属性】
技术研发人员:吕恩泳程海龙刘永强沈智杰景晓军
申请(专利权)人:深圳市任子行科技开发有限公司任子行网络技术股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1