CN108781185B - 提供用于网络设备的可编程包分类框架的系统和方法 - Google Patents
提供用于网络设备的可编程包分类框架的系统和方法 Download PDFInfo
- Publication number
- CN108781185B CN108781185B CN201780015786.6A CN201780015786A CN108781185B CN 108781185 B CN108781185 B CN 108781185B CN 201780015786 A CN201780015786 A CN 201780015786A CN 108781185 B CN108781185 B CN 108781185B
- Authority
- CN
- China
- Prior art keywords
- key
- primitive
- classification
- packet
- lookup
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7452—Multiple parallel or consecutive lookup operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
根据实施例,本文描述的是用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统和方法。包分类框架可以包括多个基于硬件的可编程分类原语,分类原语包括关键字组成原语、关键字组成规则原语、匹配操作逻辑结构和下一操作原语。分类原语可以逻辑地串在一起,其中来自一个分类原语的结果被馈送到下一分类原语,直到数据包的处理被完成。分类框架可以使用状态机来跟踪数据包处理的状态,并基于数据包的处理状态动态地调整分类原语的行为。利用可编程分类原语,分类框架可以递归地解析多个协议的数据包,而不要求任何硬件改变。
Description
本专利文件的公开内容的一部分包含受版权保护的材料。版权所有者不反对任何人对专利文件或专利公开内容进行如其在专利和商标局(Patent and Trademark Office)专利文件或记录中所呈现那样的传真复制,但在其他方面保留所有版权。
技术领域
本发明的实施例一般地涉及高性能网络,并且特别地涉及用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统和方法。
背景技术
高性能网络可以使用异构网络来构建,例如,以太网数据中心和InfiniBand数据中心,以太网网关桥接在该两种类型的网络之间。业界已经发展出技术使能在高性能网络中的现有网络之上创建覆盖网络(overlay network)。该覆盖网络允许数据中心使用网络覆盖协议扩展到超出现有网络的限制。
由于新的网络覆盖协议的出现,高性能网络中数据中心中的数据中心或应用的扩展要求额外的数据包解析和处理复杂度。为了赶得上扩展的数据中心的更高吞吐量要求,一些网络协议级的卸载需要在最低硬件组件级来被执行。例如,网络协议级的卸载可以由网络接口卡(NIC)、交换机或NIC和交换机的组合(两者之间分享该工作)来执行。取决于卸载引擎存在的位置,卸载引擎需要被不同地优化,以便实现更高的吞吐量和低时延。
进一步,随着高性能网络越来越多地被用于支持云计算,越来越多的不同类型的覆盖协议可以在高性能网络中被使用。
正因如此,提供包处理框架将是有利的,该包处理框架可被编程为支持各种覆盖协议并且不要求改变支持该框架的硬件组件。无论包处理框架是用在NIC中或是用在交换机中,或是用在NIC和交换机两者中,包处理框架具有高吞吐量和低时延而没有额外的优化也都将是有利的。
发明内容
根据实施例,本文描述的是用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统和方法。所述包分类框架可以包括多个基于硬件的可编程分类原语,分类原语包括关键字组成原语、关键字组成规则原语、匹配操作逻辑结构和下一操作原语。分类原语可以逻辑地串在一起,其中来自一个分类原语的结果被馈送到下一个分类原语,直到数据包的处理被完成。分类框架可以使用状态机来跟踪数据包处理的状态,并基于数据包的处理状态动态地调整分类原语的行为。利用可编程分类原语,分类框架可以递归地解析多个协议的数据包,而不要求任何硬件改变。
附图说明
图1示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。
图2进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。
图3进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。
图4进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。
图5示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的方法。
图6示出了根据实施例的示例性高性能网络。
具体实施方式
在高性能网络中,包分类是指将数据包分类为“流(flow)”的过程,使得属于同一流的所有数据包遵守预定义的规则并以相似方式被处理。例如,非尽力而为服务可能需要包分类,诸如防火墙和服务质量。
如上所述,支持云计算可以在高性能网络中将解析和处理复杂度添加到数据分类。
为了处理解析和处理复杂度,本文描述了可编程包分类框架,该框架可包括关键字组成原语、关键字组成规则原语、匹配操作逻辑结构和下一操作原语。分类原语可以逻辑地串在一起,其中来自一个分类原语的结果被馈送到下一个分类原语,直到数据包的处理被完成。每个分类原语可以是网络设备中的一组汇编指令。
如本文所使用的,根据实施例,关键字组成原语可用于基于从先前处理原语或结构传递的关键字组成规则来动态地创建用于匹配操作逻辑结构的查找关键字。
对于当前正在处理的数据包,各种字节可以被选择并被连接成关键字数组结构。字节选择可以基于关键字组成规则,关键字组成规则可以指定字节选择数组,字节选择数组具有指向数据包中的字节位置的索引。索引可以是相对于数据包的开始位置或者相对于正在被处理的当前网络层的开始位置的,或者可以作为匹配规则的结果被导出。
根据实施例,每个查找关键字可以与用于确定上下文(context)的唯一标识符(ID)相关联,在该上下文下,查找关键字被用于匹配操作表中的匹配操作查找。每个查找关键字还可以与大小相关联,该大小可以用于确定要从数据包的报头中选择的相关字节的数量,以构造查找关键字。
如本文中还使用的,根据实施例,关键字组成规则原语可以表示包括查找关键字ID、字节选择数组、查找关键字的长度和表ID的结构。匹配操作表中的每个查找可以导致上述用于为数据包处理的下一循环构造查找关键字的结构。关键字组成规则结构/原语可以或者通过匹配操作表中的每个匹配被内联指定,或者通过使用指向另一个预编程结构的指针间接指定。
根据实施例,对于包处理流水线中的第一个循环,可以得到相似的结构作为默认。例如,可以基于来自网络设备上的多个物理入口端口的到达端口来导出默认结构。
如本文进一步使用的,根据实施例,匹配操作逻辑结构可以包括一个或多个三态内容可寻址存储器(TCAM)以及其中的一个或多个查找表。
如上所述,表ID可以在用于构造查找关键字的关键字组成规则原语中被指定。基于表ID,可以选择相应的查找表用于关键字匹配查找。每次在所选查找表中检测到关键字匹配时,一个或多个操作可以被匹配到该关键字匹配。当所选查找表中的一个或多个条目可以与查找关键字匹配时,基于优先级规则的TCAM结构可以被用来确定唯一操作。
此外,如本文所使用的,下一操作原语可以指定关键字组成规则结构,如上所述,关键字组成规则结构可以包括关键字ID和下一表ID。下一表ID可以表示当前查找表或不同的查找表。
根据实施例,下一操作原语可以包括特定于包解析匹配结果的操作,诸如丢弃、转发和重定向;和结束或继续(End or Continue)标志,该标志指定该包处理是否需要通过查找更多字段来继续,或者被终止。
此外,下一操作原语可以为包处理引擎或解析器指定一个或多个优先级规则,以当对于查找表中的特定关键字匹配在匹配操作表中有多个记录可用时确定最终操作。
利用上述包分类原语,可编程和灵活的包分类框架可以在网络设备中被提供。由于同一查找表可以用不同的查找关键字多次使用,因此可以实现TCAM的高效使用。进一步,包分类框架可被用于基于递归TCAM/表查找,在细粒度流基础上执行更深的包检测。
根据实施例,分类框架可以使用状态机来跟踪数据包处理的状态,并且基于数据包的处理状态动态地调整分类原语的行为。
利用可编程分类原语,分类框架可以解析多个协议的数据包而不要求任何硬件改变。进一步,包分类框架独立于底层网络技术,并且可以一致地应用于或者InfiniBand或者以太网或者其他类型的网络技术。
图1示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。
如图1所示,网络设备101,例如InfiniBand或以太网中的网络接口卡(NIC)或交换机,可以包括多个TCAM,例如TCAM A 117、TCAM B 118、TCAM C 119和TCAM D 120;微处理器103;和静态随机存取存储器(SRAM)108。
根据实施例,TCAM A、TCAM B和TCAM C中的每一个可以包括查找表。TCAM B和TCAMC中的查找表未在图中示出。TCAM A中的查找表(例如,查找表A 121)可以包括多个字段/列,以及多个预先填充的记录/条目。
根据实施例,查找表A中的多个字段/列可以包括当前状态127、关键字ID 129、关键字131和关键字掩码132。关键字字段中的每个值可以包括与覆盖协议中的一个或多个头字段相对应的字节。例如,关键字字段中的值可以是表示虚拟可扩展LAN(VXLAN)数据包中的外部IP报头以及一个或多个附加的头字段的字节。
根据实施例,当前状态字段中的每个值可以是指示关键字与哪个协议层相关联的字节。例如,当前状态的值可以是L3层。
如图1中进一步所示,网络设备101可以包括多个入口端口107,在入口端口107处数据包(例如,数据包105)可以被接收。SRAM 108可以包括包解析器109、状态机111和关键字组成原语141,每个都可以是用汇编指令编写的程序。
根据实施例,状态机可以跟踪数据包的处理状态。包解析器可以接收数据包105,并且与状态机通信以用处理状态更新状态机或从状态机接收处理状态。包解析器可以进一步调用关键字组成原语141以基于或者默认关键字组成规则(图1中未示出)或者来自关键字组成规则结构136的规则,来构造查找关键字140,关键字组成规则结构136由TCAM 120中的匹配操作表125组成。
根据实施例,基于匹配操作表中的匹配,查找关键字可以被呈现给由默认关键字组成规则或关键字组成规则指定的查找表。与指定的查找表中的查找关键字的记录匹配可导致匹配操作表125中的记录匹配。
根据实施例,匹配操作表中的匹配可以包括一个或多个操作,例如,继续下一个查找表、退出和其他处理步骤。对应于这些操作的可以是多个字段,用于为包处理的下一循环构造关键字组成规则结构。多个字段可以包括下一关键字(查找关键字)133、指示选择哪些字节用于构造下一查找关键字的关键字数组选择135、以及用于下一查找表137的ID 137。
根据实施例,TCAM A、TCAM B、TCAM C和TCAM中的每一个可以是分类资源层级结构的一部分,该层级结构包括多级分类资源分区,其具有被配置为存储与频繁使用或性能敏感的流相关联的流条目的一个或多个基于硬件的分区,以及基于固件的分区来访问存储在一个或多个附加存储器中的大型查找表以用于分类资源可扩展性。查找关键字可用于首先在基于硬件的分区中搜索流条目匹配。如果未命中,则可以将查找关键字呈现给基于固件的分区以进行进一步搜索。可以将来自基于固件的级别的结果发送回基于硬件的解析器以进行进一步处理。基于流条目的利用,可以由分区管理块在查找表之间移动流条目。
根据实施例,分类资源的基于硬件的分区可以包括1级分区中的一个或多个TCAM,以及2级分区中的一个或多个哈希表。基于固件的分区可以表示分类资源的3级分区,并且可以包括包含多个网络处理元件(PE)的嵌入式处理器子系统,并且每个PE可以是基于成熟的微处理器、或微控制器、或基于状态机的硬件引擎的。
根据实施例,分区管理块可以是基于硬件的操作和基于固件的操作的混合,以高效地管理分类资源的每个分区中的查找表和流条目,从而可以满足给定的性能目标。系统可以支持多个特征以促进与查找表相关的管理操作。
分类资源层级结构可被用于管理和扩展大量的分类资源,这些分类资源被分区为连接到外部或远程存储器的TCAM、哈希表和基于固件的子系统的层级结构,其中在每个级别进行高速缓存。层级结构中的每个级别都可以存储流条目,并且可以在吞吐量、时延和功耗方面变化。本文所描述的框架独立于诸如InfiniBand或以太网的底层网络技术的类型,并且可以一致地应用于多种网络技术。
根据实施例,如上所述,多个基于硬件的可编程分类原语可以逻辑地串在一起,其中来自一个分类原语的结果被馈送到下一个分类原语,直到数据包的处理被完成。
图2进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。
如图2所示,包解析器可以接收数据包221。在该特定图示中,数据包是VXLAN数据包。系统不限于VXLAN格式的数据包,并且可以相似地用于解析多个其他协议或其他格式的数据包。
例如,系统可用于基于以下协议解析数据包:最短路径桥接(SPB),多链路透明互联(TRILL),定位器/ID分离协议(LISP),使用通用路由封装的网络虚拟化(NVGRE)和无状态传输隧道(STT)。
根据实施例,VXLAN是在第3层网络上的第2层覆盖封装协议。VXLAN可以使用用户数据报协议MAC地址(MAC-in-UDP)封装来提供在整个数据中心网络中扩展第2层网段的手段。VXLAN提供在共享的通用物理基础设施上支持灵活的大规模多租户环境的方案。物理数据中心网络上的传输协议是IP加UDP。
在VXLAN数据包中,如图2所示,原始第2层帧231具有添加的VXLAN报头229,并且被置于UDP-IP包中,如外部IP报头225和UDP报头227所示。利用该MAC-in-UDP封装和第2层外部MAC报头223,VXLAN可以在第3层网络上隧道传输(tunnel)第2层网络。
根据实施例,VXLAN数据包可以包括8字节VXLAN报头,该8字节VXLAN报头由24位VNID和多个保留位组成。VXLAN报头与原始以太网帧一起可以置于UDP负载中。24位VNID可用于标识第2层网段并保持网段之间的第2层隔离。利用VNID中的全部24位,VXLAN可支持1600万个LAN网段。
根据实施例,当包解析器接收VXLAN数据包时,它可以用指示要处理的一个或多个第2层报头的状态235来更新状态机。默认关键字组成规则结构243可以基于到达端口被导出。包解析器可以调用233关键字组成原语来构造查找关键字240,以用于在基于TCAM的查找表A 121中执行查找。
例如,默认关键字组成规则结构可以包括以下信息:关键字ID=0;长度=8;关键字数组选择=字节:0-5,字节16-17。
根据实施例,默认表ID(例如,查找表A)和上述信息可以被用来构造关键字{port,mac da,vlan},其中“port”是VXLAN数据包被接收的端口号,“mac da”是媒体访问控制(MAC)目的地地址,以及“vlan”是虚拟LAN的类型。
如图2中进一步所示,查找表A中与查找关键字的匹配可导致匹配操作表中的匹配。
例如,匹配操作表中的匹配可以包括一个或多个操作215,例如,“用户关键字#2&继续;下一偏移(Next Offset)=0”;下一表ID 219,例如,“查找表B”;关键字数组选择211,例如,L3字节:13-20,11;L4字节:0-3;以及下一关键字ID 213,例如,关键字#2。上述信息可用于构造关键字组成规则结构236,以用于数据包处理的下一循环。
根据实施例,一旦查找表中的匹配被找到,TCAM中的一个或多个指令集就可以被触发以执行操作并构造关键字组成规则结构。
图3进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。
根据实施例,数据包处理的下一循环是L3层处理,如状态机中L3层335的状态所反映的。包解析器可以调用333关键字组成原语来使用如图2中所描述的关键字组成规则结构236来构造查找关键字340。
如图3所示,查找关键字340可以是{id2,ipsa,ipda,proto,sport,dport},它可以是字节数组。查找关键字可以包括代表IP源地址的“ipsa”,代表IP目的地址的“ipda”,代表诸如UDP的协议的“proto”,代表诸如vxlan的目的端口的dport。“ipsa”、“ipda”、“proto”、“sport”和“dport”可以表示从VXLAN数据包的报头中选择的信息,该选择使用用于构造查找关键字的关键字组成规则结构236的关键字数组选择中的索引。“id2”是由关键字组成原语插入的查找关键字的ID。
根据实施例,当查找关键字的ID被包括在表示查找关键字的字节数组中时,查找关键字可以被呈现给与在数据包处理的紧接前一个循环中使用的查找表相同的查找表。
例如,由于紧接前一个循环使用查找表A,因此查找关键字340可以被再次呈现给查找表A以进行匹配。
根据实施例,查找表A中的查找关键字匹配可以导致匹配操作表中的匹配。
如图3所示,匹配操作表中的匹配可以包括一个或多个操作315,例如“用户关键字#3&循环;下一偏移(Next Offset)=8”;下一表ID 319,例如,“查找表A”;关键字数组选择311,例如,字节:5-7,8-13,23-32;以及下一关键字ID 313,例如,关键字#3。上述信息可用于构造关键字组成规则结构336,以用于数据包处理的下一循环。
图4进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。
如图4所示,包解析器可以调用433关键字组成原语,以基于图3中组成的关键字组成规则结构来构造新的查找关键字440。
根据实施例,查找关键字440可以包括关键字ID“id3”,基于字节选择数组(具有指向数据包中的字节位置的索引)从数据包221的报头中选择的多个其他头字段。由于由字节数组表示的查找关键字440包括关键字的ID,因此查找关键字可以被呈现给与在紧接前一个循环(即图3中所描述的循环)中使用的查找表相同的查找表(即查找表A 121)。
如图4所示,图4中的包解析器109可以处理在数据包221的原始L2帧处的头字段,其由状态机111中的内部L2层435的状态示出。
根据实施例,在查找关键字440被呈现给查找表A并且与查找表中的记录匹配之后,匹配操作表中的操作415可以被触发,以通过由下一关键字ID 413、下一关键字的关键字数组选择411以及下一表ID419构造关键字组成规则结构626,来开始对原始L2帧231的递归解析,以用于组成下一查找关键字。
根据实施例,数据包解析的递归性质可以继续,直到数据包被完全解析,或者直到指定包处理的下一阶段的操作(例如,结束包处理)被遇到时。
图5示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的方法。
如图5所示,在步骤511,高性能网络中的网络设备被提供,其中,网络设备包括多个分类原语,多个分类原语包括关键字组成原语、关键字组成规则原语、一个或多个查找表以及匹配操作表。
在步骤513,基于关键字组成规则原语由关键字组成原语来构造查找关键字。
在步骤515,与查找关键字的匹配在网络设备的查找表中被检测。
在步骤517,与匹配操作表中的匹配相关联的一个或多个操作被触发,其中匹配操作表中的匹配与用于构造下一查找关键字的信息相关联。
InfiniBand
InfiniBandTM(IB)是示例性的上述系统和方法可以在其中使用的高性能网络。
InfiniBandTM是由InfiniBandTM贸易协会开发的开放标准无损网络技术。该技术基于串行点对点全双工互连,可提供高吞吐量和低时延通信,尤其适用于高性能计算(HPC)应用和数据中心。
InfiniBandTM架构(IBA)支持两层拓扑划分。在较低层,IB网络被称为子网,其中子网可以包括使用交换机和点对点链路互连的一组主机。在较高层,IB结构构成一个或多个子网,其可以使用路由器互连。
在子网内,可以使用交换机和点对点链路来连接主机。此外,子网中可以有主管理实体、存在于子网中的指定设备上子网管理器(SM)。子网管理器负责配置、激活和维护IB子网。此外,子网管理器(SM)可以负责在IB结构中执行路由表计算。此处,例如,IB网络的路由旨在本地子网中的所有源和目的地对之间的适当负载平衡。
通过子网管理接口,子网管理器与子网管理代理(SMA)交换控制包,其被称为子网管理包(SMP)。子网管理代理存在于每个IB子网设备上。通过使用SMP,子网管理器能够发现结构,配置终端节点和交换机,以及从SMA接收通知。
根据实施例,IB网络中的子网内路由可以基于存储在交换机中的LFT。LFT由SM根据使用的路由机制计算。在子网中,端节点和交换机上的主机通道适配器(HCA)端口使用本地标识符(LID)进行寻址。LFT中的每个条目由目的地LID(DLID)和输出端口组成。表中每个LID只支持一个条目。当包到达交换机时,通过在交换机的转发表中查找DLID来确定其输出端口。路由是确定性的,因为包在给定的源-目的地对(LID对)之间在网络中采用相同的路径。
一般地,除主子网管理器之外的所有其他子网管理器在待机模式下活动以容错。但是,在主子网管理器出现故障的情况下,新的主子网管理器由待机子网管理器商定。主子网管理器还执行子网的周期扫描,以检测任何拓扑改变并相应地重新配置网络。
此外,子网内的主机和交换机可以使用本地标识符(LID)来寻址,并且单个子网可以被限制为49151个单播LID。除了是子网内有效的本地地址的LID之外,每个IB设备还可以具有64位全球唯一标识符(GUID)。GUID可用于形成全球标识符(GID),其是IB层三(L3)地址。
SM可以在网络初始化时计算路由表(即,子网内每对节点之间的连接/路由)。此外,每当拓扑发生变化,路由表都可以被更新,以确保连接性和最佳性能。在正常操作期间,SM可以执行网络的周期性光扫描(light sweep)以检查拓扑改变。如果在光扫描期间发现了改变,或者如果用信号表示网络改变的消息(陷阱)被SM收到,则SM可以根据发现的改变重新配置网络。
例如,SM可以在网络拓扑改变时重新配置网络,诸如在链路故障时,在设备被添加时或在链路被移除时。重新配置步骤可以包括在网络初始化期间执行的步骤。此外,重新配置可以具有限制在网络改变发生的子网的本地范围。此外,对具有路由器的大型结构进行分段可能会限制重新配置范围。
图6中示出了示例性InfiniBand结构,其示出了根据实施例的InfiniBand环境的图示。在图1所示的示例中,节点A-E 601-605使用InfiniBand结构620通过相应的主机通道适配器611-615进行通信。根据实施例,各种节点,例如节点A-E 601-605,可以由各种物理设备表示。根据实施例,各种节点,例如节点A-E 601-605,可以由诸如虚拟机的各种虚拟设备表示。
本发明可以使用一个或多个传统的通用或专用数字计算机、计算设备、机器或微处理器来便利地实现,包括根据本公开的教导编程的一个或多个处理器、存储器和/或计算机可读存储介质。基于本公开的教导,技术程序员可以容易地准备合适的软件编码,这对于软件领域的技术人员来说是明晰的。
在一些实施例中,本发明包括计算机程序产品,其是非暂时性存储介质或计算机可读介质,其上存储有可用于对计算机进行编程以执行本发明的任何过程的指令。存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微驱动器和磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适用于存储指令和/或数据的任何类型的介质或设备。
本发明的实施例的前述描述出于说明和描述的目的已经被提供。其并非旨在穷举或将本发明限制于所公开的精确形式。对于本领域技术人员来说许多修改和变化是明晰的。修改和变化包括所公开特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使得本领域其他技术人员能够理解本发明的各种实施例并且具有适合于预期的特定用途的各种修改。
Claims (22)
1.一种包括网络设备的系统,所述网络设备提供高性能网络中的网络设备中的可编程包分类框架,所述系统包括:
存储器和微处理器;
多个入口端口,所述多个入口端口用于接收基于多个协议的数据包;
多个基于硬件的分类原语,所述多个基于硬件的分类原语包括关键字组成原语、关键字组成规则原语和下一操作原语;
一个或多个查找表以及匹配操作表;
状态机,所述状态机被配置为跟踪对每个数据包的处理的状态;
其中,所述关键字组成原语被配置为基于所述关键字组成规则原语而构造用于所述每个数据包的当前查找关键字,并将所述当前查找关键字呈现给查找表;
其中,所述查找表中与该查找关键字的匹配导致所述匹配操作表中的用于所述每个数据包的操作匹配;
其中,所述操作匹配与用于构造用于所述每个数据包的下一查找关键字的信息相关联;
其中,所述当前查找关键字和所述下一查找关键字中的每一个与所述状态机中的值相关联,其中,所述值指示所述每个数据包中正被处理的特定协议层;
其中,所述多个基于硬件的分类原语是逻辑地连接的,来自一个分类原语的结果被馈送到下一个分类原语中;
由此,所述网络设备被配置为:
使用所述多个基于硬件的分类原语递归地解析所述数据包中的每个数据包,直到对基于所述多个协议中的特定协议的所述每个数据包的分类被完成,
基于对所述数据包中的每个数据包的所述分类,将所述数据包分类为多个流,以及
根据与所述多个流中的每个流相关联的预定义的规则,处理被分类为所述多个流中的所述每个流的所述数据包。
2.根据权利要求1所述的系统,其中,所述多个基于硬件的分类原语逻辑地串在一起,其中来自一个原语的所述结果被馈送到下一原语,直到在所述网络设备处接收的数据包的处理被完成。
3.根据权利要求1所述的系统,其中,所述多个基于硬件的分类原语中的每一个是可编程的,并且是基于所述网络设备的所述存储器的三态内容可寻址存储器TCAM或者静态随机存取存储器SRAM的。
4.根据权利要求1所述的系统,其中,所述网络设备是以太网网络接口卡,或以太网网络交换机。
5.根据权利要求1所述的系统,其中,所述关键字组成规则原语是存在于所述网络设备的所述存储器中的TCAM中的结构,并且包括关键字ID、字节选择数组、查找关键字的长度和表ID。
6.根据权利要求5所述的系统,其中,所述字节选择数组包括指向数据包中的字节位置的索引,其中,所述索引是相对于该数据包的开始位置或正在被处理的当前网络层的开始位置的,或者是作为匹配规则的结果被导出的。
7.根据权利要求1至5中任一项所述的系统,其中,所述网络设备是InfiniBand网络接口卡或InfiniBand网络交换机。
8.根据权利要求1至5中任一项所述的系统,其中,所述状态机基于数据包的处理状态而动态地调整分类原语的行为。
9.根据权利要求1至5中任一项所述的系统,其中,当特定数据包被所述网络设备初始地接收时,默认关键字组成规则原语被所述关键字组成原语使用以构造查找关键字。
10.根据权利要求9所述的系统,其中,所述默认关键字组成规则原语基于所述网络设备上的所述多个入口端口中接收所述特定数据包的到达端口。
11.一种用于对高性能网络中的数据包进行分类和处理的方法,所述方法包括:
提供网络设备,其中所述网络设备包括:
可编程包分类框架,所述可编程包分类框架具有多个基于硬件的分类原语,所述多个基于硬件的分类原语包括关键字组成原语、关键字组成规则原语,
一个或多个查找表,
匹配操作表,
状态机,其中对所述数据包中的每个数据包的处理的状态是使用所述状态机来跟踪的,以及
多个入口端口;
在所述多个入口端口处,接收基于多个协议的数据包;
使用所述关键字组成原语基于所述关键字组成规则原语构造当前查找关键字;
检测所述一个或多个查找表中与该查找关键字的匹配;以及
触发与所述匹配操作表中的匹配相关联的一个或多个操作;
使用与所述匹配操作表中的所述匹配相关联的信息构造下一查找关键字,其中,所述当前查找关键字和所述下一查找关键字中的每一个与所述状态机中的值相关联,其中,所述值指示所述每个数据包中正被处理的特定协议层;
其中,所述多个基于硬件的分类原语是逻辑地连接的,来自一个原语的结果被馈送到下一个原语中;
使用所述多个基于硬件的分类原语递归地解析所述数据包中的每个数据包,直到对基于所述多个协议中的特定协议的所述每个数据包的分类被完成;
基于对所述数据包中的每个数据包的所述分类,将所述数据包分类为多个流;以及
根据与所述多个流中的每个流相关联的预定义的规则,处理被分类为所述多个流中的所述每个流的所述数据包。
12.根据权利要求11所述的方法,其中,来自所述多个基于硬件的分类原语中的一个原语的结果被馈送到所述多个基于硬件的分类原语中的下一原语,直到在所述网络设备处接收的数据包的处理被完成。
13.根据权利要求11所述的方法,其中,所述多个基于硬件的分类原语中的每一个是可编程的,并且是基于三态内容可寻址存储器TCAM或者静态随机存取存储器SRAM的。
14.根据权利要求11所述的方法,其中,所述数据包被配置为由所述多个基于硬件的分类原语递归地解析。
15.根据权利要求11所述的方法,其中,所述关键字组成规则原语是存在于所述网络设备中的TCAM中的结构,并且包括关键字ID、字节选择数组、查找关键字的长度和表ID。
16.根据权利要求15所述的方法,其中,所述字节选择数组包括指向数据包中的字节位置的索引,其中所述索引是相对于该数据包的开始位置或正在被处理的当前网络层的开始位置的,或者是作为匹配规则的结果被导出的。
17.根据权利要求11至16中任一项所述的方法,其中,所述网络设备是InfiniBand网络或以太网网络中的网络接口卡或交换机。
18.根据权利要求11至16中任一项所述的方法,其中,所述状态机基于数据包的处理状态而动态地调整分类原语的行为。
19.根据权利要求11至16中任一项所述的方法,其中,当数据包被网络设备初始地接收时,默认关键字组成规则原语被所述关键字组成原语使用以构造查找关键字。
20.一种非暂时性计算机可读存储介质,存储用于支持对高性能网络中的网络设备中的数据包进行分类的一组指令,其中所述网络设备包括多个入口端口、包含关键字组成原语和关键字组成规则原语的多个基于硬件的分类原语、一个或多个查找表和匹配操作表以用于处理基于多个协议的数据包,其中对所述数据包中的每个数据包的处理的状态是使用状态机来跟踪的,所述指令在由所述网络设备执行时,使得所述网络设备执行以下步骤,包括:
在所述多个入口端口处,接收基于所述多个协议的数据包;
使用所述关键字组成原语基于所述关键字组成规则原语构造当前查找关键字;
检测所述一个或多个查找表中与该查找关键字的匹配;以及
触发与所述匹配操作表中的匹配相关联的一个或多个操作;
使用与所述匹配操作表中的所述匹配相关联的信息构造下一查找关键字,其中所述当前查找关键字和所述下一查找关键字中的每一个与所述状态机中的值相关联,其中,所述值指示所述每个数据包中正被处理的特定协议层;
其中,所述多个基于硬件的分类原语是逻辑地连接的,来自一个原语的结果被馈送到下一个原语中;
使用所述多个基于硬件的分类原语递归地解析所述数据包中的每个数据包,直到对基于所述多个协议中的特定协议的所述每个数据包的分类被完成;
基于对所述数据包中的每个数据包的所述分类,将所述数据包分类为多个流;以及
根据与所述多个流中的每个流相关联的预定义的规则,处理被分类为所述多个流中的所述每个流的所述数据包。
21.一种用于对高性能网络中的数据包进行分类和处理的系统,包括:
一个或多个处理器;以及
存储一组指令的非暂时性计算机可读存储介质,所述指令在由所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求11至19中任一项所述的方法。
22.一种包括用于执行根据权利要求11至19中任一项所述的方法的单元的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/377,303 US10341242B2 (en) | 2016-12-13 | 2016-12-13 | System and method for providing a programmable packet classification framework for use in a network device |
US15/377,303 | 2016-12-13 | ||
PCT/US2017/061142 WO2018111472A1 (en) | 2016-12-13 | 2017-11-10 | System and method for providing a programmable packet classification framework for use in a network device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108781185A CN108781185A (zh) | 2018-11-09 |
CN108781185B true CN108781185B (zh) | 2021-08-03 |
Family
ID=60452796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780015786.6A Active CN108781185B (zh) | 2016-12-13 | 2017-11-10 | 提供用于网络设备的可编程包分类框架的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10341242B2 (zh) |
EP (1) | EP3476087B1 (zh) |
JP (1) | JP7208008B2 (zh) |
CN (1) | CN108781185B (zh) |
WO (1) | WO2018111472A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10015048B2 (en) | 2014-12-27 | 2018-07-03 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US9825862B2 (en) | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Packet header field extraction |
US9912774B2 (en) | 2015-12-22 | 2018-03-06 | Intel Corporation | Accelerated network packet processing |
US11223520B1 (en) | 2017-01-31 | 2022-01-11 | Intel Corporation | Remote control plane directing data plane configurator |
US10686735B1 (en) | 2017-04-23 | 2020-06-16 | Barefoot Networks, Inc. | Packet reconstruction at deparser |
US10826840B1 (en) | 2017-07-23 | 2020-11-03 | Barefoot Networks, Inc. | Multiple copies of stateful tables |
US10771387B1 (en) | 2017-09-28 | 2020-09-08 | Barefoot Networks, Inc. | Multiple packet data container types for a processing pipeline |
US11070575B2 (en) * | 2019-03-06 | 2021-07-20 | Cisco Technology, Inc. | Verifying accuracy of ML pipelines using third party co-ordination |
CN110933001B (zh) * | 2019-11-18 | 2020-11-27 | 清华大学 | 一种可扩展的可重构交换机包解析器基本处理单元结构 |
CN112688924A (zh) * | 2020-12-15 | 2021-04-20 | 中国海洋大学 | 网络协议分析系统 |
CN113037634B (zh) * | 2021-03-31 | 2022-12-06 | 深圳市芯源网络科技有限公司 | 基于fpga的匹配动作表的处理方法、逻辑电路和设备 |
US20240015110A1 (en) * | 2022-07-06 | 2024-01-11 | Cisco Technology, Inc. | Intelligent packet distribution control for optimizing system performance and cost |
CN115883681B (zh) * | 2023-02-08 | 2023-06-23 | 天翼云科技有限公司 | 报文解析方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674557A (zh) * | 2005-04-01 | 2005-09-28 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
US7154888B1 (en) * | 2002-02-08 | 2006-12-26 | Cisco Technology, Inc. | Method for classifying packets using multi-class structures |
US7602787B2 (en) * | 2001-05-21 | 2009-10-13 | Cisco Technology, Inc. | Using ternary and binary content addressable memory stages to classify information such as packets |
CN103546378A (zh) * | 2013-05-20 | 2014-01-29 | 李险峰 | 基于tcam的范围多匹配2级分层查找方法 |
CN104012063A (zh) * | 2011-12-22 | 2014-08-27 | 瑞典爱立信有限公司 | 用于软件定义网络中的灵活和可扩展流处理的控制器 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3645734B2 (ja) * | 1999-02-24 | 2005-05-11 | 株式会社日立製作所 | ネットワーク中継装置及びネットワーク中継方法 |
JP3936883B2 (ja) | 2002-04-08 | 2007-06-27 | 株式会社日立製作所 | フロー検出装置およびフロー検出機能を備えたパケット転送装置 |
US8040886B2 (en) * | 2003-04-08 | 2011-10-18 | Cisco Technology, Inc. | Programmable packet classification system using an array of uniform content-addressable memories |
US8295286B2 (en) | 2003-12-31 | 2012-10-23 | Stmicroelectronics, Inc. | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware |
US7567567B2 (en) * | 2005-04-05 | 2009-07-28 | Sun Microsystems, Inc. | Network system including packet classification for partitioned resources |
US7783654B1 (en) * | 2006-09-19 | 2010-08-24 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
US7949794B2 (en) | 2006-11-02 | 2011-05-24 | Intel Corporation | PCI express enhancements and extensions |
CN100488174C (zh) | 2006-11-24 | 2009-05-13 | 中兴通讯股份有限公司 | 流分类中基于硬件的差异化组织方法 |
US20080134283A1 (en) | 2006-12-05 | 2008-06-05 | Electronics And Telecommunications Research Institute | Security apparatus and method for supporting IPv4 and IPv6 |
US20080186971A1 (en) * | 2007-02-02 | 2008-08-07 | Tarari, Inc. | Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic |
TWI348297B (en) * | 2008-01-25 | 2011-09-01 | Univ Nat Taiwan | Two-stage computer network packet classification method and system |
US8599859B2 (en) * | 2009-11-16 | 2013-12-03 | Marvell World Trade Ltd. | Iterative parsing and classification |
WO2012081148A1 (en) | 2010-12-15 | 2012-06-21 | Nec Corporation | Packet classifier, packet classification method and packet classification program |
US20120155472A1 (en) | 2010-12-16 | 2012-06-21 | Electronics Telecommunications Research Institute | Apparatus and method for classifying packets |
US8937952B2 (en) * | 2011-08-02 | 2015-01-20 | Cavium, Inc. | Packet classification |
KR101331018B1 (ko) | 2011-10-11 | 2014-01-15 | 주식회사 시큐아이 | 패킷 분류 방법 및 그 장치 |
KR20130093707A (ko) * | 2011-12-23 | 2013-08-23 | 한국전자통신연구원 | 패킷 분류 장치 및 그것의 패킷 분류 방법 |
US9363178B2 (en) * | 2013-12-18 | 2016-06-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus, and system for supporting flexible lookup keys in software-defined networks |
US10362093B2 (en) * | 2014-01-09 | 2019-07-23 | Netronome Systems, Inc. | NFA completion notification |
US9509809B2 (en) * | 2014-02-25 | 2016-11-29 | Alcatel-Lucent Usa Inc. | Packet classification using multiple processing units |
US9729512B2 (en) * | 2014-06-04 | 2017-08-08 | Nicira, Inc. | Use of stateless marking to speed up stateful firewall rule processing |
US11178051B2 (en) * | 2014-09-30 | 2021-11-16 | Vmware, Inc. | Packet key parser for flow-based forwarding elements |
US10153972B2 (en) | 2015-02-13 | 2018-12-11 | Nxp Usa, Inc. | Method and apparatus for coding a user defined constant into a key composition rule using variable length command |
US9729680B2 (en) | 2015-04-23 | 2017-08-08 | Nxp Usa, Inc. | Methods and systems to embed valid-field (VF) bits in classification keys for network packet frames |
US9984144B2 (en) * | 2015-08-17 | 2018-05-29 | Mellanox Technologies Tlv Ltd. | Efficient lookup of TCAM-like rules in RAM |
US9825862B2 (en) * | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Packet header field extraction |
-
2016
- 2016-12-13 US US15/377,303 patent/US10341242B2/en active Active
-
2017
- 2017-11-10 JP JP2018549514A patent/JP7208008B2/ja active Active
- 2017-11-10 WO PCT/US2017/061142 patent/WO2018111472A1/en unknown
- 2017-11-10 CN CN201780015786.6A patent/CN108781185B/zh active Active
- 2017-11-10 EP EP17804401.2A patent/EP3476087B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7602787B2 (en) * | 2001-05-21 | 2009-10-13 | Cisco Technology, Inc. | Using ternary and binary content addressable memory stages to classify information such as packets |
US7154888B1 (en) * | 2002-02-08 | 2006-12-26 | Cisco Technology, Inc. | Method for classifying packets using multi-class structures |
CN1674557A (zh) * | 2005-04-01 | 2005-09-28 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
CN104012063A (zh) * | 2011-12-22 | 2014-08-27 | 瑞典爱立信有限公司 | 用于软件定义网络中的灵活和可扩展流处理的控制器 |
CN103546378A (zh) * | 2013-05-20 | 2014-01-29 | 李险峰 | 基于tcam的范围多匹配2级分层查找方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108781185A (zh) | 2018-11-09 |
US20180167329A1 (en) | 2018-06-14 |
US10341242B2 (en) | 2019-07-02 |
JP7208008B2 (ja) | 2023-01-18 |
JP2020502829A (ja) | 2020-01-23 |
EP3476087B1 (en) | 2021-08-18 |
WO2018111472A1 (en) | 2018-06-21 |
EP3476087A1 (en) | 2019-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108781185B (zh) | 提供用于网络设备的可编程包分类框架的系统和方法 | |
US10320664B2 (en) | Cloud overlay for operations administration and management | |
US10333836B2 (en) | Convergence for EVPN multi-homed networks | |
US10645201B2 (en) | Packet handling during service virtualized computing instance migration | |
US11075774B2 (en) | VXLAN packet processing method, device, and system | |
US10382331B1 (en) | Packet segmentation offload for virtual networks | |
US10116559B2 (en) | Operations, administration and management (OAM) in overlay data center environments | |
US11184295B2 (en) | Port mirroring based on remote direct memory access (RDMA) in software-defined networking (SDN) environments | |
CN108702326B (zh) | 检测sdn控制平面循环的方法、设备和非暂时性机器可读介质 | |
US9858104B2 (en) | Connecting fabrics via switch-to-switch tunneling transparent to network servers | |
EP2985959B1 (en) | Progressive mac address learning | |
JP6445015B2 (ja) | ミドルウェアおよびアプリケーションの実行のためにエンジニアド・システムにおいてデータサービスを提供するためのシステムおよび方法 | |
US9397943B2 (en) | Configuring virtual media access control addresses for virtual machines | |
US8913613B2 (en) | Method and system for classification and management of inter-blade network traffic in a blade server | |
CN107113241B (zh) | 路由确定方法、网络配置方法以及相关装置 | |
US11165693B2 (en) | Packet forwarding | |
US10397116B1 (en) | Access control based on range-matching | |
US10560375B2 (en) | Packet flow information invalidation in software-defined networking (SDN) environments | |
US20220263746A1 (en) | Method for monitoring running state of peer, apparatus, and storage medium | |
WO2023039375A1 (en) | Multiprotocol label switching (mpls) data plane header extensions | |
US20240235993A1 (en) | Multiprotocol label switching (mpls) data plane header extensions |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |