提供用于网络设备的可编程包分类框架的系统和方法与流程

文档序号:15885792发布日期:2018-11-09 18:51阅读:166来源:国知局
提供用于网络设备的可编程包分类框架的系统和方法与流程

本发明的实施例一般地涉及高性能网络,并且特别地涉及用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统和方法。

背景技术

高性能网络可以使用异构网络来构建,例如,以太网数据中心和infiniband数据中心,以太网网关桥接在该两种类型的网络之间。业界已经发展出技术使能在高性能网络中的现有网络之上创建覆盖网络(overlaynetwork)。该覆盖网络允许数据中心使用网络覆盖协议扩展到超出现有网络的限制。

由于新的网络覆盖协议的出现,高性能网络中数据中心中的数据中心或应用的扩展要求额外的数据包解析和处理复杂度。为了赶得上扩展的数据中心的更高吞吐量要求,一些网络协议级的卸载需要在最低硬件组件级来被执行。例如,网络协议级的卸载可以由网络接口卡(nic)、交换机或nic和交换机的组合(两者之间分享该工作)来执行。取决于卸载引擎存在的位置,卸载引擎需要被不同地优化,以便实现更高的吞吐量和低时延。

进一步,随着高性能网络越来越多地被用于支持云计算,越来越多的不同类型的覆盖协议可以在高性能网络中被使用。

正因如此,提供包处理框架将是有利的,该包处理框架可被编程为支持各种覆盖协议并且不要求改变支持该框架的硬件组件。无论包处理框架是用在nic中或是用在交换机中,或是用在nic和交换机两者中,包处理框架具有高吞吐量和低时延而没有额外的优化也都将是有利的。



技术实现要素:

根据实施例,本文描述的是用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统和方法。所述包分类框架可以包括多个基于硬件的可编程分类原语,分类原语包括关键字组成原语、关键字组成规则原语、匹配操作逻辑结构和下一操作原语。分类原语可以逻辑地串在一起,其中来自一个分类原语的结果被馈送到下一个分类原语,直到数据包的处理被完成。分类框架可以使用状态机来跟踪数据包处理的状态,并基于数据包的处理状态动态地调整分类原语的行为。利用可编程分类原语,分类框架可以递归地解析多个协议的数据包,而不要求任何硬件改变。

附图说明

图1示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。

图2进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。

图3进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。

图4进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。

图5示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的方法。

图6示出了根据实施例的示例性高性能网络。

具体实施方式

在高性能网络中,包分类是指将数据包分类为“流(flow)”的过程,使得属于同一流的所有数据包遵守预定义的规则并以相似方式被处理。例如,非尽力而为服务可能需要包分类,诸如防火墙和服务质量。

如上所述,支持云计算可以在高性能网络中将解析和处理复杂度添加到数据分类。

为了处理解析和处理复杂度,本文描述了可编程包分类框架,该框架可包括关键字组成原语、关键字组成规则原语、匹配操作逻辑结构和下一操作原语。分类原语可以逻辑地串在一起,其中来自一个分类原语的结果被馈送到下一个分类原语,直到数据包的处理被完成。每个分类原语可以是网络设备中的一组汇编指令。

如本文所使用的,根据实施例,关键字组成原语可用于基于从先前处理原语或结构传递的关键字组成规则来动态地创建用于匹配操作逻辑结构的查找关键字。

对于当前正在处理的数据包,各种字节可以被选择并被连接成关键字数组结构。字节选择可以基于关键字组成规则,关键字组成规则可以指定字节选择数组,字节选择数组具有指向数据包中的字节位置的索引。索引可以是相对于数据包的开始位置或者相对于正在被处理的当前网络层的开始位置的,或者可以作为匹配规则的结果被导出。

根据实施例,每个查找关键字可以与用于确定上下文(context)的唯一标识符(id)相关联,在该上下文下,查找关键字被用于匹配操作表中的匹配操作查找。每个查找关键字还可以与大小相关联,该大小可以用于确定要从数据包的报头中选择的相关字节的数量,以构造查找关键字。

如本文中还使用的,根据实施例,关键字组成规则原语可以表示包括查找关键字id、字节选择数组、查找关键字的长度和表id的结构。匹配操作表中的每个查找可以导致上述用于为数据包处理的下一循环构造查找关键字的结构。关键字组成规则结构/原语可以或者通过匹配操作表中的每个匹配被内联指定,或者通过使用指向另一个预编程结构的指针间接指定。

根据实施例,对于包处理流水线中的第一个循环,可以得到相似的结构作为默认。例如,可以基于来自网络设备上的多个物理入口端口的到达端口来导出默认结构。

如本文进一步使用的,根据实施例,匹配操作逻辑结构可以包括一个或多个三态内容可寻址存储器(tcam)以及其中的一个或多个查找表。

如上所述,表id可以在用于构造查找关键字的关键字组成规则原语中被指定。基于表id,可以选择相应的查找表用于关键字匹配查找。每次在所选查找表中检测到关键字匹配时,一个或多个操作可以被匹配到该关键字匹配。当所选查找表中的一个或多个条目可以与查找关键字匹配时,基于优先级规则的tcam结构可以被用来确定唯一操作。

此外,如本文所使用的,下一操作原语可以指定关键字组成规则结构,如上所述,关键字组成规则结构可以包括关键字id和下一表id。下一表id可以表示当前查找表或不同的查找表。

根据实施例,下一操作原语可以包括特定于包解析匹配结果的操作,诸如丢弃、转发和重定向;和结束或继续(endorcontinue)标志,该标志指定该包处理是否需要通过查找更多字段来继续,或者被终止。

此外,下一操作原语可以为包处理引擎或解析器指定一个或多个优先级规则,以当对于查找表中的特定关键字匹配在匹配操作表中有多个记录可用时确定最终操作。

利用上述包分类原语,可编程和灵活的包分类框架可以在网络设备中被提供。由于同一查找表可以用不同的查找关键字多次使用,因此可以实现tcam的高效使用。进一步,包分类框架可被用于基于递归tcam/表查找,在细粒度流基础上执行更深的包检测。

根据实施例,分类框架可以使用状态机来跟踪数据包处理的状态,并且基于数据包的处理状态动态地调整分类原语的行为。

利用可编程分类原语,分类框架可以解析多个协议的数据包而不要求任何硬件改变。进一步,包分类框架独立于底层网络技术,并且可以一致地应用于或者infiniband或者以太网或者其他类型的网络技术。

图1示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。

如图1所示,网络设备101,例如infiniband或以太网中的网络接口卡(nic)或交换机,可以包括多个tcam,例如tcama117、tcamb118、tcamc119和tcamd120;微处理器103;和静态随机存取存储器(sram)108。

根据实施例,tcama、tcamb和tcamc中的每一个可以包括查找表。tcamb和tcamc中的查找表未在图中示出。tcama中的查找表(例如,查找表a121)可以包括多个字段/列,以及多个预先填充的记录/条目。

根据实施例,查找表a中的多个字段/列可以包括当前状态127、关键字id129、关键字131和关键字掩码132。关键字字段中的每个值可以包括与覆盖协议中的一个或多个头字段相对应的字节。例如,关键字字段中的值可以是表示虚拟可扩展lan(vxlan)数据包中的外部ip报头以及一个或多个附加的头字段的字节。

根据实施例,当前状态字段中的每个值可以是指示关键字与哪个协议层相关联的字节。例如,当前状态的值可以是l3层。

如图1中进一步所示,网络设备101可以包括多个入口端口107,在入口端口107处数据包(例如,数据包105)可以被接收。sram108可以包括包解析器109、状态机111和关键字组成原语141,每个都可以是用汇编指令编写的程序。

根据实施例,状态机可以跟踪数据包的处理状态。包解析器可以接收数据包105,并且与状态机通信以用处理状态更新状态机或从状态机接收处理状态。包解析器可以进一步调用关键字组成原语141以基于或者默认关键字组成规则(图1中未示出)或者来自关键字组成规则结构136的规则,来构造查找关键字140,关键字组成规则结构136由tcam120中的匹配操作表125组成。

根据实施例,基于匹配操作表中的匹配,查找关键字可以被呈现给由默认关键字组成规则或关键字组成规则指定的查找表。与指定的查找表中的查找关键字的记录匹配可导致匹配操作表125中的记录匹配。

根据实施例,匹配操作表中的匹配可以包括一个或多个操作,例如,继续下一个查找表、退出和其他处理步骤。对应于这些操作的可以是多个字段,用于为包处理的下一循环构造关键字组成规则结构。多个字段可以包括下一关键字(查找关键字)133、指示选择哪些字节用于构造下一查找关键字的关键字数组选择135、以及用于下一查找表137的id137。

根据实施例,tcama、tcamb、tcamc和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的查找表a121中执行查找。

例如,默认关键字组成规则结构可以包括以下信息:关键字id=0;长度=8;关键字数组选择=字节:0-5,字节16-17。

根据实施例,默认表id(例如,查找表a)和上述信息可以被用来构造关键字{port,macda,vlan},其中“port”是vxlan数据包被接收的端口号,“macda”是媒体访问控制(mac)目的地地址,以及“vlan”是虚拟lan的类型。

如图2中进一步所示,查找表a中与查找关键字的匹配可导致匹配操作表中的匹配。

例如,匹配操作表中的匹配可以包括一个或多个操作215,例如,“用户关键字#2&继续;下一偏移(nextoffset)=0”;下一表id219,例如,“查找表b”;关键字数组选择211,例如,l3字节:13-20,11;l4字节:0-3;以及下一关键字id213,例如,关键字#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&循环;下一偏移(nextoffset)=8”;下一表id319,例如,“查找表a”;关键字数组选择311,例如,字节:5-7,8-13,23-32;以及下一关键字id313,例如,关键字#3。上述信息可用于构造关键字组成规则结构336,以用于数据包处理的下一循环。

图4进一步示出了根据实施例的用于提供可编程包分类框架以在高性能网络中的网络设备中使用的系统。

如图4所示,包解析器可以调用433关键字组成原语,以基于图3中组成的关键字组成规则结构来构造新的查找关键字440。

根据实施例,查找关键字440可以包括关键字id“id3”,基于字节选择数组(具有指向数据包中的字节位置的索引)从数据包221的报头中选择的多个其他头字段。由于由字节数组表示的查找关键字440包括关键字的id,因此查找关键字可以被呈现给与在紧接前一个循环(即图3中所描述的循环)中使用的查找表相同的查找表(即查找表a121)。

如图4所示,图4中的包解析器109可以处理在数据包221的原始l2帧处的头字段,其由状态机111中的内部l2层435的状态示出。

根据实施例,在查找关键字440被呈现给查找表a并且与查找表中的记录匹配之后,匹配操作表中的操作415可以被触发,以通过由下一关键字id413、下一关键字的关键字数组选择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可以执行网络的周期性光扫描(lightsweep)以检查拓扑改变。如果在光扫描期间发现了改变,或者如果用信号表示网络改变的消息(陷阱)被sm收到,则sm可以根据发现的改变重新配置网络。

例如,sm可以在网络拓扑改变时重新配置网络,诸如在链路故障时,在设备被添加时或在链路被移除时。重新配置步骤可以包括在网络初始化期间执行的步骤。此外,重新配置可以具有限制在网络改变发生的子网的本地范围。此外,对具有路由器的大型结构进行分段可能会限制重新配置范围。

图6中示出了示例性infiniband结构,其示出了根据实施例的infiniband环境的图示。在图1所示的示例中,节点a-e601-605使用infiniband结构620通过相应的主机通道适配器611-615进行通信。根据实施例,各种节点,例如节点a-e601-605,可以由各种物理设备表示。根据实施例,各种节点,例如节点a-e601-605,可以由诸如虚拟机的各种虚拟设备表示。

本发明可以使用一个或多个传统的通用或专用数字计算机、计算设备、机器或微处理器来便利地实现,包括根据本公开的教导编程的一个或多个处理器、存储器和/或计算机可读存储介质。基于本公开的教导,技术程序员可以容易地准备合适的软件编码,这对于软件领域的技术人员来说是明晰的。

在一些实施例中,本发明包括计算机程序产品,其是非暂时性存储介质或计算机可读介质,其上存储有可用于对计算机进行编程以执行本发明的任何过程的指令。存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、dvd、cd-rom、微驱动器和磁光盘、rom、ram、eprom、eeprom、dram、vram、闪存设备、磁卡或光卡、纳米系统(包括分子存储器ic),或适用于存储指令和/或数据的任何类型的介质或设备。

本发明的实施例的前述描述出于说明和描述的目的已经被提供。其并非旨在穷举或将本发明限制于所公开的精确形式。对于本领域技术人员来说许多修改和变化是明晰的。修改和变化包括所公开特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使得本领域其他技术人员能够理解本发明的各种实施例并且具有适合于预期的特定用途的各种修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1