CN104009921B - 基于任意字段匹配的数据报文转发方法 - Google Patents

基于任意字段匹配的数据报文转发方法 Download PDF

Info

Publication number
CN104009921B
CN104009921B CN201410174192.8A CN201410174192A CN104009921B CN 104009921 B CN104009921 B CN 104009921B CN 201410174192 A CN201410174192 A CN 201410174192A CN 104009921 B CN104009921 B CN 104009921B
Authority
CN
China
Prior art keywords
field
static fields
list item
dynamic field
fields
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.)
Expired - Fee Related
Application number
CN201410174192.8A
Other languages
English (en)
Other versions
CN104009921A (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.)
Open Network Technology (beijing) Co Ltd
Original Assignee
Open Network Technology (beijing) 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 Open Network Technology (beijing) Co Ltd filed Critical Open Network Technology (beijing) Co Ltd
Priority to CN201410174192.8A priority Critical patent/CN104009921B/zh
Publication of CN104009921A publication Critical patent/CN104009921A/zh
Application granted granted Critical
Publication of CN104009921B publication Critical patent/CN104009921B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提出了基于任意字段匹配的数据报文转发方法。该方法是在同一个转发表中同时容纳不同格式的用户任意指定字段的转发规则。用户通过基址、偏移量、长度三元组来指定匹配报文任意字段,通过多个三元组或者普通知名字段组成所需键值,一条转发表项包含静态字段表区和动态字段表区。同时,还给出用户配置增加转发表项的方法以及报文转发查表方法。

Description

基于任意字段匹配的数据报文转发方法
技术领域
本发明涉及一种基于任意字段匹配的数据报文转发方法,属于报文转发技术领域。
背景技术
传统路由器和交换机中的路由表(MAC转发表或者流表)由若干表项构成,所有表项长度相同(均包含相同数目的比特位),所有表项的相应比特位代表的含义均相同,譬如以太网二层交换机上的MAC转发表,每一条表项均为48比特,其含义是计算机网络二层MAC地址。又如openflow交换机上的流表,一个流表项目虽然可以包括多个字段,譬如入端口、源IP地址、目的IP地址、源MAC地址、目的MAC地址等等,但是同一个流表中所有流表项的格式,包含的字段,以及字段的长度、位置都是固定不变的。
基于这种固定格式的转发表,传统路由器和交换机对数据报文进行查表前均需要根据转发表所规定的格式从到达的数据报文中提取相应字段,并按照转发表规定的格式组织成键值,用来进行查表匹配使用。参见附图1中描述的openflow交换机报文字段提取流程图,这种报文处理方法的优势在于成本低廉,由于所有表项共享相同的格式,因此只需要进行一次报文字段提取,得到的键值即可以与所有表项之间进行比较。而且,由于处理流程简单,所以一般可以通过ASIC硬件实现。然而,其缺陷也是明显的,这种固定格式的转发表不支持同一个转发表中存在不同格式的表项。譬如,一个交换机上配置了三条转发规则,第一条规则只包含目的MAC地址字段,第二条规则包含源IP地址和目的IP地址,第三条规则是用户自定义的从报文荷载开始的前100比特的内容。
在现有交换机上同时实现以上三条规则有两种方法,一是使用TCAM通配,每一条表项同时包含所有可能的字段,但是只对自身关注的部分字段赋值,其余部分设置为通配。那么,第一条规则所占用的长度为目的MAC地址字段(48比特),加上源IP(32比特)、目的IP(32比特)和报文荷载(100比特),共212比特,其中有效位占比仅为22%。随着其他表项需要用到的字段种类增加,这个比例将进一步减小。因此使用TCAM通配的方式会导致非常低的存储空间利用率。
第二种方式是使用多级转发表,即三条规则分别放在三张不同格式的转发表中。当数据报文到达时,先在第一张转发表中进行匹配查找,如果不匹配,则跳至第二张表进行匹配,如果仍不匹配,再跳至第三张表。每次查表前均需要根据表的规定从数据报文进行相应字段键值提取。这种实现方式的弊端在于转发表数目随表项类型增加而增加,而且随着转发表级数增多,报文处理延迟增大,影响网络性能。
发明内容
为了解决现有技术中的技术问题,本发明提出了基于任意字段匹配的数据报文转发方法。简单来说,该方法是在同一个转发表中同时容纳不同格式的用户任意指定字段的转发规则。
具体地,本发明采用如下技术方案:
一种基于任意字段匹配的数据报文转发方法,其特征在于:用户通过基址、偏移量、长度三元组来指定匹配报文任意字段,通过多个三元组或者普通知名字段组成所需键值;一条转发表项包含静态字段表区和动态字段表区,静态字段区的字段类型和数目在转发表初始化阶段由静态字段描述符设定,所有转发表项的静态字段区的字段类型和数目均相同,动态字段区中的字段类型和数目是在转发表项增加时由新增对应的动态字段描述符设定,同一张转发表中不同表项的动态字段区相互独立。
静态字段描述符和动态字段描述符均是由一个或多个知名字段或者三元组组成的序列串。
静态字段表区是以静态字段提取器获得的待匹配值作为输入,进行通配查表,并输出匹配表项序号或者无表项命中信号。静态字段表区由静态字段表项组成,每一条静态字段表项包含三部分,分别是静态字段键值、静态字段掩码和动态字段表项首地址。
静态字段键值和静态字段掩码的长度相等且均由静态字段描述符所规定。
动态字段表区是对静态表区的扩展,动态字段表区的地址存储在静态字段表区的动态字段地址区中。
动态字段表区包括三部分,分别是动态字段描述符区、动态字段键值区和动态字段掩码区。
每张转发表只有一个静态字段描述符,在转发表初始化阶段由用户通过配置脚本或者配置命令的方式来设置该转发表的静态字段描述符。
采用字段提取器,字段提取器每次能从字段描述符所指定的报文位置提取出相应全部字段内容,并且将字段内容按照字段描述符中字段的先后次序组合成待匹配值供字段区进行查找匹配。
采用基于任意字段匹配的数据报文转发方法进行用户配置增加转发表项的方法:其特征在于:
(1)依据转发表静态字段描述符包含字段及其先后次序,向表项中静态字段表区填入静态字段键值和静态字段掩码,用户没有指定的静态字段设置为缺省通配;
(2)若表项需要匹配静态字段描述符以外的动态字段,则包括三步操作:
a)根据动态字段的类型和数目为动态字段表区分配空间;
b)根据用户配置的动态字段,构造动态字段描述符以及配置动态字段键值区和动态字段掩码区;
c)将动态字段表区的地址写到静态字段表区中的动态字段表地址,实现动态字段表区关联。
配置该条表项工作流程如下:
(1)配置静态字段区;
(2)为动态字段区分配空间;
(3)配置动态字段区;
(4)关联动态字段,将动态字段表区的地址写入到静态字段表区,完成表项关联。
一种报文转发查表方法,其特征在于:报文转发查表大致流程分为两阶段,第一阶段是静态字段表区查找,找出报文静态字段命中的全部表项,作为候选命中表项;第二阶段,把各个候选表项按优先级自高向低逐一与报文进行动态字段匹配。
第一阶段,静态字段表区匹配查找,包含以下步骤:
(1)静态字段提取,根据静态字段描述符对字段提取器进行配置,字段提取器从数据报文中指定位置提取出全部静态字段,并且合并成待匹配值;
(2)静态字段查表,将带匹配值与静态字段表区的所有表项逐一进行匹配,若匹配成功则将表项加入到候选命中表项序列中;
(3)若查找结束后,候选命中表项序列不为空,即至少有一条表项的静态字段区命中,则进行第二阶段动态字段匹配;否则,表示没有一条表项的静态字段区被命中,即转发表中没有可以匹配的表项,查表结束并输出无命中。
第二阶段,动态字段表区匹配,按照候选命中表项序列中次序,用每一个候选表项对数据报文进行如下匹配:
(1)判断候选表项静态字段表区中的动态字段区地址是否被赋值,是否关联动态字段表区,若没有关联,表示该表项仅包含静态字段表区,且已经命中,因此该表项被命中,第二阶段匹配结束,输入当前候选命中表项的序号;若该表项有关联动态字段表区,执行(2);
(2)通过动态字段区地址找到动态字段表区,根据动态字段描述符对字段提取器进行配置并从数据报文中提出待匹配动态字段值;
(3)将待匹配动态字段值与动态字段表区中动态字段键值和动态字段掩码进行匹配,若匹配成功,表示表项的动态字段表区与数据报文匹配,同时由于第一阶段静态报文查找中已经确认该表项静态字段与报文匹配,因此该表项与报文匹配成功,查找结束,输出当前命中表项;否则,查看下一条候选命中表项,执行(1);
(4)若全部候选命中表项均不能与数据报文动态字段匹配,则查找结束,输出无命中。
本方法的创新点主要有两处:
1.引入基址,偏移量,长度三元组灵活定义任意字段,便于支持新型网络协议开发部署。
2.引入动态字段区,通过定义动态字段区,同一个转发表中不同表项可灵活配置不同的任意字段,能够解决传统交换机转发表数量膨胀问题和多级查表转发延迟变大问题;本方法中不同表项的动态字段区相互独立,无需冗余字段,能够解决传统交换机静态字段转发表方式由于字段类型的多样性导致的字段利用效率低下问题。
附图说明
图1是背景技术中openflow交换机报文字段提取流程图。
图2是通过基址、偏移量、长度三元组指定匹配报文任意字段示意图。
图3是转发表项示意图。
图4是静态字段表项示意图。
图5是动态字段表区三部分示意图。
图6是查表第一阶段:静态字段匹配示意图。
图7是查表第二阶段:动态字段匹配示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进行详细描述。
如附图2所示的通过基址、偏移量、长度三元组指定匹配报文任意字段示意图。用户通过基址、偏移量、长度三元组来指定匹配报文任意字段,通过多个三元组或者普通知名字段组成所需键值。基址是指字段选取的定位标志,可能的枚举值为Layer2,Layer3,Layer4,payload等,分别代表二层、三层、四层及荷载的起始位置。偏移量是指字段相对基址位置偏移的字节数,长度是指字段占用字节数。
如附图3所示的转发表项示意图。一条转发表项包含静态字段表区和动态字段表区(可选)。静态字段区的字段类型和数目在转发表初始化阶段由静态字段描述符设定,所有转发表项的静态字段区的字段类型和数目均相同。动态字段区中的字段类型和数目是在转发表项增加时由新增对应的动态字段描述符设定,同一张转发表中不同表项的动态字段区相互独立。
字段描述符:静态字段描述符和动态字段描述符均是由一个或多个知名字段或者三元组组成的序列串,譬如:
{目的IP地址,TCP目的端口号,[Layer3,10,10],[Layer7,5,40]}
该字段描述符包含四个字段,第一和第二个字段是知名字段,第三个和第四个是用户通过三元组自定义的字段。知名字段长度由其所对应的网络协议所规定,譬如,IPv4协议规定目的IP地址为4字节,TCP协议规定TCP目的端口号位2字节。而自定义字段的长度由三元组中的“长度”域来指定。
静态字段描述符:每个转发表只有一个静态字段描述符,在转发表初始化阶段由用户通过配置脚本或者配置命令的方式来设置该转发表的静态字段描述符。譬如,用户为转发表配置的静态字段描述符为如下:
{目的IP地址,[Layer3,10,1]}
该静态字段描述符包含一个知名字段(目的IP地址)和一个自定义字段,静态字段描述符的作用有三方面。
一、转发表根据静态字段描述符中的字段对静态字段提取器进行配置,使得静态字段提取器每次能从静态字段描述符所指定的所有报文位置提取出相应字段内容;
二、转发表根据静态字段描述符对静态字段表区进行初始化配置,主要是静态字段表区存储空间分配。譬如上面的例子中,静态字段描述符包含的两个字段总长度为5个字节,则转发表为静态字段表区每一条表项预留14字节空间,其中包括5字节存储键值和5字节存储掩码和4字节存储动态字段表项地址。静态字段表区总空间大小为每条表项大小与转发最大流表项数目的乘积。
三、用户在配置静态字段表区的表项赋值时,转发表会根据静态字段描述符中每个字段进行检查,然后按照字段次序合并成表项键值和表项掩码,并写入表项空间。
字段提取器:字段提取器每次能从字段描述符所指定的报文位置提取出相应全部字段内容,并且将字段内容按照字段描述符中字段的先后次序组合成待匹配值供字段区进行查找匹配。譬如,字段提取器根据静态字段描述符{目的IP地址,[Layer3,10,1]}从报文中提取出来两个字段内容分别为192.168.0.15和0xC0,组合成一个键值为0xC0A8000F C0,前面C0A8000F是目的IP(192.168.0.15)的十六进制表示,后面C0是自定义字段,总共5字节长度。
静态字段表区:静态字段表区是以静态字段提取器获得的待匹配值作为输入,进行通配查表,并输出匹配表项序号或者无表项命中信号。静态字段表区由静态字段表项组成,每一条静态字段表项包含三部分,分别是静态字段键值、静态字段掩码和动态字段表项首地址。如上所述,静态字段键值和静态字段掩码的长度相等且均由静态字段描述符所规定。
参见附图4静态字段表项示意图,用户配置新增一条表项时,需要对静态字段描述符所指定的全部字段逐一进行配置,包括字段键值和字段掩码。譬如,用户根据静态字段描述符{目的IP地址,[Layer3,10,1]},分别配置目的IP地址为192.168.0.0/24,配置自定义字段为0x10,自定义字段掩码为0xFF。
为防止用户配置错误,转发表依据静态字段描述符的设定对用户配置脚本(或命令)进行正确性检查。检查通过后,转发表将各个静态字段的键值和掩码分别进行合并,并且写入表项中。如上述例子,转发表得到合并后的静态字段键值为0xC0A8000010,静态字段掩码为0xFF FF FF00FF,然后将其分别写入到表项静态字段键值区和静态字段掩码区。
若用户在配置表项时没有指定静态字段描述符中某些字段,则这些字段缺省键值为全零,缺省掩码为全零。譬如,用户配置表项时只配置了目的IP地址为192.168.0.0/24,没有配置自定义字段区,则转发表对该表项的自定义字段采用默认配置,即键值为0x00,掩码为0x00,最终得到的静态字段键值区为0x C0A8000000,静态字段掩码区为0xFF FFFF0000。
用户在配置表项时可选配置关联动态字段表项,若无配置关联动态字段表项,则静态字段表区命中即表示表项被命中,直接返回表项序号;若用户配置了关联动态字段表项,则静态字段表区和动态字段表区同时命中方可表示表项被命中。
若用户没有配置关联动态表项,则改表项的静态字段表区中最后的动态字段表项地址区缺省为全零,表示该表项没有关联动态字段表区;否则,静态字段表区中该位置存储其关联动态字段表项的地址,当待匹配静态字段值命中当前静态字段表区后,转发表可以通过该地址找到动态字段表区,以进行第二阶段动态字段匹配。
动态字段表区:
动态字段表区是对静态表区的扩展,由于静态字段描述符指定了静态字段表区存储字段的种类和数目,假如用户需要对表项进行扩展,来匹配其他不被静态字段描述符所指定的字段,需要为该表项增加动态字段表区,并将动态字段表区与静态字段表区关联起来,即将动态字段表区的地址存储在静态字段表区的动态字段地址区中。
动态字段表区包括三部分,分别是动态字段描述符区、动态字段键值区和动态字段掩码区。如附图5动态字段表区三部分示意图所示。
与静态字段描述符类似,动态字段描述符用来描述动态字段表区所包含的字段,其区别在于三方面:
初始化时刻不同。静态字段描述符在转发表初始化阶段生成并由用户进行配置,静态字段描述符为所有表项的静态字段表区共用;动态字段描述符在用户配置转发表项时生成,用户配置动态字段表区需要配置其专用动态字段描述符、动态字段键值区和动态字段掩码区。
作用报文范围不同。静态字段描述符对静态字段提取器进行配置,对所有需要查表的数据报文进行所有静态字段提取和组合;而动态字段描述符配置字段提取器只对命中该流表静态字段表区的数据报文进行指定动态字段的提取和合并。
分配空间的方式不同。静态字段描述符所描述的字段的总长度决定了所有表项的静态字段表区的存储空间大小;动态字段描述符所描述的字段总长度只影响所在单一流表的动态字段表区的空间分配。
动态字段键值区和动态字段掩码区的空间分配和配置方式与静态字段键值区和静态字段掩码区类似,唯一区别在于其依赖于动态字段描述符。
用户配置增加转发表项方法:
依据转发表静态字段描述符包含字段及其先后次序,向表项中静态字段表区填入静态字段键值和静态字段掩码,用户没有指定的静态字段设置为缺省通配;
若表项需要匹配静态字段描述符以外的动态字段,则包括三步操作
根据动态字段的类型和数目为动态字段表区分配空间;
根据用户配置的动态字段,构造动态字段描述符以及配置动态字段键值区和动态字段掩码区;
将动态字段表区的地址写到静态字段表区中的动态字段表地址,实现动态字段表区关联。
譬如,用户配置一条转发表项如下:
目的IP地址为192.168.0.15/32,TCP目的端口号为6000,TCP荷载的第一个字节为0x33
当前转发表的静态字段描述符为{目的IP地址,[Layer3,10,1]},因此,用户需要配置的表项中只有目的IP地址这一项在静态字段表区,其余两项需要添加到动态字段表区。具体配置该条表项工作流程如下:
配置静态字段区。目的IP地址键值为0xC0A8000F,目的IP地址掩码为0xFF FF FFFF,由于静态字段描述符中另一个字段没有被配置,因此采用缺省赋值,即键值0x00,掩码0x00。合并后,静态字段键值区为0xC0A8000F00,掩码区为0xFF FF FFFF00。
为动态字段区分配空间。用户配置TCP目的端口号和自定义字段总长度为3字节,因此总共分配空间大小为:动态字段描述符大小+动态字段键值区(3字节)+动态字段掩码区(3字节)。动态字段描述符大小与其包含字段个数和种类有关。
配置动态字段区。利用用户动态字段配置信息构造动态字段描述符{TCP目的端口号,[layer5,0,1]},并且对动态字段键值区和掩码区进行赋值。TCP目的端口号键值区为0x1770,掩码区为0xFF FF,自定义字段的键值区为0x33,掩码区为0xFF。合并后,动态字段键值区为0x177033,动态字段掩码区为0xFF FF FF。
关联动态字段。将动态字段表区的地址写入到静态字段表区,完成表项关联。
报文转发查表方法:
报文转发查表大致流程分为两阶段,第一阶段是静态字段表区查找,找出报文静态字段命中的全部表项,作为候选命中表项;第二阶段,把各个候选表项按优先级自高向低逐一与报文进行动态字段匹配。
第一阶段,静态字段表区匹配查找。如附图6所示。
静态字段提取。根据静态字段描述符对字段提取器进行配置,字段提取器从数据报文中指定位置提取出全部静态字段,并且合并成待匹配值。
静态字段查表。将带匹配值与静态字段表区的所有表项逐一进行匹配,若匹配成功则将表项加入到候选命中表项序列中。
若查找结束后,候选命中表项序列不为空,即至少有一条表项的静态字段区命中,则进行第二阶段动态字段匹配;否则,表示没有一条表项的静态字段区被命中,即转发表中没有可以匹配的表项,查表结束并输出无命中。
譬如,用户配置了一个转发表,静态字段描述符为{目的IP地址,[Layer3,10,1]},其中第k条表项的静态字段表区配置为:静态字段键值区0xC0A8000000,掩码区0xFF FFFF0000,即要求目的IP地址匹配192.168.0.0/24,自定义字段通配。假设一个数据报文进入第一阶段查表,字段提取器从该报文中目的IP地址字段和自定义字段提取得到待匹配值为0xC0A8000F E2,当该匹配值与第k条表项的静态字段表区进行匹配时,首先将匹配值与掩码区进行与运算,即0xC0A8000F E2&0xFF FF FF0000,得到0xC0A8000000,再将计算结果与静态字段键值区进行对比,如果两者相同表示静态字段表区被命中,否则没被命中。在这个例子中,第k条表项的静态字段表区被命中,因此,将第k条表项加入到候选命中项序列中。
第二阶段动态字段表区匹配。如附图7所示。
按照候选命中表项序列中次序,用每一个候选表项对数据报文进行如下匹配:
判断候选表项静态字段表区中的动态字段区地址是否被赋值(是否关联动态字段表区),若没有关联,表示该表项仅包含静态字段表区,且已经命中,因此该表项被命中,第二阶段匹配结束,输入当前候选命中表项的序号;若该表项有关联动态字段表区,执行b);
通过动态字段区地址找到动态字段表区,根据动态字段描述符对字段提取器进行配置并从数据报文中提出待匹配动态字段值。
将待匹配动态字段值与动态字段表区中动态字段键值和动态字段掩码进行匹配。若匹配成功,表示表项的动态字段表区与数据报文匹配,同时由于第一阶段静态报文查找中已经确认该表项静态字段与报文匹配,因此该表项与报文匹配成功,查找结束,输出当前命中表项;否则,查看下一条候选命中表项,执行a);
若全部候选命中表项均不能与数据报文动态字段匹配,则查找结束,输出无命中。
本发明技术方案带来的有益效果有:
1.引入基址,偏移量,长度三元组灵活定义任意字段,便于支持新型网络协议开发部署。
2.引入动态字段区,通过定义动态字段区,同一个转发表中不同表项可灵活配置不同的任意字段,能够解决传统交换机转发表数量膨胀问题和多级查表转发延迟变大问题;本方法中不同表项的动态字段区相互独立,避免冗余字段,能够解决传统交换机静态字段转发表方式由于字段类型的多样性导致的存储空间利用效率低下问题。
本发明所述并不限于具体实施方式所述的实施例,只要是本领域技术人员根据本发明方案得出其他的实施方式,同样属于本发明的技术创新及保护的范围。

Claims (13)

1.一种基于任意字段匹配的数据报文转发方法,其特征在于:用户通过基址、偏移量、长度三元组来指定匹配报文任意字段,通过多个三元组或者普通知名字段组成所需键值;一条转发表项包含静态字段表区和动态字段表区,静态字段表区的字段类型和数目在转发表初始化阶段由静态字段描述符设定,所有转发表项的静态字段表区的字段类型和数目均相同,动态字段表区中的字段类型和数目是在转发表项增加时由新增对应的动态字段描述符设定,同一张转发表中不同表项的动态字段表区相互独立,所述基址是指字段选取的起始位置,所述偏移量是指字段相对基址位置偏移的字节数,所述长度是指字段占用字节数。
2.如权利要求1所述的基于任意字段匹配的数据报文转发方法,其特征在于:静态字段描述符和动态字段描述符均是由一个或多个知名字段或者三元组组成的序列串。
3.如权利要求2所述的基于任意字段匹配的数据报文转发方法,其特征在于:静态字段表区是以字段提取器获得的待匹配值作为输入,进行通配查表,并输出匹配表项序号或者无表项命中信号,静态字段表区由静态字段表项组成,每一条静态字段表项包含三部分,分别是静态字段键值、静态字段掩码和动态字段地址。
4.如权利要求3所述的基于任意字段匹配的数据报文转发方法,其特征在于:静态字段键值和静态字段掩码的长度相等且均由静态字段描述符所规定。
5.如权利要求2所述的基于任意字段匹配的数据报文转发方法,其特征在于:动态字段表区是对静态字段表区的扩展,动态字段表区的地址存储在静态字段表区的动态字段地址中。
6.如权利要求5所述的基于任意字段匹配的数据报文转发方法,其特征在于:动态字段表区包括三部分,分别是动态字段描述符区、动态字段键值区和动态字段掩码区。
7.如权利要求2所述的基于任意字段匹配的数据报文转发方法,其特征在于:每张转发表只有一个静态字段描述符,在转发表初始化阶段由用户通过配置脚本或者配置命令的方式来设置该转发表的静态字段描述符。
8.如权利要求1-3中任一项所述的基于任意字段匹配的数据报文转发方法,其特征在于:采用字段提取器,字段提取器每次能从字段描述符所指定的报文位置提取出相应全部字段内容,并且将字段内容按照字段描述符中字段的先后次序组合成待匹配值供字段区进行查找匹配。
9.一种采用权利要求1-7任一项所述的基于任意字段匹配的数据报文转发方法进行用户配置增加转发表项的方法:其特征在于:
(1)依据转发表静态字段描述符包含字段及其先后次序,向表项中静态字段表区填入静态字段键值和静态字段掩码,用户没有指定的静态字段设置为缺省通配;
(2)若表项需要匹配静态字段描述符以外的动态字段,则包括三步操作:
a)根据动态字段的类型和数目为动态字段表区分配空间;
b)根据用户配置的动态字段,构造动态字段描述符以及配置动态字段键值区和动态字段掩码区;
c)将动态字段表区的地址写到静态字段表区中的动态字段地址,实现动态字段表区关联。
10.如权利要求9所述的用户配置增加转发表项方法:其特征在于:配置该条表项工作流程如下:
(1)配置静态字段表区;
(2)为动态字段表区分配空间;
(3)配置动态字段表区;
(4)关联动态字段,将动态字段表区的地址写入到静态字段表区,完成表项关联。
11.一种采用权利要求1-7任一项所述的基于任意字段匹配的数据报文转发方法进行报文转发查表方法,其特征在于:报文转发查表流程分为两阶段,第一阶段是静态字段表区查找,找出报文静态字段命中的全部表项,作为候选命中表项;第二阶段,把各个候选命中表项按优先级自高向低逐一与报文进行动态字段匹配。
12.如权利要求11所述的报文转发查表方法,其特征在于:所述第一阶段,静态字段表区匹配查找,包含以下步骤:
(1)静态字段提取,根据静态字段描述符对字段提取器进行配置,字段提取器从数据报文中指定位置提取出全部静态字段,并且合并成待匹配值;
(2)静态字段查表,将待匹配值与静态字段表区的所有表项逐一进行匹配,若匹配成功则将表项加入到候选命中表项序列中;
(3)若查找结束后,候选命中表项序列不为空,即至少有一条表项的静态字段表区命中,则进行第二阶段动态字段匹配;否则,表示没有一条表项的静态字段表区被命中,即转发表中没有可以匹配的表项,查表结束并输出无命中。
13.如权利要求11所述的报文转发查表方法,其特征在于:所述第二阶段,动态字段表区匹配,按照候选命中表项序列中次序,用每一个候选命中表项对数据报文进行如下匹配:
(1)判断候选命中表项静态字段表区中的动态字段地址是否被赋值,是否关联动态字段表区,若没有关联,表示该表项仅包含静态字段表区,且已经命中,因此该表项被命中,第二阶段匹配结束,输入当前候选命中表项的序号;若该表项有关联动态字段表区,执行(2);
(2)通过动态字段地址找到动态字段表区,根据动态字段描述符对字段提取器进行配置并从数据报文中提出待匹配动态字段值;
(3)将待匹配动态字段值与动态字段表区中动态字段键值和动态字段掩码进行匹配,若匹配成功,表示表项的动态字段表区与数据报文匹配,同时由于第一阶段静态报文查找中已经确认该表项静态字段与报文匹配,因此该表项与报文匹配成功,查找结束,输出当前命中表项;否则,查看下一条候选命中表项,执行(1);
(4)若全部候选命中表项均不能与数据报文动态字段匹配,则查找结束,输出无命中。
CN201410174192.8A 2014-04-28 2014-04-28 基于任意字段匹配的数据报文转发方法 Expired - Fee Related CN104009921B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410174192.8A CN104009921B (zh) 2014-04-28 2014-04-28 基于任意字段匹配的数据报文转发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410174192.8A CN104009921B (zh) 2014-04-28 2014-04-28 基于任意字段匹配的数据报文转发方法

Publications (2)

Publication Number Publication Date
CN104009921A CN104009921A (zh) 2014-08-27
CN104009921B true CN104009921B (zh) 2017-09-19

Family

ID=51370416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410174192.8A Expired - Fee Related CN104009921B (zh) 2014-04-28 2014-04-28 基于任意字段匹配的数据报文转发方法

Country Status (1)

Country Link
CN (1) CN104009921B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104168203A (zh) * 2014-09-03 2014-11-26 上海斐讯数据通信技术有限公司 一种基于流表的处理方法及系统
WO2017121471A1 (en) * 2016-01-13 2017-07-20 Huawei Technologies Co., Ltd. Dynamic forwarding rules in sdn
CN105704028B (zh) * 2016-03-25 2019-02-19 北京华为数字技术有限公司 报文处理方法及装置
CN108270699B (zh) * 2017-12-14 2020-11-24 中国银联股份有限公司 报文处理方法、分流交换机及聚合网络
CN110120985B (zh) * 2018-02-05 2021-06-29 华为技术有限公司 通信的方法和设备
CN108881037A (zh) * 2018-09-12 2018-11-23 盛科网络(苏州)有限公司 一种基于udf报文实现哈希运算、负载均衡的方法及装置
CN109194665B (zh) * 2018-09-17 2020-10-20 盛科网络(苏州)有限公司 一种报文查找键值的生成方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293379A (en) * 1991-04-22 1994-03-08 Gandalf Technologies, Inc. Packet-based data compression method
US5682524A (en) * 1995-05-26 1997-10-28 Starfish Software, Inc. Databank system with methods for efficiently storing non-uniform data records
CN102006233A (zh) * 2010-11-29 2011-04-06 中兴通讯股份有限公司 路由选路方法及装置
CN102571587A (zh) * 2012-01-13 2012-07-11 大唐移动通信设备有限公司 报文转发方法和设备
CN103095474A (zh) * 2011-10-28 2013-05-08 上海邮电设计咨询研究院有限公司 一种tup消息配对的计算机实现方法
CN103369660A (zh) * 2012-03-26 2013-10-23 大唐联诚信息系统技术有限公司 网元数据同步方法和网元设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293379A (en) * 1991-04-22 1994-03-08 Gandalf Technologies, Inc. Packet-based data compression method
US5682524A (en) * 1995-05-26 1997-10-28 Starfish Software, Inc. Databank system with methods for efficiently storing non-uniform data records
CN102006233A (zh) * 2010-11-29 2011-04-06 中兴通讯股份有限公司 路由选路方法及装置
CN103095474A (zh) * 2011-10-28 2013-05-08 上海邮电设计咨询研究院有限公司 一种tup消息配对的计算机实现方法
CN102571587A (zh) * 2012-01-13 2012-07-11 大唐移动通信设备有限公司 报文转发方法和设备
CN103369660A (zh) * 2012-03-26 2013-10-23 大唐联诚信息系统技术有限公司 网元数据同步方法和网元设备

Also Published As

Publication number Publication date
CN104009921A (zh) 2014-08-27

Similar Documents

Publication Publication Date Title
CN104009921B (zh) 基于任意字段匹配的数据报文转发方法
US10496680B2 (en) High-performance bloom filter array
US20190058661A1 (en) Storing keys with variable sizes in a multi-bank database
US6606681B1 (en) Optimized content addressable memory (CAM)
US9984144B2 (en) Efficient lookup of TCAM-like rules in RAM
US7426518B2 (en) System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size
US6665297B1 (en) Network routing table
CN106416152B (zh) 一种查找装置、查找配置方法和查找方法
US20090097654A1 (en) Method and system for performing exact match searches using multiple hash tables
EP2020125A1 (en) Method of performing table lookup operation with table index that exceeds cam key size
US7480300B2 (en) Content addressable memory organized to share entries between different entities such as ports of a network unit
WO2020144655A1 (en) Exact match and ternary content addressable memory (tcam) hybrid lookup for network device
US20080222386A1 (en) Compression of ipv6 addresses in a netflow directory
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
US10897422B2 (en) Hybrid routing table for routing network traffic
US6337862B1 (en) Network switch with truncated trie look-up facility
CN106453091A (zh) 路由器转发平面的等价路由管理方法和装置
US8018935B2 (en) Address search
JP4048861B2 (ja) アドレス検索装置
CN105704035B (zh) 报文匹配处理方法及装置
CN105282055A (zh) 识别网络分组的内部目的地的方法及其装置
US9706017B2 (en) Atomic update of packet classification rules
CN108075979A (zh) 实现最长掩码匹配的方法及系统
CN110830375B (zh) 基于tcam存储路由mac信息的方法及装置
CN102375820B (zh) Tcam表项的压缩方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Tang Yong

Inventor after: Li Dan

Inventor before: Li Dan

Inventor before: Tang Yong

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: LI DAN TANG YONG TO: TANG YONG LI DAN

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170919

CF01 Termination of patent right due to non-payment of annual fee