支持动态扩展帧头的过滤匹配预处理方法及装置的制作方法

文档序号:7942292阅读:136来源:国知局
专利名称:支持动态扩展帧头的过滤匹配预处理方法及装置的制作方法
技术领域
本发明涉及以太网及其高层协议数据包的过滤领域,特别是涉及一种支持动态扩展帧头的过滤匹配预处理方法及装置。
背景技术
随着互连网络对其主要承载体的以太网络设备处理能力要求的不断增长,新的以太网交换机除了单纯的数据转发之外,还要能够提供2到7层的处理能力,需要更强的重定优先级能力。这些都要求以太网交换或接口芯片提供2到7层的数据包过滤、分类处理的功能。因此需要为交换机提供高速率和更强处理能力的快速包过滤处理器。在目前的交换芯片以及以太网接口芯片中的数据包匹配过滤器中,根据规则表的相关字段来定位,并提取当前数据包中的匹配关键字,一般采用固定偏移量方法传统的关键字掩码表项字段参见图1所示,在相应的过滤规则表中指定提取关键字的偏移量值,在匹配的过程中从数据包的固定位置(一般是包头)开始,根据过滤表中规定的偏移量,计算要提取的关键字在数据包中的位置,从这个位置上提取相应的关键字,与规则表的内容比较,以确定是否匹配相应规则。这种固定偏移量方法,对于数据包中各个字段相对于数据包头的位置基本固定的以太网和无扩展帧头的IPv4帧头是可行的,但是,若将这个方法应用于IPv6格式的数据包和有扩展帧头的IPv4帧头,则表现出了很大的局限性,因为IPv6的数据包头和有扩展帧头的IPv4帧头,除了定长头部之外,还有扩展头部,而扩展头部长度以及个数没有限制。例如,参见图2所示,TCP (Transmission Control Protocol,传输控制协议)协议帧头的起点在IPv6数据包中的起始位置,可以是以下几种情况之一(1) IPv6固定帧头紧跟着TCP帧头;(2) IPv6固定帧头紧跟着路由帧头,路由帧头后面紧跟着TCP帧头;C3) IPv6固定帧头后面紧跟着路由帧头,路由帧头后面紧跟着分片帧头,分片帧头后面紧跟着TCP帧头。很明显,在上述几种情况下,TCP帧头相对于IPv6帧头第一个字节或者以太网帧头第一个字节的偏移位置不确定,如果采用传统的固定偏移量来定位关键字,显然不可能正确过滤TCP帧头内容。

发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种支持动态扩展帧头的过滤匹配预处理方法及装置,能够将数据包中所有链路及IP固定帧头和扩展帧头的位置都识别出来,配合预先建立的掩码规则,即可实现关键字匹配,正确过滤TCP帧头内容。本发明提供的支持动态扩展帧头的过滤匹配预处理方法,包括以下步骤:A、从数据包的链路层帧头开始扫描整个数据包,根据所有起始点为数据包链路层帧头的掩码规定的偏移量,提取数据包链路层帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字;B、根据数据包中的链路层负载类型字段,定位IP协议帧的基本帧头的起始位置;然后根据IP协议帧的版本号、帧头长度以及扩展帧头类型字段,定位数据包中所有IP协议帧的扩展帧头的位置;根据起始点为相应基本帧头或扩展帧头的掩码规定的偏移量,提取数据包IP协议帧的基本帧头或扩展帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字;C、完成数据包的扫描,提取掩码规定提取的所有关键字,并将已经提取的关键字送到过滤器进行规则匹配。在上述技术方案中,步骤A之前还包括以下步骤建立预处理所需要的掩码规则,所述掩码规则包括偏移量起始点所在的网络协议层级Layer、相对偏移的起始点类型 Type、相对偏移量Offset、掩码和关键字,其中,偏移量起始点所在的网络协议层级Layer 和相对偏移的起始点类型Type按照以下四种情况之一建立情况a =Layer = 0,掩码中偏移量起始点为数据包中的链路层帧头;情况b =Layer = 1,掩码中偏移量起始点为IPv4基本帧头或扩展帧头,Type = 0或IPv4协议规定的扩展帧头类型;情况c =Layer = 2,掩码中偏移量起始点为数据包中的TCP/UDP帧头,Type = IPv4协议下的用户数据报协议UDP或传输控制协议TCP ;情况d =Layer = 3,掩码中偏移量起始点为IPv6基本帧头或扩展帧头, Type = 0或IPv6协议规定的扩展帧头类型。在上述技术方案中,步骤B包括以下步骤B1、定位数据包中网络层数据帧的起始字节位置,根据网络层协议的版本号,来判断网络层数据帧是IPv6数据包还是IPv4数据包;B2、若网络层数据帧是IPv4数据包,则根据属于情况b且Type = O的掩码的相对偏移量加上当前已经定位的网络层数据帧的起始字节位置,在数据包中的相应位置提取关键字, 并写入掩码的关键字字段;B3、若网络层数据帧是IPv6数据包,则根据属于情况d且Type =0的掩码的相对偏移量在相应位置上提取关键字,并写入掩码的关键字字段。在上述技术方案中,步骤B2包括以下步骤根据IPv4数据包的帧头长度字段,判断是否存在IPv4扩展帧头,若存在IPv4扩展帧头,则跳到IPv4固定帧头的末尾,定位并找到每一个IPv4扩展帧头中的类型和长度字段,确定每一个扩展帧头的起始位置;若当前 IPv4扩展帧头的类型属于情况b且Type=此扩展帧头的掩码,则根据掩码中的相对偏移量值在数据包中的相应位置提取关键字,并且与掩码字段掩码后存入该掩码的关键字字段。在上述技术方案中,步骤B2中还包括步骤遍历完成整个IPv4帧头后,根据IPv4 协议帧的帧头长度字段确定TCP/UDP数据帧头的起始点,并且根据起始点为TCP/UDP帧头的掩码所规定的偏移量,提取数据包TCP/UDP帧头指定位置的内容,与该掩码本身相与之后得到所需关键字。在上述技术方案中,步骤B3还包括以下步骤若当前处理的IPv6协议帧存在扩展帧头,则根据下一个扩展帧头的起始字节和所有属于情况d且Type = IPv6协议规定的扩展帧头类型的掩码的偏移量,在数据包的相应位置提取关键字,并写入掩码的关键字字段, 重复上述步骤直到所有IPv6扩展帧头都处理完。本发明提供的支持动态扩展帧头的过滤匹配预处理装置包括第一提取单元,用于从数据包的链路层帧头开始扫描整个数据包,根据所有起始点为数据链路层帧头的掩码规定的偏移量,提取数据包链路层帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字;基本帧头定位单元,用于根据数据包中的链路层负载类型字段,定位IP协议帧的基本帧头的起始位置;扩展帧头定位单元,用于根据IP协议帧的版本号、帧头长度以及扩展帧头类型字段,定位数据包中所有IP协议帧扩展帧头的位置;第二提取单元,用于根据起始点为相应基本帧头或扩展帧头的掩码规定的偏移量,提取数据包IP协议帧的基本帧头或扩展帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字;发送单元,用于将已经提取的关键字送到过滤器进行规则匹配。在上述技术方案中,还包括掩码规则建立单元,用于建立预处理所需要的掩码规则,所述掩码规则包括偏移量起始点所在的网络协议层级Layer、相对偏移的起始点类型 Type、相对偏移量Offset、掩码和关键字,其中,偏移量起始点所在的网络协议层级Layer 和相对偏移的起始点类型Type按照以下四种情况之一建立情况a =Layer = 0,掩码中偏移量起始点为数据包中的链路层帧头;情况b =Layer = 1,掩码中偏移量起始点为IPv4基本帧头或扩展帧头,Type = 0或IPv4协议规定的扩展帧头类型;情况c =Layer = 2,掩码中偏移量起始点为数据包中的TCP/UDP帧头,Type = IPv4协议下的用户数据报协议UDP或传输控制协议TCP ;情况d =Layer = 3,掩码中偏移量起始点为IPv6基本帧头或扩展帧头, Type = 0或IPv6协议规定的扩展帧头类型。在上述技术方案中,还包括网络层数据帧类型判断单元,用于定位数据包中网络层数据帧的起始字节位置,根据网络层协议的版本号,来判断网络层数据帧是IPv6数据包还是IPv4数据包。在上述技术方案中,还包括第三提取单元,用于根据IPv4数据包的帧头长度字段,判断是否存在IPv4扩展帧头,若存在IPv4扩展帧头,则跳到IPv4固定帧头的末尾,定位并找到每一个IPv4扩展帧头中的类型和长度字段,确定每一个扩展帧头的起始位置;若当前IPv4扩展帧头的类型属于情况b且Type =此扩展帧头的掩码,则根据掩码中的相对偏移量值在数据包中的相应位置提取关键字,并且与掩码字段掩码后存入该掩码的关键字字段;以及遍历完成整个IPv4帧头后,根据IPv4协议帧的帧头长度字段确定TCP/UDP数据帧头的起始点,并且根据起始点为TCP/UDP帧头的掩码所规定的偏移量,提取数据包TCP/ UDP帧头指定位置的内容,与该掩码本身相与之后得到所需关键字;第四提取单元,用于 若网络层数据帧是IPv6数据包,则根据属于情况d且Type = 0的掩码的相对偏移量在相应位置上提取关键字,并写入掩码的关键字字段;以及若当前处理的IPv6协议帧存在扩展帧头,则根据下一个扩展帧头的起始字节和所有属于情况d且Type = IPv6协议规定的扩展帧头类型的掩码的偏移量,在数据包的相应位置提取关键字,并写入掩码的关键字字段, 重复上述步骤直到所有IPv6扩展帧头都处理完。与现有技术相比,本发明的优点如下针对可变扩展帧头相对于数据包开头的偏移量在不同数据包中不同,本发明采用类似于软件编译程序链接重定位的方法,识别可变扩展帧头的类型码和长度字段,通过一次预处理将数据包所有帧头(包括固定帧头和扩展帧头)的位置都识别出来,再配合预先建立的掩码规则,就可以达到匹配关键字过滤的功能,解决了传统的固定偏移量方法无法正确提取IPv6和Ipv4变长帧头关键字的问题。


图1为传统的关键字掩码表项字段;图2为变长帧头的匹配实例;
图3为本发明实施例中的关键字掩码表项字段;图4为本发明实施例中方法的流程图;图5为本发明实施例中预处理模块在数据包过滤处理中的功能框图;图6为本发明实施例中的HiNOC网络结构;图7为本发明实施例中硬件数据包过滤器在HiNOC交换设备中的位置示意图;图8为本发明实施例中数据包预处理以及过滤的流程图。
具体实施例方式下面结合附图及实施例对本发明作进一步的详细描述。为了叙述和操作方便,首先建立预处理所需要的掩码规则,包括偏移量起始点所在的网络协议层级(Layer),整数类型,占用2比特;相对偏移的起始点类型(Type),整数类型,占用8比特;相对偏移量(Offset),整数类型,占用8比特;掩码整数类型,占用32比特;关键字整数类型,占用32比特。本发明实施例中的关键字掩码表项字段参见图3所示,其中,偏移量起始点所在的网络协议层级(Layer)和相对偏移的起始点类型(Type)按照以下四种情况之一建立情况a =Layer = 0,掩码中偏移量起始点为数据包中的链路层帧头;情况b =Layer = 1,Type = 0或IPv4协议规定的扩展帧头类型,即掩码中偏移量起始点为IPv4基本帧头(Type = 0)或扩展帧头(Type = IPv4 协议规定的扩展帧头类型);情况 c =Layer = 2, Type = 0x06 或0x17 IPv4协议下的 UDP (UserData Protocol, 用户数据报协议)或TCP,即掩码中偏移量起始点为数据包中的TCP/UDP帧头;情况d =Layer = 3,Type = 0或IPv6协议规定的扩展帧头类型,即掩码中偏移量起始点为IPv6基本帧头(Type = 0)或扩展帧头(Type = IPv6 协议规定的扩展帧头类型),包括TCP和UDP。参见图4所示,本发明实施例提供的支持动态扩展帧头的过滤匹配预处理方法, 包括以下步骤步骤101 当有数据包进入预处理器的时候,从第0字节开始扫描数据包,根据预处理器中建立的所有属于情况a掩码的相对偏移量,在数据包中的相应位置提取关键字, 并且与掩码字段掩码后存入该掩码的关键字字段。步骤102 定位数据包中网络层数据帧的起始字节位置,根据数据包中网络层数据帧的起始字节,也就是网络层协议的版本号,来判断网络层数据帧是IPv4数据包还是 IPv6数据包,如果是IPv4数据包,则转到步骤103 ;如果是Ipv6数据包,则转到步骤107。步骤103:若网络层数据帧是IPv4数据包,根据预处理器中建立的所有属于情况b 且Type = 0的掩码的相对偏移量,加上当前已经定位的网络层数据帧的起始字节位置,在数据包中的相应位置提取关键字,并写入掩码的关键字字段。步骤104 根据IPv4数据包的帧头长度字段,判断是否存在扩展帧头,即判断帧头长度字段的值是否大于IPv4固定帧头长度,如果是,则转到步骤105 ;否则,转到步骤106。
步骤105 若存在IPv4扩展帧头,则跳到IPv4固定帧头的末尾,定位并找到每一个IPv4扩展帧头中的类型和长度字段,也就是每一个扩展帧头的起始位置,若当前扩展帧头的类型符合属于情况b,且Type =此扩展帧头的掩码,则根据掩码中的相对偏移量值在数据包中的相应位置提取关键字,并且与掩码字段掩码后存入该掩码的关键字字段。步骤106 遍历完成整个IPv4帧头后,定位TCP或UDP四层协议帧头起始位置,在所有属于情况c的掩码指定的偏移量位置上提取关键字,并写入掩码的关键字字段。步骤107 若网络层数据帧是IPv6数据包,则根据所有属于情况d且type等于0 的掩码表项的相对偏移量值,在相应位置上提取关键字,并写入掩码的关键字字段。步骤108 根据Ipv6数据包的帧头长度字段,判断是否存在扩展帧头,如果是,则转到步骤109 ;否则,转到步骤110。步骤109 若当前处理的IPv6帧头的next header (下一扩展帧头类型)字段不等于59,则跳到当前next header字段所指向的扩展帧头的起始字节,根据所有属于情况d 且Type =该扩展帧头类型的掩码表项的偏移量值,在数据包的相应位置提取关键字,并写入掩码的关键字字段。重复本步骤,直到所有IPv6扩展帧头都被处理完成。步骤110 最终,预处理器中所有规定的掩码都已经从数据包中提取相应的关键字并保存,预处理结束,将提取的所有关键字输出到后续的过滤器中进行规则匹配。本发明实施例提供的支持动态扩展帧头的过滤匹配预处理装置,包括第一提取单元、基本帧头定位单元、扩展帧头定位单元、第二提取单元、发送单元、掩码规则建立单元、网络层数据帧类型判断单元、第三提取单元和第四提取单元,其中第一提取单元,用于从数据包的链路层帧头开始扫描整个数据包,根据所有起始点为数据链路层帧头的掩码规定的偏移量,提取数据包链路层帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字。基本帧头定位单元,用于根据数据包中的链路层负载类型字段,定位IP协议帧的基本帧头的起始位置。扩展帧头定位单元,用于根据IP协议帧的版本号、帧头长度以及扩展帧头类型字段,定位数据包中所有IP协议帧扩展帧头的位置。第二提取单元,用于根据起始点为相应基本帧头或扩展帧头的掩码规定的偏移量,提取数据包IP协议帧的基本帧头或扩展帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字。发送单元,用于将已经提取的关键字送到过滤器进行规则匹配。掩码规则建立单元,用于建立预处理所需要的掩码规则,所述掩码规则包括偏移量起始点所在的网络协议层级Layer、相对偏移的起始点类型Type、相对偏移量Offset、 掩码和关键字,其中,偏移量起始点所在的网络协议层级Layer和相对偏移的起始点类型 Type按照以下四种情况之一建立情况a =Layer = 0,掩码中偏移量起始点为数据包中的链路层帧头;情况b =Layer = 1,掩码中偏移量起始点为IPv4基本帧头或扩展帧头,Type = 0 或IPv4协议规定的扩展帧头类型;情况c =Layer = 2,掩码中偏移量起始点为数据包中的TCP/UDP帧头,Type = IPv4 协议下的用户数据报协议UDP或传输控制协议TCP ;
情况d =Layer = 3,掩码中偏移量起始点为IPv6基本帧头或扩展帧头,Type = 0 或IPv6协议规定的扩展帧头类型。网络层数据帧类型判断单元,用于定位数据包中网络层数据帧的起始字节位置, 根据网络层协议的版本号,来判断网络层数据帧是IPv6数据包还是IPv4数据包。第三提取单元,用于根据IPv4数据包的帧头长度字段,判断是否存在IPv4扩展帧头,若存在IPv4扩展帧头,则跳到IPv4固定帧头的末尾,定位并找到每一个IPv4扩展帧头中的类型和长度字段,确定每一个扩展帧头的起始位置;若当前IPv4扩展帧头的类型属于情况b且Type=此扩展帧头的掩码,则根据掩码中的相对偏移量值在数据包中的相应位置提取关键字,并且与掩码字段掩码后存入该掩码的关键字字段;以及遍历完成整个IPv4 帧头后,根据IPv4协议帧的帧头长度字段确定TCP/UDP数据帧头的起始点,并且根据起始点为TCP/UDP帧头的掩码所规定的偏移量,提取数据包TCP/UDP帧头指定位置的内容,与该掩码本身相与之后得到所需关键字。第四提取单元,用于若网络层数据帧是IPv6数据包,则根据属于情况d且Type =0的掩码的相对偏移量在相应位置上提取关键字,并写入掩码的关键字字段;以及若当前处理的IPv6协议帧存在扩展帧头,则根据下一个扩展帧头的起始字节和所有属于情况d 且Iype = IPv6协议规定的扩展帧头类型的掩码的偏移量,在数据包的相应位置提取关键字,并写入掩码的关键字字段,重复上述步骤直到所有IPv6扩展帧头都处理完。本发明实施例能够解决根据固定长度偏移量的掩码表无法提取正确的变长帧头关键字的问题。例如,要过滤匹配图1中所示的IPv6数据包中具有三种可能位置的TCP帧头,假定要在过滤模块的掩码表中设置提取TCP的目的端口号,如果采用现有的固定偏移量掩码,则需要为FCP帧头在数据包中每一种可能的位置组合设计一条关键字掩码,前面列举了至少三种不同情况,所以至少需要三条掩码来提取同一个的关键字,实际上由于很多扩展帧头本身的长度可变,所需的掩码数远远超过三条。但是,采用本发明实施例的预处理方法来定位此关键字,解决问题变得很容易,只需要一条掩码Layer = 0x3,Type = 0x6,Offset = 0,Mask = 0x0000_FFFF采用前述步骤的预处理之后,该掩码所规定的关键字就会被成功的提取出来,参见图5所示,预处理模块从数据包第一字节开始扫描当前数据包,由于Layer字段等于 0x03, Type字段等于0x06,这说明该掩码是属于情况d的掩码,所匹配的是IPv6数据包中的TCP帧头(在IPv6协议中,TCP和UDP也是扩展帧头之一)。因此,预处理将会扫描并且跳过可能在TCP帧头之前出现的IPv6路由帧头或者分片帧头,最终定位TCP帧头在整个数据包中的起始位置,然后加上相对偏移量0,得到当前数据包中对应这条关键字掩码的绝对位置,随即提取该位置上的关键字,并进行掩码。提取的关键字随后即可以被直接送到数据包过滤模块进行规则匹配,而根据预处理方法得到的数据包中指定位置的16比特数据正好就是TCP帧头的目的端口字段。下面以HiN0C(High performance Network over Coax,高性能同轴网络)技术平台为例,介绍本发明的一个应用场景。参见图6所示,HiNOC主要网络设备包括HiNOC交换机和HiNOC网桥,HiNOC交换机可挂接多个HiNOC网桥,HiNOC交换机的PHY (Physical Layer,物理层芯片)层主要完成以太网帧与HiNOC帧间的转换,MAC(Medium/MediaAccess Control,介质访问控制)层主
1要完成MAC地址学习、MAC帧过滤和转发的功能。除主要功能外,HiNOC交换机还需要具备如流量控制、流量优先级、过滤等功能,另外,HiNOC网络主要用在广播电视网络方面,HiNOC 网络设备应对如VLAN(Virtual Local Area Network,虚拟局域网)操作、IPv6组播甚至 IPv6 IGMP(Internet Group Management Protocol,互联网组管理协议)Snooping(嗅探, 捕获并检查网络包)等功能和特性提供支持。因此需要支持IPv6的预处理逻辑模块在硬件数字逻辑电路实现的包处理器中完成数据帧中指定关键字的提取工作。数据帧过滤匹配预处理器在HiNOC交换设备中的位置参见图7所示,该模块在 HiNOC桥中负责将以太网数据包按照规则表的配置进行提取,然后进入匹配器,得到需要进行的操作。HiNOC数据包过滤器设计的目的是作为HiNOC芯片桥接部分的快速过滤的预处理器,完成该芯片进出数据帧的各层关键元素的提取,通过对以太网数据包的过滤和分类,得到分类结果,用于指示应该对数据包进行的处理。由此可实现诸如访问控制、服务质量处理、IGMP嗅探等相应的功能。包括预处理的数据包过滤器的内部结构参见图8所示,预处理器提取后的关键字保存到提取字段存储中,条款匹配器根据规则的设置计算匹配结果,计算得到的结果(匹配或不匹配)送入决策器,由决策器选择应对数据包实施的动作。可以看到,预处理器是数据包过滤器的关键模块,本发明实施例中的预处理器完成两大功能,一是根据本发明实施例的方法快速提取IPv6帧中各个位置上的关键字位置、高层协议帧头位置等字段的位置; 二是在相应位置上完成根据表项定义的相关字段的提取。应用本发明实施例,使得HiNOC 交换设备的过滤功能具备快速和灵活的优势,能够用较少的掩码而得到对各种格式的IPv6 数据包完整支持。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
权利要求
1.一种支持动态扩展帧头的过滤匹配预处理方法,其特征在于包括以下步骤A、从数据包的链路层帧头开始扫描整个数据包,根据所有起始点为数据包链路层帧头的掩码规定的偏移量,提取数据包链路层帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字;B、根据数据包中的链路层负载类型字段,定位IP协议帧的基本帧头的起始位置;然后根据IP协议帧的版本号、帧头长度以及扩展帧头类型字段,定位数据包中所有IP协议帧的扩展帧头的位置;根据起始点为相应基本帧头或扩展帧头的掩码规定的偏移量,提取数据包IP协议帧的基本帧头或扩展帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字;C、完成数据包的扫描,提取掩码规定提取的所有关键字,并将已经提取的关键字送到过滤器进行规则匹配。
2.如权利要求1所述的支持动态扩展帧头的过滤匹配预处理方法,其特征在于步骤A 之前还包括以下步骤建立预处理所需要的掩码规则,所述掩码规则包括偏移量起始点所在的网络协议层级Layer、相对偏移的起始点类型Type、相对偏移量Off set、掩码和关键字,其中,偏移量起始点所在的网络协议层级Layer和相对偏移的起始点类型Type按照以下四种情况之一建立情况a =Layer = 0,掩码中偏移量起始点为数据包中的链路层帧头;情况b :Layer = 1,掩码中偏移量起始点为IPv4基本帧头或扩展帧头,Type = 0或 IPv4协议规定的扩展帧头类型;情况c =Layer = 2,掩码中偏移量起始点为数据包中的传输控制协议TCP/用户数据报协议UDP帧头,Type = IPv4协议下的UDP或TCP ;情况d =Layer = 3,掩码中偏移量起始点为IPv6基本帧头或扩展帧头,Type = 0或 IPv6协议规定的扩展帧头类型。
3.如权利要求2所述的支持动态扩展帧头的过滤匹配预处理方法,其特征在于步骤B 包括以下步骤Bi、定位数据包中网络层数据帧的起始字节位置,根据网络层协议的版本号,来判断网络层数据帧是IPv6数据包还是IPv4数据包;B2、若网络层数据帧是IPv4数据包,则根据属于情况b且Type = 0的掩码的相对偏移量加上当前已经定位的网络层数据帧的起始字节位置,在数据包中的相应位置提取关键字,并写入掩码的关键字字段;B3、若网络层数据帧是IPv6数据包,则根据属于情况d且Type = 0的掩码的相对偏移量在相应位置上提取关键字,并写入掩码的关键字字段。
4.如权利要求3所述的支持动态扩展帧头的过滤匹配预处理方法,其特征在于步骤B2 包括以下步骤根据IPv4数据包的帧头长度字段,判断是否存在IPv4扩展帧头,若存在IPv4扩展帧头,则跳到IPv4固定帧头的末尾,定位并找到每一个IPv4扩展帧头中的类型和长度字段, 确定每一个扩展帧头的起始位置;若当前IPv4扩展帧头的类型属于情况b且Type =此扩展帧头的掩码,则根据掩码中的相对偏移量值在数据包中的相应位置提取关键字,并且与掩码字段掩码后存入该掩码的关键字字段。
5.如权利要求4所述的支持动态扩展帧头的过滤匹配预处理方法,其特征在于步骤B2 中还包括步骤遍历完成整个IPv4帧头后,根据IPv4协议帧的帧头长度字段确定TCP/UDP 数据帧头的起始点,并且根据起始点为TCP/UDP帧头的掩码所规定的偏移量,提取数据包 TCP/UDP帧头指定位置的内容,与该掩码本身相与之后得到所需关键字。
6.如权利要求3所述的支持动态扩展帧头的过滤匹配预处理方法,其特征在于步骤B3 还包括以下步骤若当前处理的IPv6协议帧存在扩展帧头,则根据下一个扩展帧头的起始字节和所有属于情况d且Type = IPv6协议规定的扩展帧头类型的掩码的偏移量,在数据包的相应位置提取关键字,并写入掩码的关键字字段,重复上述步骤直到所有IPv6扩展帧头都处理元ο
7.一种支持动态扩展帧头的过滤匹配预处理装置,其特征在于包括第一提取单元,用于从数据包的链路层帧头开始扫描整个数据包,根据所有起始点为数据链路层帧头的掩码规定的偏移量,提取数据包链路层帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字;基本帧头定位单元,用于根据数据包中的链路层负载类型字段,定位IP协议帧的基本帧头的起始位置;扩展帧头定位单元,用于根据IP协议帧的版本号、帧头长度以及扩展帧头类型字段, 定位数据包中所有IP协议帧扩展帧头的位置;第二提取单元,用于根据起始点为相应基本帧头或扩展帧头的掩码规定的偏移量,提取数据包IP协议帧的基本帧头或扩展帧头中指定位置的内容,与该掩码本身相与之后得到所需关键字;发送单元,用于将已经提取的关键字送到过滤器进行规则匹配。
8.如权利要求7所述的支持动态扩展帧头的过滤匹配预处理装置,其特征在于还包括掩码规则建立单元,用于建立预处理所需要的掩码规则,所述掩码规则包括偏移量起始点所在的网络协议层级Layer、相对偏移的起始点类型Type、相对偏移量Offset、掩码和关键字,其中,偏移量起始点所在的网络协议层级Layer和相对偏移的起始点类型Type按照以下四种情况之一建立情况a =Layer = 0,掩码中偏移量起始点为数据包中的链路层帧头;情况b :Layer = 1,掩码中偏移量起始点为IPv4基本帧头或扩展帧头,Type = 0或 IPv4协议规定的扩展帧头类型;情况c =Layer = 2,掩码中偏移量起始点为数据包中的TCP/UDP帧头,Type = IPv4协议下的用户数据报协议UDP或传输控制协议TCP ;情况d =Layer = 3,掩码中偏移量起始点为IPv6基本帧头或扩展帧头,Type = 0或 IPv6协议规定的扩展帧头类型。
9.如权利要求6所述的支持动态扩展帧头的过滤匹配预处理装置,其特征在于还包括网络层数据帧类型判断单元,用于定位数据包中网络层数据帧的起始字节位置,根据网络层协议的版本号,来判断网络层数据帧是IPv6数据包还是IPv4数据包。
10.如权利要求6至9任一项所述的支持动态扩展帧头的过滤匹配预处理装置,其特征在于还包括第三提取单元,用于根据IPv4数据包的帧头长度字段,判断是否存在IPv4扩展帧头, 若存在IPv4扩展帧头,则跳到IPv4固定帧头的末尾,定位并找到每一个IPv4扩展帧头中的类型和长度字段,确定每一个扩展帧头的起始位置;若当前IPv4扩展帧头的类型属于情况b且Type =此扩展帧头的掩码,则根据掩码中的相对偏移量值在数据包中的相应位置提取关键字,并且与掩码字段掩码后存入该掩码的关键字字段;以及遍历完成整个IPv4帧头后,根据IPv4协议帧的帧头长度字段确定TCP/UDP数据帧头的起始点,并且根据起始点为 TCP/UDP帧头的掩码所规定的偏移量,提取数据包TCP/UDP帧头指定位置的内容,与该掩码本身相与之后得到所需关键字;第四提取单元,用于若网络层数据帧是IPv6数据包,则根据属于情况d且Type = 0 的掩码的相对偏移量在相应位置上提取关键字,并写入掩码的关键字字段;以及若当前处理的IPv6协议帧存在扩展帧头,则根据下一个扩展帧头的起始字节和所有属于情况d且 Type = IPv6协议规定的扩展帧头类型的掩码的偏移量,在数据包的相应位置提取关键字, 并写入掩码的关键字字段,重复上述步骤直到所有IPv6扩展帧头都处理完。
全文摘要
本发明公开了一种支持动态扩展帧头的过滤匹配预处理方法及装置,方法包括步骤从数据包链路层帧头开始扫描,根据起始点为链路层帧头的掩码规定的偏移量,提取数据包链路层帧头指定位置的内容,与该掩码相与得到关键字;根据数据包中链路层负载类型字段,定位IP基本帧头的起始位置;根据IP帧的版本号、帧头长度以及扩展帧头类型字段,定位IP扩展帧头的位置;根据起始点为相应IP基本帧头或扩展帧头掩码规定的偏移量,提取基本帧头或扩展帧头指定位置的内容,与该掩码相与得到关键字;完成扫描,将提取的关键字送到过滤器进行规则匹配。本发明能识别数据包中所有链路及IP固定帧头和扩展帧头的位置,并正确过滤TCP/UDP帧头内容。
文档编号H04L29/06GK102316121SQ20111031746
公开日2012年1月11日 申请日期2011年10月19日 优先权日2011年10月19日
发明者徐宁, 李松 申请人:武汉烽火网络有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1