CN103647716A - 一种数据包快速转发方法及装置 - Google Patents

一种数据包快速转发方法及装置 Download PDF

Info

Publication number
CN103647716A
CN103647716A CN201310597300.8A CN201310597300A CN103647716A CN 103647716 A CN103647716 A CN 103647716A CN 201310597300 A CN201310597300 A CN 201310597300A CN 103647716 A CN103647716 A CN 103647716A
Authority
CN
China
Prior art keywords
packet
forwarding
fast
information
modification
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.)
Pending
Application number
CN201310597300.8A
Other languages
English (en)
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.)
Shanghai Feixun Data Communication Technology Co Ltd
Original Assignee
Shanghai Feixun Data Communication Technology Co Ltd
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 Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201310597300.8A priority Critical patent/CN103647716A/zh
Publication of CN103647716A publication Critical patent/CN103647716A/zh
Priority to PCT/CN2014/000988 priority patent/WO2015074324A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/10Current supply arrangements

Abstract

本发明提供的一种数据包快速转发方法及装置,通过确定多个数据包在各自转发过程中的相同环节,进而根据所述相同环节对应提取所述各数据包中的相同特征信息,并且,根据所述相同特征信息对所述各预定种类的数据包进行快转分类,再将快转分类后的数据包类别关联上对应的转发操作集,而当后续要转发的数据包属于所述数据包类别时,即可根据所对应的转发操作集修改数据包并转发,从而节省查路由表、查NAT表等等的操作时间,加速了数据包的转发。

Description

一种数据包快速转发方法及装置
技术领域
本发明涉及通信技术领域,特别是涉及一种数据包快速转发方法及装置。
背景技术
互联网设备发展迅猛,网关产品上Linux网络协议栈对数据包的转发按转发方向分类可以分为:上行转发和下行转发;按转发涉及的网络层次分类可以分为:二层转发和三层转发。
对于一般的需要做转发处理的数据包的转发流程是:
第一步:当网络接口驱动程序接收到数据包后,交给Linux网络协议栈的收包函数,协议栈根据目的MAC做二层转发还是三层转发的判断,
第二步:如果是二层转发,上行和下行转发的处理过程是一样的。先交由bridge模块先做防火墙过滤规则检查;对于能够转发的数据包,根据桥的端口配置关系进行转发;然后交由出接口的网络接口驱动层序发送到物理链路。
第三步:如果是三层转发,对于下行数据包,如果是PPPoE封包,先去掉PPPoE封装;然后进入Netfilter模块的PREROUTING模块,做DNAT检查,对于下行数据包需要修改目的IP和目的端口;然后进入FORWARD模块,做防火墙的过滤规则检查;然后进入OUTPUT模块,查路由表,选择出去的路由,然后做防火墙的过滤规则检查;然后进入POSTROUTING模块,对于上行数据包需要根据NAT规则,修改源IP和源端口;对于上行数据包如果出接口是PPPoE类型的,需要对封包进行PPPoE封装;然后交由出接口的网络接口驱动程序发送到物理链路。
但是,终端用户对网络带宽的要求越来越大,提升网关设备的转发性能也越来来越迫切。解决这个问题总体来说有两个方案:一个是提升硬件的处理能力;另一个是在软件上做优化,但是目前针对网关设备的软件优化方案还是比较少。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种数据包快速转发方法及装置,用于解决上述现有技术网关产品性能不足以应对网络带宽要求的问题。
为实现上述目的及其他相关目的,本发明提供一种数据包快速转发方法,包括:确定多个数据包在各自转发过程中的相同环节;根据所述相同环节对应提取所述各数据包中的相同特征信息;根据所述相同特征信息对所述各预定种类的数据包进行快转分类;将快转分类后的数据包类别关联上对应的转发操作集;当数据包属于所述数据包类别时,根据所对应的转发操作集修改数据包并转发;当数据包不属于所述数据包类别时,通过Linux系统的网络协议栈转发。
优选的,所述数据包是在MAC层即二层和/或IP层即三层转发的;所述相同特征信息包括:对于二层转发所有源MAC地址和目的MAC地址相同的报文,同一个组播源的组播数据报文,TCP三次握手成功后续传数据的报文,UDP传输数据时源IP地址、目的IP地址、源端口信息目的端口信息都相同的报文。
优选的,所述快转分类指的是:生成快速转发表,其中,所述快速转发表记录所述快转分类后的数据包类别及对应的转发操作集;所述数据包属于所述数据包类别指的是:从数据包中提取的信息字段命中所述快速转发表中的数据包类别对应的相同特征信息。
优选的,所述数据包快速转发方法还包括:快速转发表更新步骤:学习已经成功转发的数据包所包含的信息字段,以更新所述快速转发表中的数据包类别信息。
优选的,所述数据包类别所包括的信息有:数据包的源MAC地址、目的MAC地址、虚拟局域网标识、源IP地址、目的IP地址、通信协议、源端口信息、目的端口信息。
优选的,所述快速转发表包括:对应MAC层的二层快速转发表、对应TCP/IP层的三层快速转发表;所述二层快速转发表中的数据包类别信息包括:源MAC地址、目的MAC地址、虚拟局域网标识;所述三层快速转发表的数据包类别信息包括:虚拟局域网标识、源IP地址、目的IP地址信息、通信协议、源端口信息、目的端口信息。
优选的,所述根据所对应的转发操作集修改数据包,包括:对应所述二层快速转发表的修改,包括:数据包的虚拟局域网标识信息的修改、二层网络协议的修改;对应所述三层快速转发表的修改,包括:数据包的源MAC地址的修改、目的MAC地址的修改、虚拟局域网标识的修改、源IP地址的修改、目的IP地址的修改、通信协议的修改、源端口信息的修改、目的端口信息的修改、PPPoE封装、TTL的修改。
优选的,所述源IP地址信息的修改和源端口信息的修改是在三层上行数据包的转发过程中有NAT时进行的;所述目的IP地址信息的修改和目的端口信息的修改是在三层下行数据包的转发过程中有NAT时进行的;所述PPPoE封装是在三层转发中涉及PPPoE端口信息时进行的;所述TTL的修改指的是三层转发数据包时TTL值减1。
优选的,所述根据所对应的转发操作集修改数据包,包括:修改数据包格式以适应指定转发的网络接口。
优选的,所述数据包快速转发方法还包括:记录数据包被防火墙拦截的信息;根据所述数据包被防火墙拦截的信息,将与被拦截数据包在所述数据包类别中属于同类的数据包通过Linux系统的网络协议栈转发。
为实现上述目的及其他相关目的,本发明还提供一种数据包快速转发装置,包括:确认模块,用于确定多个数据包在各自转发过程中的相同环节;提取模块,用于根据所述相同环节对应提取所述各数据包中的相同特征信息;快转分类模块,用于根据所述相同特征信息对所述各预定种类的数据包进行快转分类;关联模块,用于将快转分类后的数据包类别关联上对应的转发操作集;判断模块,用于当判断出待转发的数据包是否属于所述数据包类别,当判断出数据包不属于所述数据包类别时,通过Linux网络协议栈转发;修改模块,用于当所述判断模块判断出数据包属于所述数据包类别时,根据所对应的转发操作集修改数据包并转发。
优选的,所述数据包是在MAC层即二层和/或IP层即三层转发的;所述相同特征信息包括:对于二层转发所有源MAC地址和目的MAC地址相同的报文,同一个组播源的组播数据报文,TCP三次握手成功后续传数据的报文,UDP传输数据时源IP地址、目的IP地址、源端口信息目的端口信息都相同的报文。
优选的,所述快转分类指的是:生成快速转发表,其中,所述快速转发表记录所述快转分类后的数据包类别及对应的转发操作集;所述数据包属于所述数据包类别指的是:从数据包中提取的信息字段命中所述快速转发表中的数据包类别对应的相同特征信息。
优选的,所述数据包快速转发装置还包括:快速转发表更新模块,用于学习已经成功转发的数据包所包含的信息字段,以更新所述快速转发表中的数据包类别信息。
优选的,所述数据包类别所包括的信息有:数据包的源MAC地址、目的MAC地址、虚拟局域网标识、源IP地址、目的IP地址、通信协议、源端口信息、目的端口信息。
优选的,所述快速转发表包括:对应MAC层的二层快速转发表、对应TCP/IP层的三层快速转发表;所述二层快速转发表中的数据包类别信息包括:源MAC地址、目的MAC地址、虚拟局域网标识;所述三层快速转发表的数据包类别信息包括:虚拟局域网标识、源IP地址、目的IP地址信息、通信协议、源端口信息、目的端口信息。
优选的,所述修改模块对数据包的修改包括:对应所述二层快速转发表的修改,包括:待转发的数据包的虚拟局域网标识信息的修改、二层网络协议的修改;对应所述三层快速转发表的修改,包括:待转发的数据包的源MAC地址的修改、目的MAC地址的修改、虚拟局域网标识的修改、源IP地址的修改、目的IP地址的修改、通信协议的修改、源端口信息的修改、目的端口信息的修改、PPPoE封装、TTL的修改。
优选的,所述源IP地址信息的修改和源端口信息的修改是在三层上行数据包的转发过程中有NAT时进行的;所述目的IP地址信息的修改和目的端口信息的修改是在三层下行数据包的转发过程中有NAT时进行的;所述PPPoE封装是在三层转发中涉及PPPoE端口信息时进行的;所述TTL的修改指的是三层转发数据包时TTL值减1。
优选的,所述修改模块,还用于修改数据包格式以适应指定转发的网络接口。
优选的,所述数据包快速转发装置还包括:记录模块,用于记录数据包被防火墙拦截的信息,并根据所述数据包被防火墙拦截的信息,将与被拦截数据包在所述数据包类别中属于同类的数据包通过Linux系统的网络协议栈转发。
如上所述,本发明提供的一种数据包快速转发方法及装置,通过确定多个数据包在各自转发过程中的相同环节,进而根据所述相同环节对应提取所述各数据包中的相同特征信息,并且,根据所述相同特征信息对所述各预定种类的数据包进行快转分类,再将快转分类后的数据包类别关联上对应的转发操作集,而当后续要转发的数据包属于所述数据包类别时,即可根据所对应的转发操作集修改数据包并转发,从而节省查路由表、查NAT表等等的操作时间,加速了数据包的转发。
附图说明
图1显示为本发明的数据包快速转发方法的一实施例的步骤流程示意图。
图2显示为本发明的数据包快速转发方法的另一实施例的步骤流程示意图。
图3显示为本发明的数据包快速转发方法的又一实施例的步骤流程示意图。
图4显示为本发明的数据包快速转发装置的实施例的结构示意图。
图5显示为本发明的数据包快速转发方法及装置的运作原理图。
元件标号说明
Figure BDA0000420124890000041
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
请参阅图1,本发明提供的一种数据包快速转发方法,包括:
步骤S1:确定多个数据包在各自转发过程中的相同环节;
步骤S2:根据所述相同环节对应提取所述各数据包中的相同特征信息;
步骤S3:根据所述相同特征信息对所述各预定种类的数据包进行快转分类;
步骤S4:将快转分类后的数据包类别关联上对应的转发操作集;
步骤S5:当数据包属于所述数据包类别时,根据所对应的转发操作集修改数据包并转发;当数据包不属于所述数据包类别时,通过Linux系统的网络协议栈转发。
在本实施例中,所述数据包是在MAC层即二层和/或IP层即三层转发的,意即应用于以太网的OSI或TCP/IP网络模型中的协议层,本发明可以应用于Linux系统的网关设备如路由器、交换机中,三层交换机已是常见设备,所谓三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由。
在本实施例中,所述相同特征信息包括:对于二层转发所有源MAC地址和目的MAC地址相同的报文,同一个组播源的组播数据报文,TCP三次握手成功后续传数据的报文,UDP传输数据时源IP地址、目的IP地址、源端口信息目的端口信息都相同的报文,对于上面描述的这几类数据包有各自的共同特征,只要这些特征相同,那么对应的转发处理也相同,即后续所要做的修改和转发处理都相同,本发明的方法就是利用这些特征减少转发过程中的判断逻辑和处理流程,来提升数据包的转发效率。
在本实施例中,所述快转分类有生成快速转发表,其中,所述快速转发表记录所述快转分类后的数据包类别及对应的转发操作集;所述数据包属于所述数据包类别指的是:从数据包中提取的信息字段命中所述快速转发表中的数据包类别对应的相同特征信息。
在本实施例中,所述数据包类别所包括的信息有:数据包的源MAC地址、目的MAC地址、虚拟局域网标识、源IP地址、目的IP地址、通信协议、源端口信息、目的端口信息。
并且,在本实施例中,因为要考虑二层和三层转发,因此快速转发表可以包括两张:对应MAC层的二层快速转发表、对应TCP/IP层的三层快速转发表;所述二层快速转发表中的数据包类别信息包括:源MAC地址、目的MAC地址、虚拟局域网标识;所述三层快速转发表的数据包类别信息包括:虚拟局域网标识、源IP地址、目的IP地址信息、通信协议、源端口信息、目的端口信息。
在本实施例中,所述快转分类就是对于二层转发用“目的MAC+源MAC+VLAN”的分类方法;对于三层转发采用“VLAN+目的IP+源IP+目的端口+源端口+协议”的分类方法;为这两种分类方法各维护一张表,前者定义为二层快速转发表;后者定义为三层快速转发表,表内的每条记录对应一条可以由快速转发模块转发的数据流。在做分类时,从数据包中提取相应的字段,和两个表中的所有记录做比较,如果命中,则说明该数据包能够做快速转发;不能命中,则交由Linux网络协议栈做转发。
在本实施例中,对应的,所述数据包快速转发方法还包括:快速转发表更新步骤:学习已经成功转发的数据包所包含的信息字段,以更新所述快速转发表中的数据包类别信息。具体来说,本发明的数据包快速转发方法还提供学习机制,即一种根据已经成功转发的数据包的特征更新二层快速转发表或三层快速转发表的记录,以保证后续具有同样特征的数据包能够由快速转发模块根据该记录实现转发的机制。
在本实施例中,学习机制的工作流程如下:快速转发模块接收到网络驱动层序发送过来的数据包,提取数据包的特征字段到skbuff的对应字段,skbuff.h是Linux内核的头文件,skbuff.h中最主要的是包含了Linux内核网络子系统(协议栈)用来表示数据包的数据结构。数据包交由Linux协议栈的收包函数,做转发处理;Linux协议栈在做转发处理时,根据需要设置skbuff中的学习标志位;Linux协议栈发送数据包调用快速转发模块发送前处理函数,检查skbuff中的学习标志位;如果被置位,则对skbuff中的记录字段和修改后的数据包做比较生成相应的修改处理规则。
其中,对于二层转发,提取数据包的源MAC、目的MAC、接收设备和源数据包的VLANTAG作为分类标准,并记录VLAN TAG的改动和发送接口作为修改和转发的规则;而对于三层转发,提取数据包的接收设备、源数据包的VLAN TAG、目的IP、源IP、目的port、源port和协议信息作为分类标准,并记录源MAC、目的MAC、VLAN TAG、源IP地址、目的IP地址、源端口和目的端口的改动作为修改和转发的规则。
由于二层快速转发表和三层快速转发表的记录都是有生存周期的,二层快速转发表采用超时机制,超时机制与内核协议栈的Mac table的一致,超时时间默认为2分钟,在成功使用该记录实现转发时刷新超时定时器,在闲置2分钟后,清楚该记录。三层快速转发表采用和二层快速转发表相同的超时机制,但默认超时时间为20秒。
对于下面的几种情形内核协议栈需要设置相应skbuff的学习标志位:
二层转发,bridge模块成功转发一个单播数据包时;
三层转发,Netfilter模块成功加入一条nf_contrack记录时,目前只针对TCP和UDP协议做处理。
以上为例示性的学习机制,并非以此为限。
在本实施例中,所述根据所对应的转发操作集修改数据包,包括:对应所述二层快速转发表的修改,包括:数据包的虚拟局域网标识信息的修改、二层网络协议的修改;对应所述三层快速转发表的修改,包括:数据包的源MAC地址的修改、目的MAC地址的修改、虚拟局域网标识的修改、源IP地址的修改、目的IP地址的修改、通信协议的修改、源端口信息的修改、目的端口信息的修改、PPPoE封装、TTL的修改。
对数据包的修改处理见下表例示:
改动 说明
源MAC 三层转发时需要修改
目的MAC 三层转发时需要修改
VLAN TAG 二层转发和三层转发都有可能需要增加或删除
802.1p(问题4) 二层转发和三层转发都有可能需要增加或删除
源IP 三层转发上行包在有NAT时需要修改
目的IP 三层转发下行包在有NAT时需要修改
源port 三层转发上行包在有NAT时可能需要修改
目的port 三层转发下行包在有NAT时可能需要修改
PPPoE封装 三层转发时如果涉及PPPoE接口需要增加或删除
TTL 减1
从表中可知,所述源IP地址信息的修改和源端口信息的修改是在三层上行数据包的转发过程中有网络地址转换(NAT)时进行的;所述目的IP地址信息的修改和目的端口信息的修改是在三层下行数据包的转发过程中有NAT时进行的;所述PPPoE封装是在三层转发中涉及PPPoE端口信息时进行的;所述TTL的修改指的是三层转发数据包时TTL值减1,TTL是生存时间(Time To Live)。
在本实施例中,所述根据所对应的转发操作集修改数据包,包括:修改数据包格式以适应指定转发的网络接口,如PPPoE接口等。
在本实施例中,所述数据包快速转发方法还包括:记录数据包被防火墙拦截的信息;根据所述数据包被防火墙拦截的信息,将与被拦截数据包在所述数据包类别中属于同类的数据包通过Linux系统的网络协议栈转发。在本实施例中,关于防火墙的考虑:本发明对于同一类型的数据包,第一个包是由Linux协议栈处理的,当转发成功后配置相应的快速转发规则,后续的同类数据包做快速转发。如果第一个数据包能够完成转发,则认为是符合防火墙的允许通过原则的,那么后续同类的数据包也应该是符合防火墙允许通过的原则的;如果第一个数据包被防火墙规则丢弃,则不会生成快速转发规则,后续同类的数据包也会交由Linux网络协议栈做转发,同样会被防火墙规则丢弃。所以该加速逻辑,不会影响防火墙的正常工作。
如图2所示,显示本发明的数据包快速转发方法中的另一实施例,关于上行数据包加速转发的实施例,包括如下步骤:
步骤S6:接收到上行数据包
步骤S7:判断目的MAC地址是否是LAN侧的;若是则执行三层转发流程,即从步骤
S8执行,若否则至二层转发流程即从步骤S16执行;
步骤S8:判断数据包是否命中三层快速转发表;若是则进行步骤S19发送到Linux网络
协议栈进行发送,若否则执行步骤S9
步骤S9:判断是否有NAT,若是则进行步骤S10,若否则直接跳至步骤S11;
步骤S10:修改源IP及源端口;
步骤S11:判断是否需要做PPPoE封装;若是则进行步骤S12,若否则直接跳至步骤S13;
步骤S12:给数据包做PPPoE封装;
步骤S13:修改VLAN;
步骤S14:修改源MAC和目的MAC地址;
步骤S15:将数据包从指定网络接口发送;
所述二层转发流程:
步骤S16:判断是否是广播MAC;若是就不用考虑快转,正常发送即可,即进行步骤S19
发送到Linux网络协议栈进行发送;若否则执行步骤S17;
步骤S17:判断是否命中二层快速转发表;若否则与上述三层转发相同,进行步骤S19;
若是则至步骤S18:修改VLAN,然后跳转至步骤S15从指定网络接口发送。
需说明的是,此实施例中的标号并非承接上述S1~S5。
如图3所示,显示本发明的数据包快速转发方法中的再一实施例,关于下行数据包加速转发的实施例,其步骤与图2的上行方法基本相同,仅作图示而不另作赘述。
如图4所示,本发明还提供一种数据包快速转发装置1,其原理及特征与上述数据包快速转发方法大致相同,因此不另作赘述,所述数据包快速转发装置1包括:
确认模块11,用于确定多个数据包在各自转发过程中的相同环节;提取模块12,用于根据所述相同环节对应提取所述各数据包中的相同特征信息;快转分类模块13,用于根据所述相同特征信息对所述各预定种类的数据包进行快转分类;关联模块14,用于将快转分类后的数据包类别关联上对应的转发操作集;判断模块15,用于当判断出待转发的数据包是否属于所述数据包类别,当判断出数据包不属于所述数据包类别时,通过Linux网络协议栈转发;修改模块16,用于当所述判断模块15判断出数据包属于所述数据包类别时,根据所对应的转发操作集修改数据包并转发。
优选的,所述数据包是在MAC层即二层和/或IP层即三层转发的;所述相同特征信息包括:对于二层转发所有源MAC地址和目的MAC地址相同的报文,同一个组播源的组播数据报文,TCP三次握手成功后续传数据的报文,UDP传输数据时源IP地址、目的IP地址、源端口信息目的端口信息都相同的报文。
优选的,所述快转分类指的是:生成快速转发表,其中,所述快速转发表记录所述快转分类后的数据包类别及对应的转发操作集;所述数据包属于所述数据包类别指的是:从数据包中提取的信息字段命中所述快速转发表中的数据包类别对应的相同特征信息。
优选的,所述数据包快速转发装置1还包括:快速转发表更新模块17,用于学习已经成功转发的数据包所包含的信息字段,以更新所述快速转发表中的数据包类别信息。
优选的,所述数据包类别所包括的信息有:数据包的源MAC地址、目的MAC地址、虚拟局域网标识、源IP地址、目的IP地址、通信协议、源端口信息、目的端口信息。
优选的,所述快速转发表包括:对应MAC层的二层快速转发表、对应TCP/IP层的三层快速转发表;所述二层快速转发表中的数据包类别信息包括:源MAC地址、目的MAC地址、虚拟局域网标识;所述三层快速转发表的数据包类别信息包括:虚拟局域网标识、源IP地址、目的IP地址信息、通信协议、源端口信息、目的端口信息。
优选的,所述修改模块16对数据包的修改包括:对应所述二层快速转发表的修改,包括:待转发的数据包的虚拟局域网标识信息的修改、二层网络协议的修改;对应所述三层快速转发表的修改,包括:待转发的数据包的源MAC地址的修改、目的MAC地址的修改、虚拟局域网标识的修改、源IP地址的修改、目的IP地址的修改、通信协议的修改、源端口信息的修改、目的端口信息的修改、PPPoE封装、TTL的修改。
优选的,所述源IP地址信息的修改和源端口信息的修改是在三层上行数据包的转发过程中有NAT时进行的;所述目的IP地址信息的修改和目的端口信息的修改是在三层下行数据包的转发过程中有NAT时进行的;所述PPPoE封装是在三层转发中涉及PPPoE端口信息时进行的;所述TTL的修改指的是三层转发数据包时TTL值减1。
优选的,所述修改模块16,还用于修改数据包格式以适应指定转发的网络接口。
优选的,所述数据包快速转发装置1还包括:记录模块18,用于记录数据包被防火墙拦截的信息,并根据所述数据包被防火墙拦截的信息,将与被拦截数据包在所述数据包类别中属于同类的数据包通过Linux系统的网络协议栈转发。
请参考图5,总结下本发明的加速转发原理:举例来说,因大部分网关设备采用Linux系统,本发明就是在基于Linux内核内新增一个加速模块,该模块工作在网路接口驱动和Linux内核协议栈之间;网络接口驱动接收到数据包后,不交给Linux网络协议栈,而是交给快速转发模块。快速转发模块检查该数据包能否做快速转发,如果可以,则直接由快速转发模块完成修改和转发,最后通过网络接口驱动的发送函数发送出去,称为fast path;不能做快速转发的数据包交由Linux网络协议栈做转发,称为slow path。Slow path在发送数据包时较标准内核的改动是:内核协议栈发送数据包时先调用fast path层的发送前处理函数,再调用网络接口驱动程序的发送函数;发送前处理函数主要完成快速转发规则的学习,不修改数据包的内容。
综上所述,本发明提供的一种数据包快速转发方法及装置,通过确定多个数据包在各自转发过程中的相同环节,进而根据所述相同环节对应提取所述各数据包中的相同特征信息,并且,根据所述相同特征信息对所述各预定种类的数据包进行快转分类,再将快转分类后的数据包类别关联上对应的转发操作集,而当后续要转发的数据包属于所述数据包类别时,即可根据所对应的转发操作集修改数据包并转发,从而节省查路由表、查NAT表等等的操作时间,加速了数据包的转发。本发明已经通过实验,并在以确定的硬件方案上做过比较试验,在500MHz主频的网络处理器上转发性能比现有方案要高20Mbps(二层转发),30Mbps以上(三层转发),大大提升转发效率。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (20)

1.一种数据包快速转发方法,其特征在于,包括:
确定多个数据包在各自转发过程中的相同环节;
根据所述相同环节对应提取所述各数据包中的相同特征信息;
根据所述相同特征信息对所述各预定种类的数据包进行快转分类;
将快转分类后的数据包类别关联上对应的转发操作集;
当数据包属于所述数据包类别时,根据所对应的转发操作集修改数据包并转发;
当数据包不属于所述数据包类别时,通过Linux系统的网络协议栈转发。
2.根据权利要求1所述的数据包快速转发方法,其特征在于,所述数据包是在MAC层即二层和/或IP层即三层转发的;所述相同特征信息包括:对于二层转发所有源MAC地址和目的MAC地址相同的报文,同一个组播源的组播数据报文,TCP三次握手成功后续传数据的报文,UDP传输数据时源IP地址、目的IP地址、源端口信息目的端口信息都相同的报文。
3.根据权利要求2所述的数据包快速转发方法,其特征在于,所述快转分类指的是:
生成快速转发表,其中,所述快速转发表记录所述快转分类后的数据包类别及对应的转发操作集;
所述数据包属于所述数据包类别指的是:从数据包中提取的信息字段命中所述快速转发表中的数据包类别对应的相同特征信息。
4.根据权利要求3所述的数据包快速转发方法,其特征在于,还包括快速转发表更新步骤:
学习已经成功转发的数据包所包含的信息字段,以更新所述快速转发表中的数据包类别信息。
5.根据权利要求3所述的数据包快速转发方法,其特征在于,所述数据包类别所包括的信息有:数据包的源MAC地址、目的MAC地址、虚拟局域网标识、源IP地址、目的IP地址、通信协议、源端口信息、目的端口信息。
6.根据权利要求5所述的数据包快速转发方法,其特征在于,所述快速转发表包括:对应MAC层的二层快速转发表、对应TCP/IP层的三层快速转发表;
所述二层快速转发表中的数据包类别信息包括:源MAC地址、目的MAC地址、虚拟局域网标识;
所述三层快速转发表的数据包类别信息包括:虚拟局域网标识、源IP地址、目的IP地址信息、通信协议、源端口信息、目的端口信息。
7.根据权利要求6所述的数据包快速转发方法,其特征在于,所述根据所对应的转发操作集修改数据包,包括:
对应所述二层快速转发表的修改,包括:数据包的虚拟局域网标识信息的修改、二层网络协议的修改;
对应所述三层快速转发表的修改,包括:数据包的源MAC地址的修改、目的MAC地址的修改、虚拟局域网标识的修改、源IP地址的修改、目的IP地址的修改、通信协议的修改、源端口信息的修改、目的端口信息的修改、PPPoE封装、TTL的修改。
8.根据权利要求7所述的数据包快速转发方法,其特征在于,所述源IP地址信息的修改和源端口信息的修改是在三层上行数据包的转发过程中有NAT时进行的;所述目的IP地址信息的修改和目的端口信息的修改是在三层下行数据包的转发过程中有NAT时进行的;所述PPPoE封装是在三层转发中涉及PPPoE端口信息时进行的;所述TTL的修改指的是三层转发数据包时TTL值减1。
9.根据权利要求1至7中任一项所述的数据包快速转发方法,其特征在于,所述根据所对应的转发操作集修改数据包,包括:修改数据包格式以适应指定转发的网络接口。
10.根据权利要求1所述的数据包快速转发方法,其特征在于,还包括:
记录数据包被防火墙拦截的信息;
根据所述数据包被防火墙拦截的信息,将与被拦截数据包在所述数据包类别中属于同类的数据包通过Linux系统的网络协议栈转发。
11.一种数据包快速转发装置,其特征在于,包括:
确认模块,用于确定多个数据包在各自转发过程中的相同环节;
提取模块,用于根据所述相同环节对应提取所述各数据包中的相同特征信息;
快转分类模块,用于根据所述相同特征信息对所述各预定种类的数据包进行快转分类;
关联模块,用于将快转分类后的数据包类别关联上对应的转发操作集;
判断模块,用于当判断出待转发的数据包是否属于所述数据包类别,当判断出数据包不属于所述数据包类别时,通过Linux网络协议栈转发;
修改模块,用于当所述判断模块判断出数据包属于所述数据包类别时,根据所对应的转发操作集修改数据包并转发。
12.根据权利要求11所述的数据包快速转发装置,其特征在于,所述数据包是在MAC层即二层和/或IP层即三层转发的;所述相同特征信息包括:对于二层转发所有源MAC地址和目的MAC地址相同的报文,同一个组播源的组播数据报文,TCP三次握手成功后续传数据的报文,UDP传输数据时源IP地址、目的IP地址、源端口信息目的端口信息都相同的报文。
13.根据权利要求12所述的数据包快速转发装置,其特征在于,所述快转分类指的是:生成快速转发表,其中,所述快速转发表记录所述快转分类后的数据包类别及对应的转发操作集;
所述数据包属于所述数据包类别指的是:从数据包中提取的信息字段命中所述快速转发表中的数据包类别对应的相同特征信息。
14.根据权利要求13所述的数据包快速转发装置,其特征在于,还包括:
快速转发表更新模块,用于学习已经成功转发的数据包所包含的信息字段,以更新所述快速转发表中的数据包类别信息。
15.根据权利要求13所述的数据包快速转发装置,其特征在于,所述数据包类别所包括的信息有:数据包的源MAC地址、目的MAC地址、虚拟局域网标识、源IP地址、目的IP地址、通信协议、源端口信息、目的端口信息。
16.根据权利要求15所述的数据包快速转发装置,其特征在于,所述快速转发表包括:对应MAC层的二层快速转发表、对应TCP/IP层的三层快速转发表;
所述二层快速转发表中的数据包类别信息包括:源MAC地址、目的MAC地址、虚拟局域网标识;
所述三层快速转发表的数据包类别信息包括:虚拟局域网标识、源IP地址、目的IP地址信息、通信协议、源端口信息、目的端口信息。
17.根据权利要求16所述的数据包快速转发装置,其特征在于,所述修改模块对数据包的修改包括:
对应所述二层快速转发表的修改,包括:待转发的数据包的虚拟局域网标识信息的修改、二层网络协议的修改;
对应所述三层快速转发表的修改,包括:待转发的数据包的源MAC地址的修改、目的MAC地址的修改、虚拟局域网标识的修改、源IP地址的修改、目的IP地址的修改、通信协议的修改、源端口信息的修改、目的端口信息的修改、PPPoE封装、TTL的修改。
18.根据权利要求17所述的数据包快速转发装置,其特征在于,所述源IP地址信息的修改和源端口信息的修改是在三层上行数据包的转发过程中有NAT时进行的;所述目的IP地址信息的修改和目的端口信息的修改是在三层下行数据包的转发过程中有NAT时进行的;所述PPPoE封装是在三层转发中涉及PPPoE端口信息时进行的;所述TTL的修改指的是三层转发数据包时TTL值减1。
19.根据权利要求11或17所述的数据包快速转发装置,其特征在于,所述修改模块,还用于修改数据包格式以适应指定转发的网络接口。
20.根据权利要求11所述的数据包快速转发装置,其特征在于,还包括:
记录模块,用于记录数据包被防火墙拦截的信息,并根据所述数据包被防火墙拦截的信息,将与被拦截数据包在所述数据包类别中属于同类的数据包通过Linux系统的网络协议栈转发。
CN201310597300.8A 2013-11-22 2013-11-22 一种数据包快速转发方法及装置 Pending CN103647716A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310597300.8A CN103647716A (zh) 2013-11-22 2013-11-22 一种数据包快速转发方法及装置
PCT/CN2014/000988 WO2015074324A1 (zh) 2013-11-22 2014-11-11 一种数据包快速转发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310597300.8A CN103647716A (zh) 2013-11-22 2013-11-22 一种数据包快速转发方法及装置

Publications (1)

Publication Number Publication Date
CN103647716A true CN103647716A (zh) 2014-03-19

Family

ID=50252875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310597300.8A Pending CN103647716A (zh) 2013-11-22 2013-11-22 一种数据包快速转发方法及装置

Country Status (2)

Country Link
CN (1) CN103647716A (zh)
WO (1) WO2015074324A1 (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104410541A (zh) * 2014-11-18 2015-03-11 盛科网络(苏州)有限公司 Vxlan内层虚拟机流量在中间交换机上进行统计的方法及装置
WO2015074324A1 (zh) * 2013-11-22 2015-05-28 上海斐讯数据通信技术有限公司 一种数据包快速转发方法及装置
CN104954262A (zh) * 2015-06-24 2015-09-30 上海斐讯数据通信技术有限公司 一种数据快速转发方法和系统
CN105591977A (zh) * 2015-08-28 2016-05-18 杭州华三通信技术有限公司 报文处理方法以及装置
CN105939216A (zh) * 2016-03-16 2016-09-14 杭州迪普科技有限公司 报文传输的方法及装置
CN105959254A (zh) * 2015-12-02 2016-09-21 杭州迪普科技有限公司 处理报文的方法和装置
CN105959236A (zh) * 2015-11-06 2016-09-21 西安交大捷普网络科技有限公司 提升网络防护设备吞吐性能的数据包转发方法
WO2017000878A1 (zh) * 2015-06-30 2017-01-05 杭州华三通信技术有限公司 报文处理
CN107431707A (zh) * 2015-03-27 2017-12-01 德国电信股份公司 针对欺诈报文保护通信网络的网络保护实体和方法
CN107682267A (zh) * 2017-09-21 2018-02-09 烽火通信科技股份有限公司 Linux设备的网络数据转发方法及系统
CN108096831A (zh) * 2016-11-25 2018-06-01 盛趣信息技术(上海)有限公司 网络游戏防加速控制系统及方法
CN110224932A (zh) * 2019-05-06 2019-09-10 烽火通信科技股份有限公司 一种数据快速转发的方法及系统
CN110572330A (zh) * 2019-09-17 2019-12-13 普联技术有限公司 实现转发加速功能和协议栈功能兼容的方法、装置及介质
CN110651451A (zh) * 2017-05-24 2020-01-03 瑞典爱立信有限公司 基于策略的路由系统中的路由表选择
CN111327665A (zh) * 2018-12-14 2020-06-23 就肆电竞股份有限公司 资料传输加速装置、资料传输加速方法及路由器
CN111371728A (zh) * 2018-12-25 2020-07-03 华为终端有限公司 一种处理方法及装置
CN111404817A (zh) * 2020-03-24 2020-07-10 深圳市吉祥腾达科技有限公司 一种提升网络通信设备分片数据包转发性能的方法及系统
CN111800344A (zh) * 2020-07-08 2020-10-20 深圳市共进电子股份有限公司 数据转发方法、装置、路由器和可读存储介质
CN113114569A (zh) * 2020-01-10 2021-07-13 北京京东尚科信息技术有限公司 数据流卸载的方法和装置
WO2023045310A1 (zh) * 2021-09-27 2023-03-30 中兴通讯股份有限公司 无线电力终端的路由设置方法、无线电力终端和存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112448912B (zh) * 2019-08-27 2023-08-01 中兴通讯股份有限公司 一种防报文攻击方法、装置及存储介质
CN111510513B (zh) * 2020-01-03 2022-08-30 普联国际有限公司 一种map-e链路加速方法、装置、存储介质及网络设备
CN112087534A (zh) * 2020-09-12 2020-12-15 洪世协 一种简便可溯源无线路由器实现方法
CN113489737A (zh) * 2021-07-14 2021-10-08 芯河半导体科技(无锡)有限公司 一种基于netfilter的包过滤器的实现方法
CN115022225B (zh) * 2022-05-31 2023-11-10 东风电驱动系统有限公司 报文转发方法、装置、设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101166150A (zh) * 2006-10-16 2008-04-23 华为技术有限公司 建立转发过滤表的方法与装置
CN101442493A (zh) * 2008-12-26 2009-05-27 华为技术有限公司 Ip报文分发方法、集群系统和负载均衡器
CN102123082A (zh) * 2011-01-14 2011-07-13 中兴通讯股份有限公司 数据包转发方法和设备
CN102821032A (zh) * 2011-06-10 2012-12-12 中兴通讯股份有限公司 一种快速转发数据包的方法及三层设备
CN103067473A (zh) * 2012-12-21 2013-04-24 中标软件有限公司 一种远程协助转发方法及系统
CN103347014A (zh) * 2013-06-25 2013-10-09 深圳市共进电子股份有限公司 网络快速转发模块及网络快速转发实现方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100748090B1 (ko) * 2005-12-07 2007-08-09 한국전자통신연구원 고속 라우터에서의 패킷 처리 장치 및 그 방법
CN103647716A (zh) * 2013-11-22 2014-03-19 上海斐讯数据通信技术有限公司 一种数据包快速转发方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101166150A (zh) * 2006-10-16 2008-04-23 华为技术有限公司 建立转发过滤表的方法与装置
CN101442493A (zh) * 2008-12-26 2009-05-27 华为技术有限公司 Ip报文分发方法、集群系统和负载均衡器
CN102123082A (zh) * 2011-01-14 2011-07-13 中兴通讯股份有限公司 数据包转发方法和设备
CN102821032A (zh) * 2011-06-10 2012-12-12 中兴通讯股份有限公司 一种快速转发数据包的方法及三层设备
CN103067473A (zh) * 2012-12-21 2013-04-24 中标软件有限公司 一种远程协助转发方法及系统
CN103347014A (zh) * 2013-06-25 2013-10-09 深圳市共进电子股份有限公司 网络快速转发模块及网络快速转发实现方法

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015074324A1 (zh) * 2013-11-22 2015-05-28 上海斐讯数据通信技术有限公司 一种数据包快速转发方法及装置
CN104410541A (zh) * 2014-11-18 2015-03-11 盛科网络(苏州)有限公司 Vxlan内层虚拟机流量在中间交换机上进行统计的方法及装置
CN104410541B (zh) * 2014-11-18 2017-09-15 盛科网络(苏州)有限公司 Vxlan内层虚拟机流量在中间交换机上进行统计的方法及装置
CN107431707A (zh) * 2015-03-27 2017-12-01 德国电信股份公司 针对欺诈报文保护通信网络的网络保护实体和方法
CN104954262B (zh) * 2015-06-24 2017-11-24 上海斐讯数据通信技术有限公司 一种数据快速转发方法和系统
CN104954262A (zh) * 2015-06-24 2015-09-30 上海斐讯数据通信技术有限公司 一种数据快速转发方法和系统
WO2017000878A1 (zh) * 2015-06-30 2017-01-05 杭州华三通信技术有限公司 报文处理
CN105591977A (zh) * 2015-08-28 2016-05-18 杭州华三通信技术有限公司 报文处理方法以及装置
CN105959236A (zh) * 2015-11-06 2016-09-21 西安交大捷普网络科技有限公司 提升网络防护设备吞吐性能的数据包转发方法
CN105959254A (zh) * 2015-12-02 2016-09-21 杭州迪普科技有限公司 处理报文的方法和装置
CN105959254B (zh) * 2015-12-02 2019-09-06 杭州迪普科技股份有限公司 处理报文的方法和装置
CN105939216A (zh) * 2016-03-16 2016-09-14 杭州迪普科技有限公司 报文传输的方法及装置
CN105939216B (zh) * 2016-03-16 2019-11-12 杭州迪普科技股份有限公司 报文传输的方法及装置
CN108096831A (zh) * 2016-11-25 2018-06-01 盛趣信息技术(上海)有限公司 网络游戏防加速控制系统及方法
CN110651451B (zh) * 2017-05-24 2021-03-02 瑞典爱立信有限公司 基于策略的路由系统中的路由表选择方法及网络设备
US11159421B2 (en) 2017-05-24 2021-10-26 Telefonaktiebolaget Lm Ericsson (Publ) Routing table selection in a policy based routing system
CN110651451A (zh) * 2017-05-24 2020-01-03 瑞典爱立信有限公司 基于策略的路由系统中的路由表选择
CN107682267A (zh) * 2017-09-21 2018-02-09 烽火通信科技股份有限公司 Linux设备的网络数据转发方法及系统
CN107682267B (zh) * 2017-09-21 2020-04-28 烽火通信科技股份有限公司 Linux设备的网络数据转发方法及系统
CN111327665A (zh) * 2018-12-14 2020-06-23 就肆电竞股份有限公司 资料传输加速装置、资料传输加速方法及路由器
CN111371728A (zh) * 2018-12-25 2020-07-03 华为终端有限公司 一种处理方法及装置
CN110224932A (zh) * 2019-05-06 2019-09-10 烽火通信科技股份有限公司 一种数据快速转发的方法及系统
CN110224932B (zh) * 2019-05-06 2021-06-15 烽火通信科技股份有限公司 一种数据快速转发的方法及系统
CN110572330A (zh) * 2019-09-17 2019-12-13 普联技术有限公司 实现转发加速功能和协议栈功能兼容的方法、装置及介质
CN113114569A (zh) * 2020-01-10 2021-07-13 北京京东尚科信息技术有限公司 数据流卸载的方法和装置
CN113114569B (zh) * 2020-01-10 2023-06-02 北京京东尚科信息技术有限公司 数据流卸载的方法和装置
CN111404817A (zh) * 2020-03-24 2020-07-10 深圳市吉祥腾达科技有限公司 一种提升网络通信设备分片数据包转发性能的方法及系统
CN111404817B (zh) * 2020-03-24 2022-06-03 深圳市吉祥腾达科技有限公司 一种提升网络通信设备分片数据包转发性能的方法及系统
CN111800344A (zh) * 2020-07-08 2020-10-20 深圳市共进电子股份有限公司 数据转发方法、装置、路由器和可读存储介质
WO2023045310A1 (zh) * 2021-09-27 2023-03-30 中兴通讯股份有限公司 无线电力终端的路由设置方法、无线电力终端和存储介质

Also Published As

Publication number Publication date
WO2015074324A1 (zh) 2015-05-28

Similar Documents

Publication Publication Date Title
CN103647716A (zh) 一种数据包快速转发方法及装置
US11388053B2 (en) Programmable protocol parser for NIC classification and queue assignments
CN102970227B (zh) 在asic中实现vxlan报文转发的方法和装置
CN104348716B (zh) 一种报文处理方法及设备
EP2944056B1 (en) Distributed traffic inspection in a telecommunications network
US9948556B2 (en) Systems and methods for externalizing network functions via packet trunking
US8705362B2 (en) Systems, methods, and apparatus for detecting a pattern within a data packet
US11729300B2 (en) Generating programmatically defined fields of metadata for network packets
CN102946347B (zh) 一种加速Linux系统本地数据包处理的方法及装置
US20150295831A1 (en) Network address translation offload to network infrastructure for service chains in a network environment
CN108702331A (zh) Sr应用段与服务功能链(sfc)报头元数据的集成
CN104869065A (zh) 数据报文处理方法及装置
US20130294449A1 (en) Efficient application recognition in network traffic
CN108881328B (zh) 数据包过滤方法、装置、网关设备及存储介质
CN104135548B (zh) 基于fpga的静态nat实现方法及装置
CN105991795B (zh) Arp表项更新方法以及装置
CN103281257A (zh) 一种协议报文处理方法和设备
CN102970386A (zh) 一种实现IPv6报文穿越IPv4网络的方法和设备
CN106534048A (zh) 一种防范sdn拒绝服务攻击的方法、交换机和系统
CN103685032B (zh) 报文转发方法及网络地址转换服务器
US9270593B2 (en) Prediction based methods for fast routing of IP flows using communication/network processors
CN113347258A (zh) 云流量下的数据采集监控分析的方法及系统
CN112600752A (zh) 一种默认策略路由的芯片实现方法、数据报文的芯片处理方法及装置
KR101500251B1 (ko) 통신 시스템, 노드, 패킷 전송 방법 및 프로그램을 기록한 컴퓨터 판독가능 기록 매체
US20140211799A1 (en) Routing device and method for processing network packet thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140319

RJ01 Rejection of invention patent application after publication