CN101242344B - 网络封包分类器与其方法 - Google Patents

网络封包分类器与其方法 Download PDF

Info

Publication number
CN101242344B
CN101242344B CN2007100064003A CN200710006400A CN101242344B CN 101242344 B CN101242344 B CN 101242344B CN 2007100064003 A CN2007100064003 A CN 2007100064003A CN 200710006400 A CN200710006400 A CN 200710006400A CN 101242344 B CN101242344 B CN 101242344B
Authority
CN
China
Prior art keywords
offset
pos
val
character
mentioned
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
CN2007100064003A
Other languages
English (en)
Other versions
CN101242344A (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.)
Industrial Technology Research Institute ITRI
Original Assignee
Industrial Technology Research Institute ITRI
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 Industrial Technology Research Institute ITRI filed Critical Industrial Technology Research Institute ITRI
Priority to CN2007100064003A priority Critical patent/CN101242344B/zh
Publication of CN101242344A publication Critical patent/CN101242344A/zh
Application granted granted Critical
Publication of CN101242344B publication Critical patent/CN101242344B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种网络封包分类器与其方法。网络封包分类器包括至少一内容定位器与一数据比对器。每一上述内容定位器进行至少一次定位运算,每一上述定位运算为输出至少一迭加项目的总和作为输出偏移量,而每一迭加项目为根据至少一定位器系统参数且/或网络封包的内容数据而产生。上述迭加项目其中之一为基底值,基底值为系统参数设定的偏移量或上述内容定位器其中之一所进行的定位运算的输出偏移量。上述内容定位器其中之一的最后一次定位运算的输出偏移量为网络封包其中比对字段的位置,这个位置会提供给数据比对器作数据比对。

Description

网络封包分类器与其方法
技术领域
本发明是有关于一种网络封包分类器与其对应方法,且特别是有关于一种网络封包分类器其中具延展性的分类机制、可行的架构、与其对应方法。 
背景技术
以网际协议(Internet Protocol,简称为IP)为基础的网络,有许多网络机制都需要将网络封包加以分类。网络入口设备通过网络封包分类器(classifier)将网络上的封包作特定的定位运算,以计算出封包的标头(header)或字段(field)的位置。网络封包分类器会检视封包的特定标头、字段的内容,并且根据事先制订的规则集合(rule set)及依照网络协议中标头或字段的内容值,来做数据比对并对封包进行分类。网络封包分类器决定各类封包的处理方式为何,再根据分类的结果予以管控,或是提供特定的网络资源。 
随着网络服务与日俱增与网络技术的进步,昔日的网络机制会有所更动。因为根据网络协议标准所设计出的传统硬件很固定,这对于处理网络封包的设备有一定的冲击。对于新增加或是增修的网络协议,传统硬件无法弹性地变更,来处理一个新的、不一样的字段位置。面对上述问题,业界通常只能够重新设计硬件来定位新的字段位置。传统硬件架构缺乏弹性,只能够针对固定字段进行识别,对于封包比对少了弹性分类的机制及少了对封包处理的延展性,更不能动态地调整参数因应新出现的封包字段,因此无法支持新增的网络协议或封包类型。而这种重新设计整个硬件架构的方式,所付出的设计成本很高,且对于既有系统厂商也是一笔大的开销。 
发明内容
本发明提供一种网络封包分类器,对封包字段作定位,以利于作特定数据的比对、分类,并且具有弹性可以因应目前最新的协议、服务与应用做变化组合,所以具有较大的使用弹性,也因其具有较好的可扩展性(scalability),因此能够布建在更多的使用环境。 
本发明提供一种网络封包分类方法,对封包字段作定位,以利于作特定数据的比对、分类,并且方法具有弹性,可以更新设定来比对各种不同的封包数据或字段。 
本发明提出一种网络封包分类器,此分类器包括至少一内容定位器。每一上述内容定位器进行至少一次定位运算,每一上述定位运算为输出第一迭加项目、第二迭加项目、第三迭加项目、以及第四迭加项目的总和作为输出偏移量(offset),表示为UDHDR_POS=HDR_POS+(IF_PVAL*P_VAL_OFFSET)+(C_FLAG*C_OFFSET)+U_OFFSET,其中,UDHDR_POS为输出偏移量,性质为整数;上述第一迭加项目HDR_POS为定位运算的基底值,性质为整数,HDR_POS为由系统参数设定的固定的第一偏移量,或继承前一级内容定位器的输出偏移量来当作基底值;第二迭加项目为第一逻辑值IF_PVAL乘上第二偏移量P_VAL_OFFSET;第三迭加项目为第二逻辑值C_FLAG乘上第三偏移量C_OFFSET,第四迭加项目U_OFFSET为第四偏移量。上述内容定位器其中之一的最后一次定位运算的输出偏移量为网络封包其中比对字段的位置。其中,IF_PVAL为布尔逻辑,决定是否引用P_VAL_OFFSET,来源为定位器系统参数;P_VAL_OFFSET为代表封包标头长度的偏移量,性质为整数;C_FLAG的性质为布尔逻辑,决定是否有C_OFFSET存在;C_OFFSET为有条件的固定偏移量,来源为定位器系统参数,性质为整数;U_OFFSET为无条件的固定偏移量,来源为定位器系统参数,性质为整数。 
本发明提出一种封包分类方法,包括进行至少一次定位运算,每一上述定位运算为输出第一迭加项目、第二迭加项目、第三迭加项目、以及第四迭加项目的总和作为输出偏移量,表示为UDHDR_POS=HDR_POS+(IF_PVAL*P_VAL_OFFSET)+(C_FLAG*C_OFFSET)+U_OFFSET,其中,UDHDR_POS为输出偏移量,性质为整数;上述第一迭加项目HDR_POS为定位运算的基底值,性质为整数,HDR_POS为由系统参数设定的固定的第一偏移量,或继承前一次定位运算的输出偏移量来当作基底值;第二迭加项目为第一逻辑值IF_PVAL乘上第二偏移量P_VAL_OFFSET;第三迭加项目为第二逻辑值C_FLAG乘上第三偏移量C_OFFSET;第四迭加项目U_OFFSET为第四偏移量。上述输出偏移量其中之一为网络封包其中比对字段的位置。其中,IF_PVAL为布尔逻辑,决定是否引用P_VAL_OFFSET,来源为定位器系统参数;P_VAL_OFFSET 为代表封包标头长度的偏移量,性质为整数;C_FLAG的性质为布尔逻辑,决定是否有C_OFFSET存在;C_OFFSET为有条件的固定偏移量,来源为定位器系统参数,性质为整数;U_OFFSET为无条件的固定偏移量,来源为定位器系统参数,性质为整数。 
如本发明的较佳实施例所述,上述的网络封包分类器利用数学公式模型来代表所要比对的封包字段,用内容定位器计算并找出所要比对的字段位置,并进行后续的数据比对与封包分类。另外,可以弹性地组合内容定位器与相关硬件,以实现各种简繁不一的数学公式,来计算各种封包字段的位置。因此,使用本发明的网络封包分类器与其对应方法,可以增进封包数据比对与分类的弹性,并节省成本。 
为让本发明的上述特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。 
附图说明
图1为本发明一实施例的网络封包分类器的网状架构图。 
图2为本发明一实施例的内容定位器示意图。 
图3为本发明一实施例的内容定位器的树状关系图。 
图4为本发明一实施例的网络封包分类器的平行架构图。 
图5~图8为本发明较佳实施例的定位运算示意图。 
[主要元件标号说明] 
100、400:网络封包分类器 
101~103、201、301~311、401~403:内容定位器 
110:定位器控制网络 
120:比对器控制网络 
131~133、431~433:数据比对器 
140、440:比对器输出控制网络 
202:参数 
451~453:存储器 
461~463:模块 
CLSP:定位器系统参数 
MESP:比对器系统参数 
UDHDR_POS:输出偏移量 
具体实施方式
图1绘示本发明一实施例的网络封包分类器的网状架构图。图2绘示本发明一实施例的内容定位器示意图。请同时参阅图1与图2。网络封包分类器100包括内容定位器(content locator)101、102与103、定位器控制网络110、比对器控制网络(matching control network)120、数据比对器(matching engine)131、132与133、以及比对器输出控制网络140。虽然图1仅绘示三个内容定位器与三个数据比对器,网络封包分类器100可扩充为包含任意数量的内容定位器与数据比对器,其具体数量视欲支持的封包分类规则数量与字段复杂度而定。 
在本实施例中,内容定位器101、102与103的设计完全相同,以图2内容定位器201来说明。内容定位器201根据参数202进行定位运算,并输出运算结果的偏移量UDHDR_POS,UDHDR_POS可以是数据封包中将进行数据比对的字段位置,不论是既有的标准字段,或是使用者自行定义的特定数据位置。UDHDR_POS也可能作为基底值提供给下一级内容定位器进行后续运算,以寻址出将进行数据比对的字段位置。内容定位器101、102与103会各自输出一个偏移量UDHDR_POS,在执行一次字段定位时,图1的每一个内容定位器都只做一次定位运算。 
内容定位器201的输出偏移量UDHDR_POS,也就是定位运算的内容,以数学公式表示如下: 
(式1)UDHDR_POS=HDR_POS+(IF_PVAL*P_VAL_OFFSET)+(C_FLAG*C_OFFSET)+U_OFFSET; 
上述式1的相关参数说明如下。UDHDR_POS为输出偏移量,性质为整数(integer)。HDR_POS为定位运算的基底值,性质为整数,可为由系统参数设定的固定偏移量,或继承前一级内容定位器的输出偏移量来当作基底值。IF_PVAL的性质为布尔(Boolean)逻辑,决定是否引用P_VAL_OFFSET参数,来源为定位器系统参数(content locator system parameters)CLSP。P_VAL_OFFSET在此为代表封包标头长度的偏移量,性质为整数。C_FLAG的性质为布尔逻辑,决定是否有C_OFFSET存在,细节后述。C_OFFSET为有条件的固定偏移量,来源为定位器系统参数CLSP,性质为整数。U_OFFSET为无条件的固定偏移量,来源为定位器系统参数CLSP,性质为整数。 
由式1的说明可知,内容定位器101、102与103的定位运算为输出至少一个迭加项目的总和作为输出偏移量UDHDR_POS。内容定位器101、102与103其中,至少有一个内容定位器的输出偏移量UDHDR_POS为网络封包其中比对字段的位置。 
为了完成封包特定字段的定位操作,内容定位器需要许多参数以进行定位运算,这些参数可来自使用者设定的定位器系统参数CLSP,或来自网络封包的内容数据。内容定位器201为达到特定的字段定位,上述数学公式的式1的内容可以再进一步定义如下: 
(式2)HDR_POS=(~IF_CAS*FIX_POS)+(IF_CAS*PRE_UDHDR_POS); 
(式3)P_VAL_OFFSET=P_VAL*P_VAL_FACTOR,其中P_VAL= PKT(HDR_POS+J_OFFSET); 
(式4)C_FLAG=(PKT(HDR_POS+P_OFFSET)==PTN)。 
上述数学公式的式2至式4的相关参数说明如下。IF_CAS为表示是否与前一级的内容定位器作串接,来源为定位器系统参数CLSP,性质为布尔逻辑。FIX_POS为已知标头的位置,其偏移量为固定值,来源为定位器系统参数CLSP,性质为整数。PRE_UDHDR_POS为来自前一级内容定位器的基底值,也就是前一级内容定位器的输出偏移量UDHDR_POS,性质为整数。J_OFFSET为取得P_VAL的偏移量,来源为定位器系统参数CLSP,性质为整数。J_OFFSET的代表意义就是从封包起始到某一个信息字段的距离。P_VAL_FACTOR为转换P_VAL单位的常量,来源为定位器系统参数CLSP,性质为整数。PTN为要和封包数据比对的常量,来源为定位器系统参数CLSP,性质为整数。P_OFFSET为检查比对PTN的封包位置,来源为定位器系统参数CLSP,性质为整数。另外,式3与式4都有一个PKT(),PKT()表示封包数据,例如PKT(X)表示从封包起始点开始,偏移量为X的位置所在的数据。再以式3的PKT为例,其意义为从HDR_POS与J_OFFSET累加的偏移处所得到的字段内容值。 
本实施例中,网络封包分类器100的内容定位器101、102与103使用了式1的数学公式,由式2至式4的进阶定义,我们知道所使用的定位器系统参数CLSP包括:IF_PVAL、C_OFFSET、U_OFFSET、IF_CAS、FIX_POS、J_OFFSET、P_VAL_FACTOR、PTN以及P_OFFSET。需要动态产生或取得的参数包括HDR_POS、P_VAL_OFFSET、P_VAL、C_FLAG及PRE_UDHDR_POS。 
我们将式2至式4代入式1得到式5。式5如下: 
UDHDR_POS=(~IF_CAS*FIX_POS)+(IF_CAS*PRE_UDHDR_POS)+(IF_PVAL*(PKT(HDR_POS+J_OFFSET)*P_VAL_FACTOR))+((PKT(HDR_POS+P_OFFSET)==PTN)*C_OFFSET)+U_OFFSET。 
由式1至式5可知每一个内容定位器的输出偏移量UDHDR_POS为许多迭加项目的组合,迭加项目为(~IF_CAS*FIX_POS)、(IF_CAS*PRE_UDHDR_POS)、(IF_PVAL*(PKT(HDR_POS+J_OFFSET)*P_VAL_FACTOR))、((PKT(HDR_POS+P_OFFSET)==PTN)*C_OFFSET)、以及U_OFFSET。其中字段值PKT(HDR_POS+J_OFFSET)与PKT(HDR_POS+P_OFFSET)取自网络封包。逻辑项目,例如~IF_CAS、IF_CAS、C_FLAG与IF_PVAL,可为逻辑值或逻辑值的反值,其中逻辑值为取自定位器系统参数CLSP或根据封包字段值进行判断而产生。 C_FLAG定义中等于(==)的逻辑判断运算可视应用需求改为不等于、大于、或小于。符号「*」代表在符号的前后两项相乘。 
定位器控制网络110控制内容定位器101、102与103的串接的情形。定位器控制网络110以及内容定位器101、102与103根据定位器系统参数CLSP的设定,动态地调配内容定位器的串接顺序,使部分内容定位器能取得所需的上一级内容定位器的输出偏移量作为基底值,进行多阶段运算,以完成封包的特定字段的定位。 
内容定位器的输出偏移量UDHDR_POS通往何处,要视所属内容定位器的串接顺序而定。定位某一字段所需的数学公式越长越复杂,对应的内容定位器串接链的级数也越多。对于并非最后一级的内容定位器,其输出偏移量UDHDR_POS会通过定位器控制网络110传递给下一级内容定位器作为基底值HDR_POS。对于串接链中最后一级的内容定位器,其输出偏移量UDHDR_POS就是封包中需要比对的字段位置,会通过比对器控制网络120传递至数据比对器131、132或133以进行数据比对。比对器控制网络120的功能为连接内容定位器101-103以及数据比对器131-133。数据比对器131、132与133会根据比对器系统参数(matching engine system parameters)MESP,在网络封包之中对应所接收的输出偏移量的位置进行特定字段数据的比对,并输出数据比对的结果。 
比对器系统参数MESP包括了数据的比对的目标模式(target pattern)、目标模式的长度、数据比较操作所采用的操作数(operand)以及数据比对所套用的遮罩(mask)等。 
数据比对器131、132与133的输出为布尔值,只有比对成功与否的结果。数据比对器131、132与133的输出结果可再通过比对器输出控制网络(matching engine output control network)140来组合某些数据比对器的输出结果,以进一步判断网络封包是否符合网络封包分类器100的分类规则。 
图3绘示本发明一实施例的内容定位器的树状串接关系图。请参阅图3。由于单一内容定位器的计算能力有限,若计算封包字段位置所需的数学公式很长,可以通过数个内容定位器的串接,将上述公式拆解为多个定位运算,分配给串接链的每一个内容定位器,将定位运算的结果一路累加,最后就能算出想要比对的字段位置。因为大部分的封包分类器有许多的分类规则,而分类规则会有相当的关联性。通常来说,内容定位器要定位不同的字段,会 有许多共通的定位过程。在许多的识别字段的计算公式中可以找到许多相同的基底位置,所以某些内容定位器所计算出的偏移量可以让多个下级的内容定位器共享,这就是共享与继承基底位置的概念。 
在图3的内容定位器301~311中,每一个内容定位器只做一次定位运算。我们要寻址一个特定的封包字段,则需通过数个内容定位器的组合来完成。例如,网络封包分类器对于两个独立且同处第三层(network layer,layer 3)的字段(字段1与字段2)进行比对,这两个字段定位的过程都需要先算出第三层的标头起始位置,也就是要先算出第二层(data link layer,layer 2)的标头长度。在图3的实施例中,可先利用内容定位器301算出第三层的标头起始位置,作为其输出偏移量UDHDR_POS,然后内容定位器302与303共享内容定位器301的输出偏移量作为基底值HDR_POS,分别算出字段1与字段2的位置。同理,内容定位器306~308共享内容定位器305的定位运算结果;内容定位器309与310共享内容定位器306的定位运算结果。内容定位器301~311的树状连接关系可通过如图1的定位器控制网络110达成。如此,前一级的内容定位器计算结果,可以让后面几个内容定位器共享。树状串接方式的内容定位器可以节省硬件成本。通过这样共享与继承的概念,可以将每一层的每一个位置都涵盖进来,也可以最小化所需设定的参数。 
图4绘示本发明一实施例的网络封包分类器的平行架构图。请参阅图4。网络封包分类器400包括内容定位器401、402与403、数据比对器431、432与433、比对器输出控制网络440、以及存储器(rule memory)451、452与453。图4的每一模块461、462与463的内容定位器、数据比对器与存储器各负责一个比对字段的计算公式。 
平行架构不同于网状架构中继承前一级内容定位器的输出偏移量当作基底值的概念。在平行架构中,若有某一字段的位置需要多次定位运算,会利用同一内容定位器的自我继承来作串接,也就是递归式(iterative)的概念。其中第一次定位运算的基底值为预设的固定偏移量,其后每一次定位运算的基底值为上一次定位运算的输出偏移量。 
以模块461为例,内容定位器401计算出一个最终的输出偏移量,并交由数据比对器431判别。最终的输出偏移量为网络封包中比对字段的位置。内容定位器401所使用的定位器系统参数储存在存储器451。存储器451储存每一次定位运算所需的定位器系统参数以及数据比对所需的比对器系统参 数,并在不同的递归中依序将定位器系统参数交给内容定位器401。内容定位器401在最后一次定位运算输出偏移量至数据比对器431,以进行字段位置的数据比对。数据比对器431根据比对器系统参数做数据比对。接着,数据比对器431将比对结果输出至比对器输出控制网络440。模块461就这样完成一个字段的数据比对。 
模块462与463也同于模块461的运作原理,每一个模块进行一个字段的数据比对。比对器输出控制网络440将一个、多个、或所有数据比对器的输出以布尔逻辑算出一个最后的布尔值,也就是结合数个比对结果,判断是否符合网络封包分类器400预期的分类规则。 
平行架构的网络封包分类器适用于不共享定位运算结果的状况,可以依需求将模块做延伸,每一模块可支持一个数据比对设定。比如有512组数据比对设定,就使用512个模块。特别的是,每一模块的内容定位器至少进行一次定位运算,每一模块的内容定位器与数据比对器的参数都储存在模块内的存储器上。 
以上实施例的网络封包分类器,无论是网状或是平行的架构,只要更新定位器系统参数与定位器控制网络,即可以改变需要比对的字段位置,而不需要重新设计整个模块与架构。所有定位器系统参数与比对器系统参数都是根据欲辨识的封包字段或数据,或根据使用者自定的分类规则。以上两种架构都可以迅速平行处理多条规则,封包一进网络封包分类器就能很快地分类。上述的网络封包分类器在两种架构的层面都能提供以下几种定位运算功能。 
功能1.可定位出既有(existing)标准的标头位置。如下式6,当所需要的识别字段为既有或已知时,可直接获取比对地址为FIX_POS。 
(式6)HDR_POS=FIX_POS。 
功能2.可自行定义标头位置或是新制订标准的标头位置。自行定义的标头位置如前述的式1。 
(式1)UDHDR_POS=HDR_POS+(IF_PVAL*P_VAL_OFFSET)+(C_FLAG*C_OFFSET)+U_OFFSET。 
以下详细说明式1等号右边的四组迭加项目。 
第一组迭加项目HDR_POS为此次定位运算的基底值,如上述实施例的式2。 
(式2)HDR_POS=(~IF_CAS*FIX_POS)+(IF_CAS*PRE_UDHDR_POS)。 
当内容定位器设定为没有串接,或属于串接链的第一级时,逻辑旗标(flag)IF_CAS将被设定为FALSE,表示不会有继承的基底值,基底值等于预设的标头位置FIX_POS。当内容定位器设定为串接,逻辑旗标IF_CAS为TRUE,基底值为继承自前一级内容定位器的输出偏移量。 
第二组迭加项目(IF_PVAL*P_VAL_OFFSET)为根据基底值往后固定J_OFFSET位置的字段值P_VAL所计算出的偏移量,如上述实施例的式3。 
(式3)P_VAL_OFFSET=P_VAL*P_VAL_FACTOR,其中P_VAL=PKT(HDR_POS+J_OFFSET)。 
P_VAL代表某个影响数据比对位置的字段内容。例如当要进行第4层(transport layer,layer 4)标头起始点的定位运算时,就需要第3层(network layer,layer 3)的标头长度才能正确判断第4层的标头位置。J_OFFSET表示需要找到第3层标头长度的字段所需要的偏移量。P_VAL为代表第3层标头长度的字段内容值。由于字段的内容数值可能不是以单一字节(byte)为单位,因此在定位运算时,可能需要乘上一个转换常量P_VAL_FACTOR,以求得正确的偏移量。若P_VAL即是以字节为单位,就不用乘上P_VAL_FACTOR,或可将P_VAL_FACTOR设为一。定位器系统参数IF_PVAL决定是否需要迭加P_VAL_OFFSET。 
第三组迭加项目(C_FLAG*C_OFFSET)表示基底值位置往后固定偏移P_OFFSET的位置是否有特定值PTN的存在,如上述实施例的式4。 
(式4)C_FLAG=(PKT(HDR_POS+P_OFFSET)==PTN)。 
因为某些字段不是如P_VAL般记载着标头长度或偏移量的信息。因为封包格式或协议种类而出现的某些字段,可能对识别字段位置的计算有所影响。以IEEE 802.1q虚拟局域网络(virtual local area network,简称VLAN)的封包为例,P_OFFSET代表着从第2层起算,要识别是否为VLAN封包的字段偏移量,而PTN则是封包符合VLAN的识别条件,亦即用P_OFFSET来找出类型(type)字段。而PTN设定为8100,以识别封包是否为VLAN类型。由于一般VLAN标签(tag)之后的所有字段,会比一般封包多出四个字节的偏移。这个VLAN封包形成的偏移量即是C_OFFSET,代表着因某条件成立而导致的固定偏移量。 
第四组迭加项目为无条件的固定偏移量U_OFFSET。某些使用者自订的数据比对字段可利用U_OFFSET进行定位运算,例如要定位运算第4层的第10 个字节,可利用无条件固定偏移量U_OFFSET来进行设定。 
功能3.每一次定位运算的迭加项目中有逻辑判断时,其判断运算可为等于、不等于、大于、或小于。 
为了更详细地说明本发明的网络封包分类器的定位运算,以下特举4个较佳实施例来做更进一步的说明。图5~图8为本发明实施例的定位运算示意图。 
请参阅图5。图5为一般类型封包的总长度字段(Total Length)的定位运算。例如,需定位运算的字段是第3层IP标头的总长度字段。假设已知标头位置FIX_POS为封包起始到第3层标头的偏移量,相当于十四个字节。假设已知封包没有额外的附加标签。由于没有设定串接,HDR_POS直接等于FIX_POS。总长度字段的位置并不会受其它字段影响,因此IF_PVAL被设定为FALSE。因为封包没有额外的附加标签,所以C_FLAG为FALSE,不需考虑某些特定的偏移状况。总长度字段的定位运算为: 
UDHDR_POS=HDR_POS+U_OFFSET=FIX_POS+U_OFFSET。 
请参阅图6。图6为具有VLAN标签类型的封包的总长度字段定位运算。例如,进入封包分类器的封包如图6带有VLAN标签,则其C_FLAG会被设定为TRUE,总长度字段的定位运算须加上因VLAN标签所产生的偏移量。假设已知标头位置FIX_POS为封包起始到第3层标头的偏移量,总长度字段的定位运算为: 
UDHDR_POS=FIX_POS+(C_FLAG*C_OFFSET)+U_OFFSET。 
请参阅图7。图7为一般类型封包应用层(Application Layer)比对字段的定位运算,会用到继承前一级内容定位器的输出偏移量的概念。前一级内容定位器将第2层标头长度HDR_POS(也就是FIX_POS)加上第3层标头长度P_VAL_OFFSET,然后输出上述迭加的结果为PRE_UDHDR_POS。下一级内容定位器继承PRE_UDHDR_POS作为下一级定位运算的基底值,然后加上第4层标头长度P_VAL_OFFSET以及比对字段在应用层中的偏移量U_OFFSET。最后结果就是从封包起始到比对字段的偏移量。应用层比对字段的定位运算为: 
PRE_UDHDR_POS=HDR_POS+P_VAL_OFFSET=FIX_POS+P_VAL_OFFSET; 
UDHDR_POS=PRE_UDHDR_POS+P_VAL_OFFSET+U_OFFSET。 
请参阅图8。图8为具有VLAN标签类型的封包,内容定位器欲求位在应用层的比对字段的定位运算,同样继承前一级内容定位器的输出偏移量。前 一级内容定位器的定位运算求出第4层起始位置,下一级内容定位器便可累加第4层标头长度P_VAL_OFFSET以及无条件跳跃偏移量U_OFFSET,来定位所欲比对的字段。比对字段的定位运算为: 
PRE_UDHDR_POS=HDR_POS+C_OFFSET+P_VAL_OFFSET=FIX_POS+C_OFFSET+P_VAL_OFFSET; 
UDHDR_POS=PRE_UDHDR_POS+P_VAL_OFFSET+U_OFFSET。 
除了上述实施例的网络封包分类器以外,本发明也包含一种对应的网络封包分类方法。对于在本发明相关技术领域具有通常知识者而言,通过前面的网络封包分类器实施例,应当能实施本发明的网络封包分类方法,因此不予赘述。 
值得一提的是,本发明实施例的封包分类器应用领域包括了两大类:一类是属于网络管控,如封包路由(packet routing)与网络服务质量(QoS:quality of service)机制;另一类则是属于网络安全,如常见应用有防火墙与网络服务提供商(ISP:Internet service provider)的安全机制。而就数据封包分类技术来看,传统的封包分类技术所能检视的内容局限于第2层到第4层。许多的服务管控并无法单靠第2层到第4层的标头字段和内容,加上网络安全的各种新型攻击手法不断推陈出新。本发明实施例中的封包分类器可以弹性组合,因应目前的服务与应用变化,而有相对应的比对辨识机制,还包含深层封包检视(deep packet inspection,简称为DPI),因此可以应用在不同网络协议的硬设备上,如使用者端、服务器端、以及路由器端的网络封包处理设备或收发设备,使上述的硬设备更具灵活性。 
综上所述,以上实施例的网络封包分类器与其方法可通过定位器系统参数以及比对器系统参数的设定,来定位出封包中的任何字段,可以串接多层级的定位运算,扩大数据比对的适用范围,只需更新参数设定,即可延伸出各种不同的封包比对规则。所以上述实施例的网络封包分类器与其对应方法可轻易支持新增的网络协议或封包类型,并节省重新设计硬件的时间与成本。 
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。 

Claims (12)

1.一种网络封包分类器,其特征在于包括:
至少一内容定位器,每一上述内容定位器进行至少一次定位运算,每一上述定位运算为输出第一迭加项目、第二迭加项目、第三迭加项目、以及第四迭加项目的总和作为输出偏移量,表示为
UDHDR_POS=HDR_POS+(IF_PVAL*P_VAL_OFFSET)+(C_FLAG*C_OFFSET)+U_OFFSET
其中,UDHDR_POS为该输出偏移量,性质为整数;该第一迭加项目HDR_POS为该定位运算的基底值,性质为整数,HDR_POS为由系统参数设定的固定的第一偏移量,或继承前一级内容定位器的输出偏移量来当作基底值;该第二迭加项目为第一逻辑值IF_PVAL乘上第二偏移量P_VAL_OFFSET;该第三迭加项目为第二逻辑值C_FLAG乘上第三偏移量C_OFFSET,该第四迭加项目U_OFFSET为第四偏移量,上述内容定位器其中之一的最后一次定位运算的输出偏移量为网络封包其中比对字段的位置,
其中,IF_PVAL为布尔逻辑,决定是否引用P_VAL_OFFSET,来源为定位器系统参数;P_VAL_OFFSET为代表封包标头长度的偏移量,性质为整数;C_FLAG的性质为布尔逻辑,决定是否有C_OFFSET存在;C_OFFSET为有条件的固定偏移量,来源为上述定位器系统参数,性质为整数;U_OFFSET为无条件的固定偏移量,来源为上述定位器系统参数,性质为整数。
2.根据权利要求1所述的网络封包分类器,其特征在于:
该第一迭加项目HDR_POS表示为
HDR_POS=(~IF_CAS*FIX_POS)+(IF_CAS*PRE_UDHDR_POS),
其中,IF_CAS为表示是否与该前一级内容定位器作串接,来源为上述定位器系统参数,性质为布尔逻辑;FIX_POS为该第一偏移量,为已知标头的位置,来源为上述定位器系统参数,性质为整数;PRE_UDHDR_POS为该前一级内容定位器的该输出偏移量UDHDR_POS,性质为整数,
该第二偏移量P_VAL_OFFSET为第一字段值乘上第一常量,表示为
P_VAL_OFFSET=P_VAL*P_VAL_FACTOR,
P_VAL=PKT(HDR_POS+J_OFFSET),
其中,该第一字段值P_VAL为该网络封包之中第一特定位置的内容数据,该第一常量P_VAL_FACTOR为转换P_VAL单位的常量,来源为上述定位器系统参数,性质为整数;PKT()表示封包数据,对于PKT(X)来说表示从该网络封包起始点开始,偏移量为X的位置所在的数据;该第一特定位置的偏移量等于该基底值HDR_POS加上第五偏移量J_OFFSET,该第五偏移量J_OFFSET为取得P_VAL的偏移量,来源为上述定位器系统参数,性质为整数,J_OFFSET的代表意义就是从该网络封包的起始到某一个信息字段的距离,以及
该第二逻辑值C_FLAG为根据第二字段值以及第二常量进行判断运算的结果,表示为
C_FLAG=(PKT(HDR_POS+P_OFFSET)==PTN)
其中,该第二字段值PKT(HDR_POS+P_OFFSET)为该网络封包之中第二特定位置的内容数据,该第二特定位置的偏移量等于该基底值HDR_POS加上第六偏移量P_OFFSET,P_OFFSET为检查比对PTN的封包位置,来源为上述定位器系统参数,性质为整数;该判断运算为等于或不等于的判断;该第二常量PTN为要和该网络封包的数据比对的常量,来源为上述定位器系统参数,性质为整数。
3.根据权利要求1所述的网络封包分类器,其特征在于还包括:
至少一数据比对器,每一上述数据比对器接收上述内容定位器其中之一所进行的最后一次定位运算的输出偏移量,在该网络封包之中对应该输出偏移量的位置根据至少一比对器系统参数进行数据比对,并输出该数据比对的结果;以及
比对器输出控制网络,根据上述数据比对器的输出结果,判断该网络封包是否符合该网络封包分类器的分类规则。
4.根据权利要求3所述的网络封包分类器,其特征在于上述比对器系统参数至少包括下列其中之一:该数据比对的目标模式、该目标模式的长度、该数据比对所采用的操作数、以及该数据比对所套用的遮罩。
5.根据权利要求3所述的网络封包分类器,其特征在于还包括:
定位器控制网络,根据上述定位器系统参数连接上述内容定位器,使上述内容定位器能取得所需的上述输出偏移量以作为上述基底值;以及
比对器控制网络,连接上述内容定位器以及上述数据比对器,使上述数据比对器能取得所需的上述输出偏移量以进行上述数据比对。
6.根据权利要求5所述的网络封包分类器,其特征在于每一上述内容定位器仅进行一次定位运算,而且上述内容定位器包括第一内容定位器、第二内容定位器、以及第三内容定位器,该第二内容定位器的该基底值为该第一内容定位器的该输出偏移量,该第三内容定位器的该基底值亦为该第一内容定位器的该输出偏移量。
7.根据权利要求3所述的网络封包分类器,其特征在于该网络封包分类器包括至少一模块,每一上述模块包括上述内容定位器其中之一以及上述数据比对器其中之一,该数据比对器接收该内容定位器的该输出偏移量,若该内容定位器需进行多次定位运算,则其中第一次定位运算的基底值为该第一偏移量,其后每一次定位运算的基底值为上一次定位运算的输出偏移量。
8.根据权利要求7所述的网络封包分类器,其特征在于每一上述模块还包括:
存储器,用以储存该模块其中的该内容定位器进行上述定位运算所需的上述定位器系统参数。
9.一种网络封包分类方法,其特征在于包括:
进行至少一次定位运算,每一上述定位运算为输出第一迭加项目、第二迭加项目、第三迭加项目、以及第四迭加项目的总和作为输出偏移量,表示为
UDHDR_POS=HDR_POS+(IF_PVAL*P_VAL_OFFSET)+(C_FLAG*C_OFFSET)+U_OFFSET
其中,UDHDR_POS为该输出偏移量,性质为整数;该第一迭加项目HDR_POS为该定位运算的基底值,性质为整数,HDR_POS为由系统参数设定的固定的第一偏移量,或继承前一次定位运算的输出偏移量来当作基底值;该第二迭加项目为第一逻辑值IF_PVAL乘上第二偏移量P_VAL_OFFSET;该第三迭加项目为第二逻辑值C_FLAG乘上第三偏移量C_OFFSET;该第四迭加项目U_OFFSET为第四偏移量,上述输出偏移量其中之一为网络封包其中比对字段的位置,
其中,IF_PVAL为布尔逻辑,决定是否引用P_VAL_OFFSET,来源为定位器系统参数;P_VAL_OFFSET为代表封包标头长度的偏移量,性质为整数;C_FLAG的性质为布尔逻辑,决定是否有C_OFFSET存在;C_OFFSET为有条件的固定偏移量,来源为上述定位器系统参数,性质为整数;U_OFFSET为无条件的固定偏移量,来源为上述定位器系统参数,性质为整数。
10.根据权利要求9所述的网络封包分类方法,其特征在于:
该第一迭加项目HDR_POS表示为
HDR_POS=(~IF_CAS*FIX_POS)+(IF_CAS*PRE_UDHDR_POS),
其中,IF_CAS为表示是否与该前一次定位运算作串接,来源为上述定位器系统参数,性质为布尔逻辑;FIX_POS为该第一偏移量,为已知标头的位置,来源为上述定位器系统参数,性质为整数;PRE_UDHDR_POS为该前一次定位运算的该输出偏移量UDHDR_POS,性质为整数,
该第二偏移量P_VAL_OFFSET为第一字段值乘上第一常量,表示为
P_VAL_OFFSET=P_VAL*P_VAL_FACTOR,
P_VAL=PKT(HDR_POS+J_OFFSET),
其中,该第一字段值P_VAL为该网络封包之中第一特定位置的内容数据,该第一常量P_VAL_FACTOR为转换P_VAL单位的常量,来源为上述定位器系统参数,性质为整数;PKT()表示封包数据,对于PKT(X)来说表示从该网络封包起始点开始,偏移量为X的位置所在的数据;该第一特定位置的偏移量等于该基底值HDR_POS加上第五偏移量J_OFFSET,该第五偏移量J_OFFSET为取得P_VAL的偏移量,来源为上述定位器系统参数,性质为整数,J_OFFSET的代表意义就是从该网络封包的起始到某一个信息字段的距离,以及
该第二逻辑值C_FLAG为根据第二字段值以及第二常量进行判断运算的结果,表示为
C_FLAG=(PKT(HDR_POS+P_OFFSET)==PTN)
其中,该第二字段值PKT(HDR_POS+P_OFFSET)为该网络封包之中第二特定位置的内容数据,该第二特定位置的偏移量等于该基底值HDR_POS加上第六偏移量P_OFFSET,P_OFFSET为检查比对PTN的封包位置,来源为上述定位器系统参数,性质为整数;该判断运算为等于或不等于的判断;该第二常量PTN为要和该网络封包的数据比对的常量,来源为上述定位器系统参数,性质为整数。
11.根据权利要求9所述的网络封包分类方法,其特征在于还包括:
进行至少一次数据比对,每一上述数据比对使用上述定位运算其中之一的输出偏移量,而且是在该网络封包之中对应该输出偏移量的位置根据至少一比对系统参数而进行;以及
根据上述数据比对的结果,判断该网络封包是否符合该网络封包分类方法的分类规则。
12.根据权利要求11所述的网络封包分类方法,其特征在于上述比对系统参数至少包括下列其中之一:该数据比对的目标模式、该目标模式的长度、该数据比对所采用的操作数、以及该数据比对所套用的遮罩。
CN2007100064003A 2007-02-05 2007-02-05 网络封包分类器与其方法 Expired - Fee Related CN101242344B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007100064003A CN101242344B (zh) 2007-02-05 2007-02-05 网络封包分类器与其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007100064003A CN101242344B (zh) 2007-02-05 2007-02-05 网络封包分类器与其方法

Publications (2)

Publication Number Publication Date
CN101242344A CN101242344A (zh) 2008-08-13
CN101242344B true CN101242344B (zh) 2013-03-20

Family

ID=39933562

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100064003A Expired - Fee Related CN101242344B (zh) 2007-02-05 2007-02-05 网络封包分类器与其方法

Country Status (1)

Country Link
CN (1) CN101242344B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101989979A (zh) * 2009-07-30 2011-03-23 雷凌科技股份有限公司 封包辨识的方法与装置
CN113535639A (zh) * 2020-04-21 2021-10-22 明基智能科技(上海)有限公司 跨平台资料处理系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020126672A1 (en) * 2001-01-10 2002-09-12 Nelson Chow Method and apparatus for a flexible and reconfigurable packet classifier using content addressable memory
CN1433543A (zh) * 2000-01-07 2003-07-30 国际商业机器公司 帧和协议分类的方法和系统
CN1178434C (zh) * 2000-07-17 2004-12-01 先进微装置公司 用于具有多个最小项的封包数据字节的无缓冲器评估的装置和方法
US20050044252A1 (en) * 2002-12-19 2005-02-24 Floyd Geoffrey E. Packet classifier
US20050060418A1 (en) * 2003-09-17 2005-03-17 Gennady Sorokopud Packet classification
CN1736076A (zh) * 2000-08-14 2006-02-15 先进微装置公司 数据包分类的装置及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1433543A (zh) * 2000-01-07 2003-07-30 国际商业机器公司 帧和协议分类的方法和系统
CN1178434C (zh) * 2000-07-17 2004-12-01 先进微装置公司 用于具有多个最小项的封包数据字节的无缓冲器评估的装置和方法
CN1736076A (zh) * 2000-08-14 2006-02-15 先进微装置公司 数据包分类的装置及方法
US20020126672A1 (en) * 2001-01-10 2002-09-12 Nelson Chow Method and apparatus for a flexible and reconfigurable packet classifier using content addressable memory
US20050044252A1 (en) * 2002-12-19 2005-02-24 Floyd Geoffrey E. Packet classifier
US20050060418A1 (en) * 2003-09-17 2005-03-17 Gennady Sorokopud Packet classification

Also Published As

Publication number Publication date
CN101242344A (zh) 2008-08-13

Similar Documents

Publication Publication Date Title
CN104580027B (zh) 一种OpenFlow报文转发方法及设备
Goloboff Calculating SPR distances between trees
CN104243315B (zh) 用于唯一枚举解析树中的路径的装置和方法
US10694006B1 (en) Generation of descriptive data for packet fields
CN103380600B (zh) 网络系统和网络流跟踪方法
US10855480B2 (en) Systems and methods for processing packets in a computer network
US20080186974A1 (en) System and method to process data packets in a network using stateful decision trees
US20180131708A1 (en) Identifying Fraudulent and Malicious Websites, Domain and Sub-domain Names
US7002958B1 (en) Method for load-balancing with FIFO guarantees in multipath networks
US9692705B1 (en) System and method for measurement of flow statistics
CN101242344B (zh) 网络封包分类器与其方法
Song et al. Refactoring and publishing WS-BPEL processes to obtain more partners
CN109951371A (zh) 数据转发方法及装置
US9374295B2 (en) Method to achieve the use of an external metric as the primary tie-breaker in intermediate system to intermediate system (ISIS) route selections
JP5665208B2 (ja) ハイパーキューブ・ネットワーク内のデータ伝送の最適化
CN106411768B (zh) 业务链资源调度方法和装置
CN108965318A (zh) 检测工业控制网络中未授权接入设备ip的方法及装置
Pan et al. Misconfiguration checking for SDN: Data structure, theory and algorithms
CN110474929B (zh) 一种冗余规则检测方法及装置
US20100205411A1 (en) Handling complex regex patterns storage-efficiently using the local result processor
Xu et al. Identifying influential SLD authoritative name servers on the Internet
US7860991B2 (en) Packet classifier for a network and method thereof
Yang et al. Resource mapping and scheduling for heterogeneous network processor systems
Khan et al. Fast graph partitioning algorithms
WO2021171526A1 (ja) 付与装置、付与方法及び付与プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130320

Termination date: 20210205