CN118175120A - 一种基于可编程交换机的数据名预处理方法及系统 - Google Patents
一种基于可编程交换机的数据名预处理方法及系统 Download PDFInfo
- Publication number
- CN118175120A CN118175120A CN202410222815.8A CN202410222815A CN118175120A CN 118175120 A CN118175120 A CN 118175120A CN 202410222815 A CN202410222815 A CN 202410222815A CN 118175120 A CN118175120 A CN 118175120A
- Authority
- CN
- China
- Prior art keywords
- component
- length
- components
- matching
- invalid
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000007781 pre-processing Methods 0.000 title claims abstract description 15
- 238000001914 filtration Methods 0.000 claims abstract description 13
- 230000002159 abnormal effect Effects 0.000 claims abstract description 12
- 238000012216 screening Methods 0.000 claims abstract description 9
- 238000000605 extraction Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/111—Switch interfaces, e.g. port details
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于可编程交换机的数据名预处理方法及系统,其中,方法包括以下步骤:根据特定格式从数据名中提取出组件,并根据组件长度保存到特定的包头向量PHV中;从提取的组件中过滤筛选出长度异常的组件;对长度有效的组件执行查找匹配操作;匹配完成后,根据查询结果记录单组件规则、记录组件编码或标识Invalid组件;每种长度的PHV中至多保存着一个组件,如果某个长度不止一个组件,则该长度的剩余组件将在数据包通过回环端口重新进入流水线时处理。本发明利用可编程交换机加速组件预处理操作,后续的组件化多模式匹配模块则部署在服务器端。相比于完全服务器部署方案,本发明性能更好,可以提升系统吞吐量。
Description
技术领域
本发明涉及可编程交换机、多模式匹配、数据包转发等技术领域,尤其涉及一种基于可编程交换机的数据名预处理方法法及系统。
背景技术
多模式匹配是以数据内容为中心的网络应用的核心功能模块,分为模糊匹配和精确匹配两种类型。在实际应用中,通常采用两阶段匹配的方案,即首先使用精确匹配的方式匹配规则的部分内容,其目的在于快速筛选出潜在的规则,然后采用模糊匹配的方式从这些规则中找出最终匹配结果。在传统互联网中,多模式匹配的处理对象通常是URL,而在以数据内容为中心的新型互联网中则是数据名。数据名和URL在结构上存在相似之处,即二者均存在明显的层次化组件化的特点。和其他常用的匹配方式相比,例如前缀匹配、最长前缀匹配和精确匹配,多模式匹配的计算复杂性更高,因此基于软件实现的多模式匹配算法的性能难以适配如今日益增长的链路带宽,需要借助硬件加速技术的帮助。可编程交换机作为一种新型网络设备,不仅具备线速数据包转发能力,还具备一定的可编程性,足以满足常见的路由转发和包分类处理需求。然而,与配备了通用CPU的服务器相比,可编程交换机的规则容量有限,同时灵活性仍显不足,但将两者结合起来组成异构系统则可以实现高性能的多模式匹配。目前,单独基于可编程交换机或者通用服务器的多模式匹配算法都难以满足需求。
目前,交换机上实现多模式匹配时,需要依赖端口回环操作来实现迭代匹配操作。具体而言,数据包进入流水线后,交换机从数据名中提取出一个组件进行查找匹配,记录匹配结果并将数据包发送到回环端口。数据包从回环端口发送出去后会重新进入流水线,此时交换机就可以继续提取后面未处理部分的数据继续匹配。通过反复使用端口回环操作,交换机可以扫描整个数据名并完成匹配。但是,这种方案过多采用端口回环,会造成性能下降。如图1所示,假设交换机包含两条数据包处理路径,而每个路径的带宽是2pps(PacketPer Seconds),即通过普通端口进入的普通路径和通过回环端口进入的回环路径。三个数据包依次从T0到T2时刻进入交换机流水线,假设每个数据包需要3次端口回环操作才能完成匹配,则在T3时刻3个数据包会同时进入回环路径,超过带宽上限,进而导致丢包。虽然,数据包在一次经过流水线时可以提取出多个组件,但由于存在哈希表不支持多次匹配的限制,这些组件无法匹配同一张哈希表,也就是说需要将规则集复制成多份并保存到不同的哈希表。通过规则复制,不同的组件可以匹配不同的哈希表,可以解决单次匹配问题,但这种规则复制的方式无疑更加压缩了交换机本就稀缺的规则容量。
发明内容
本发明的目的,在于解决现有可编程交换机或者通用服务器的多模式匹配算法在多线程环境下的上述种种挑战,以及面向提升系统调度能力、降低响应延迟和优化传输效率的需求。
为实现上述目的,一方面,本发明提供了一种基于可编程交换机的数据名预处理方法,该方法包括以下步骤:
根据特定格式从数据名中提取出组件,并根据组件长度保存到特定的包头向量PHV中;
从提取的组件中过滤筛选出长度异常的组件;
对长度有效的组件执行查找匹配操作;匹配完成后,根据查询结果记录单组件规则、记录组件编码或标识Invalid组件;每种长度的PHV中至多保存着一个组件,如果某个长度不止一个组件,则该长度的剩余组件将在数据包通过回环端口重新进入流水线时处理。
另一方面,本发明提供了一种基于可编程交换机的数据名预处理系统,该系统包括:
提取单元,用于根据特定格式从数据名中提取出组件,并根据组件长度保存到特定的包头向量PHV中;
筛选单元,用于从提取的组件中过滤筛选出长度异常的组件;
匹配单元,用于对长度有效的组件执行查找匹配操作;匹配完成后,根据查询结果记录单组件规则、记录组件编码或标识Invalid组件;每种长度的PHV中至多保存着一个组件,如果某个长度不止一个组件,则该长度的剩余组件将在数据包通过回环端口重新进入流水线时处理。
本发明主要是针对数据名组件化匹配算法,利用可编程交换机加速组件预处理操作,后续的组件化多模式匹配模块则部署在服务器端。相比于完全可编程交换机部署方案,本发明需要的端口回环更少,因此吞吐量更高,同时还不会出现数据丢失的情况,而且规则容量更大。相比于完全服务器部署方案,本发明性能更好,可以提升近一倍的系统吞吐量。
附图说明
图1为现有技术端口回环路径结构示意图;
图2为本发明实施例提供的一种分长度处理加速原理示意图;
图3为异构协同整体架构示意图;
图4为本发明实施例提供的一种分长度组件提取示意图;
图5为本发明实施例提供的一种分长度组件匹配示意图;
图6为本发明实施例提供的一种异常长度组件过滤示意图。
具体实施方式
下面将参照以上说明更详细地描述本公开的示例性实施例。虽然本实施例显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例以可编程交换机和通用服务器组成的多模式匹配异构系统为平台(如图3所示),针对其中的数据名组件化预处理问题提出一种分长度预处理方案,在可编程交换机上完成组件预处理,包括组件编码、单组件规则匹配和异常组件标记三大操作,并以此缓解服务器端的计算负载,实现整体多模式匹配系统的性能提升。
在发明实施例中,数据名组件长度可能情况是有限的,通过将不同长度的组件分配给不同的哈希表处理,使得数据包在单次经过流水线时即可处理尽可能多的组件,以此减少端口回环带来的不利影响。本发明实施例加速原理如图2所示,图中数据名由若干长度各异的组件,其中组件的有效长度是4B(Bytes)、8B、10B和12B。图中数据名一栏以上的部分对应着传统方案,每次仅处理一个组件。数据名一栏以下的部分则对应着本发明实施例,T0时刻进入流水线后,首先过滤掉长度无效的组件0、组件3和组件6,同时完成对长度有效的组件的匹配。需要注意的是,组件2和组件8虽然长度有效,但相同长度的组件存在重复,而这两个组件的顺序靠后,因此将在第二次进入流水线之后处理。对比图2中两种方案,本发明实施例可以明显减少端口回环的数量。
为了实现在可编程交换机上处理组件,第一步需要根据特定格式从数据名中提取出组件,并根据组件长度保存到特定的包头向量(Packet Header Vector,简称PHV)中。由于目前没有针对数据名的格式标准,为了满足计算需求,本发明实施例中的数据包使用TLV(Type Length Vector)格式存储数据名。其中,Type字段包括组件的类型和序号,Length字段保存组件的长度,Vector字段保存组件的具体内容。完成组件提取后进入第二步,即过滤筛选出长度异常的组件。由于本发明实施例中的数据名组件长度可能性是有限的,对于那些长度无效(即,规则集中不存在该长度的组件)的组件应当直接过滤,无需进行查找匹配。完成长度过滤之后进入最后一步,即为那些长度有效的组件执行查找匹配操作。匹配完成后,根据查询结果记录单组件规则、记录组件编码或标识Invalid组件(即,长度有效但是在匹配时可以跳过的组件,这种组件通常是规则集中不存在的组件或查找时无需编码的组件)。在此过程中,每种长度的PHV中至多保存着一个组件,如果某个长度不止一个组件,则该长度的剩余组件将在数据包通过回环端口重新进入流水线时处理。通过这种分长度处理,可以在一次经过流水线时处理尽可能多的组件,同时不会出现规则复制的情况。
本发明实施例可应用于Tofino可编程交换机,通常Tofino单颗芯片包含两条流水线,每条流水线分为Ingress和Egress两部分,Ingress和Egress之间通过流量管理器(TM,Traffic Manager)调度数据包。其中Ingress将用于部署异常长度过滤和分长度匹配的功能模块,Egress仅部署了数据包镜像功能模块,用于异常情况抓包分析。如图3所示,数据包首先经过普通端口进入Ingress,在这部分流水线(即图中对应的Length-Pipeline-Ingress)完成长度过滤,即找出长度无效的组件并将其记录在数据包附带的比特位图中。完成这部分处理后,剩余长度有效的组件将保留在数据名中。为了解决传统方案在匹配过程中会导致数据丢失的问题,本发明实施例将数据名拷贝一份,并且后续处理过程中拷贝的数据名将作为Payload的一部分,不会占用交换机稀缺的PHV资源。在离开Length-Pipeline-Ingress后,TM将数据包调度到回端口的Egress发送出去。由于回环端口的特性,数据包将重新进入该端口的Ingress(即图中的Code-Pipeline-Ingress),并在这部分流水线中完成分长度组件匹配。当所有长度有效的组件都处理完毕,TM将数据包调度到普通端口的Egress,并最终发送出去。
本发明实施例分长度组件匹配之前,首先需要为所有有效长度的提取一个组件。为了方便提取,本发明实施例使用TLV格式保存数据名组件,如图4左上角所示。进入流水线后,首先匹配所有组件的长度字段,为每种长度提取至多一个组件。如图4所示,假设组件的有效长度为4B、6B和8B,则每种长度将维护一张三态内容寻址存储器(Ternary ContentAddressable Memory,简称TCAM)表。利用TCAM支持优先级匹配的特点,可以实现“每种长度至多提取一个组件”的功能。以图中提取4B组件的ExtractTable-4B为例,数据名的组件2和组件3均为4B,分别会匹配到ExtractTable-4B中的R3和R4,但是R3的优先级高于R4,所以最终会执行R3对应的Action,即提取组件2并将其组件内容和ID保存在特定的PHV中。对于6B和8B的组件提取也是同样的方式,最终组件2、组件0和组件1将被提取处理,剩余的组件3、组件4和组件5则保留到后续处理。
完成组件提取后,就可以进行分长度匹配操作。图5以匹配4B组件为例展示本发明实施例的设计原理。匹配需要两个重要数据,分别是组件内容本身,以及组件对应的ID。由于组件的长度排列是无序的,因此分长度匹配实际上是一种乱序匹配,因此需要组件ID来标识组件在数据名中的相对顺序。如图5所示,分长度组件匹配由两张哈希表完成:第一张表是PreprocessTable-4B,该表匹配组件内容,保存着组件的编码信息、是否存在可匹配的单组件规则的信息和是否是Invalid组件的信息;第二张表是HandleTable-4B,匹配组件ID,并根据ID指示的组件相对位置设置组件编码和无效组件比特位图(即图中的InvalidBitmap),以及记录与该组件对应的单组件规则ID。之所以采用这种双哈希表方案,是为了减少规则冗余。假设存在一条4B规则组件“abcd”,由于无法事先知道该组件在数据名中的相对位置,因此需要考虑所有可能的情况,即需要生成{组件:abcd;ID:0}、{组件:abcd;ID:1}、{组件:abcd;ID:2}等多条冗余规则。通过将组件和ID拆分开来分两次匹配,这种规则冗余的情况就可以避免,并且由于交换机的硬件特点,拆分成两张哈希表匹配后不会带来任何性能损失。
本发明实施例中的异常长度过滤同样采用双哈希表完成,但仅需要组件长度信息和组件ID即可,因此不需要提取出组件的完整内容。图6以过滤组件0为例:第一张哈希表是LenCheckTable0,该表匹配组件长度,并返回该长度是否为有效长度的信息;第二张表是InvalidLenHandleTable0,当组件长度无效时,该表根据组件ID设置Invalid Bitmap。拆分成双哈希表匹配的原因和分长度匹配一样,即避免出现规则冗余。
相应地,本发明实施例提供了一种基于可编程交换机的数据名预处理系统,该系统包括:
提取单元,用于根据特定格式从数据名中提取出组件,并根据组件长度保存到特定的包头向量PHV中;
筛选单元,用于从提取的组件中过滤筛选出长度异常的组件;
匹配单元,用于对长度有效的组件执行查找匹配操作;匹配完成后,根据查询结果记录单组件规则、记录组件编码或标识Invalid组件;每种长度的PHV中至多保存着一个组件,如果某个长度不止一个组件,则该长度的剩余组件将在数据包通过回环端口重新进入流水线时处理。
本发明实施例主要是针对数据名组件化匹配算法,利用可编程交换机加速组件预处理操作,后续的组件化多模式匹配模块则部署在服务器端。相比于完全可编程交换机部署方案,本发明实施例需要的端口回环更少,因此吞吐量更高,同时还不会出现数据丢失的情况,而且规则容量更大。相比于完全服务器部署方案,本发明实施例性能更好,可以提升近一倍的系统吞吐量。
以上所述均为本发明具体实施的例示,目的是为了更加深入地讲解本发明提出的技术解决方案及其带来的积极效果。本发明的描述并不意图作为对其保护范围的限定解读,实际上,任何基于本发明理念之内所做的修改、等效替换、或者技术的改进等,都应当被视为落入本发明的保护范围之内。
Claims (10)
1.一种基于可编程交换机的数据名预处理方法,其特征在于,包括以下步骤:
根据特定格式从数据名中提取出组件,并根据组件长度保存到特定的包头向量PHV中;
从提取的组件中过滤筛选出长度异常的组件;
对长度有效的组件执行查找匹配操作;匹配完成后,根据查询结果记录单组件规则、记录组件编码或标识Invalid组件;每种长度的PHV中至多保存着一个组件,如果某个长度不止一个组件,则该长度的剩余组件将在数据包通过回环端口重新进入流水线时处理。
2.根据权利要求1所述的方法,其特征在于,所述特定格式为TLV格式;其中,Type字段包括组件的类型和序号,Length字段保存组件的长度,Vector字段保存组件的具体内容。
3.根据权利要求1所述的方法,其特征在于,对长度有效的组件执行查找匹配操作步骤,包括:匹配所有组件的长度字段,为每种长度提取至多一个组件;每种长度维护一张三态内容寻址存储器TCAM表,利用TCAM表支持优先级匹配的特点,实现“每种长度至多提取一个组件”的功能。
4.根据权利要求3所述的方法,其特征在于,对长度有效的组件执行查找匹配操作时需要两个数据,分别是组件内容本身,以及组件对应的ID;分长度组件匹配由两张哈希表完成:第一张表是PreprocessTable-4B,该表匹配组件内容,保存着组件的编码信息、是否存在可匹配的单组件规则的信息和是否是Invalid组件的信息;第二张表是HandleTable-4B,匹配组件ID,并根据ID指示的组件相对位置设置组件编码和无效组件比特位图,以及记录与该组件对应的单组件规则ID。
5.根据权利要求1所述的方法,其特征在于,对于异常长度的组件过滤采用双哈希表完成,第一张哈希表是LenCheckTable0,该表匹配组件长度,并返回该长度是否为有效长度的信息;第二张表是InvalidLenHandleTable0,当组件长度无效时,该表根据组件ID设置Invalid Bitmap。
6.一种基于可编程交换机的数据名预处理系统,其特征在于,包括:
提取单元,用于根据特定格式从数据名中提取出组件,并根据组件长度保存到特定的包头向量PHV中;
筛选单元,用于从提取的组件中过滤筛选出长度异常的组件;
匹配单元,用于对长度有效的组件执行查找匹配操作;匹配完成后,根据查询结果记录单组件规则、记录组件编码或标识Invalid组件;每种长度的PHV中至多保存着一个组件,如果某个长度不止一个组件,则该长度的剩余组件将在数据包通过回环端口重新进入流水线时处理。
7.根据权利要求6所述的系统,其特征在于,所述特定格式为TLV格式;其中,Type字段包括组件的类型和序号,Length字段保存组件的长度,Vector字段保存组件的具体内容。
8.根据权利要求6所述的系统,其特征在于,对长度有效的组件执行查找匹配操作步骤,包括:匹配所有组件的长度字段,为每种长度提取至多一个组件;每种长度维护一张三态内容寻址存储器TCAM表,利用TCAM表支持优先级匹配的特点,实现“每种长度至多提取一个组件”的功能。
9.根据权利要求8所述的系统,其特征在于,对长度有效的组件执行查找匹配操作时需要两个数据,分别是组件内容本身,以及组件对应的ID;分长度组件匹配由两张哈希表完成:第一张表是PreprocessTable-4B,该表匹配组件内容,保存着组件的编码信息、是否存在可匹配的单组件规则的信息和是否是Invalid组件的信息;第二张表是HandleTable-4B,匹配组件ID,并根据ID指示的组件相对位置设置组件编码和无效组件比特位图,以及记录与该组件对应的单组件规则ID。
10.根据权利要求6所述的系统,其特征在于,对于异常长度的组件过滤采用双哈希表完成,第一张哈希表是LenCheckTable0,该表匹配组件长度,并返回该长度是否为有效长度的信息;第二张表是InvalidLenHandleTable0,当组件长度无效时,该表根据组件ID设置Invalid Bitmap。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410222815.8A CN118175120A (zh) | 2024-02-28 | 2024-02-28 | 一种基于可编程交换机的数据名预处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410222815.8A CN118175120A (zh) | 2024-02-28 | 2024-02-28 | 一种基于可编程交换机的数据名预处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118175120A true CN118175120A (zh) | 2024-06-11 |
Family
ID=91351195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410222815.8A Pending CN118175120A (zh) | 2024-02-28 | 2024-02-28 | 一种基于可编程交换机的数据名预处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118175120A (zh) |
-
2024
- 2024-02-28 CN CN202410222815.8A patent/CN118175120A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112491901B (zh) | 一种网络流量精细化筛选装置及方法 | |
US8964548B1 (en) | System and method for determining network application signatures using flow payloads | |
US8577817B1 (en) | System and method for using network application signatures based on term transition state machine | |
US7539031B2 (en) | Inexact pattern searching using bitmap contained in a bitcheck command | |
US7624105B2 (en) | Search engine having multiple co-processors for performing inexact pattern search operations | |
US7539032B2 (en) | Regular expression searching of packet contents using dedicated search circuits | |
US7644080B2 (en) | Method and apparatus for managing multiple data flows in a content search system | |
KR101334583B1 (ko) | 심볼 패턴에 입력 심볼 스트림을 정합하기 위한 방법 및 장치 | |
EP2868045B1 (en) | A method of and network server for detecting data patterns in an input data stream | |
US20100076919A1 (en) | Method and apparatus for pattern matching | |
EP1436936A2 (en) | High speed data stream pattern recognition | |
CN111277612B (zh) | 一种网络报文处理策略生成方法、系统及介质 | |
Bremler-Barr et al. | CompactDFA: Scalable pattern matching using longest prefix match solutions | |
JP4059388B2 (ja) | プロトコルデータ単位内のプロトコルパターンの識別装置及び方法 | |
CN118175120A (zh) | 一种基于可编程交换机的数据名预处理方法及系统 | |
CN110933001B (zh) | 一种可扩展的可重构交换机包解析器基本处理单元结构 | |
CN115567460B (zh) | 数据包处理方法及装置 | |
US20070255676A1 (en) | Methods and apparatus for performing tree-based processing using multi-level memory storage | |
CN116185298A (zh) | 一种日志分布式存储的方法 | |
El-Hassan et al. | A hardware architecture of an XML/XPath broker for content-based publish/subscribe systems | |
Norige et al. | A ternary unification framework for optimizing TCAM-based packet classification systems | |
US7941605B1 (en) | Methods and apparatus for generating a result based on a lookup result from a lookup operation using an associative memory and processing based on a discriminator portion of a lookup word | |
US7324438B1 (en) | Technique for nondisruptively recovering from a processor failure in a multi-processor flow device | |
Liu et al. | Overlay automata and algorithms for fast and scalable regular expression matching | |
US8788483B2 (en) | Method and apparatus for searching in a memory-efficient manner for at least one query data element |
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 |