第三方控制的数据包转发路径的网络装置数据平面沙盒的制作方法

文档序号:21360388发布日期:2020-07-04 04:33阅读:209来源:国知局
第三方控制的数据包转发路径的网络装置数据平面沙盒的制作方法

本申请是申请号为201610991565.x、申请日为2016年11月10日、发明名称为“第三方控制的数据包转发路径的网络装置数据平面沙盒”的专利申请的分案申请。

本公开涉及基于数据包的计算机网络,并且更具体而言,涉及在计算机网络装置内处理数据包。



背景技术:

计算机网络是可以交换数据和分享资源的大量互连的计算装置的集合。实例网络装置包括在开放系统互连(osi)参考模型的第二层(即,数据链路层)内操作的层2装置以及在osi参考模型的第三层(即,网络层)内操作的层3装置。计算机网络内的网络装置通常包括控制单元,其为网络装置和用于路由或切换数据单元的转发元件提供控制平面功能。在一些情况下,例如,网络装置可以包括多个数据包处理器和交换结构,其共同提供转发平面,用于转发网络流量。

由控制单元提供的控制平面功能包括以路由信息库(rib)的形式储存网络拓扑,执行路由协议以与对等路由装置通信从而保持和更新rib,并且提供管理接口以允许网络装置的用户访问和配置。控制单元保持表示网络的总体拓扑的路由信息并且限定在网络内到目的地前缀的路由。

控制单元获得转发信息库(fib),其包括由控制单元根据路由信息和控制信息生成的多个转发结构。控制单元在数据平面内安装转发结构,以可编程地配置转发元件。构成转发结构的数据和指令为网络装置接收的每个进入数据包限定内部转发路径。例如,为了生成路由表查找转发结构,控制单元选择由网络拓扑限定的路径并且将数据包关键信息(例如,目的地信息和来自数据包报头的其他选择信息)映射到一个或多个特定的下一跳网络装置并且最后映射到网络装置的接口卡的一个或多个特定的输出接口。在某些情况下,控制单元可以将转发结构安装到每个数据包处理器内,以在每个数据包处理器内更新fib并且在数据平面内控制流量转发。分支控制和数据平面功能允许更新数据平面内的一个或多个fib,而不使网络装置的数据包转发性能退化。



技术实现要素:

总体上,本公开描述了用于促进受约束的第三方访问网络装置数据平面的内部数据包转发路径的技术。例如,网络装置转发路径可以配置有一个或多个“沙盒”,每个沙盒在总体转发路径内分界独立的、并行的以及异步转发路径逻辑。虽然总体转发路径由本地应用程序和处理来管理和配置,本地应用程序和处理在网络装置控制平面内执行并且由网络装置制造商开发以管理网络装置的操作,但是本地应用程序可以在总体转发路径内配置一个或多个沙盒。将在沙盒内的转发路径逻辑的配置委托给第三方开发的一个或多个应用程序(“第三方应用程序”),所述第三方应用程序由网络装置制造商开发并且网络装置制造商很少或者不控制所述第三方应用程序。

一旦在网络装置的数据平面的数据包处理器(例如,转发集成电路)内配置,沙盒就可以通过这种方式向第三方应用程序呈现在数据包处理器内的独立的、隔离的、虚拟数据包处理器,使得第三方应用程序在沙盒的确定范围内完全控制由转发逻辑执行的操作。为了执行隔离,沙盒可以由本地应用程序配置有定义明确的输入和输出接口,通过所述接口,数据包分别进入和离开网络装置的数据包处理器的总体转发路径。

在一些实例中,响应于从控制平面应用程序中接收指令而配置转发路径的数据包处理器驱动器向应用程序暴露单独的接口:为转发路径提供全套数据包处理操作的本地接口以及为转发路径提供更少的一组数据包处理操作的沙盒接口。本地接口允许网络装置的本地应用程序使用数据包处理器可用的任何数据包处理操作来配置总体转发路径,包括配置一个或多个沙盒。沙盒接口使第三方应用程序能够为沙盒配置从更少的一组数据包处理操作中提取的数据包处理操作。由沙盒接口通过这种方式提供的更少的一组数据包处理操作约束了允许应用于由沙盒处理的数据包流的操作的类型,但是促进由第三方应用程序完全控制沙盒。

所描述的技术可以提供一个或多个优点。例如,在总体转发路径内隔离沙盒可以保护沙盒转发逻辑远离剩余的转发路径转发逻辑,反之亦然。进一步,使沙盒的控制与本地应用程序分离,减少并且至少在某些情况下消除了在转发逻辑中于沙盒与剩余的转发路径之间的配置依赖性,使得沙盒和剩余的转发路径可以作为并行异步的部件被配置和执行。

而且,在某些情况下,由沙盒接口提供的更少的一组数据包处理操作可以约束在沙盒内可执行的操作的类型,以尤其防止沙盒转发逻辑从沙盒中“跳出”,并且由此限制数据包处理操作离开由本地应用程序配置的定义明确的出口端口。更少的一组数据包处理操作通过这种方式进一步促进沙盒隔离。作为另一个实例优点,通过例如根据由网络装置运营商规定的配置为沙盒配置指定的资源限制,本地应用程序可以约束可用于沙盒的资源量。这可以防止第三方应用程序因错误配置、软件问题或对网络装置或第三方应用程序/控制器的恶意攻击而耗尽转发路径资源。

在一个实例中,一种方法包括:由网络装置的控制平面执行的第一应用程序经由由网络装置的转发单元执行的第一接口为所述转发单元的内部转发路径配置确定处理由所述转发单元接收的数据包的第一指令,其中,所述第一应用程序将所述内部转发路径配置成包括沙盒,所述沙盒包括用于在所述内部转发路径内内联配置的指令的容器,并且其中,所述内部转发路径的至少一部分储存到所述转发单元的存储器中并且由所述转发单元的数据包处理器可执行。所述方法还包括:由网络装置的控制平面执行的第二应用程序经由由网络装置的转发单元执行的第二接口为所述沙盒配置确定在所述沙盒内处理数据包的第二指令。所述方法还包括:响应于确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联,由所述数据包处理器通过执行为所述沙盒配置的第二指令,来处理所述数据包。

在另一个实例中,一种网络装置包括:控制平面,其被配置成执行第一应用程序和第二应用程序;以及转发单元,包括:接口卡,其被配置成接收数据包;数据包处理器,其可操作地耦接至存储器;内部转发路径,其中,所述内部转发路径的至少一部分储存到所述存储器中并且由数据包处理器可执行;转发单元处理器;以及第一接口和第二接口,其被配置成由所述转发单元处理器执行,其中,所述第一应用程序被配置成通过所述第一接口将所述内部转发路径配置成包括沙盒,所述沙盒包括用于在所述内部转发路径内内联配置的指令的容器,其中,所述第二应用程序被配置成通过所述第二接口为所述沙盒配置有确定在所述沙盒内处理数据包的第二指令,并且其中,所述数据包处理器被配置成响应于确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联,通过执行为所述沙盒配置的第二指令,来处理所述数据包。

在另一个实例中,一种永久性计算机可读介质包括指令,所述指令用于促使网络装置的一个或多个可编程处理器执行以下:通过被配置成由网络装置的控制平面执行的第一应用程序经由被配置成由网络装置的转发单元执行的第一接口为所述转发单元的内部转发路径配置有确定处理由所述转发单元接收的数据包的第一指令,其中,所述第一应用程序将所述内部转发路径配置成包括沙盒,所述沙盒包括用于在所述内部转发路径内内联配置的指令的容器,并且其中,所述内部转发路径的至少一部分储存到所述转发单元的存储器中并且由所述转发单元的数据包处理器可执行,其中,所述数据包处理器是所述一个或多个可编程处理器的可编程处理器;通过被配置成由网络装置的控制平面执行的第二应用程序经由被配置成由网络装置的转发单元执行的第二接口为所述沙盒配置有确定在所述沙盒内处理数据包的第二指令;并且由所述数据包处理器响应于确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联,通过执行为所述沙盒配置的第二指令来处理所述数据包。

在附图和以下描述中陈述本发明的一个或多个实施方式的细节。通过描述和附图并且通过权利要求,本发明的其他特征、目标以及优点将变得显而易见。

附图说明

图1是示出根据本文中描述的技术配置数据平面沙盒的实例网络装置的方框图;

图2是进一步详细示出图1的网络装置的示例实例的方框图;

图3是示出具有根据本公开中描述的技术配置的转发路径沙盒(sandbox)的网络装置数据平面的方面的方框图;

图4是进一步详细示出根据本公开中描述的技术配置的示例沙盒的方框图;

图5是示出根据本公开中描述的技术配置的网络装置的元件的方框图;

图6是示出用于根据本公开中描述的技术配置和使用数据平面沙盒的网络装置的示例操作模式的流程图。

在整个附图和文本中,相似的参考字符表示相似的部件。

具体实施方式

图1是示出根据在本文中描述的技术配置数据平面沙盒的示例网络装置的方框图。网络装置10可以包括路由器,例如,提供商边缘或用户边缘路由器、核心路由器、或另一种类型的网络装置,例如,交换机。在该实例中,网络装置10包括为装置提供控制平面功能的控制单元12。网络装置10还包括多个转发单元20a–20n(“转发单元20”)和交换结构26,其共同提供数据平面,以用于处理网络流量。转发单元20通过接口卡22a–22n(“ifc22”)的接口接收和发送数据包,每个接口卡与相应的一个转发单元20相关联。每个转发单元20及其相关联的ifc22可以表示可插入网络装置10的底盘(未示出)内的单独线卡。示例线卡包括柔性可编程集成电路(pic)集中器(fpc)、密度端口集中器(dpc)以及模块端口集中器(mpc)。每个ifc22可以包括层2(l2)技术的各种组合的接口,包括以太网、千兆以太网(gige)以及同步光纤网络(sonet)接口,这些接口提供l2接口,以用于传输网络数据包。在各个方面,每个转发单元20可以包括更多或更少的ifc。交换结构26提供转发单元20之间的高速互连,用于将进入的数据包转发给转发单元20的出口转发单元,以通过包括网络装置10的网络输出。

控制单元12由内部通信链路28连接至每个转发单元20。例如,内部通信链路28可以包括100mbps以太网连接。通过内部通信链路28发送指令和其他配置数据,控制单元12将转发单元20配置成限定应用于由转发单元20接收的数据包的数据包处理操作。

控制单元12执行多个应用程序,包括本地应用程序14a–14k(“本地应用程序14”)和第三方应用程序15。每个应用程序可以表示由控制单元操作系统管理的单独处理。本地应用程序14可以表示由网络装置10的制造商开发和部署的用户级处理。这样,本地应用程序14位于网络装置10的“本地”,这是因为应用程序的开发由制造商仔细管理,以促进网络装置10的安全、稳健以及可预测的操作,至少部分根据运营商(例如,服务提供商、企业或网络装置10制造商的其他用户)规定的配置限定这种操作。除了其他功能,本地应用程序14还可以运行网络管理软件,执行路由协议以与对等路由装置通信,保持和更新一个或多个路由表,并且创建一个或多个转发表以安装到转发单元20中。

第三方应用程序15表示通过沙盒接口18配置沙盒的应用程序。“第三方”通常是网络装置10的运营商,而非网络装置10的制造商。然而,应用程序15不必由第三方开发,并且在某些情况下可以例如是由网络装置10的制造商开发的应用程序。在某些情况下,第三方应用程序15提供外部api,通过该外部api,外部控制器(例如,软件限定的网络控制器和网络管理系统)可以发送表示由转发单元20执行的数据包处理操作的数据。在这种情况下,第三方应用程序15操作作为到外部控制器的网络装置10数据平面的接口。

控制单元12可以包括一个或多个处理器(在图1未示出),所述处理器执行软件指令,例如,用于限定软件或计算机程序的指令,该软件指令储存到计算机可读储存介质(再次在图1未示出)中,例如,永久性计算机可读介质,包括储存装置(例如,硬盘驱动器或光学驱动器)和/或存储器,例如,随机存取存储器(ram)(包括各种形式的动态ram(dram),例如,ddr2sdram,或静态ram(sram))、闪速存储器、可以用于以指令或数据结构的形式承载或储存期望的程序代码和程序数据的并且可以由处理器访问的另一种形式的固定或可移除的储存介质、或者储存用于促使一个或多个处理器执行在本文中描述的技术的指令的任何其他类型的易失性或非易失性存储器。可替换地或者此外,控制单元12可以包括专用硬件,例如,一个或多个集成电路、一个或多个专用集成电路(asic)、一个或多个专用特殊处理器(assp)、一个或多个现场可编程门阵列(fpga)、或专用硬件的一个或多个以上示例的任何组合,以执行在本文中描述的技术。

转发单元20中的每个转发单元包括至少一个数据包处理器24,在数据包穿过网络装置10的内部架构时,该处理器通过对经由各个内部数据包转发路径的每个数据包执行一系列操作来处理数据包。例如,转发单元20a的数据包处理器24a包括一个或多个可配置的硬件芯片(例如,芯片组),在通过在控制单元12上执行的应用程序配置时,所述芯片限定对由转发单元20接收的数据包所执行的操作。在一些示例中,每个芯片组可以表示“数据包转发引擎”(pfe)。每个芯片组可以包括不同的芯片,每个芯片具有专用功能,例如,排队、缓冲、接口连接以及查找/数据包处理。每个芯片可以表示基于asic、基于fpga或其他可编程硬件逻辑。

例如,在输出之前,可以由对应的入口接口、入口转发单元20、出口转发单元20、或数据包通向的网络装置10的其他元件(例如,一个或多个服务卡)中的任一个对每个数据包执行操作。数据包处理器24处理数据包,以识别数据包性能并且执行绑定到所述性能的动作。每个数据包处理器24包括转发结构,在执行时,所述结构促使数据包处理器检查每个数据包的内容(或另一个数据包性能,例如,进入接口),并且例如,在此基础上做出转发决定、应用滤波器,和/或执行核算、管理、流量分析以及负荷平衡。在一个示例中,每个数据包处理器24沿着网络装置的内部数据包转发路径布置转发结构作为下一跳数据,该转发结构可以串连在一起作为一系列“跳”。数据包处理的结果确定数据包由转发单元20的数据包处理器24从其在一个ifc22上的输入接口中转发给其在一个ifc22上的输出接口或者由该数据包处理器24处理的方式。

在很多情况下,转发结构执行查找操作,例如,树(或线索)搜索、表格(或索引)搜索、过滤确定和应用、或速率限制器确定和应用。查找操作在查找数据结构(例如,查找树)内定位项目,该项目与数据包或数据包流的数据包内容或另一个性能匹配,例如,数据包的入站接口。

被配置成由控制单元12执行的应用程序确定数据包处理器24要应用于数据包的数据包处理操作。通过将表示数据包处理操作的数据发送给转发单元20,应用程序将数据包处理器24配置成执行数据包处理操作。这种数据可以包括表示高级数据包处理要求(例如,路由查找和过滤)的抽象转发结构。数据包处理操作可以包括基础数据表转发操作,例如,输入的数据包处理、路由查找以及输出的数据包处理,以及服务功能,例如,数据包过滤或访问控制、统计取样、流量监管、速率控制以及核算。

转发单元20将表示从应用程序接收的数据包处理操作的数据转化成包括由相应的数据包处理器24可执行的指令的转发结构或“下一跳”,并且将转发结构储存到存储器(在图1未示出)中。数据包处理器24执行转发结构,以处理接收的数据包,从而满足由应用程序提供的高级数据包处理要求。通过这种方式,应用程序将路径和下一跳(操作)的更高级表示注入由数据包处理器储存的并且至少部分限定由数据包处理器24执行的数据包处理操作的可配置的转发状态的流中。由于转发结构可以进入其他转发结构,所以转发结构可以串连在一起,以限定针对规定的数据包的一组数据包处理操作,并且形成该数据包的“转发路径”。因此,这组转发结构以及由数据包处理器24执行和使用的转发状态可以可替换地称为转发路径。

根据在本公开中描述的技术,数据包处理器24可以均配置有一个或多个沙盒28。每个数据包处理器24可以相对于本公开的技术促进相似的并且同时的沙盒功能,在后文中主要关于数据包处理器24a描述所述功能。

本地应用程序14将沙盒配置数据25发送给转发单元20a的本地接口16a,以为数据包处理器24a配置沙盒28a。沙盒配置数据25可以包括指定沙盒28a的沙盒标识符、为沙盒28a分配的资源量、以及沙盒28a的端口映射的数据。沙盒28a表示数据包处理器24a的独立的、并行的以及异步转发路径逻辑,该逻辑被暴露以由第三方应用程序15通过沙盒接口18a配置。虽然数据包处理器24a的总体转发路径由本地应用程序14管理和配置,但是本地应用程序14可以以将总体转发路径内的沙盒转发逻辑的配置委托给第三方应用程序15的方式配置沙盒28a。第三方应用程序15将表示数据包处理操作的数据发送给沙盒接口18a,该接口将数据包处理操作转化成由相应的数据包处理器24可执行的指令并且将指令储存到存储器中。虽然示出了用于数据包处理器24a的仅仅一个沙盒28a,但是数据包处理器24a可以配置有多个独立的沙盒。

沙盒28a表示用于数据包处理器24a的内部转发路径内内联配置的指令的容器。在一些示例中,沙盒28a是“逻辑”容器,这是因为如果指令由沙盒接口18a配置在沙盒28a内,则指令在沙盒28a“内部”作为数据包处理器24a的内部转发路径的一部分。在这种示例中,沙盒28a可以通过这种方式向第三方应用程序15呈现数据包处理器24a内的独立的、隔离的、虚拟数据包处理器,以便第三方应用程序对通过沙盒28a逻辑在沙盒28a的确定范围内执行的操作具有完全控制。

在其他示例中,沙盒28a可以表示以与主数据包处理器24a以及与转发路径66在物理上分离的转发逻辑的形式的物理上分离的数据包处理器。在这种示例中,沙盒28a可以从限定沙盒28a的转发路径的物理上分离的存储器读出指令。在这种示例中,沙盒28a可以通过这种方式向第三方应用程序15呈现与数据包处理器24a的转发路径66内联的独立的、隔离的数据包处理器,以便第三方应用程序对由沙盒28a逻辑在沙盒28a的物理上分离的范围内执行的操作具有完全控制。

转发单元20a执行单独的接口,用于将数据包处理器配置成执行数据包处理操作。本地接口16a(在图1显示为“本地if.16a)使本地应用程序14能够为数据包处理器24a配置有全套可用的数据包处理操作,所述操作可以包括索引的或最长前缀的匹配查找、条件句、数据包重写、过滤、结算(accounting,核算)以及其他操作。本地接口16a还使本地应用程序14能够在数据包处理器24a的转发路径内为数据包处理器24a配置沙盒28a的规范和位置。

沙盒接口18a提供第三方应用程序15对发生在沙盒28a“内”的数据包处理操作的控制。即,沙盒接口18a可以通过这种方式将与沙盒28a相关联的转发结构安装为与数据包处理器24a的其他转发结构分离和独立。沙盒接口18a限制安装到沙盒28a中的转发结构的范围,使得安装到沙盒28a中的转发结构不进入(或“跳入”)转发路径内与沙盒不相关联的其他转发结构。同样,本地接口16a限制并非安装到沙盒28a中的转发结构的范围,使得转发结构不进入转发路径内的与沙盒28a相关联的任何转发结构。

本地接口16a可以为沙盒接口18a提供沙盒28a的沙盒标识符和位置。第三方应用程序15将包括表示数据包处理操作的数据的配置数据27发送给沙盒接口18a,该接口促使转发单元20a将数据包处理操作转化成由相应的数据包处理器24可执行的指令并且将指令储存到存储器中以由数据包处理器24a执行。配置数据27可以包括沙盒标识符28a,沙盒接口18a使用该标识符来促进与用于配置数据27中表示的数据包处理操作的指令的沙盒28a分离。在某些情况下,本地接口16a和沙盒接口18a可以由控制单元12执行并且通过内部通信链路28将转发结构安装到数据包处理器24中。

在一些示例中,本地接口16a为转发路径提供全套数据包处理操作,而沙盒接口18a为转发路径提供更少的一组数据包处理操作。在这种情况下,本地接口16a允许本地应用程序14使用数据包处理器24a可用的任何数据包处理操作来配置总体转发路径,包括配置沙盒28a。沙盒接口18a使第三方应用程序15能够为沙盒28a配置从由沙盒接口18a提供的更少的一组数据包处理操作中提取的数据包处理操作。由沙盒接口18a通过这种方式提供的更少的一组数据包处理操作约束允许应用于由沙盒18a处理的数据包流的操作的类型,但是促进由第三方应用程序15完全控制沙盒28a。

数据包处理器24a执行通过本地接口16a和沙盒接口18a安装的转发结构,包括具有由沙盒接口18a完全配置的转发结构的沙盒28a,以处理由转发单元20a接收的数据包。

在数据包处理器24a的总体转发路径内配置沙盒28a,可以提供一个或多个优点。使用openflow、p4的终端用户(客户)应用程序或使用外部控制器生成的转发信息对数据平面编程的其他框架驱动能够使用户访问数据平面的要求,但是同意第三方访问具有通量形式的数百万个互连指令的并且通常由单线程程序管理以防止腐化和避免访问锁定的转发路径,可能具有局限性并且造成不期望的数据平面操作。例如,未使用沙盒而是提供对用于配置数据包处理器24a的公共接口的公共访问的第三方访问转发路径的实现方式例如难以在现场调试,这是因为对整个转发路径的公共访问难以对由本地应用程序管理的转发状态/指令和由外部控制器管理的转发状态/指令进行区分。换言之,由本地应用程序和第三方应用程序/控制器注入无差别的转发状态使得难以分配任何规定转发结构的所有权并且确定数据平面的规定的操作问题的起源。

此外,提供对外部管理api(例如,openflow和p4)的编程访问,可能需要调整本地接口或者提供中间件接口以与外部管理api匹配。由于外部控制器通常需要非常简单的结构,所以可以调整接口以支持这些外部管理api。

而且,虽然本地应用程序14由网络装置10的制造商开发并且可操作地紧密耦接以促进安全性和可靠性,但是增加对数据包处理器24的转发路径的第三方访问可以使路由器易受转发路径中的由于例如配置错误的严重的操作问题、第三方应用程序/控制器的软件问题或者甚至恶意攻击影响。

如在本文中所述,在数据包处理器24a的总体转发路径内配置沙盒28a,可以提供对转发路径的定义明确的和结构化访问,以便可持续地支持第三方应用程序15以及例如外部管理api,例如,openflow和p4。在总体转发路径内隔离沙盒28a可以保护沙盒28a转发逻辑远离剩余的转发路径转发逻辑,反之亦然。进一步,使沙盒28a的控制与本地应用程序14分离减少了并且至少在某些情况下消除了转发逻辑中沙盒28a与剩余的转发路径之间的配置依赖性,使得沙盒28a和剩余的转发路径可以作为并行异步的部件被配置和执行。

而且,在某些情况下,由沙盒接口18a提供的更少的一组数据包处理操作可以约束在沙盒28a内可执行的操作的类型,以除此之外防止沙盒28a转发逻辑从沙盒28a中“跳出”,从而限制数据包处理操作离开由本地应用程序14配置并且确定性管理的定义明确的沙盒出口。更少的一组数据包处理操作通过这种方式进一步促进沙盒28a分离。作为另一个示例优点,本地应用程序14可以通过例如根据由网络装置运营商规定的配置为沙盒28a配置有指定的资源限制,来约束沙盒可用的资源量。这可以防止第三方应用程序15因错误配置、软件问题或对网络装置10或第三方应用程序15或外部控制器的恶意攻击而耗尽转发路径资源。

图2是进一步详细示出根据在本文中描述的技术配置数据平面沙盒的示例网络装置的方框图。在图2示出的网络装置10可以表示图1的网络装置10的示例实例。

在该示例中,控制单元12包括提供控制平面操作环境以执行在用户空间41内执行的各种用户级主机应用程序的软件和硬件的组合。通过示例,主机应用程序可以包括第三方应用程序15、具有命令行接口的管理接口处理57和/或用于接收并且响应于管理指令的图形用户接口处理、用于执行协议48a–48k(统称为“协议48”)中的一个或多个路由协议的本地应用程序14的路由协议处理、用于执行协议中的一个或多个网络管理协议的本地应用程序14的网络管理处理、用于根据协议48中的arp协议响应于arp请求的本地应用程序14的arp处理、用于根据一个或多个用户会话管理协议(例如,gprs隧道协议-c(ontrol))管理用户会话设置和维护的本地应用程序14的用户管理处理等。在这方面,控制单元12可以给网络装置10提供路由平面、服务平面以及管理平面功能。

本地应用程序14、第三方应用程序15以及管理接口57在内核43上执行并且与该内核交互,该内核为用户级处理提供运行时间操作环境。例如,内核43可以表示unix操作系统衍生物,例如,linux或伯克利软件分布(bsd)。内核43提供用户级处理可以与基础系统交互所利用的库和驱动器。控制单元12的硬件环境30包括微处理器52,该微处理器执行从储存装置(在图2也未示出)中载入主存储器(在图2未示出)内的程序指令,以便执行控制单元12的软件堆栈,还包括内核43和用户空间41。微处理器52可以表示一个或多个通用或专用处理器,例如,数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的逻辑装置。因此,在本文中使用的术语“处理器”或“控制器”可以表示任何一个或多个以上结构或者可操作以执行在本文中描述的技术的任何其他结构。

在该示例中,本地应用程序14的路由协议处理执行一个或多个内部和/或外部路由协议,以与其他网络装置交换路由信息并且将所接收的路由信息储存在路由信息库45(“rib45”)内。rib45可以包括限定网络拓扑的信息,包括一个或多个路由表和/或链路状态数据库。路由协议处理解析由在rib45内的路由信息限定的拓扑,以通过网络选择或确定一个或多个活动路径,然后,将这些路径安装到转发信息库42(“fib42”)中。通常,路由协议处理生成具有根或其他查找树的形式的fib42,以将数据包信息(例如,具有目的地信息的报头信息和/或标签堆栈)映射到下一跳并且最后映射到与相应的转发单元20a–20n相关联的接口卡的接口端口。每个转发单元20可以使用不同的fib进行编程。

网络装置10还包括多个转发单元20a–20n(统称为“转发单元20”)和交换结构(未示出),其共同提供数据平面以用于转发网络流量。转发单元20在该示例中由可以表示以太网网络的通信链路23连接至控制单元12。

每个转发单元20可以包括执行基本上相似的功能的基本上相似的元件,在后文中主要关于在图2详细示出的转发单元20a描述所述元件和功能。图2的转发单元20a可以进一步详细示出图1的转发单元20a的示例。转发单元20a分别通过转发单元20a的接口卡(ifc)22的入站接口35和出站接口37接收和发送网络数据包。转发单元20a还包括数据包处理器24a,该处理器表示硬件或者提供网络流量的高速转发的硬件和软件的组合。同样,转发单元20b包括数据包处理器24b等。在一些示例中,一个或多个转发单元20均可以包括与数据包处理器24a基本上相似的多个转发元件。

每个ifc22可以包括层2(l2)技术的各种组合的接口,包括以太网、千兆以太网(gige)以及同步光纤网络(sonet)接口。在各个方面,每个转发单元20可以包括更多或更少的ifc。在一些示例中,每个数据包处理器24与数据包处理器所在的转发单元的不同ifc相关联。连接转发单元20的交换结构(再次在图2未示出)提供高速互连,用于将进入的传输网络数据包转发给所选择的一个转发单元20,以通过一个ifc22输出。

在某些情况下,网络装置10可以表示多底盘路由器,并且交换结构可以包括多级交换结构,例如,3级clos交换结构,该交换结构使用多路复用通信通过光学互连在多底盘路由器的路由节点之间,而中继数据包交换的通信和电路交换的通信。在于2007年8月1日提交的题为multi-chassisrouterwithmultiplexedopticalinterconnects的美国公开号2008/0044181中,描述了使用利用多路复用通信的光学互连的这种多底盘路由器,该案之全文通过引证结合于此。

网络装置10的转发单元20a–20n对网络装置10的控制平面和数据平面进行分界。即,转发单元20a执行控制平面和数据平面功能。通常,数据包处理器24a和ifc22实现转发单元20a的数据平面,而转发单元处理器62(显示为“fwdg.单元处理器62”)执行软件,包括在转发单元20a内实现网络装置10控制平面的一部分的本地接口16、沙盒接口18a以及数据包处理器驱动器60。控制单元12也实现网络装置10控制平面的一部分。转发单元20a的转发单元处理器62管理数据包处理器24a并且执行给控制单元12提供接口并且处理主机绑定的或其他局部网络数据包(例如,包括选项字段值的数据包或ttl到期数据包)的指令。转发单元处理器62可以执行转发单元20a的微内核。由转发单元处理器62执行的微内核可以提供多线程执行环境,用于执行本地接口16、沙盒接口18a以及数据包处理器驱动器60。

数据包处理器24a可以包括可编程的基于asic、基于fpga或其他类型的数据包处理器,在数据包穿过网络装置10的内部架构时,这些处理器通过对经由相应的内部数据包转发路径的每个数据包执行一系列操作来处理网络数据包。数据包处理器24a包括转发结构,在执行时,所述结构检查每个数据包的内容(或另一个数据包性能,例如,进入接口),并且在此基础上,例如,做出转发决定,应用滤波器,和/或执行结算、管理、流量分析以及负荷平衡。在一个示例中,数据包处理器24a沿着数据包处理器24a的内部数据包转发路径66设置作为下一跳数据的转发结构,这些转发结构可以串连在一起作为一系列“下一跳”。数据包处理的结果确定数据包由数据包处理器24从其在转发单元20的入口转发单元上的输入接口中转发给其在转发单元20的出口转发单元上的输出接口或者由该数据包处理器处理的方式。

数据包处理器24a识别数据包性能并且执行绑定到所述性能的动作。数据包处理器24a的一个或多个关键引擎71执行微码(或“微指令”),以控制和应用转发路径的固定硬件元件以处理数据包“密钥”。数据包密钥包括数据包字段和确定数据包沿着内部转发路径的数据包处理的流的其他参数。内部转发路径66(“转发路径66”)可以表示计算机可读储存介质,例如,随机存取存储器,并且包括具有可编程、可执行的微码形式的转发路径部件以及确定由数据包处理器24a执行的数据包处理动作和其他操作的固定硬件元件。转发路径66可以包括例如可执行指令、可编程逻辑以及专用逻辑,除了其他功能以外,这些逻辑还执行查找、速率限制数据包流(例如,使用策略器)并且操纵数据包密钥。转发路径部件可以包括基元(例如,查找表和查找树)以及速率限制器、策略器、计数器、防火墙以及其他部件。

网络装置10的内部转发路径可以包括多个不同的数据包处理器24的相应转发路径66的组合。换言之,数据包处理器24a的转发路径66可以仅仅包括网络装置10的总体内部转发路径的一部分。控制单元12可以将数据包处理器24a的转发路径66配置为识别主机绑定的网络数据包并且朝着控制单元12转发这种数据包。例如,控制单元12可以将包括网络装置10的网络地址的过滤器进行编程并且引导数据包处理器24a将具有与网络地址匹配的目的地地址的网络数据包朝着控制单元12转发。

在一些示例中,数据包处理器24a将要对由数据包处理器24a接收的数据包执行的动作绑定到数据包的一个或多个性能的识别中。即,在识别某些数据包性能时,数据包处理器24a执行绑定至这些性能的动作。数据包性能可以包括数据包元数据,例如,特定数据包的进口接口或出口接口(由pfe确定)以及由数据包和数据包报头携带的信息,例如,数据包报头字段、目的地路由前缀、层4(l4)或传输层协议目的地端口以及数据包有效载荷。绑定至数据包性能的动作可以包括计数、丢弃以及向特定的下一跳或接口的转发、过滤、采用、速率限制以及服务质量(qos)标记、差异化服务(diffserv)、负荷平衡、入侵检测和预防、l2服务等级(cos)、以及l2或l2虚拟专用网络(l2vpn)交换。

每个关键引擎71包括一个或多个关键缓冲器,以储存关键引擎目前正在处理的对应数据包的数据包字段数据。关键缓冲器还可以提供限制的可写存储器,内部转发路径的部件可以写入该存储器中以传递未来部件可访问的消息。在某些情况下,根据在本文中描述的技术,数据包元数据可以包括沙盒的标识符,以指示应通过识别的沙盒处理数据包。例如,绑定至跳入沙盒的接口的数据包可以促使数据包处理器24a将沙盒标识符加入数据包元数据中,因此,向关键引擎71指示应通过沙盒处理数据包。在某些情况下,由沙盒处理的数据包可以在转发单元20之间进行内部转发。中间和出口转发单元20可以使用数据包元数据内的沙盒标识符,来确保所识别的沙盒用于处理数据包。

转发路径66的基元包括具有条目或“项目”的数据结构,其对应于数据包关键值并且将这些值绑定至通过执行转发路径66的关键引擎71要执行的动作。在这方面,基元表示对应于绑定的动作的可执行指令的以及针对可能数据包关键值的数据的紧密耦合的组合。树查找基元可以在路由表内执行最长匹配前缀查找或者在过滤程序内搜索前缀列表。表格查找基元可以确定另一个基元是否应由关键引擎71执行。例如,关键引擎71可以执行数据包性能的表格查找,以确定关键引擎71应进一步执行树查找,以识别数据包的出站接口。数据包处理器24a可以在计算机可读储存介质内储存基元和转发结构(例如,指令),例如,静态随机存取存储器(sram)。虽然在数据包处理器24a内示出,但是基元和转发结构可以储存在位于在转发单元20a上的数据包处理器24a外面的存储器内。

在某些方面,转发路径66的动作使用下一跳数据结构来开始处理。在通过一个关键引擎71结束每个处理步骤时,例如,执行基元或转发结构中的一个,结果是可以规定例如额外处理或处理结束的下一跳。此外,下一跳可以规定关键引擎71要执行的一个或多个功能。示例下一跳功能包括监控(即,速率限制)、计数以及取样。因此,下一跳形成原始数据结构,该结构可以用于开始查找或另一个下一跳、链查找以及下一跳,以允许对单个数据包执行多个查找和其他操作,并且结束查找。关键引擎71可以与储存用于执行下一跳的结果的相应结果(或“查找”)缓冲器相关联。例如,关键引擎71可以执行由下一跳规定的查找并且将查找结果储存到相关联的结果缓冲器中。结果缓冲器的内容可以影响下一跳链内的下一跳的动作。在于2008年11月6日提交的美国申请号12/266,298的platform-independentcontrolplaneandlower-levelderivationofforwardingstructures中可获得关于下一跳和下一跳链的额外信息,该案之全文通过引证结合于此。在于2011年7月29日提交的题为packetforwardingpathprogrammingusingahigh-leveldescriptionlanguage的美国专利申请13/194,571中,并且在于2007年5月8日发布的以及题为systemsandmethodsforprocessingpackets的美国专利7,215,637中,描述了控制平面将具有转发结构的转发平面编程的网络路由器的示例细节,这两个专利的全部内容都通过引证结合于此。

转发单元20a通过ifc22接收入站网络流量,并且数据包处理器24a使用内部转发路径66处理网络流量。数据包处理器24a通过出站接口37查找针对传输网络数据包的出站接口并且转发该传输网络数据包作为出站流量,所述传输网络数据包并非主机绑定的并且也不需要控制平面对逻辑决定进行响应。

转发单元20a执行软件并且向控制单元12呈现接口以配置转发路径66。被配置成由转发单元处理器62执行的数据包处理器驱动器60(在后文中称为“驱动器60”)为转发路径66配置转发路径部件,以由数据包处理器24a执行。转发路径部件可以包括数据包处理器24a可执行的指令。更具体而言,驱动器60可以接收表示数据包处理操作的数据27,并且将数据27转化成可执行指令,驱动器60将这些指令作为互连的转发路径部件安装到转发路径66中,以为由转发单元20a接收的数据包动态生成转发路径66。

根据在本文中描述的技术,驱动器60被配置成通过在总体转发路径内实现独立的、并行的以及异步转发路径逻辑(沙盒28a),来促进多个不同的客户端配置转发路径66。驱动器60呈现单独的接口、本地接口16a以及沙盒接口18a,这些接口能够使沙盒28a的控制与本地应用程序14分离。通过这种方式,沙盒28a表示用于由第三方应用程序15通过沙盒接口18a在数据包处理器24a的内部转发路径内内联配置的指令的逻辑容器。该分离可以促进沙盒28a逻辑独立于由本地应用程序14配置的本地部件70,并且还可以促进本地部件70和沙盒28a的并行控制平面配置。通过本地接口16a,本地应用程序14根据通过管理接口57接收的配置数据47(显示为“配置47”)配置沙盒28a。沙盒28a的配置数据47可以指定沙盒28a的端口映射/绑定,并且在某些情况下,指定沙盒28a的尺寸。该尺寸可以规定为转发路径66资源(例如,内存大小)的百分比或其他相对尺寸标记,或者可以以绝对项(例如,以字节为单位)规定。在图2的示例中,端口映射49将沙盒28a端口映射到ifc22的接口37、39中。

下面是两个沙盒“红色”和“蓝色”的配置数据47的示例:

在以上示例中,沙盒“红色”具有规定为转发路径66资源的10%的最大尺寸。沙盒“红色”具有绑定至接口xe-0/0/0的端口p0以及绑定至接口xe-0/0/1的端口p1。沙盒蓝色具有规定为转发路径66资源的10%的最大尺寸。沙盒红色具有绑定至接口xe-3/0/1的端口p0、绑定至接口xe-3/0/2的端口p1以及绑定至接口xe-0/0/2的端口p3。以上示例的配置数据的端口容器可以表示端口映射49的示例数据,这表示表格、列表或其他数据结构,以使沙盒28a的虚拟端口与ifc22的物理接口35、37相关联。

在某些情况下,沙盒“红色”和“蓝色”可以由相应的客户端管理,这些客户端连接至沙盒接口18a并且通过调用沙盒的名称(例如,“红色”)来管理其沙盒。如果识别的沙盒由本地应用程序14配置,则客户端可以接收具有被限定和连接的配置端口的沙盒环境。如果运营商在配置数据47内重新配置沙盒的端口,则端口从沙盒中消失或出现。这与热交换相似。

驱动器60可以配置

沙盒28a向第三方应用程序15呈现独立的转发引擎。驱动器60管理转发路径66,使得在沙盒28a与转发路径66的剩余指令(例如,本地部件70)之间的接触点在本地应用程序14的控制下并且被确定性管理。具体而言,根据配置数据25配置沙盒28a的驱动器60为沙盒28a配置入口端口53和出口端口55。入口端口53表示沙盒28a的一个或多个虚拟端口,通过这些端口,转发路径66的指令可以跳入沙盒28a并且通过这种方式,进入沙盒28a的数据包处理。驱动器60可以确保本地部件70并不进入经由入口端口53的沙盒28a的任何指令。在以上示例的配置数据中,沙盒“红色”具有直接绑定于ifc22的物理接口35、37的端口,使得到达任何这些绑定的物理端口的数据包通过入口端口53进入沙盒28a和由沙盒28a指令处理。

出口端口55表示沙盒28a的一个或多个虚拟端口,通过这些端口,沙盒28a的指令跳入与沙盒28a不相关联的本地部件70并且通过这种方式离开沙盒28a的数据包处理。驱动器60可以确保经由出口端口55的沙盒28a的任何指令不跳入任何本地部件70。在以上示例配置数据中,沙盒“红色”具有直接绑定于ifc22的物理接口35、37的端口,使得从沙盒端口离开的数据包从“红色”沙盒进入绑定至沙盒出口端口的物理端口。

在一些示例中,入口端口53和出口端口55表示由本地应用程序14控制的间接下一跳,以促进剩余转发路径66与沙盒28a之间的管理的接触点和依赖性。即,数据包分别通过均表示间接下一跳的入口端口53和出口端口55进入和离开。通常,间接下一跳是引用下一跳的中间数据结构。查找数据结构(例如,查找表和查找树)可以进入入口端口53的间接下一跳。通过这种方式,本地应用程序14可以将转发路径66配置成具有由本地应用程序14控制的沙盒28a的定义明确的入口。通过在入口端口53的间接下一跳内修改参考,驱动器60可以规定沙盒28a内的下一跳。通过这种方式,第三方应用程序15可以规定从入口端口53到沙盒28a的剩余部分的转发路径。通过向本地应用程序14和第三方应用程序15提供对间接下一跳的每“侧”的控制,本公开的技术促进沙盒分界。同样,相对于出口端口55,通过切换管理方,沙盒28a的部件可以进入表示一个出口端口55的间接下一跳。通过修改在出口端口55的间接下一跳内的参考,本地应用程序14可以规定从出口端口55到转发路径66的剩余部分的转发路径或者至一个端口37的输出。

在一些示例中,由沙盒接口18a提供的这组数据包处理操作不包括由本地接口16a提供的每个数据包处理操作。例如,沙盒接口18a可以提供更多限制的数据包处理操作,用于由网络装置10进行数据包接收和传输。在某些情况下,沙盒28a可以仅仅被配置成由第三方应用程序15启用流量路由确认,但是不提供用于由网络装置进行的数据包接收和传输的设施。例如,沙盒接口18a可以提供在沙盒28a内配置标签匹配表格的能力,这造成出站标签被操纵并且然后被输出至相应端口。沙盒接口18a可以不提供将沙盒28a配置成直接接收数据包(例如,主机绑定的流量)的能力。换言之,沙盒接口18a可以促进基本转发支持,用于在沙盒28a内建立表格查找和所产生的下一跳,但是具有很少或没有用于数据包接收的设施。通过这种方式,沙盒接口18a可以执行促使所有主机绑定的流量由本地部件70处理的约束,例如,通过发送给本地应用程序14。沙盒接口18a还可以执行防止任何主机起源的流量由第三方应用程序15注入沙盒28a内的约束。为了执行约束,在一些示例中,沙盒28a不提供防止数据包匹配接收(即,向硬件指示接收数据包并且发送给控制平面的能力)而建立任何这种请求。

作为另一个示例,沙盒接口18a可以不提供与数据包重写相关的数据包处理操作。虽然沙盒接口18a可以允许将一些元数据重新分类,用于数据包查找(例如,改变qos特征或标记数据包,用于结算),但是在这种情况下,沙盒28a不访问数据包本身。该特征组可以允许第三方进行数据包的“更深的”分类,但是不改变其通过转发路径66的基本流。

在某些情况下,沙盒接口18a可以可配置成动态改变每个客户端可用的数据包处理操作的类型。换言之,转发路径66内的沙盒可以具有其可用的不同的几组数据包处理操作。通常,然而,沙盒28a将具有从数据包处理器24a中可能具有的特征组中减少的特征组。

沙盒接口18a可以相对于某些数据包处理操作具有高度限制。例如,沙盒接口18a在任何情况下可不允许配置硬件进行的物理端口设置,或者提供到任何嵌入的微码特征的访问,例如,内联持续管理。操作可以通过本地接口16a严格地保留到配置转发路径66的本地应用程序14中。

图3是示出具有根据本公开中描述的技术配置的转发路径沙盒的网络装置数据平面的方面的方框图。在该示例中,逻辑接口查找表80的逻辑入站接口82a–82c绑定到沙盒28a的入口端口53。每个逻辑入站接口82a–82d(“逻辑入站接口82”)可以表示逻辑层2或层3接口,该接口使用识别信息的数据包与在任何入站接口35上接收的数据包匹配并且限定匹配的数据包的转发路径。在某些情况下,逻辑层2接口称为“ifd”,并且逻辑层3接口称为“ifl”或“iff”。

在示出的示例中,与任何逻辑入站接口82a–82c匹配的数据包通过入口端口53跳入沙盒28a,并且数据包处理器24a使用沙盒28a处理这种数据包。相反,与任何逻辑入站接口82d匹配的数据包跳入本地部件70(尤其是部件86),并且数据包处理器24a并不通过沙盒28a处理这种数据包。逻辑入站接口82可以通过这种方式被配置成将那些数据包导向沙盒28a,以由沙盒28a处理,例如,与第三方应用程序15的客户端相关联的数据包流的数据包。

在该示例中,沙盒28a的出口端口55根据沙盒的“防火墙模式”跳入本地部件70。在该模式中,数据包查找和路由由本地应用程序14配置,并且比在沙盒28a内执行的数据包处理操作更早或者在其后发生在处理路径66内。在该模型中,沙盒28a可以具有单个输入和至少一个输出,这取决于应用程序。沙盒28a在入口或出口转发路径内的特定位置绑定到转发路径66内。防火墙模式促进与由智能和动态防火墙提供的功能相似的沙盒功能,第三方应用程序15可以使用该功能在数据包查找和路由之前或之后操纵和过滤沙盒28a内的流量。

在另一种模式(“端口接口映射模式”)中,如上面相对于图2所示和所述,沙盒28a的入口端口53和出口端口55绑定至特定的接口。在该模式中,沙盒28a在概念上是由第三方应用程序15通过沙盒接口18a可配置的微型路由器或微型交换机。该模式可以对sdn应用程序特别有用,例如,openflow和p4应用程序。

图4是进一步详细示出根据本公开中描述的技术配置的示例沙盒的方框图。沙盒100可以表示图1至图3中的任一个的沙盒28a的示例实例。沙盒100包括入口端口53a–53d和出口端口55a–55d。沙盒100包括具有根或其他查找树的形式的查找树102,以将数据包信息(例如,具有目的地信息的报头信息和/或标签堆栈)映射到下一跳104、106,并且最后映射到与转发单元20相关联的接口卡22的出站端口。下一跳104、106和108表示转发路径部件,如在本文中所述。

图5是示出根据在本公开中描述的技术配置的网络装置的元件的方框图。沙盒接口150可以表示图1至图3的沙盒接口18a的示例实例。在该示例中,沙盒接口150使第三方应用程序能够配置沙盒100,以标记数据包从而用于本地接收。沙盒接口150还用作数据包接口,以通过插口160将针对本地接收标记的数据包发送给第三方应用程序15。插口160可以表示linux/bsd或与沙盒100环境相关联的其他网络插口。

第三方应用程序15可以调用沙盒接口150,以向沙盒100配置匹配和接收转发指令,以便将流量重新导向外部软件处理程序中。在示出的示例中,部件106表示匹配和接收下一跳,其将匹配的数据包导向沙盒接口150中,以通过插口160传输给第三方应用程序15。

用于由第三方应用程序15重新注入转发路径内的数据包可以通过相似的方式在沙盒100上往回插入转发路径内。在示出的示例中,部件108表示下一跳,该下一跳使沙盒接口150能够通过插口160从第三方应用程序15中接收数据包。这可以使得从沙盒客户端进行的数据包传输能够由沙盒100监控和控制并且也由客户端控制。

通过绑定至沙盒的插口的本地接收和传输可以促进轻型方法,以使第三方链接在转发路径内的服务,而不需要对本地应用程序14进行任何修改以配置这种链接。第三方可以使用以上技术来执行在转发路径内内联的服务处理,并且通过级联多个沙盒,可以沿着具有由绑定至相应沙盒的插口可到达的服务节点(例如,应用程序、虚拟机以及器具)的服务链引导数据包。例如,沙盒100可以将数据包重新导向插口160以用于服务处理,例如,ipsec处理、防火墙、网络地址转化、传输控制协议(tcp)代理以及其他网络服务。

图6是示出用于根据在本公开中描述的技术配置和使用数据平面沙盒的网络装置的示例操作模式的流程图。为了说明的目的,相对于图2的网络装置描述该操作模式。

根据从网络装置10的运营商接收的配置数据47,通过经由本地接口16a发送配置数据25,在控制单元12上执行的本地应用程序14创建沙盒28a,该配置数据可以规定标识符、分配的资源的指示以及位置沙盒28a。本地接口16a根据配置数据25在转发路径66内创建沙盒28a(200)。本地接口16a可以将一些配置数据25提供给沙盒接口18a,以用于沙盒28a配置。随后,第三方应用程序15使用关于沙盒28a的参考,来将表示数据包处理操作的数据27发送给沙盒接口18a,该沙盒接口生成实现数据包处理操作的指令并且将指令安装到沙盒28a(202)中。本地应用程序14进一步将转发路径66配置成将数据包流映射到沙盒28a(204)。例如,本地应用程序14可以将选择的入站接口35或逻辑接口映射到沙盒28a的入口端口53。可替换地,本地应用程序14可以配置转发路径66内跳入沙盒28a的入口端口53的下一跳。这样,数据包处理器24a使用沙盒28a处理在这种接口上接收的/与这种接口匹配的数据包流。在一些示例中,这种数据包流可以与第三方客户相关联,第三方客户将沙盒28a配置成将沙盒操作约束到与第三方客户和第三方应用程序15相关联的那些数据包流。通过执行沙盒28a,数据包处理器24a处理由转发单元20a接收的并且映射到沙盒28a中的数据包(206)。

在本公开中描述的技术可以至少部分以硬件、软件、固件或其任何组合实现。例如,所描述的技术的各个方面可以在一个或多个处理器内实现,包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或离散逻辑电路以及这种元件的任何组合。术语“处理器”或“处理电路”可以通常表示单独的或者与其他逻辑电路相结合的任何上述逻辑电路或者任何其他等效电路。包括硬件的控制单元还可以执行本公开的一个或多个技术。

这种硬件、软件以及固件可以在相同的装置内或者在单独的装置内实现,以支持在本公开中描述的各种操作和功能。此外,任何描述的单元、模块或元件可以共同地或者作为离散的但是互操作的逻辑装置单独地实现。将不同的特征描述为模块或单元旨在突出不同的功能方面,并且不必表示这种模块或单元必须由单独的硬件或软件元件实现。确切地说,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件元件执行,或者整合在共同的或单独的硬件或软件元件内。

在本公开中描述的技术还可以在包含指令的计算机可读介质中体现或编码,例如,永久性计算机可读介质或计算机可读储存介质。在计算机可读介质内嵌入或编码的指令可以促使可编程处理器或其他处理器执行该方法,例如,在执行指令时。计算机可读储存介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、闪速存储器、硬盘、cd-rom、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读储存介质。应理解的是,虽然术语“计算机可读介质”除了物理储存介质以外还可以包括瞬时介质(例如,信号),但是术语“计算机可读储存介质”表示物理储存介质,而非信号或载波。

除了或者代替以上内容,描述以下示例。在任何以下示例中描述的特征可以供在本文中描述的任何其他示例使用。

示例1.一种方法,包括:

由网络装置的控制平面执行的第一应用程序通过由网络装置的转发单元执行的第一接口向所述转发单元的内部转发路径配置有确定由所述转发单元接收的数据包的处理的第一指令,

其中,所述第一应用程序将所述内部转发路径配置成包括沙盒,所述沙盒包括用于所述内部转发路径内内联配置的指令的容器,并且

其中,所述内部转发路径的至少一部分储存到所述转发单元的存储器中并且由所述转发单元的数据包处理器可执行;

由网络装置的控制平面执行的第二应用程序通过由网络装置的转发单元执行的第二接口为所述沙盒配置有确定在所述沙盒内处理数据包的第二指令;并且

由所述数据包处理器响应于确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联,通过执行为所述沙盒配置的第二指令,来处理所述数据包。

示例2.根据示例1所述的方法,其中,将所述内部转发路径配置成包括沙盒包括为沙盒配置入口端口,其限定所述内部转发路径的第一指令进入沙盒所经由的虚拟端口。

示例3.根据示例2所述的方法,进一步包括:将所述内部转发路径配置成将所述转发单元的逻辑入站接口映射到沙盒的入口端口,其中,确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联包括:由所述数据包处理器使所述数据包与所述逻辑入站接口匹配。

示例4.根据示例2所述的方法,其中,所述入口端口包括包含基准的间接下一跳,其中,配置所述入口端口包括由第一接口将所述间接下一跳存储到存储器中,其中,为所述沙盒配置用于确定在所述沙盒内处理数据包的第二指令包括:由第二接口将所述间接下一跳的参考配置成参考在沙盒内配置的转发路径部件。

示例5.根据示例1所述的方法,其中,将所述内部转发路径配置成包括沙盒包括:为沙盒配置出口端口,其限定所述沙盒内配置的第二指令离开沙盒所经由虚拟端口。

示例6.根据示例5所述的方法,进一步包括:将所述内部转发路径配置成将沙盒的出口端口映射到转发路径部件;并且在通过执行所述沙盒来处理数据包之后,由所述数据包处理器通过执行转发路径部件来处理所述数据包。

示例7.根据示例1所述的方法,其中,确定在所述沙盒内处理数据包的第二指令包括一个或多个转发路径部件,每个部件执行查找树、查找表、速率限制器、策略器以及计数器中的一个。

示例8.根据示例1所述的方法,其中,所述第一接口为数据包处理器提供第一组数据包处理操作,其中,所述第二接口为数据包处理器提供第二组数据包处理操作,并且其中,所述第二组数据包处理操作比所述第一组数据包处理操作包括更少的数据包处理操作。

示例9.根据示例1所述的方法,其中,所述第一应用程序包括由网络装置的制造商开发的本机应用程序,其中,所述第二应用程序表示呈现外部应用程序编程接口的第三方应用程序,所述方法进一步包括:由第二应用程序经由外部应用程序编程接口从位于网络装置外面的控制器接收数据包处理操作,其中,通过执行为沙盒配置的第二指令来处理数据包执行从所述控制器接收的数据包处理操作。

示例10.根据示例1所述的方法,进一步包括:由第一应用程序为沙盒配置插口,其中,通过执行为沙盒配置的第二指令来处理数据包包括:由所述数据包处理器将所述数据包引向插口;由转发单元通过插口将数据包发送给第二应用程序。

示例11.根据示例1所述的方法,进一步包括:由第二应用程序将服务应用于数据包中。

示例12.根据示例1所述的方法,进一步包括:由第一应用程序为沙盒配置插口;并且由转发单元通过插口从第二应用程序接收数据包。

示例13.根据示例1所述的方法,进一步包括:由转发单元的转发单元处理器执行第一接口和第二接口。

示例14.根据示例13所述的方法,进一步包括:由所述转发单元的转发单元处理器执行数据包处理器的驱动器;由所述驱动器响应于从第一接口接收第一数据包处理操作生成第一指令,以实现所述第一数据包处理操作,并且将第一指令安装到内部转发路径中;由所述驱动器响应于从第二接口接收第二数据包处理操作而生成第二指令,以实现所述第二数据包处理操作,并且将第二指令安装到沙盒中。

示例15.根据示例1所述的方法,其中,所述转发单元包括可插入网络装置的底盘内的线卡。

示例16.根据示例1所述的方法,其中,在所述转发单元的内部转发路径内配置沙盒包括:由第一应用程序通过第一接口为所述沙盒配置限定所述沙盒可以配置有的指令量的资源限制。

示例17.根据示例1所述的方法,其中,在所述转发单元的内部转发路径内配置沙盒包括:由第一应用程序通过第一接口为所述沙盒配置沙盒标识符,并且其中,为所述沙盒配置确定在沙盒内处理数据包的第二指令包括:将表示数据包处理操作和沙盒标识符的数据从第一应用程序发送给第一接口,以引导第一接口为所述沙盒配置在沙盒内实现数据包处理操作的第二指令。

示例18.根据示例1所述的方法,进一步包括:由所述数据包处理器将沙盒的标识符加入数据包的数据包元数据中,其中,确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联包括:由所述数据包处理器确定所述数据包元数据包括沙盒的标识符。

示例19.根据示例1所述的方法,其中,所述沙盒包括在所述数据包处理器的内部转发路径内内联配置的指令的逻辑容器。

示例20.一种网络装置,包括:控制平面,其被配置成执行第一应用程序和第二应用程序;以及转发单元,包括:接口卡,其被配置成接收数据包;数据包处理器,其可操作地耦接至存储器;内部转发路径,其中,所述内部转发路径的至少一部分储存到所述存储器中并且由数据包处理器可执行;转发单元处理器;以及第一接口和第二接口,其被配置成由所述转发单元处理器执行,其中,所述第一应用程序被配置成通过所述第一接口将所述内部转发路径配置成包括沙盒,所述沙盒包括用于所述内部转发路径内内联配置的指令的容器,其中,所述第二应用程序被配置成通过所述第二接口为所述沙盒配置有确定在所述沙盒内处理数据包的第二指令,并且其中,所述数据包处理器被配置成响应于确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联,通过执行为所述沙盒配置的第二指令,来处理所述数据包。

示例21.根据示例20所述的网络装置,其中,为了将所述内部转发路径配置成包括沙盒,所述第一应用程序进一步被配置成为为沙盒配置入口端口,其限定所述内部转发路径的第一指令进入沙盒所经由的虚拟端口。

示例22.根据示例21所述的网络装置,其中,所述第一应用程序进一步被配置成将所述内部转发路径配置成将所述转发单元的逻辑入站接口映射到沙盒的入口端口,其中,为了确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联,所述数据包处理器被配置成使所述数据包与所述逻辑入站接口匹配。

示例23.根据示例21所述的网络装置,其中,所述入口端口包括包含基准的间接下一跳,其中,为了配置所述入口端口,所述第一接口将所述间接下一跳存储到存储器中,其中,为了为所述沙盒配置有确定在所述沙盒内处理数据包的第二指令,所述第二接口被配置成将所述间接下一跳的参考配置成参考在沙盒内配置的转发路径部件。

示例24.根据示例20所述的网络装置,其中,为了将所述内部转发路径配置成包括沙盒,所述第一接口被配置成为为沙盒配置出口端口,其限定在所述沙盒内配置的第二指令离开沙盒所经由的虚拟端口。

示例25.根据示例20所述的网络装置,其中,所述第一接口为数据包处理器提供第一组数据包处理操作,其中,所述第二接口为数据包处理器提供第二组数据包处理操作,并且其中,所述第二组数据包处理操作比所述第一组数据包处理操作包括更少的数据包处理操作。

示例26.根据示例20所述的网络装置,进一步包括:驱动器,用于数据包处理器并且被配置成由所述转发单元处理器执行以:响应于从第一接口接收第一数据包处理操作生成第一指令,以实现所述第一数据包处理操作,并且将第一指令安装到内部转发路径中;响应于从第二接口接收第二数据包处理操作生成第二指令,以实现所述第二数据包处理操作,并且将第二指令安装到沙盒中。

示例27.根据示例20所述的网络装置,其中,所述转发单元包括可插入网络装置的底盘内的线卡。

示例28.根据示例20所述的网络装置,其中,为了在所述转发单元的内部转发路径内配置沙盒,所述第一应用程序通过第一接口为所述沙盒配置限定所述沙盒可以配置有的指令量的资源限制。

示例29.一种永久性计算机可读介质,包括用于促使网络装置的一个或多个可编程处理器进行以下操作的指令:被配置成由网络装置的控制平面执行的第一应用程序通过被配置成由网络装置的转发单元执行的第一接口为所述转发单元的内部转发路径配置有第一指令,所述第一指令确定处理由所述转发单元接收的数据包,其中,所述第一应用程序将所述内部转发路径配置成包括沙盒,所述沙盒包括用于所述内部转发路径内内联配置的指令的容器,并且其中,所述内部转发路径的至少一部分储存到所述转发单元的存储器中并且由所述转发单元的数据包处理器可执行,其中,所述数据包处理器是所述一个或多个可编程处理器的可编程处理器;被配置成由网络装置的控制平面执行的第二应用程序通过被配置成由网络装置的转发单元执行的第二接口为所述沙盒配置有第二指令,第二指令确定在所述沙盒内处理数据包;并且由所述数据包处理器响应于确定由所述转发单元接收的数据包与至少部分由第二应用程序控制的数据包流相关联,通过执行为所述沙盒配置的第二指令,来处理所述数据包。

而且,在上述任何示例中陈述的任何特定特征可以组合成所描述的技术的有利示例。即,任何特定特征通常适用于本发明的所有示例。描述了本发明的各种示例。

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