CN109150584A - 一种基于smid指令的为网络分组分类提供加速支持的方法 - Google Patents
一种基于smid指令的为网络分组分类提供加速支持的方法 Download PDFInfo
- Publication number
- CN109150584A CN109150584A CN201810722849.8A CN201810722849A CN109150584A CN 109150584 A CN109150584 A CN 109150584A CN 201810722849 A CN201810722849 A CN 201810722849A CN 109150584 A CN109150584 A CN 109150584A
- Authority
- CN
- China
- Prior art keywords
- network packet
- network
- field
- protocol
- tuple
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
- H04L41/083—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for increasing network speed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于SMID指令的为网络分组分类提供加速支持的方法,包括:根据网络分组的头部信息的特性构建所述网络分组的映射结构;通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中;通过所述映射结构中的五元组信息,对网络分组进行分类。本发明的优点是,通过优化的网络分组的映射结构,使得该映射结构可以通过SIMD并行指令被一次性装载,减少了访存的次数,实现了对网络分组分类的加速支持。
Description
技术领域
本发明涉及计算机技术应用领域,特别是涉及了一种基于SMID指令的为网络分组分类提供加速支持的方法。
背景技术
分组分类是指按照分组携带的所属信息(这些信息在双方通信期间保持不变,因此能标识一个具体的会话)进行归类的技术。该技术的目的是能够区分并处理所关心的分组。针对OSI(Open System Interconnection)开放式系统互联定义的七层协议模型或TCP/IP协议栈定义的五层协议模型来说,从根本上区分不同分组归类或相同分组归类的基本信息是分组携带的五元组。其中,所述五元组信息分别是源网络地址、目的网络地址、四层协议号、源端口、目的端口。
其中源网络地址、目的网络地址以及四层协议号由“Network”网络层提供,源端口和目的端口由“Transport”传输层提供。
传统的,从分组中在线提取五元组的方法是逐字节的拷贝到用户指定的内存空间,一般是一个特定的结构体,或按照对等结构体赋值(其实也是逐字节赋值的另一种表现形式)。第一种方法的访存次数和待拷贝字节的个数成正相关,字节数越大,访存频次越大;第二种方法能减小访存次数,但依旧受限于标准收据类型的位宽。
举例说明:一个标识分组的基本五元组(如下文)其占用空间是13bytes,按照方法一(逐字节拷贝),访存次数为13次,每次复制一个字节。按照方法二,其访存次数为最大为5次(有标准数据类型的支持),最小为3次(源、目的网络地址可用一个64bit位宽的寄存器一次提取,源目的端口可用一个32bit位宽的寄存器一次性提取,协议类型可用一个8bit位宽的寄存器一次性提取)。
因此,传统方法不能利用64bit标准位宽的通用寄存器从分组中实现一次性提取,这对转发时延、转发性能要求高的产品影响极大。
发明内容
针对上述内容,本发明公开了一种基于SMID指令的为网络分组分类提供加速支持的方法,包括:根据网络分组的头部信息的特性构建所述网络分组的映射结构;通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中;通过所述映射结构中的五元组信息,对网络分组进行分类。
进一步的,构建后的映射结构保存在内存中。
进一步的,所述五元组信息包括:源网络地址、目的网络地址、四层协议号、源端口以及目的端口,其中,源网络地址、目的网络地址以及四层协议号由网络层提供,源端口以及目的端口由传输层提供。
更进一步的,所述高位寄存器为128位寄存器。
更进一步的,所述128位寄存器的定义方法由其使用平台决定,所述使用平台包括:X86平台以及支持SIMD并行运算的ARM平台。
进一步的,所述包含有五元组信息的字段包括:网络协议的生存时间字段、网咯协议的四层协议字段、网络协议的检验码字段、网络协议的源地址字段、网络协议的目的地址字段、传输协议的源端口字段、用户数据报的源端口字段、传输协议的目的端口字段以及用户数据报的目的端口字段。
更进一步的,所述包含有五元组信息的字段的获得方式包括:获取网络分组,并对接收到的网络分组进行解析;跟据所述解析结果,从所述网络分组的各个协议层中提取包含五元组信息的字段。
进一步的,所述通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中包括:根据所述字段的长度指示,确定网络协议字段的起始位置;从网络协议的生存时间字段开始,一次性获取紧跟其后的连续的16个字节数据。
进一步的,所述通过所述映射结构中的五元组信息,对网络分组进行分类包括:将具有相同五元组信息的分组归为一类,从而获得一类或多类的分组。
进一步的,所述一种基于SMID指令的为网络分组分类提供加速支持的方法还包括:根据预置的分类处理流程,对不同归类的网络分组区分处理。
本发明的优点是,通过优化的网络分组的映射结构,使得该映射结构可以通过SIMD并行指令被一次性装载,从而获取网络分组中的五元组信息,通过减少访存的次数,实现了对网络分组分类的加速支持。
附图说明
通过阅读下文具体实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出具体实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明的方法流程图。
图2为网络分组结构示意图。
图3为本发明的分类过程示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,为本发明的方法流程图。本发明方法包括:获取网络分组,并对接收到的网络分组进行解析;根据网络分组的头部信息的特性构建所述网络分组的映射结构;跟据解析结果,从所述网络分组的各个协议层中提取包含五元组信息的字段;通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中;将具有相同五元组信息的分组归为一类,从而获得一类或多类的分组;根据预置的分类处理流程,对不同归类的网络分组区分处理。其中,所述“分组”是网络的专有名词,由于大多数计算机网络都不能连续地传送任意长的数据,所以实际上网络系统通过把数据分割成小块,然后逐块地发送,所述小块就被称作分组;而分组分类则是指按照分组携带的所属信息进行归类,从而用于获取完整的数据信息。而所述并行运算指的是,在所述映射结构被构建后,本法明通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中。
上述中,所述包含有五元组信息的字段以及对应字段所占空间的大小如下表所示:
其中,包括:网络协议的生存时间字段(Iphdr.time_to_live)、网络协议的四层协议字段(iphdr.next_proto_id)、网络协议的检验码字段(Iphdr.hdr_checksum)、网络协议的源地址字段(Iphdr.ip_src)、网络协议的目的地址字段(Iphdr.dst_src)、传输协议的源端口字段(Tcphdr.port_src)、用户数据报的源端口字段(Udphdr.port_src)、传输协议的目的端口字段(Tcphdr.port_dst)和用户数据报的目的端口字段(Udphdr.port_dst)。现有的网络分组的映射结构中不包含有生网络协议的存时间字段(Iphdr.time_to_live)与网络协议的检验码字段(Iphdr.hdr_checksum),共计13个字节104位宽。而由于目前没有一个通用的为13位的寄存器,因而无法对现有的网络分组的映射结构进行一次性装载,即需多次装载获取五元组信息。本发明中,通过对需要装载的网络协议字段进行拓展,增加了网络协议的生存时间字段以及网络协议的检验码字段,从而使得需要装载的包含有五元组信息的字段的总占有空间拓展为16字节128位宽,通过构建对应位宽(128位)的映射结构,利用SIMD指令,实现对网络分组中五元组信息的一次性装载,进而提高了五元组信息的获取速度。其中,构建后的映射结构保存在内存中。所述装载的具体过程为,当一个具有五元组信息的分组到达时,根据所述字段的长度指示,确定所述分组五元组信息提取的起始位置;从所述网络分组的网络协议的生存时间字段开始,一次性获取紧跟其后的连续的16个字节数据。其中,可选的,通过一种很快速的方法确定所述生存时间字段的位置:
“key=(uint8_t*)ipv4_hdr+offsetof(struct ipv4_hdr,time_to_live);"
经此一步,本发明已经得到了一次性从分组某处装载16字节的起始位置(即生存时间字段的位置),并由变量key保存。
由于构建的映射结构保存在内存中,因此,向所述映射结构进行装载的方法视不同的平台即中央处理器芯片供应商的不同而不同,具体如下:
经此一步,利用16个字节,128位的映射结构只需一次访存(从分组->寄存器)以及一次寄存器访问(从高位宽专用寄存器->内存),即可以获得所述网络分组中的五元组信息,该过程中大大减少了访存次数(一般需3到5次),从而加速了分组信息的提取速度,进而实现对分组分类的加速支持。此外,需说明的是对于不支持SIMD高位宽寄存器的平台,无法通过本发明方法起到加速效果。
如图2所示,为网络分组结构示意图,包括:前导码,为帧的起始;数据链路层的头部信息,其包括源网络地址、目的网络地址以及协议号;网络传输层的头部信息,其包括源端口以及目的端口;负载,即分组的有效载荷;帧尾部,用于帧的校验。
如图3所示,为本发明的分类过程示意图,其中每一个数字编号代表一个分组,将具有相同五元组信息的分组归为一类,从而将18个分组分为三类,其中分组1、分组7、分组13、分组4、分组10以及分组15为第一类;分组2、分组8、分组14、分组5、分组11以及分组17为第二类;分组3、分组9、分组15、分组6、分组12、以及分组18为第三类。在分组分类的过程中需遵循负载平衡(LB)原则。最后,根据预置的分类处理流程,对不同归类的网络分组区分处理。
以上,仅为本发明示例性的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种基于SMID指令的为网络分组分类提供加速支持的方法,包括:
根据网络分组的头部信息的特性构建所述网络分组的映射结构;
通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中;
通过所述映射结构中的五元组信息,对网络分组进行分类。
2.根据权利要求1所述的网络分组分类加速支持方法,其特征在于,构建后的映射结构保存在内存中。
3.根据权利要求1所述的网络分组分类加速支持方法,其特征在于,所述五元组信息包括:源网络地址、目的网络地址、四层协议号、源端口以及目的端口,其中,源网络地址、目的网络地址以及四层协议号由网络层提供,源端口以及目的端口由传输层提供。
4.根据权利要求2所述的网络分组分类加速支持方法,其特征在于,所述高位寄存器为128位寄存器。
5.根据权利要求4所述的网络分组分类加速支持方法,其特征在于,所述128位寄存器的定义方法由其使用平台决定,所述使用平台包括:X86平台以及支持SIMD并行运算的ARM平台。
6.根据权利要求1所述的网络分组分类加速支持方法,其特征在于,所述包含有五元组信息的字段包括:网络协议的生存时间字段、网咯协议的四层协议字段、网络协议的检验码字段、网络协议的源地址字段、网络协议的目的地址字段、传输协议的源端口字段、用户数据报的源端口字段、传输协议的目的端口字段以及用户数据报的目的端口字段。
7.根据权利要求6所述的网络分组分类加速支持方法,其特征在于,所述包含有五元组信息的字段的获得方式包括:
获取网络分组,并对接收到的网络分组进行解析;
跟据所述解析结果,从所述网络分组的各个协议层中提取包含五元组信息的字段。
8.根据权利要求1所述的网络分组分类加速支持方法,其特征在于,所述通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中包括:
根据所述字段的长度指示,确定网络协议字段的起始位置;
从网络协议的生存时间字段开始,一次性获取紧跟其后的连续的16个字节数据。
9.根据权利要求1所述的网络分组分类加速支持方法,其特征在于,所述通过所述映射结构中的五元组信息,对网络分组进行分类包括:
将具有相同五元组信息的分组归为一类,从而获得一类或多类的分组。
10.根据权利要求1所述的网络分组分类加速支持方法,其特征在于,该方法还包括:根据预置的分类处理流程,对不同归类的网络分组区分处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810722849.8A CN109150584B (zh) | 2018-07-04 | 2018-07-04 | 一种基于simd指令的为网络分组分类提供加速支持的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810722849.8A CN109150584B (zh) | 2018-07-04 | 2018-07-04 | 一种基于simd指令的为网络分组分类提供加速支持的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109150584A true CN109150584A (zh) | 2019-01-04 |
CN109150584B CN109150584B (zh) | 2022-02-25 |
Family
ID=64799869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810722849.8A Active CN109150584B (zh) | 2018-07-04 | 2018-07-04 | 一种基于simd指令的为网络分组分类提供加速支持的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109150584B (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0341406A2 (en) * | 1988-05-13 | 1989-11-15 | International Business Machines Corporation | Methods and circuit for implementing an arbitrary graph on a polymorphic mesh |
CN1610338A (zh) * | 2003-10-24 | 2005-04-27 | 阿尔卡特公司 | 用于加速分组处理的方法 |
CN1909455A (zh) * | 2006-08-09 | 2007-02-07 | 杭州华为三康技术有限公司 | 一种加速多域分类规则线性查找的系统和方法 |
CN101557349A (zh) * | 2009-05-26 | 2009-10-14 | 孙斌 | 处理互联网数据报的方法和系统 |
CN101594306A (zh) * | 2008-05-30 | 2009-12-02 | 英特尔公司 | 为分组报头提供前缀 |
CN102272716A (zh) * | 2008-12-30 | 2011-12-07 | 英特尔公司 | 网络分组的simd处理 |
CN102291301A (zh) * | 2011-08-10 | 2011-12-21 | 杭州迪普科技有限公司 | 一种报文特征的匹配方法及装置 |
CN102427428A (zh) * | 2011-12-07 | 2012-04-25 | 西安电子科技大学 | 基于多域最长匹配的流识别方法及设备 |
CN103503512A (zh) * | 2011-11-11 | 2014-01-08 | 华为技术有限公司 | 业务分发控制方法和设备 |
CN104038415A (zh) * | 2014-05-23 | 2014-09-10 | 汉柏科技有限公司 | 报文批量处理方法 |
CN104283736A (zh) * | 2014-08-03 | 2015-01-14 | 成都网安科技发展有限公司 | 一种基于改良自动状态机的网络通信五元组快速匹配算法 |
US20150089032A1 (en) * | 2013-09-25 | 2015-03-26 | International Business Machines Corporation | Scalable Network Configuration with Consistent Updates in Software Defined Networks |
CN104580202A (zh) * | 2014-12-31 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 报文的匹配方法和装置 |
CN105681201A (zh) * | 2015-12-28 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 报文的规则匹配方法和装置 |
US20170339060A1 (en) * | 2008-06-24 | 2017-11-23 | Intel Corporation | Packet switching |
-
2018
- 2018-07-04 CN CN201810722849.8A patent/CN109150584B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0341406A2 (en) * | 1988-05-13 | 1989-11-15 | International Business Machines Corporation | Methods and circuit for implementing an arbitrary graph on a polymorphic mesh |
CN1610338A (zh) * | 2003-10-24 | 2005-04-27 | 阿尔卡特公司 | 用于加速分组处理的方法 |
CN1909455A (zh) * | 2006-08-09 | 2007-02-07 | 杭州华为三康技术有限公司 | 一种加速多域分类规则线性查找的系统和方法 |
CN101594306A (zh) * | 2008-05-30 | 2009-12-02 | 英特尔公司 | 为分组报头提供前缀 |
US20170339060A1 (en) * | 2008-06-24 | 2017-11-23 | Intel Corporation | Packet switching |
CN103368853A (zh) * | 2008-12-30 | 2013-10-23 | 英特尔公司 | 网络分组的simd处理 |
CN102272716A (zh) * | 2008-12-30 | 2011-12-07 | 英特尔公司 | 网络分组的simd处理 |
CN101557349A (zh) * | 2009-05-26 | 2009-10-14 | 孙斌 | 处理互联网数据报的方法和系统 |
CN102291301A (zh) * | 2011-08-10 | 2011-12-21 | 杭州迪普科技有限公司 | 一种报文特征的匹配方法及装置 |
CN103503512A (zh) * | 2011-11-11 | 2014-01-08 | 华为技术有限公司 | 业务分发控制方法和设备 |
CN102427428A (zh) * | 2011-12-07 | 2012-04-25 | 西安电子科技大学 | 基于多域最长匹配的流识别方法及设备 |
US20150089032A1 (en) * | 2013-09-25 | 2015-03-26 | International Business Machines Corporation | Scalable Network Configuration with Consistent Updates in Software Defined Networks |
CN104038415A (zh) * | 2014-05-23 | 2014-09-10 | 汉柏科技有限公司 | 报文批量处理方法 |
CN104283736A (zh) * | 2014-08-03 | 2015-01-14 | 成都网安科技发展有限公司 | 一种基于改良自动状态机的网络通信五元组快速匹配算法 |
CN104580202A (zh) * | 2014-12-31 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 报文的匹配方法和装置 |
CN105681201A (zh) * | 2015-12-28 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 报文的规则匹配方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109150584B (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102402176B1 (ko) | 소프트웨어-규정된 네트워크 엔진에서 패킷 수정 및 포워딩을 위해서 룩업들을 생성하고 결정들을 수행하기 위한 장치 및 방법 | |
Bailey et al. | PathFinder: A Pattern-Based Packet Classifier. | |
CN101095310B (zh) | 分组解析处理器及在处理器中解析分组的方法 | |
CN102272716B (zh) | 网络分组的simd处理 | |
JP5850896B2 (ja) | ネットワークにおけるトラフィックを監視する方法および装置 | |
US8681819B2 (en) | Programmable multifield parser packet | |
US7774497B2 (en) | Apparatus and method for classifier identification | |
US11729300B2 (en) | Generating programmatically defined fields of metadata for network packets | |
US20040039939A1 (en) | Embedded data set processing | |
US20050220111A1 (en) | Ingress processing optimization via traffic classification and grouping | |
CN105847078B (zh) | 一种基于dpi自学习机制的http流量精细化识别方法 | |
CN101656677A (zh) | 一种报文分流处理方法及装置 | |
CN106230826A (zh) | 应用系统接口协议自动解析装置 | |
KR101726359B1 (ko) | 데이터 패킷 분석 장치, 데이터 패킷 처리 시스템 및 방법 | |
US8634309B2 (en) | Security network processor system and method | |
US8365045B2 (en) | Flow based data packet processing | |
CN106210172B (zh) | 以太网络数据ip地址高速分类装置 | |
US11258707B1 (en) | Systems for building data structures with highly scalable algorithms for a distributed LPM implementation | |
SE531947C2 (sv) | Förfarande, anordning och system för flerfältsklassificering i ett datakommunikationsnätverk | |
WO2002051077A1 (en) | A method and system for distinguishing higher layer protocols of the internet traffic | |
CN111817915B (zh) | 一种基于dpdk的协议解析系统 | |
CN109150584A (zh) | 一种基于smid指令的为网络分组分类提供加速支持的方法 | |
CN115396363B (zh) | 一种sdn网络环境下的流量分类方法及系统 | |
Vlachos et al. | Design and performance evaluation of a Programmable Packet Processing Engine (PPE) suitable for high-speed network processors units | |
BR102019009234A2 (pt) | dispositivo de rede e método para processar o tráfego de rede com estrutura sdn de modo dinâmico e independente de protocolo |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |