CN109150584B - 一种基于simd指令的为网络分组分类提供加速支持的方法 - Google Patents

一种基于simd指令的为网络分组分类提供加速支持的方法 Download PDF

Info

Publication number
CN109150584B
CN109150584B CN201810722849.8A CN201810722849A CN109150584B CN 109150584 B CN109150584 B CN 109150584B CN 201810722849 A CN201810722849 A CN 201810722849A CN 109150584 B CN109150584 B CN 109150584B
Authority
CN
China
Prior art keywords
network
field
protocol
packet
network 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
CN201810722849.8A
Other languages
English (en)
Other versions
CN109150584A (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.)
Beijing Zhongchuang Tengrui Technology Co ltd
Original Assignee
Beijing Zhongchuang Tengrui 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 Beijing Zhongchuang Tengrui Technology Co ltd filed Critical Beijing Zhongchuang Tengrui Technology Co ltd
Priority to CN201810722849.8A priority Critical patent/CN109150584B/zh
Publication of CN109150584A publication Critical patent/CN109150584A/zh
Application granted granted Critical
Publication of CN109150584B publication Critical patent/CN109150584B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • H04L41/083Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for increasing network speed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements

Abstract

一种基于SIMD指令的为网络分组分类提供加速支持的方法,包括:根据网络分组的头部信息的特性构建所述网络分组的映射结构;通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中;通过所述映射结构中的五元组信息,对网络分组进行分类。本发明的优点是,通过优化的网络分组的映射结构,使得该映射结构可以通过SIMD并行指令被一次性装载,减少了访存的次数,实现了对网络分组分类的加速支持。

Description

一种基于SIMD指令的为网络分组分类提供加速支持的方法
技术领域
本发明涉及计算机技术应用领域,特别是涉及了一种基于SIMD指令的为网络分组分类提供加速支持的方法。
背景技术
分组分类是指按照分组携带的所属信息(这些信息在双方通信期间保持不变,因此能标识一个具体的会话)进行归类的技术。该技术的目的是能够区分并处理所关心的分组。针对OSI(Open System Interconnection)开放式系统互联定义的七层协议模型或TCP/IP协议栈定义的五层协议模型来说,从根本上区分不同分组归类或相同分组归类的基本信息是分组携带的五元组。其中,所述五元组信息分别是源网络地址、目的网络地址、四层协议号、源端口、目的端口。
其中源网络地址、目的网络地址以及四层协议号由“Network”网络层提供,源端口和目的端口由“Transport”传输层提供。
传统的,从分组中在线提取五元组的方法是逐字节的拷贝到用户指定的内存空间,一般是一个特定的结构体,或按照对等结构体赋值(其实也是逐字节赋值的另一种表现形式)。第一种方法的访存次数和待拷贝字节的个数成正相关,字节数越大,访存频次越大;第二种方法能减小访存次数,但依旧受限于标准收据类型的位宽。
举例说明:一个标识分组的基本五元组(如下文)其占用空间是13bytes,按照方法一(逐字节拷贝),访存次数为13次,每次复制一个字节。按照方法二,其访存次数为最大为5次(有标准数据类型的支持),最小为3次(源、目的网络地址可用一个64bit位宽的寄存器一次提取,源目的端口可用一个32bit位宽的寄存器一次性提取,协议类型可用一个8bit位宽的寄存器一次性提取)。
因此,传统方法不能利用64bit标准位宽的通用寄存器从分组中实现一次性提取,这对转发时延、转发性能要求高的产品影响极大。
发明内容
针对上述内容,本发明公开了一种基于SIMD指令的为网络分组分类提供加速支持的方法,包括:根据网络分组的头部信息的特性构建所述网络分组的映射结构;通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中;通过所述映射结构中的五元组信息,对网络分组进行分类。
进一步的,构建后的映射结构保存在内存中。
进一步的,所述五元组信息包括:源网络地址、目的网络地址、四层协议号、源端口以及目的端口,其中,源网络地址、目的网络地址以及四层协议号由网络层提供,源端口以及目的端口由传输层提供。
更进一步的,所述高位寄存器为128位寄存器。
更进一步的,所述128位寄存器的定义方法由其使用平台决定,所述使用平台包括:X86平台以及支持SIMD并行运算的ARM平台。
进一步的,所述包含有五元组信息的字段包括:网络协议的生存时间字段、网络协议的四层协议字段、网络协议的检验码字段、网络协议的源地址字段、网络协议的目的地址字段、传输协议的源端口字段、用户数据报的源端口字段、传输协议的目的端口字段以及用户数据报的目的端口字段。
更进一步的,所述包含有五元组信息的字段的获得方式包括:获取网络分组,并对接收到的网络分组进行解析;跟据所述解析结果,从所述网络分组的各个协议层中提取包含五元组信息的字段。
进一步的,所述通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中包括:根据所述字段的长度指示,确定网络协议字段的起始位置;从网络协议的生存时间字段开始,一次性获取紧跟其后的连续的16个字节数据。
进一步的,所述通过所述映射结构中的五元组信息,对网络分组进行分类包括:将具有相同五元组信息的分组归为一类,从而获得一类或多类的分组。
进一步的,所述一种基于SIMD指令的为网络分组分类提供加速支持的方法还包括:根据预置的分类处理流程,对不同归类的网络分组区分处理。
本发明的优点是,通过优化的网络分组的映射结构,使得该映射结构可以通过SIMD并行指令被一次性装载,从而获取网络分组中的五元组信息,通过减少访存的次数,实现了对网络分组分类的加速支持。
附图说明
通过阅读下文具体实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出具体实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明的方法流程图。
图2为网络分组结构示意图。
图3为本发明的分类过程示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,为本发明的方法流程图。本发明方法包括:获取网络分组,并对接收到的网络分组进行解析;根据网络分组的头部信息的特性构建所述网络分组的映射结构;跟据解析结果,从所述网络分组的各个协议层中提取包含五元组信息的字段;通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中;将具有相同五元组信息的分组归为一类,从而获得一类或多类的分组;根据预置的分类处理流程,对不同归类的网络分组区分处理。其中,所述“分组”是网络的专有名词,由于大多数计算机网络都不能连续地传送任意长的数据,所以实际上网络系统通过把数据分割成小块,然后逐块地发送,所述小块就被称作分组;而分组分类则是指按照分组携带的所属信息进行归类,从而用于获取完整的数据信息。而所述并行运算指的是,在所述映射结构被构建后,本法明通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中。
上述中,所述包含有五元组信息的字段以及对应字段所占空间的大小如下表所示:
Figure GDA0002984548200000041
其中,包括:网络协议的生存时间字段(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位宽。而由于目前没有一个通用的寄存器,因而无法对现有的网络分组的映射结构进行一次性装载,即需多次装载获取五元组信息。本发明中,通过对需要装载的网络协议字段进行拓展,增加了网络协议的生存时间字段以及网络协议的检验码字段,从而使得需要装载的包含有五元组信息的字段的总占有空间拓展为16字节128位宽,通过构建对应位宽(128位)的映射结构,利用SIMD指令,实现对网络分组中五元组信息的一次性装载,进而提高了五元组信息的获取速度。其中,构建后的映射结构保存在内存中。所述装载的具体过程为,当一个具有五元组信息的分组到达时,根据所述字段的长度指示,确定所述分组五元组信息提取的起始位置;从所述网络分组的网络协议的生存时间字段开始,一次性获取紧跟其后的连续的16个字节数据。其中,可选的,通过一种很快速的方法确定所述生存时间字段的位置:
“key=(uint8_t*)ipv4_hdr+offsetof(struct ipv4_hdr,time_to_live);"
经此一步,本发明已经得到了一次性从分组某处装载16字节的起始位置(即生存时间字段的位置),并由变量key保存。
由于构建的映射结构保存在内存中,因此,向所述映射结构进行装载的方法视不同的平台即中央处理器芯片供应商的不同而不同,具体如下:
Figure GDA0002984548200000051
经此一步,利用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 (8)

1.一种基于SIMD指令的为网络分组分类提供加速支持的方法,包括:
根据网络分组的头部信息的特性构建所述网络分组的映射结构;
通过所述SIMD指令将所述网络分组中的包含有五元组信息的字段一次性装载到所述映射结构中;
对需要装载的网络协议字段进行拓展,增加了网络协议的生存时间字段以及网络协议的检验码字段;
所述装载的具体过程为,当一个具有五元组信息的分组到达时,根据字段的长度指示,确定分组五元组信息提取的起始位置;从所述网络分组的网络协议的生存时间字段开始,一次性获取紧跟其后的连续的16个字节数据;
通过所述映射结构中的五元组信息,对网络分组进行分类;
所述包含有五元组信息的字段的获得方式包括:
获取网络分组,并对接收到的网络分组进行解析;
根据所述解析结果,从所述网络分组的各个协议层中提取包含五元组信息的字段。
2.根据权利要求1所述的方法,其特征在于,构建后的映射结构保存在内存中。
3.根据权利要求1所述的方法,其特征在于,所述五元组信息包括:源网络地址、目的网络地址、四层协议号、源端口以及目的端口,其中,源网络地址、目的网络地址以及四层协议号由网络层提供,源端口以及目的端口由传输层提供。
4.根据权利要求2所述的方法,其特征在于,所使用的寄存器为128位寄存器。
5.根据权利要求4所述的方法,其特征在于,所述128位寄存器的定义方法由其使用平台决定,所述使用平台包括:X86平台以及支持SIMD并行运算的ARM平台。
6.根据权利要求1所述的方法,其特征在于,所述包含有五元组信息的字段包括:网络协议的生存时间字段、网络协议的四层协议字段、网络协议的检验码字段、网络协议的源地址字段、网络协议的目的地址字段、传输协议的源端口字段、用户数据报的源端口字段、传输协议的目的端口字段以及用户数据报的目的端口字段。
7.根据权利要求1所述的方法,其特征在于,所述通过所述映射结构中的五元组信息,对网络分组进行分类包括:
将具有相同五元组信息的分组归为一类,从而获得一类或多类的分组。
8.根据权利要求1所述的方法,其特征在于,该方法还包括:根据预置的分类处理流程,对不同归类的网络分组区分处理。
CN201810722849.8A 2018-07-04 2018-07-04 一种基于simd指令的为网络分组分类提供加速支持的方法 Active CN109150584B (zh)

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 CN109150584A (zh) 2019-01-04
CN109150584B true 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 (12)

* Cited by examiner, † Cited by third party
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 杭州迪普科技有限公司 一种报文特征的匹配方法及装置
CN103503512A (zh) * 2011-11-11 2014-01-08 华为技术有限公司 业务分发控制方法和设备
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 曙光信息产业(北京)有限公司 报文的规则匹配方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8031606B2 (en) * 2008-06-24 2011-10-04 Intel Corporation Packet switching
CN102427428A (zh) * 2011-12-07 2012-04-25 西安电子科技大学 基于多域最长匹配的流识别方法及设备
US9350607B2 (en) * 2013-09-25 2016-05-24 International Business Machines Corporation Scalable network configuration with consistent updates in software defined networks

Patent Citations (13)

* Cited by examiner, † Cited by third party
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 英特尔公司 为分组报头提供前缀
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 华为技术有限公司 业务分发控制方法和设备
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
CN109150584A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
US10135734B1 (en) Pipelined evaluations for algorithmic forwarding route lookup
US11729300B2 (en) Generating programmatically defined fields of metadata for network packets
EP2944056B1 (en) Distributed traffic inspection in a telecommunications network
US8867395B2 (en) Accelerating data packet parsing
US8958418B2 (en) Frame handling within multi-stage switching fabrics
US20050171937A1 (en) Memory efficient hashing algorithm
US10348603B1 (en) Adaptive forwarding tables
US9979648B1 (en) Increasing entropy across routing table segments
JP2009510815A (ja) サーチ前のパケットのリアセンブル方法及びシステム
KR101726359B1 (ko) 데이터 패킷 분석 장치, 데이터 패킷 처리 시스템 및 방법
US10601610B2 (en) Tunnel-level fragmentation and reassembly based on tunnel context
CN104579998B (zh) 一种负载均衡处理装置
US9819587B1 (en) Indirect destination determinations to forward tunneled network packets
US9866639B2 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
US7948979B2 (en) Programmable network interface card
US8365045B2 (en) Flow based data packet processing
US9961147B2 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
US9906443B1 (en) Forwarding table updates during live packet stream processing
SE531947C2 (sv) Förfarande, anordning och system för flerfältsklassificering i ett datakommunikationsnätverk
JP6222505B2 (ja) 入力パラメータを生成するための方法および装置
US10887234B1 (en) Programmatic selection of load balancing output amongst forwarding paths
CN109150584B (zh) 一种基于simd指令的为网络分组分类提供加速支持的方法
US10608937B1 (en) Determining destination resolution stages for forwarding decisions
US20060015648A1 (en) Chaining control marker data structure
Batmaz et al. UDP/IP Protocol Stack with PCIe Interface on FPGA

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