一种ip数据包的匹配方法和匹配加速器的制作方法

文档序号:7814696阅读:316来源:国知局
专利名称:一种ip数据包的匹配方法和匹配加速器的制作方法
技术领域
本发明涉及移动通信系统领域,尤其涉及业务流模板中一种IP数据包的匹配方法和匹配加速器。
背景技术
随着无线通信技术与网络互联协议(IP, Internet Protocol)技术的紧密结合,移动通信网络从全球移动通讯系统(GSM, Global System of Mobi lecommuni cat ion)系统的电路交换网发展到通用分组无线业务(GPRS, GeneralPacket Radio Service)的分组交换网。为了满足用户对高速无线数据业务的新需求,GPRS经历增强型数据速率GSM演进技术(EDGE, Enhanced Data Ratefor GSM Evolution)向第三代移动通信技术(3G,3rd_generation) / 通用移动通信系统(UMTS, Universal Mobile TelecommunicationsSystem)的演进。虽然3G移动通信系统比起2G有了很大改进,但是仍然无法满足用户的要求,又进一步推出了演进UMTS技术即演进分组系统(EPS, Evolved PacketSystem),目标是为实时和非实时业务提供一种统一的体系结构,并且为用户提供高数据传输速率、低时延和优化的分组无线接入技术。这个目标由EPS的两个重要组成部分:无线接口长期演进(LTE, LongTermEvolution)和系统结构演进(SAE, System Architecture Evolution)来完成。同时针对服务质量(QoS,Quality of Service)、针对未来数据业务具有突发性的特点,引入EPS专用承载与默认承载的概念,有效地减少了业务承载的建立时延,真正实现了用户的“永远在线”。默认承载是一个种满足默认QoS的数据和信令的用户承载。专用承载是对某些特定业务所使用的SAE承载。一般情况下专用SAE承载QoS比默认QoS的要求高。专用承载在用户设备(UE,User Equipment)关联一个上行的业务流模板(TFT,Traffic FlowTemplate),在公用数据网网关(PDNGW,Public Data Network Gateway)关联一个下行的TFT,TFT中包含业务数据流的分组过滤器(PF, Packet Pilter),只有IP数据包与PF匹配成功才能传输。在EPS系统中,同一承载上的所有业务数据流将获得同样的QoS保障,不同承载类型提供不同的QoS保障。一个EPS承载可看作用户设备与公用数据网网关(PDNGW,PublicData Network Gateway)之间的逻辑电路,业务流模板中的每个分组包过滤器(PF)对应一个EPS承载。通过与承载对应的PF,将PDN下的业务数据流进行分类并分发到不同的EPS承载上传输。在EPS系统中,接入点名称(APN, Access Point Name)连接可能存在多个专用承载(含有多个PF)。如果接收到的IP数据包头部参数与某PF中有效属性组合的属性值全匹配,则IP数据包与PF匹配成功,同时IP数据包可在本PF映射的无线承载上传输。现有的IP数据包与PF的软件实现匹配方法,如图1所示,在Ti时刻,先从IP数据流提取出一个IP数据包(图1中为IPl),然后从该IP数据包中提取头部参数与PF按照优先级高低从PH)至PF255逐一进行匹配比较,一直持续到IP数据包与其中某个PF匹配成功,再将此IP数据包与EPS承载标识(EBI,EPS Bearer Identity)绑定后发送给协议栈处理,然后在(Ti+Ι)时刻再提取下一个IP数据包(IP2)进行类似的匹配处理,也就是说,当上一个IP数据包与PF未匹配成功时下一个IP包必须等待,如图1所示,当IPl在匹配时,IP2必须等待,只有当IPl与PF匹配成功后IP2才能开始从优先级最高的PR)至PF255逐一开始匹配,这就是一个串行的过程,而对于现在要求越来越高的上行速度,这种串行的实现过程需要的匹配时间较长。发明内容
本发明实施例提供了一种IP数据包的匹配方法和匹配加速器,用于提高IP数据包与分组过滤器的匹配效率。
一方面,本发明实施例提供的IP数据包的匹配方法,包括:
IP头部参数缓存器从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至所述IP头部参数缓存器的X个缓存块中,其中η, X都是正整数;
所述匹配模块的第i个分组过滤器将所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配,其中,所述匹配模块包括m个分组过滤器,其中,I彡i < (i+1) < m, 1、k、m是正整数;
若所述第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值匹配成功,所述主控模块将所述第i个分组过滤器的演进分组系统承载索引EBI写入所述第k个缓存块对应的IP数据包的结构体中,所述主控模块将所述第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中;
若所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配失败,所述匹配模块的第(i+1)个分组过滤器将所述第(i+1)个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配;
所述匹配模块的第i个分组过滤器将所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配之后,所述第i个分组过滤器将所述第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配。
另一方面,本发明实施例提供的匹配加速器,包括:
IP头部参数缓存器、主控模块、匹配模块、发送缓存器,其中,
所述IP头部参数缓存器包括:X个缓存块,其中X是正整数;
所述IP头部参数缓存器,用于从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至所述IP头部参数缓存器的X个缓存块中,其中,η是正整数;
所述匹配模块包括m个分组过滤器,其中,I ≤ i < (i+1) <m, 1、m是正整数;
所述匹配模 块的第i个分组过滤器,用于将所述第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配,其中,k为正整数;
所述主控模块,用于若所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配成功,将所述第i个分组过滤器的演进分组系统承载索引EBI写入所述第k个缓存块对应的IP数据包的结构体中,将所述第k个缓存块中的IP数据包的结构体地址存入所述发送缓存器中;
所述发送缓存器,用于保存所述主控模块存入的第k个缓存块中保存的IP数据包的结构体地址;
所述匹配模块的第(i + 1)个分组过滤器,用于若所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配失败,将所述第(i+1)个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配;
所述匹配模块的第i个分组过滤器,用于将所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配之后,将所述第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,IP头部参数缓存器首先从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至IP头部参数缓存器中的X个缓存块中,匹配模块的第i个分组过滤器将第i分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配,然后第i个分组过滤器将第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进匹配,可见,在本发明实施例中,第i个分组过滤器在匹配完第k个缓存块中保存的IP数据包的头部参数值之后,就可以再匹配第(k+Ι)个缓存块中保存的IP数据包的头部参数值,而不需要等到匹配模块中的m个分组过滤器都与第k个缓存块中保存的IP数据包匹配完之后再进行,也就是说,本发明实施例中,匹配模块中的各个分组过滤器对IP头部参数缓存器中各个缓存块中保存的IP数据包的匹配可以并行处理,能够提高IP数据包与分组过滤器的匹配效率。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术中存在的IP数据包与PF的匹配方法的示意图2为本发明实施例提供的IP数据包的匹配方法的示意图3为本发明实施例提供的一种匹配加速器的组成结构示意图4为本发明实施例提供的另一种匹配加速器的组成结构示意图5为本发明实施例中提供的对一个IP数据包进行匹配处理的示意图6 (a)为本发明实施例提供的多个IP数据链在Ti时刻进行匹配处理的示意图6(b)为本发明实施例提供的多个IP数据链在Ti+Ι时刻进行匹配处理的示意图6(c)为本发明实施例提供的多个IP数据链在Ti+2时刻进行匹配处理的示意图。
具体实施方式
本发明实施例提供了一种IP数据包的匹配方法和匹配加速器,用于提高IP数据包与分组过滤器的匹配效率。为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供的IP数据包的匹配方法,如图2所示,包括:20UIP头部参数缓存器从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至IP头部参数缓存器的X个缓存块中。其中η,X都是正整数,η指的是IP数据流中包含的IP数据包的个数,x指的是IP头部参数缓存器中包含的缓存块的个数,需要说明的是,本发明实施例中出现的η、X以及后续出现的m指代的都是数量,并且可以是根据实际的应用环境而改变的数量值,n、x、m并非是指n、x、m这些字母的本身,当然也可以用其它任意的字母或者数字来代替,此处只是表明数据包、缓存块、分组过滤器的个数,此处仅作说明,不做限定。需要说明的是,本发明实施例中η和X没有对应关系,η有可能小于χ,η有可能大于X,在初始开始缓存IP数据包时不一定是把IP头部参数缓存器中的所有缓存块填满再去匹配,有可能缓存一个数据包或几个数据包就开始匹配的过程,此处仅作说明,不做限定。在本发明实施例中,匹配加速器包括:IP头部参数缓存器、主控模块、匹配模块、发送缓存器,其中,IP头部参数缓存器包括:Χ个缓存块,匹配模块包括m个分组过滤器。关于x、m的说明详见前述描述,此处不再赘述。在本发明实施例中,IP头部参数缓存器用于存放IP数据包的头部参数值和结构体地址,提供给匹配模块进行PF匹配。需要说明的是,此时描述的IP头部参数缓存器包括了 χ个缓存块,在后续步骤中只描述了第k个缓存块和第(k+Ι)个缓存块,只是为了能够清楚的描述各个缓存块的工作流程以及实现方式,当然IP头部参数缓存器也可以包括多个缓存块,但是多个缓存块的实现方式仍然是重复本发明实施例提供的第k个缓存块和第(k+Ι)缓存块的工作流程,仍就包含在本发明实施例之中。在实际应用中,IP头部参数缓存器可以包含χ个缓存块,χ是正整数,由于IP头部参数缓存器在进行IP头部参数提取时,本发明实施例中的匹配模块也在同时进行匹配处理,当IP头部参数提取的速率小于匹配模块中的PF匹配速率,IP头部参数缓存器就不会出现缓存不够用的情况,为了减少硬件资源开销,此处IP头部参数缓存器中的缓存块具体可以为16,即IP头部参数缓存器中包括的缓存块为第I个缓存块、第2个缓存块.....第16个缓存块。在本发明实施例中,IP数据流包括η个IP数据包,但是在实际应用中一个IP数据流(也可以叫一个IP数据链)中通常可以包括多个IP数据包,需要说明的是,此时描述的IP数据流包括η个IP数据包只是为了能够清楚的描述各个IP数据包的被处理的工作流程以及实现方式,当然一个IP数据流也可以包括多个IP数据包,但是对多个IP数据包的实现方式仍然是重复本发明实施例提供的对第k个缓存块中保存的IP数据包和第(k+Ι)个缓存块中保存的IP数据包的被处理流程,仍就包含在本发明实施例之中。在每一个IP数据包中都包括有IP数据包的头部参数值和IP数据包结构体地址,例如第一 IP数据包就包括有第一 IP数据包头部参数值和第一 IP数据包结构体地址,第二 IP数据包就包括有第二IP数据包头部参数值和第二 IP数据包结构体地址。
在本发明实施例中,IP头部参数缓存器从IP数据流的η个IP数据包中分别提取头部参数值和结构体地址并分别保存至IP头部参数缓存器的X个缓存块,若IP头部参数缓存器包括有多个缓存块,此处可以将多个IP数据包头部参数值和结构体地址保存在空闲的缓存块中。202、匹配模块的第i个分组过滤器将第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配,若匹配成功,触发步骤203执行,若匹配未成功,触发步骤204执行。其中,匹配模块包括m个分组过滤器,其中,I < i < (i+1) <m,1、k、m是正整数。
1、k、(i+1)都是正整数,1、(i+1)满足条件I < i < (i+1) <m,其中i指的是匹配模块中第i个分组过滤器,(i+1)指的是匹配模块中第(i+1)个分组过滤器,k指的是IP头部参数缓存器中第k个缓存块,需要说明的是,本发明实施例中出现的1、k、(i+1)以及后续出现的(k+Ι)指代的都是某一个分组过滤器或缓存块,例如如果i取值为3,则指代的是匹配模块中的第3个分组过滤器,k取值为1,则指代的是IP头部参数寄存器中第I个缓存块,另外1、k、(i+l)以及后续出现的(k+Ι)可以是根据实际的应用环境而改变的数量值,1、k、(i+1)、(k+Ι)并非是指1、k、(i+1)、(k+Ι)这些字母的本身,当然也可以用其它任意的字母或者数字来代替,此处只是表明第几个分组过滤器、第几个缓存块,此处仅作说明,不做限定。在本发明实施例中,主控模块用于对IP头部参数缓存器、匹配模块、发送缓存器的控制,例如主控模块对匹配模块、IP头部参数缓存器、发送缓存器的是否使能进行控制,只有在使能的情况下,其余三个模块才能正常工作。在本发明实施例中,匹配模块包括m个分组过滤器,步骤202中只是描述了第i个分组过滤器的实现方法,需要说明的是,此时描述的匹配模块中的第i个分组过滤器只是为了能够清楚的描述匹配模块中的一个分组过滤器的工作流程以及实现方式,当然匹配模块也可以包括多个分组过滤器,但是多个分作过滤器的实现方式仍然是重复本发明实施例提供的第i个分组过滤器的工作流程,仍就包含在本发明实施例之中。在本发明实施例中,匹配模块是主要的功能模块,用于将IP数据包与网络配予的有效分组过滤器进行匹配比较,并且将匹配成功的分组过滤器对应的EPS承载标识(EBI,EPS Bearer Identity)写入IP数据包的结构体中。其中,IP数据包的匹配原则可以按着优先级高到低进行匹配,故分组滤波器的设计也可以按照从优先级高到低的顺序进行匹配。需要说明的是,在本发明实施中,第i个分组过滤器的优先级索引(EPI,Evaluation Precedence Index)可以高于第(i+1)个分组过滤器的EPI,每个分组过滤器通过唯一的分组过滤器标识符(PF ID)来识别,同时每个分组过滤器都包含有一个优先级索引,每个EPI不同的分组过滤器所采用的匹配属性原则可能不同,EPI的取值在使用相同IP地址和APN的所有EPS承载的同一方向(具体指上行方向或下行方向)下是惟一的,优先级索引的优先级取值范围是O 255,其中O代表的是优先级最高,255代表的是优先级最低。在本发明实施例中,第i个分组过滤器将第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配,其中,匹配属性值包括以下属性值的至少一个:远端地址和子网掩码属性值、安全参数索引属性值、流标记属性值、本地端口范围属性值、远端端口范围属性值、互联网协议第四版(IPv4, Internet Protocol version4)中服务类型或互联网协议第六版(IPv6, Internet Protocol version 6)中业务等级属性值、IPV4中协议号或IPV6中下一首部属性值。
通过EBI可将所有分组过滤器与EPS承载相互映射,每个EPS承载有对应的EBI参数和TFT。每个TFT中可以没有对应的分组过滤器,但是一个PDN连接中最多只能有一个TFT中没有分组过滤器,也就是说如果默认承载上没有分组过滤器那么PDN连接对应的所有匹配加速器中都必须存在分组过滤器。
鉴于本发明实施例中分组过滤器对IP数据包的匹配过程,增加IP头部参数缓存器的优势在于:
(I)、在匹配模块在匹配IP数据包的同时可以提取IP数据流中其他IP数据包的头部参数值,从而提高匹配效率;
(2)、可减少匹配模块的硬件开销和匹配比较时IP数据包头部参数的拷贝次数,假如没有本发明实施例提出的IP头部参数缓存器,那么匹配模块中的每个PF中都需开辟另一存储空间用于存放IP数据包头部参数以用于每次的匹配比较,这样每个PF都需要再增加与属性值寄存器同样大的空间,对于256个PF,整个匹配模块就需要额外增加256个寄存器,增加了硬件开销;其次,当IP数据包在前一个PF中未能匹配成功需送往下一个PF匹配的情况下,有两种方法,一种是重新从IP数据包中取出IP数据包头部参数,但因为这些头部参数中涉及到两个不固定位置的参数,所以重新取数的开销比从前一个PF存储IP数据包的头部参数的寄存器中拷贝更大;另一种是从上一个PF中拷贝,考虑极限情况,则需要拷贝256次。所以直接使用本发明实施例提供的IP头部参数缓存器与PF中的匹配属性值进行匹配比较既可以减少硬件开销也可以减少拷贝次数,提高了匹配效率。
另外需要说明的是,步骤202中对于第k个缓存块和第i个分组过滤器,都是指的有效的缓存块和使能空闲的分组过滤器(也就是可以进行读取的缓存块和可以进行匹配的分组过滤器),包括后续步骤中出现的第(i+1)个分组过滤器和第(k+Ι)个缓存块也是指有效的缓存块和使能空闲的分组过滤器,也是对于使能空闲的分组过滤器来说,第(i+1)个分组过滤器并不一定是和第i个分组过滤器相邻的那一个分组过滤器,同样第(k+Ι)个缓存块也并不一定是和第k个缓存块相邻的那一个缓存块。简言之,对于缓存块:空闲表示可以往里面写入IP数据包的头部参数值和结构体地址,有效表示可以读取缓存块中的头部参数值与PF匹配;对于匹配模块,使能空闲表示可以与下一有效缓存块中的头部参数值进行匹配。
203、若第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值匹配成功,主控模块将第i个分组过滤器的演进分组系统承载索引EBI写入第k个缓存块对应的IP数据包的结构体中,主控模块将第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中。
在本发明实施例中,若第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值匹配成功,主控模块将第i个分组过滤器的EBI写入第k个缓存块中保存的IP数据包的结构体中,主控模块将第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中,其中,发送缓存器用于存放匹配成功后的IP数据包结构体地址,发送缓存器的设计应注意:缓存区空间不需要开辟的过大,以减少硬件开销。
需要说明的是,在本发明实施例中,IP数据包结构体中必须包含一个用以存储相应EBI值的成员,当IP数据包与PF匹配成功或是失败需要将相应EBI值写入其中,即匹配成功时将分组过滤器的EBI写入IP数据包结构体对应的成员中,所有的分组过滤器都与IP数据包匹配失败时将主控模块中的EBI写入IP数据包结构体对应的成员中。需要说明的是,在实际应用中,主控模块将匹配成功的第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中之后,还可以包括步骤:主控模块判断是否满足预置的中断触发条件,若满足则主控模块触发中断,发送缓存器将在发送缓存器中保存的IP数据包的结构体地址输出给协议栈,以使协议栈对IP数据包的结构体地址进行处理,若不满足则主控模块不触发中断。例如,主控模块为发送缓存器设置中断触发条件,当中断触发条件满足时,主控模块触发中断,发送缓存器将在发送缓存器中保存的IP数据包结构体地址输出给协议栈,以满足IP数据流中对已经匹配成功的IP数据包结构体地址优先处理。在实际应用中,主控模块预置的中断触发条件具体可以包括:发送缓存器中保存的IP数据包结构体地址的个数不小于预置个数;或,满足空闲触发中断的条件,其中,空闲触发终端的条件包括:IP头部参数缓存器中所有缓存块空闲、匹配模块的所有m个分组过滤器都处于使能空闲状态、发送缓存器中保存的IP数据包的结构体地址的个数大于零。204、若第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值匹配失败,匹配模块的第(i+1)个分组过滤器将第(i+1)个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配。在本发明实施例中,当第i个分组过滤器与第k个缓存块中保存的IP数据包的头部参数值匹配失败时,由第(i+1)个分组过滤器继续与第k个缓存块中保存的IP数据包头部参数值进行匹配。这是一个不断持续进行的过程,若匹配模块中含有多个分组过滤器,则在前一个分组过滤器匹配失败时,需要由后续的分组过滤器继续进行匹配。需要说明的是,在本发明实施例中,一种可实现的情况是,匹配模块的第(i+1)个分组过滤器将第(i+1)个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配之后,还可以包括如下步骤:当(i+1) =m,若第(i+1)个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值匹配失败,主控模块将主控模块中的演进分组系统承载索引EBI写入第k个缓存块对应的IP数据包的结构体中,主控模块将第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中。也就是说,若匹配模块中包括的m个分组过滤器都匹配失败时,则主控模块将主控模块中的EBI写入第k个缓存块中保存的IP数据包中,主控模块将第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中。以下举例进行说明,在实际应用中,优先级索引的优先级取值范围是O 255,匹配模块具体可以包含256个分组过滤器PF,按着PF优先级从高到低的顺序设计,即PR)对应为优先级为O的PF,PFk存放优先对应为优先级为k的PF,首先由PR)进行匹配,若匹配失败,由PFl进行匹配,若PFl匹配失败,继续由PF2进行匹配,...,直到由PF255进行匹配,若PF255匹配失败,则主控模块将主控模块的EBI写入第k个缓存块中保存的IP数据包的结构体中,主控模块将第k个缓存块中的IP数据包的结构体地址存入发送缓存器中。205、匹配模块的第i个分组过滤器将第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配之后,第i个分组过滤器将第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配。
在本发明实施例中,匹配模块的第i个分组过滤器将第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配之后,第i个分组过滤器将第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配,由于第i个分组过滤器在使能空闲时就可以继续进行匹配工作,而不需要等到匹配模块中的m个分组过滤器都匹配完成之后才能进行匹配,故可以实现并行的匹配方式,提高匹配效率。
需要说明的是,在本发明实施例中,步骤205执行之前还可以包括如下步骤:
主控模块判断匹配模块的第(i+1)个分组过滤器是否使能空闲,若是,主控模块触发第(i+1)个分组过滤器执行与第k个缓存块中保存的IP数据包的头部参数值进行匹配的功能。即,在第(i+1)个分组过滤器开始进行匹配之前,主控模块判断一下第(i+1)个分组过滤器的状态,若第(i+1)个分组过滤器有效,主控模块再触发第(i+1)个分组过滤器开始匹配工作。
需要说明的是,本发明实施例中,匹配模块的第i个分组过滤器将第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配之前,还包括:主控模块判断IP头部参数缓存器中第(k+Ι)个缓存块是否有效,若是,主控模块触发第i个分组过滤器与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配。
在本发明实施例中,IP头部参数缓存器首先从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至IP头部参数缓存器中的X个缓存块中,匹配模块的第i个分组过滤器将第i分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配,然后第i个分组过滤器将第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进匹配,可见,在本发明实施例中,第i个分组过滤器在匹配完第k个缓存块中保存的IP数据包的头部参数值之后,就可以再匹配第(k+Ι)个缓存块中保存的IP数据包的头部参数值,而不需要等到匹配模块中的m个分组过滤器都与第k个缓存块中保存的IP数据包匹配完之后再进行,也就是说,本发明实施例中,匹配模块中的各个分组过滤器对IP头部参数缓存器中各个缓存块中保存的IP数据包的匹配可以并行处理,能够提高IP数据包与分组过滤器的匹配效率。
以上实施例介绍了本发明实施例提供的IP数据包的匹配方法,接下来介绍本发明实施例提供的方法相对应的装置:匹配加速器,如图3所示,一种匹配加速器300,包括:IP头部参数缓存器301、主控模块302、匹配模块303、发送缓存器304,其中,
IP头部参数缓存器301包括:X个缓存块,其中X是正整数;
IP头部参数缓存器301,用于从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至所述IP头部参数缓存器的X个缓存块中,其中,η是正整数;
匹配模块303包括m个分组过滤器,其中,I < i < (i+1) <m,1、m是正整数;
匹配模块的第i分组过滤器3031,用于将第i个分组过滤器3031的匹配属性值与第k个缓存块3011中保存的IP数据包的头部参数值进行匹配,其中,k为正整数;
主控模块302,用于若第i个分组过滤器3031的匹配属性值与第k个缓存块3011中保存的IP数据包的头部参数值匹配成功,将第i个分组过滤器3031的演进分组系统承载索引EBI写入第k个缓存块3011对应的IP数据包的结构体中,将第k个缓存块3011中的IP数据包的结构体地址存入发送缓存器304中;发送缓存器304,用于保存主控模块302存入的第k个缓存块中保存的IP数据包的结构体地址;匹配模块的第(i+1)个分组过滤器3032,用于若第i个分组过滤器3031的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值匹配失败,将第(i+1)个分组过滤器3032的匹配属性值与第k个缓存块中保存的IP数据包头部参数值进行匹配;匹配模块的第i个分组过滤器3031,用于将第i个分组过滤器3031的匹配属性值与第k个缓存块3011中保存的IP数据包的头部参数值进行匹配之后,将第i个分组过滤器3031的匹配属性值与第(k+Ι)个缓存块3012中保存的IP数据包的头部参数值进行匹配。需要说明的是,对于主控模块302和第(i+1)个分组过滤器3032而言,在实际应用中,主控模块302,还用于当(i+1) =m,若第(i+1)个分组过滤器3032的匹配属性值与第k个缓存块3011中保存的IP数据包的头部参数值匹配失败,将主控模块302中的演进分组系统承载索引EBI写入第k个缓存块3011对应的IP数据包的结构体中,将第k个缓存块3011中保存的IP数据包的结构体地址存入发送缓存器304中。需要说明的是,对于主控模块302和发送缓存器304而言,在实际应用中,主控模块302,还用于判断是否满足预置的中断触发条件,若满足则触发中断;发送缓存器304,还用于将在发送缓存器304中保存的IP数据包的结构体地址输出给协议栈,以使协议栈对发送缓存器304中保存的IP数据包的结构体地址进行处理。需要说明的是,对于主控模块302和IP头部参数缓存器301而言,在实际应用中,主控模块302,还用于将第k个缓存块3011中保存的IP数据包的结构体地址存入发送缓存器304中之后,将IP头部参数寄存器301的第k个缓存块3011清零;IP头部参数缓存器301,还用于从IP数据流中提取未保存的一个IP数据包的头部参数值和结构体地址并保存至IP头部参数缓存器的第k个缓存块3011。需要说明的是,对于主控模块302而言,在实际应用中,主控模块302,还用于在第(i+1)个分组过滤器3032执行之前进行判断第(i+1)个分组过滤器3032是否使能空闲,若是,触发第(i+1)个分组过滤器3032执行。需要说的是,主控模块302,还用于在第i个分组过滤器执行之前判断第(i+1)个缓存块是否有效,若是,触发第i个分组过滤器3031与第(k+Ι)个缓存块3012中保存的IP数据包的头部参数值进行匹配。需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明如图1所示的方法实施例中的叙述,此处不再赘述。本发明实施例中,IP头部参数缓存器首先从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至IP头部参数缓存器中的X个缓存块中,匹配模块的第i个分组过滤器将第i分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配,然后第i个分组过滤器将第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进匹配,可见,在本发明实施例中,第i个分组过滤器在匹配完第k个缓存块中保存的IP数据包的头部参数值之后,就可以再匹配第(k+Ι)个缓存块中保存的IP数据包的头部参数值,而不需要等到匹配模块中的m个分组过滤器都与第k个缓存块中保存的IP数据包匹配完之后再进行,也就是说,本发明实施例中,匹配模块中的各个分组过滤器对IP头部参数缓存器中各个缓存块中保存的IP数据包的匹配可以并行处理,能够提高IP数据包与分组过滤器的匹配效率。接下来,以一个实际的应用场景对本发明实施例提出的匹配加速器进行详细说明,如图4所示,匹配加速器包括:IP头部参数缓存器、主控模块、匹配模块、发送缓存器,其中,IP头部参数缓存器包括:缓存块1、缓存块2.....缓存块n,该IP头部参数缓存器
包含η个缓存块,为了能够使匹配模块中所有PF使能工作,那么η取值应该是256,由于IP头部参数缓存器在进行IP头部参数提取时,匹配模块也在同时匹配处理,当IP头部参数提取的速率小于匹配模块中的PF匹配速率,IP头部参数缓存器就不会出现缓存不够情况,为了减少硬件资源开销,此处IP头部参数缓存器中缓存块以16为例。其中,IP头部参数缓存器中的每个缓存块至少应包括三个部分,如图4所示,图4中仅画出了缓存块I中包括了 IP
数据包结构体地址寄存器、匹配属性值寄存器、状态寄存器,其它缓存块如缓存块2.....缓
存块η都包括了这3个部分,每个缓存块中具体包括:一个用于存放包含有IP数据包信息的结构体地址寄存器;另一个用于存放从IP数据包中提取的头部参数的匹配属性值寄存器,还有一个用于指示当前缓存块是否有效的状态寄存器。其中缓存块的读写根据缓存块的工作状态依次操作,往IP头部参数缓存器中的缓存块中保存IP数据包的头部参数值和结构体地址时为写缓存块,向现有空闲缓存块中离上次写缓存块向后最近的空闲缓存块进行写操作;ΙΡ头部参数与匹配模块进行匹配时为读缓存块,向现有有效缓存块中离上次读缓存块向后最近的有效缓存块进行读操作。主控模块包括:触发寄存器、长度寄存器、EBI寄存器、配置寄存器、状态寄存器,接下来分别作 介绍。触发寄存器:结合发送缓存器的空间大小,配置中断产生触发条件;长度寄存器:用于存储中断产生时,从发送缓存器中提取的IP数据包结构体地址的个数。EBI寄存器:用于存储没有PF的EBI (即所有的PF都匹配失败时)对应的EBI,同一 TON连接下,如果所有承载(包括默认承载和专用承载)都分配有PF,则此EBI寄存器被置为一无效值;配置寄存器:用于存储匹配加速器使能、匹配模块使能和触发寄存器使能等配置信息;状态寄存器:中断状态、IP头部参数缓存器、匹配模块等工作状态信息;需要说明的是,如果有其他功能需求,可增加寄存器个数用于不同的控制。匹配模块包括256个PF,按着PF优先级从高到低的顺序设计,分别为PFO、PFUPF2、...、PF255,即PR)对应为优先级为O的PF,PFk存放优先对应为优先级为k的PF,PFk指的是第k个PF。每个PF至少存在五部分:比较器:用于IP数据包头部参数值与PF的匹配属性值比较;
状态寄存器:记录PF工作状态等状态信息;EBI寄存器:存放PF对应的EPS承载标识(EBI);配置寄存器:存放PF匹配属性原则和匹配模块的使能控制位,其中的PF匹配属性原则按着位图(bitmap)设计,每一比特位代表一种PF匹配属性的有效性;属性值寄存器:存放对应PF的匹配属性值,可如下表I中设计:

权利要求
1.一种IP数据包的匹配方法,其特征在于,包括: IP头部参数缓存器从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至所述IP头部参数缓存器的X个缓存块中,其中η,X都是正整数; 所述匹配模块的第i个分组过滤器将所述第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配,所述匹配模块包括m个分组过滤器,其中,I < i < (i+1) < m, 1、k、m 是正整数; 若所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配成功,所述主控模块将所述第i个分组过滤器的演进分组系统承载索引EBI写入所述第k个缓存块对应的IP数据包的结构体中,所述主控模块将所述第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中; 若所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配失败,所述匹配模块的第(i+1)个分组过滤器将所述第(i+1)个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配; 所述匹配模块的第i个分组过滤器将所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配之后,所述第i个分组过滤器将所述第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配。
2.根据权利要求1所述的IP数据包的匹配方法,其特征在于,所述匹配模块的第(i+1)个分组过滤器将所述第(i+1)个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配之后,还包括: 当(i+1) =m,若所述第(i+1)个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配失败,所述主控模块将所述主控模块中的演进分组系统承载索引EBI写入所述第k个缓存块对应的IP数据包的结构体中,所述主控模块将所述第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中。
3.根据权利要求1所述的IP数据包的匹配方法,其特征在于,所述方法还包括: 所述主控模块判断是否满足预置的中断触发条件,若满足则所述主控模块触发中断,所述发送缓存器将在所述 发送缓存器中保存的IP数据包的结构体地址输出给协议栈,以使所述协议栈对所述发送缓存器中保存的IP数据包的结构体地址进行处理。
4.根据权利要求3所述的IP数据包的匹配方法,其特征在于,所述预置的中断触发条件包括: 所述发送缓存器中保存的IP数据包的结构体地址的个数不小于预置个数; 或,满足空闲触发中断的条件,所述空闲触发终端的条件包括:所述IP头部参数缓存器中所有缓存块空闲、所述匹配模块的m个分组过滤器都处于使能空闲状态、所述发送缓存器中保存的IP数据包的结构体地址的个数大于零。
5.根据权利要求1所述的IP数据包的匹配方法,其特征在于,所述主控模块将所述第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中之后,还包括: 所述主控模块将所述IP头部参数寄存器的第k个缓存块清零; 所述IP头部参数缓存器从IP数据流中提取未保存的一个IP数据包的头部参数值和结构体地址并保存至所述IP头部参数缓存器的第k个缓存块。
6.根据权利要求1所述的IP数据包的匹配方法,其特征在于,所述第i个分组过滤器的优先级索引EPI高于所述第(i+1)个分组过滤器的EPI。
7.根据权利要求1所述的IP数据包的匹配方法,其特征在于,所述匹配属性值包括以下属性值的至少一个: 远端地址和远端地址子网掩码属性值、安全参数索引属性值、流标记属性值、本地端口范围属性值、远端端口范围属性值、互联网协议第四版IPv4中服务类型或互联网协议第六版IPv6中业务等级属性值、IPv4中协议号或IPv6中下一首部属性值。
8.根据权利要求1所述的IP数据包的匹配方法,其特征在于,所述匹配模块的第(i+1)个分组过滤器将所述第(i+1)个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配之前,还包括: 所述主控模块判断所述匹配模块的第(i+1)个分组过滤器是否使能空闲,若是,所述主控模块触发所述第(i+1)个分组过滤器执行与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配的功能 。
9.根据权利要求1所述的IP数据包的匹配方法,其特征在于,匹配模块的第i个分组过滤器将所述第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配之前,还包括: 所述主控模块判断所述IP头部参数缓存器中第(k+Ι)个缓存块是否有效,若是,所述主控模块触发所述第i个分组过滤器与所述第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配。
10.一种匹配加速器,其特征在于,包括:IP头部参数缓存器、主控模块、匹配模块、发送缓存器,其中, 所述IP头部参数缓存器包括:X个缓存块,其中X是正整数; 所述IP头部参数缓存器,用于从IP数据流的η个IP数据包中分别提取每一个IP数据包的头部参数值和结构体地址,然后分别保存至所述IP头部参数缓存器的X个缓存块中,其中,η是正整数; 所述匹配模块包括m个分组过滤器,其中,1 < i < (i+1) <m, 1、m是正整数; 所述匹配模块的第i个分组过滤器,用于将所述第i个分组过滤器的匹配属性值与第k个缓存块中保存的IP数据包的头部参数值进行匹配,其中,k为正整数; 所述主控模块,用于若所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配成功,将所述第i个分组过滤器的演进分组系统承载索引EBI写入所述第k个缓存块对应的IP数据包的结构体中,将所述第k个缓存块中的IP数据包的结构体地址存入所述发送缓存器中; 所述发送缓存器,用于保存所述主控模块存入的第k个缓存块中保存的IP数据包的结构体地址; 所述匹配模块的第(i+1)个分组过滤器,用于若所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配失败,将所述第(i+1)个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配; 所述匹配模块的第i个分组过滤器,用于将所述第i个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值进行匹配之后,将所述第i个分组过滤器的匹配属性值与第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配。
11.根据权利要求10所述的匹配加速器,其特征在于,所述主控模块,还用于当(i+1)=m,若所述第(i+1)个分组过滤器的匹配属性值与所述第k个缓存块中保存的IP数据包的头部参数值匹配失败,将所述主控模块中的演进分组系统承载索引EBI写入所述第k个缓存块对应的IP数据包的结构体中,将所述第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中。
12.根据权利要求10所述的匹配加速器,其特征在于, 所述主控模块,还用于判断是否满足预置的中断触发条件,若满足则触发中断; 所述发送缓存器,还用于将在所述发送缓存器中保存的IP数据包的结构体地址输出给协议栈,以使所述协议栈对所述发送缓存器中保存的IP数据包的结构体地址进行处理。
13.根据权利要求10所述的匹配加速器,其特征在于, 所述主控模块,还用于将所述第k个缓存块中保存的IP数据包的结构体地址存入发送缓存器中之后,将所述IP头部参数寄存器的第k个缓存块清零; 所述IP头部参数缓存器,还用于从IP数据流中提取未保存的一个IP数据包的头部参数值和结构体地址并保存至所述IP 头部参数缓存器的第k个缓存块。
14.根据权利要求10所述的匹配加速器,其特征在于,所述主控模块,还用于在所述第(i+1)个分组过滤器执行之前判断所述第(i+1)个分组过滤器是否使能空闲,若是,触发所述第α+1)个分组过滤器执行。
15.根据权利要求10所述的匹配加速器,其特征在于,所述主控模块,还用于在所述第I个分组过滤器执行之前判断所述第(i+1)个缓存块是否有效,若是,触发所述第i个分组过滤器与所述第(k+Ι)个缓存块中保存的IP数据包的头部参数值进行匹配。
全文摘要
本发明实施例公开了一种IP数据包的匹配方法和匹配加速器,用于提高IP数据包与分组过滤器的匹配效率。本发明实施例提供的方法中,第i个分组过滤器在匹配完第k个缓存块中保存的IP数据包的头部参数值之后,就可以再匹配第(k+1)个缓存块中保存的IP数据包的头部参数值,而不需要等到匹配模块中的m个分组过滤器都与第k个缓存块中保存的IP数据包匹配完之后再进行,也就是说,本发明实施例中,匹配模块中的各个分组过滤器对IP头部参数缓存器中各个缓存块中保存的IP数据包的匹配可以并行处理,能够提高IP数据包与分组过滤器的匹配效率。
文档编号H04L1/00GK103188042SQ20111045975
公开日2013年7月3日 申请日期2011年12月31日 优先权日2011年12月31日
发明者佘广桥, 周勃, 杨炼, 朱正发 申请人:重庆重邮信科通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1