转发平面重置的单独网络设备的制作方法

文档序号:18226657发布日期:2019-07-19 23:31阅读:231来源:国知局
转发平面重置的单独网络设备的制作方法

本公开涉及基于分组的计算机网络,并且更具体地,涉及处理网络设备内的分组。



背景技术:

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

由网路设备提供的控制平面功能包括:以路由信息库(rib)的形式存储网络拓扑、执行用来与对等路由设备通信的路由协议以维护并更新rib,以及提供网络设备的允许用户访问的管理接口和配置。控制单元维护路由信息,该路由信息表示网络的整体拓扑并定义了到网络内目的地前缀的路由。

控制单元导出转发信息库(fib),该转发信息库定义了用于将由转发单元执行的分组查找和其他处理操作的转发路径元素,fib由控制单元根据路由信息和控制信息生成。控制单元在转发平面内安装fib以编程地配置转发单元。存储到转发单元的fib的表示可以被称为硬件fib。

构成转发路径元素的数据和指令可以被连接并设置到转发拓扑内,该转发拓扑为网络设备所接收的每个输入分组定义内部转发路径。例如,为了生成路由表查找转发路径元素,控制单元选择由网络拓扑定义的路由并将分组关键字信息(例如,目的地信息以及来自分组报头的其他选择信息)映射到一个或多个特定下一个跳网络设备并且最终映射到网络设备的接口卡的一个或多个特定输出接口。在一些情况下,控制单元可以将转发路径元素安装到转发单元的每一个内以更新转发单元的每一个内的fib并控制转发平面内的流量转发。对于给定分组,转发单元执行由转发单元的内部转发路径针对分组所定义的转发路径元素,以执行由转发单元内的控制单元定义并配置的动作。分支控制和转发平面功能允许每个转发单元中的fib在不降低网络设备的分组转发性能的情况下得到更新。



技术实现要素:

总体上,本公开描述了用于促进在网络设备的分组处理器“离线”的事件之后重置网络设备转发平面的技术。例如,网路设备可以配置有控制单元,并且该控制单元可以提供和网络设备的多个转发平面(例如,转发单元)对应的控制平面。每个转发单元可以包括一个或多个分组处理器,并且每个分组处理器可以包括一个或多个转发路径。转发路径可以各自包括一系列的指令(例如,元件),该一系列指令被配置为引导分组从网络设备的入口点到网络设备的出口点,从而允许网络设备将该分组朝向其目的地转发。

每个转发单元可以包括转发管理器。每个转发路径的转发路径元素可以对应于转发管理器中存储的控制处理操作的一个或多个“节点”。转发管理器可以被配置为维护和其相应转发路径的节点依赖关系相对应的依赖关系数据结构,并且该依赖关系数据结构可以在网络设备的整个生命期间实时地更新。响应于检测到分组处理器已经上线,转发管理器独立于控制平面并且在不干扰其他在线分组处理器的当前转发操作的情况下,基于依赖关系数据结构对用于分组处理器的转发路径元素进行编程。在一些实例中,转发管理器根据从转发路径中的出口点到转发路径中的入口点的依赖关系数据结构对转发路径元素进行编程。

所述技术可以提供一个或多个优点。例如,依赖关系数据结构可以使单独的分组处理器能够独立于网络设备中的其他分组处理器进行编程,因为在该依赖关系数据结构中记录了每个单独的转发路径的节点依赖关系。此外,转发管理器的节点基础架构可以允许网络设备特别有效地进行编程,因为转发软件的某些部分可以被数个(multiple,多个)分组处理器同时使用,并且单独的转发路径可以被主动地编程为依赖一组自定义节点。

而且,如果分组处理器在返回到在线状态之前离线了一段时间,通过使用依赖关系数据结构可以提供对新近在线的分组处理器的转发路径元素有效地重新编程的能力而无需从头开始对转发路径元素重新编程。服务器可以被配置成基于依赖关系数据结构从分组处理器的出口点到分组处理器的入口点对分组处理器的每个转发路径元素顺序地编程。该编程处理由转发管理器的服务器执行,并且无需来自转发管理器的客户端的输入。客户端可以被配置为从网络设备的控制单元接收控制处理操作。因此,对转发路径元素的编程可以完全在转发单元内执行,无需与控制单元进行通信。

由于客户端并不参与主动维护依赖关系数据结构,客户端可以正常用作服务器,利于使用依赖关系数据结构对分组处理器重新编程。在重新编程处理期间,服务器可以停止处理来自客户端的控制处理操作。这确保了整个网络设备的功能在一个或多个分组处理器正在被编程的同时不会受到干扰。该特征可以用于将分组处理器离线的问题隔离于单个转发单元,而不是允许该问题影响整个网络设备,这在具有许多分组处理器的网络设备中可能是尤其有利的。

在一个实例中,一种方法包括:通过转发管理器针对由网络设备的转发单元的至少一个分组处理器执行的内部转发路径检测多个分组处理器中的至少一个分组处理器已经变成可用于处理分组以进行转发,并且响应于该检测,通过转发管理器停止执行从网络设备的控制单元接收的控制处理操作。该方法进一步包括:通过转发管理器基于依赖关系数据结构对至少一个分组处理器的多个转发路径元素进行编程,其中,依赖关系数据结构包括一个或多个依赖关系,该一个或多个依赖关系各自为多个节点中的节点指示引用该节点的一个或多个节点,并且其中,多个节点中的每个节点对应于多个转发路径元素中的单个转发路径元素。在对至少一个分组处理器的多个转发路径元素进行编程之后,该方法包括通过转发管理器恢复执行从网络设备的控制单元接收的控制处理操作。

在另一实例中,一种网络设备包括控制单元和多个转发单元中的转发单元,转发单元包括转发管理器和分组处理器,其中,分组处理器包括多个转发路径元素。转发管理器被配置为检测分组处理器已经变成可用于处理分组以进行转发,并且响应于检测到分组处理器已经变成可用于处理分组以进行转发,停止执行从控制单元接收的控制处理操作。转发管理器被进一步配置为:基于依赖关系数据结构对分组处理器的多个转发路径元素进行编程,其中,依赖关系数据结构包括一个或多个依赖关系,该一个或多个依赖关系各自为多个节点中的节点指示引用该节点的一个或多个节点,并且其中,多个节点中的每个节点对应于多个转发路径元素中的单个转发路径元素;以及在对分组处理器的多个转发路径元素进行编程之后,恢复执行从网络设备的控制单元接收的控制处理操作。

在另一实例中,一种非暂时性计算机可读介质,其包括指令,该指令用于使网络设备的一个或多个可编程处理器:通过转发管理器针对由网络设备的转发单元的至少一个分组处理器执行的内部转发路径检测多个分组处理器中的至少一个分组处理器已经变成可用于处理分组以进行转发;响应于检测到该至少一个分组处理器已经变成可用于处理分组以进行转发,通过转发管理器停止执行从网络设备的控制单元接收的控制处理操作;通过转发管理器基于依赖关系数据结构对至少一个分组处理器的多个转发路径元素进行编程,其中,依赖关系数据结构包括一个或多个依赖关系,该一个或多个依赖关系各自为多个节点中的节点指示引用该节点的一个或多个节点,并且其中,多个节点中的每个节点对应于多个转发路径元素中的单个转发路径元素;以及在对分组处理器的多个转发路径元素进行编程之后,通过转发管理器恢复执行从网络设备的控制单元接收的控制处理操作。

本公开的一个或多个方面的细节在附图和以下说明书中进行了阐述。通过说明书、附图以及权利要求书,本公开中所述技术的其他特征、目的以及优点将是显而易见的。

附图说明

图1是示出根据本文所述技术的配置了一个或多个转发单元的示例性网络设备的框图。

图2是更详细示出图1的网络设备的示例性实例的框图。

图3是示出具有根据本文所述技术所配置的转发路径沙盒的网络装置数据平面的方面的框图。

图4a至图4c是示出了对转发路径的元件进行编程的方法的框图。

图5是示出用于对一个或多个分组处理器进行编程的网络设备的示例性操作模式的流程图。

在整个附图和文本中相同的附图标记指示相同的元件。

具体实施方式

本公开中所描述的技术可以按照有利于网络设备的功能的方式使用网络设备中所生成的信息。例如,网络设备的分组处理器驱动器响应于接收到来自控制平面应用程序的指令配置转发路径并暴露针对该转发路径提供控制处理操作的转发管理器。转发管理器允许网络设备配置整个转发路径。为了有效地操作,每个转发路径的元素可以对应于转发管理器中的控制处理操作的一个或多个“节点”。

例如,每个转发路径元素可以对应于多个节点中的单个节点。多个转发路径中的转发路径元素可以是共同依赖共用节点,并且单独转发路径的转发路径元素可以依赖专用节点。由此,许多单独转发路径可以依赖多个共用节点以及多个专用节点。转发路径的节点依赖关系可以随时间而变化,并且转发路径可以依赖比专用节点更多数量的共用节点。这可以导致网络设备包括许多具有唯一功能的转发路径。

转发管理器可以被配置为与分组处理器进行通信。分组处理器可以被配置为访问存储在转发管理器中的数据。每个转发路径的节点依赖关系可以以被称为“依赖关系数据结构”的结构的形式记录并存储在转发管理器中。每个转发单元可以配置为维护和其相应转发路径的节点依赖关系相对应的依赖关系数据结构,并且该依赖关系数据结构可以在网络设备的整个生命期间实时地更新。由于多个转发路径元素中的每个转发路径元素可以对应于多个节点中的单个节点,依赖关系数据结构可以反映转发路径元素的依赖关系以及节点的依赖关系。转发管理器可以配置为将依赖关系数据结构存储在服务器中,并且该服务器可以负责维护该依赖关系数据结构。响应于检测到分组处理器已经上线,转发管理器独立于控制平面并且在不干扰其他在线分组处理器的当前转发操作的情况下,基于依赖关系数据结构对用于分组处理器的转发路径元素进行编程。在一些实例中,转发管理器对用于在多个分组处理器间共用的节点的转发路径元素进行编程。

以此方式,节点以及依赖关系数据结构可以提供有用的信息从而辅助网络设备的有效操作。以下描述了节点和依赖关系数据结构的一些应用。

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

控制单元12通过内部通信链路28连接到转发单元20中的每一个。例如,内部通信链路28可以包括100mbps以太网连接。控制单元12通过经由内部通信链路28发送指令以及其他配置数据来配置转发单元20,以定义应用于由转发单元20接收的分组的控制处理操作。

控制单元12执行多个应用程序,包括守护进程(daemons)14a至14k(“守护进程14”)以及一个或多个第三方应用程序15。每个应用程序可以代表由控制单元操作系统管理的单独处理。守护进程14可以表示由网络设备10的制造商开发并部署的用户级处理。如此,守护进程14对网络设备10来说是“固有(native)”的,因为应用程序的开发由制造商仔细地管理以利于网络设备10的安全、稳健且可预测的运行,此类运行至少部分地根据由操作者(例如,业务提供商、企业或者网络设备10制造商的其他客户)指定的配置来定义。守护进程14可以运行网络管理软件、执行路由协议以与对等路由设备进行通信、维护并更新一个或多个路由表,以及创建用于安装到转发单元20的一个或多个转发表,以及其他功能。

第三方应用程序15表示一种应用程序。“第三方”通常是网络设备10的运营商而非网络设备10的制造商。然而,应用程序15未必由第三方开发,并且在一些情况下可能是由网络设备10的制造商开发的应用程序。在一些情况下,第三方应用程序15提供了外部应用程序编程接口(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)”。每个芯片组可以包括不同的芯片,它们各自具有特定功能,例如排队(queuing)、缓冲、建立接口以及查找/分组处理。芯片中的每一个可以表示基于专用集成电路(asic)的、基于现场可编程门阵列(fpga)的或者其他可编程硬件逻辑。单个转发单元20可以包括一个或多个分组处理器24。

例如,可以通过分组在流出之前被引向的对应入口接口、入口转发单元20、出口转发单元20、出口接口或者网络设备10的其他部件中的任一个(例如一个或多个服务卡)对每个分组执行操作。分组处理器24处理分组以识别分组属性型并执行绑定于该属性的动作。例如,分组处理器24中的每一个包括转发路径元素,该转发路径元素在被执行时,使分组处理器检查每个分组的内容(或者另一分组属性,例如输入接口)并且在该基础上做出转发决策、应用过滤器、和/或进行记账、管理、流量分析以及负载平衡。在一个实例中,分组处理器24中的每一个将转发路径元素安排为下一个跳数据,其可以被链接在一起作为沿网络设备的内部分组转发路径的转发拓扑中的一系列“跳”。至少在一些情况下,分组处理的结果决定了分组由转发单元20的分组处理器24从其在ifc22中一个上的输入接口转发到其在ifc22中一个上的输出接口的方式或者以其他方式由分组处理器24处理的方式。

在许多情况下,转发路径元素执行查找操作,例如树(或字典树)检索、表(或索引)检索、过滤器确定和应用,或者速率限定器确定和应用。查找操作在查找数据结构(例如,查找树)内定位与分组或分组流的分组内容或另一属性匹配的项目,例如分组的入站接口。

被配置为由控制单元12执行的应用程序决定了将要由分组处理器24应用于分组的控制处理操作。在图1的示例性网络设备中,应用程序包括守护进程14和第三方应用程序15。应用程序配置分组处理器24以通过向转发单元20发送表示控制处理操作的数据来执行控制处理操作。此类数据可以包括表示高级分组处理要求(例如,路径查找和过滤)的转发路径元素。控制处理操作可以包括基本的分组转发操作,例如输入分组处理、路径查找和输出分组处理,以及业务功能,例如分组过滤或访问控制、统计采样、流量监管、速率限制以及记账。

转发单元20包括相应的转发管理器16,其将从应用程序接收的代表控制处理操作的数据转换成包括可以由相应分组处理器24执行的指令的转发路径元素32(其可以包括转发“接下来的跳”并且之后被称为转发路径元素)并将该转发路径元素32存储到分组处理器24的存储器(图1中未示出)。每个转发管理器16可以表示可执行指令,例如用于处理的指令。分组处理器24执行转发路径元素32来处理所接收的分组,以满足应用程序所提供的高级分组处理要求。以此方式,应用程序将路径和接下来的跳(操作)的更高级的表示注入到由分组处理器存储的并且至少部分定义了用于由分组处理器24执行的控制处理操作的可配置转发状态的流中。由于转发路径元素32可以解析成其他转发路径元素32,转发路径元素32可以被链接在一起以针对给定分组定义一组控制处理操作并针对该分组形成“转发路径”。用于由分组处理器24执行和使用的该组转发路径元素32和转发状态可以因此替代地被称为用于给定分组处理器24、转发单元20或者作为整体的网络设备12的转发路径或内部转发路径。

根据本公开中所描述的技术,转发管理器16表示利用对应元件节点30(之后称为“节点30”)的转发路径元素32。以下,针对转发单元20a对技术进行描述。节点30a中的每个节点是由转发管理器16a管理的数据结构,并且表示用于由分组处理器24a执行的单个转发路径元素32a。转发路径元素可以使用来执行简单动作的类型(例如,计数或丢弃)、条件或复杂结构,例如,表、数或查找。然而,转发管理器16a使用共用节点数据接口的节点实例来表示和指代转发路径元素32中的每一个。每个节点实例可以具有和转发路径元素的类型(例如,动作、树等)相对应的类型。

节点30a中的每一个包括令牌,该令牌是用于对应转发路径元素32a的唯一标识符,其唯一地标识了在对应转发路径元素32的上下文环境中的节点。该唯一的标识符可以是,例如,用于令牌的64位或者其他n位整数值。

转发管理器16a通过引用用于转发拓扑中下一个节点的令牌创建节点之间的依赖关系。例如,转发管理器16a可以通过将第二、下一个转发路径元素的令牌添加到第一转发路径元素的下一个转发路径元素的列表来为第一转发路径元素指定第二下一个转发路径元素。这种固有的令牌引用使得能够容易地抽象出并且由此更易于操纵节点之间的连接,提供在转发管理器16a内的处理和存储器边界上的一致接口,以及可以利于多线程。在节点30a之间的令牌引用可以按照这些方式提供优于基于指针的方案的一个或多个优点,在基于指针的方案中,每个转发路径元素通过其在分组处理器24a存储器中的位置被表示和引用。

节点30a中的每个节点可以具有依赖关系,其为由其他节点30a的唯一令牌引用的其他节点30a。这样的依赖关系可以不仅包括节点接下来的转发路径元素,而且还包括通知转发管理器16a一个节点或条目的变化可能需要另一节点得到更新的依赖关系。

转发管理器16可以被配置为创建依赖关系数据结构77a至77n(“依赖关系77”),其表示多个转发路径元素32中的每个转发路径元素对其他转发路径元素的依赖关系。转发管理器16a可以利用节点30a的为节点指定了依赖关系的令牌引用列表生成依赖关系77a。此外,令牌引用列表可以基于通过客户端63a从控制平面12接收的控制处理操作。例如,控制单元12可以向转发管理器16a发送包括用于接口的转发状态的节点x。在其令牌引用列表中具有对节点x的令牌值的令牌引用的任何节点30a取决于节点x。转发管理器16a表示依赖关系77a数据结构中的依赖关系,例如一个或多个树、列表、表、映射等,以使转发管理器16a能够更容易和更迅速地确定当另一节点被修改时哪些节点30a(以及对应的转发路径元素32a)应当得到更新。利用以上实例,依赖关系77a可以包括映射或其他数据结构,该映射或其他数据结构包括一个或多个映射,该一个或多个映射将节点x映射到在其令牌引用列表中具有节点x令牌值的所有其他节点30a。如果节点x后续被修改,则转发管理器16a将节点x映射到那些利用依赖关系77a依赖节点x的节点30a,并且为那些节点30a更新转发路径元素32a。以此方式,转发管理器16a使用依赖关系77a来向转发路径66a的底层转发拓扑传播对节点30a做出的改变。

至少一个分组处理器24的功能可以在网络设备10的操作期间停止。例如,分组可以到达分组处理器24a的入口点,并且转发路径元素32a可能不能处理从分组处理器24a的入口点到分组处理器24a的出口点的分组。在该实例中,分组处理器24a是离线的。分组处理器24a可以在其离线之后重新上线。在该实例中,转发管理器16a可以检测分组处理器24a可用于处理分组以进行转发,并且转发管理器16a可以对硬件转发路径元素32a编程以恢复分组处理器24a内的功能转发路径。转发管理器16a可以在没有网络设备10的控制单元12的指导下对转发路径元素32a进行编程。例如,转发管理器16a可以存储依赖关系数据结构77a,从而为在没有控制单元12的输入的情况下为编程分组处理器24a提供模板。

编程处理可以在分组处理器24a恢复到在线状态之后指导分组处理器24a的编程。转发管理器16a可以使用依赖关系数据结构77a来编程转发路径元素32a,并且该编程可以恢复分组处理器24的从入口点到出口点路由至少一个分组的功能。在分组处理器24a重新上线之后,转发管理器16a可以访问依赖关系数据结构77a,并且转发管理器16a可以按照从最接近分组处理器24a的出口点的转发路径元素到最接近分组处理器24a的入口点的转发路径元素的顺序对多个转发路径元素32a进行编程。在转发管理器16a对多个转发路径元素32a中的每个硬件转发路径元素进行编程之后,分组处理器24a可以从分组处理器24a的入口点到分组处理器24a的出口点恢复处理一个或多个分组。

在一些实例中,转发管理器16可以在一段时间期间对多个分组处理器24进行编程。例如,网络设备10可以包括32个转发单元20,每个包括至少一个分组处理器24,并且转发单元20可以包括各自具有8个转发单元20的单独组。网络设备10的管理员可以为了功率效率关闭一组转发单元20一段时间。然而,在该组转发单元20重新开启之后,转发管理器16必须利用适当的转发路径元素对该组转发单元20的每个分组处理器24进行编程。在该实例中,转发管理器16可以访问每个转发单元20的依赖关系数据结构77以按照以上关于转发单元20a所描述的方式编程转发路径元素32。转发管理器16可以在不干扰在该组转发单元20离线的同时持续运行的分组处理器的功能的情况下,对任意数量的分组处理器24进行编程。

图2是更详细示出根据本文所述技术的配置了转发单元的示例性网络设备的框图。图2中所示的网络设备10可以表示图1的网络设备10的示例性实例。

在该示例中,控制单元12包括硬件和软件的组合,其提供了用于执行在用户空间41中执行的各种用户级主机应用程序的控制平面操作环境。作为示例,主机应用程序可以包括:具有用来接收和响应管理指令的命令线接口和/或图形用户接口处理的管理接口处理57,用来执行协议48a至48k(统称为“协议48”)中一个或多个路由协议的守护进程14的路由协议处理,用来执行协议中一个或多个网络管理协议的守护进程14的网络管理处理,用来根据协议48中的arp协议响应arp请求的守护进程14的arp处理,用来根据一个或多个用户会话管理协议(例如,gprs隧道协议控制)管理用户会话建立和维护的守护进程14的用户管理处理,等等。就这一点而言,控制单元12可以为网络设备10提供路由平面、业务平面以及管理平面功能。控制单元12可以分布在多个控制单元之间。

守护进程14和管理接口57在内核43上执行并与其进行交互,这为用户级处理提供了实施操作环境。例如,内核43可以表示unix操作系统衍生品,例如linux或伯克利软件套件(berkeleysoftwaredistribution,bsd)。内核43提供了库和驱动器,通过该库和驱动器用户级处理可以与底层系统进行交互。控制单元12的硬件环境50包括微处理器52,微处理器52执行从存储设备(图2中也未示出)加载到主存储器(图2中未示出)中的程序指令,以便执行控制单元12的包括内核43和用户控件41两者的软件堆栈。微处理器52可以表示一个或多个通用或专用处理器,例如数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga),或者任何其他的等同逻辑设备。相应地,本文中所使用的术语“处理器”或“控制器”可以指代以上结构中的一个或多个或者可操作为执行本文所述技术的任何其他结构。

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

网络设备10还包括多个转发单元20a至20n(统称为“转发单元20”)和交换机结构(未示出),它们一起提供用于转发网络流量的数据平面。在该示例中,转发单元20通过通信链路23连接到控制单元12,该通信链路23可以表示以太网。

转发单元20中的每一个可以包括执行大体上相似功能的大体上相似的部件,所述部件和功能以下主要关于图2中详细示出的转发单元20a进行描述。图2的转发单元20a可以更详细例示说明图1的转发单元20a的示例。转发单元20a分别通过转发单元20a的接口卡(ifc)22的入站接口35和出站接口37接收和发送网络分组。转发单元20a还包括分组处理器24a,其表示提供网络流量的高速转发的硬件或者硬件和软件的组合。类似地,转发单元20b包括分组处理器24b,等等。在一些实例中,转发单元20中的一个或多个可以各自包括多个大体上类似于分组处理器24a的分组处理器。

每个ifc22可以包括用于层二(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的数据平面,而转发单元处理器62a(被示为“fwdg.单元处理器62a”)执行包括转发管理器16a和分组处理器驱动器60a的软件,其实现了转发单元20a内网络设备10控制平面的部分。控制单元12也实现网络设备10的控制平面的部分。转发单元20a的转发单元处理器62a管理分组处理器24a并执行指令以对控制单元12提供接口并处理主机绑定的分组或其他本地网络分组(例如包括选项字段值或ttl过期分组)。转发单元处理器62a可以执行用于转发单元20a的微内核。由转发单元处理器62a执行的微内核可以提供多线程执行环境以用于执行转发管理器16a和分组处理器驱动器60的模块。

分组处理器24a可以包括基于可编程asic的、基于fpga的或者其他类型的分组处理器,其通过在分组遍历网络设备10的内部架构时在相应内部分组转发路径上对每个分组执行一系列的操作来处理网络分组。分组处理器24a包括转发路径元素32a,通常,该转发路径元素32a在被执行时检查每个分组的内容(或者另一分组属性,例如输入接口)并且在该基础上例如做出转发决策、应用过滤器、和/或进行记账、管理、流量分析以及负载平衡。在一个实例中,分组处理器24a将转发路径元素设置为下一跳数据,其可以被链接在一起作为沿分组处理器24a的内部分组转发路径66a(“转发路径66a”)的一系列“接下来的跳”。分组处理的结果决定了分组由转发单元20的分组处理器24从转发单元20的入口转发单元上的分组的输入接口转发到在转发单元20的出口转发单元上的其输出接口的方式或者以其他方式由分组处理器24处理的方式。

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

网络设备10的内部转发路径可以包括多个不同分组处理器24的相应转发路径66的组合。换言之,分组处理器24a的转发路径66a可以仅包括网络设备10的整个内部转发路径的一部分。控制单元12可以配置分组处理器24a的转发路径66a以识别主机绑定的网络分组并向控制单元12转发此类分组。例如,控制单元12可以编程过滤器,该过滤器包括网络设备10的网络地址并指导分组处理器24a向控制单元12转发具有和该网络地址匹配的目的地地址的网络分组。

在一些实例中,分组处理器24a将要对由分组处理器24a接收的分组执行的动作绑定到分组的一个或多个属性的标识。也就是说,当识别出某些分组属性时,分组处理器24a执行绑定至该属性的动作。分组属性可以包括分组元数据,例如(由分组处理器24所确定的)特定分组的入口接口或出口接口以及由该分组和分组报头承载的信息,例如分组报头字段、目的地路由前缀、层四(l4)或传输层协议目的地端口,以及分组载荷。绑定于分组特征的动作可以包括计数、丢弃、转发到特定转发路径元素或接口、过滤、采样、速率限制以及服务质量(qos)打分、差异化业务(diffserv)、负载平衡、入侵检测与防御、l2类业务(cos),以及l2或l2虚拟专用网(l2vpn)交换。

关键字引擎71a中的每一个包括一个或多个关键字缓冲器,以针对关键字引擎当前正处理的对应分组存储分组字段数据。关键字缓冲器还可以提供内部转发路径的元素可以写入至的有限可写入存储器以传递可以由未来元素访问的消息。

转发路径66a的转发路径元素32a(也被称为“基元”)包括具有对应于分组关键字值的条目或“项目”的数据结构并将该值绑定到将由执行转发路径66a的关键字引擎71a执行的动作。就这一点而言,转发路径元素32a中的至少一些表示对应于绑定动作的可执行指令以及用于可能分组关键字值的数据的紧密耦合组合。转发路径元素32a中的树查找转发路径元素可以在路由表中进行最长匹配前缀查找或者在过滤程序中检索前缀的列表。转发路径元素32a中的表查找转发路径元素可以确定转发路径元素32a中的另一个是否应当由关键字引擎71a执行。例如,关键字引擎71a可以执行分组属性的表查找以确定该关键字引擎71a应当进一步执行树查找以识别用于分组的出站接口。分组处理器24a可以在计算机可读存储介质(例如静态随机存取存储器(sram))中存储转发路径元素32a。尽管被示出在分组处理器24a内,转发路径元素32a可以存储在分组处理器24a外部且可以由其访问的存储器中。

在一些方面,转发路径66的动作使用转发路径元素数据接口来发起处理。在由关键字引擎71a中的一个执行的每个处理步骤(例如执行转发路径元素32a中的一个)结束时,例如,结果是可以指定附加的处理或者终止处理的转发路径元素。此外,转发路径元素可以指定或者以其他方式表示将由关键字引擎71a执行的一个或多个功能。示例性转发路径元素功能包括监管(即,速率限制)、计数以及采样。转发路径元素由此形成原始数据结构,该原始数据结构可以用于发起查找或另一种转发路径元素、一起用来允许对单个分组执行的多个查找和其他操作的链式查找和转发路径元素,以及终止查找。关键字引擎71可以与相应的结果(或“查找”)缓冲器相关联,所述结果缓冲器存储用于执行转发路径元素的结果。例如,关键字引擎71可以执行由转发路径元素指定的查找并将查找的结果存储到相关联的结果缓冲器。结果缓冲器的内容可以影响转发拓扑中转发路径元素的动作。

关于多个转发路径元素(接下来的跳)以及转发路径元素(下一跳)链接的其他信息可以在2011年8月2日发布的美国专利第7,990,993号“转发路径元素的平台独立控制平面和低级衍生(platform-independentcontrolplaneandlower-levelderivationofforwardingpathelements)”中得到,其整体通过引用结合与此。其中控制平面利用转发路径元素编程转发平面的网络路由器的示例性细节在2014年8月12日发布的题目为“利用高级描述语言的分组转发路径编程(packetforwardingpathprogrammingusingahigh-leveldescriptionlanguage)”的美国专利第8,806,058中和在2007年5月8日发布的题目为“处理分组的系统和方法(systemsandmethodsforprocessingpackets)”的美国专利第7,215,637号中进行了描述,其各自的全部内容通过引用结合与此。

转发单元20a通过ifc22接收入站网络流量,并且分组处理器24a利用内部转发路径66a处理网络流量。分组处理器24a查找过渡网络分组(transitnetworkpacket)的出口接口并转发该过渡网络分组,所述过渡网络分组既没有主机绑定也不另外需要由控制平面在出口流量通过出口接口37时做出逻辑决策的响应。尽管主要关于单个分组处理器24a和单个转发路径66a进行了描述,用于转发单元20a的转发管理器16a可以配置各自具有单独的和/或共享的转发路径66的多个分组处理器24。

转发单元20a执行转发管理器16a软件并向控制单元12提供接口以用于配置转发路径66a。一个或多个客户端63a、服务器模块(“服务器”)65a、平台管理器64a以及驱动器60a可以表示由转发单元处理器62a利用例如由微内核(未示出)提供的操作环境执行的不同处理。服务器65a可以是多线程的以同时支持与多个客户端63a的通信。客户端63a中的每一个可以与服务器65a的一个线程通信以促进指定给该客户端63a/线程的所有操作按照顺序执行。

服务器65a提供应用程序编程接口(api)以使客户端63a能够通过利用节点30a创建、引用和连接转发路径元素32a来在转发路径66a中创建转发路径元素32a。服务器65a将从客户端63a接收的节点30a转换成分组处理器24a所支持的对应转发路径元素32a。转发路径元素32a中的每一个具有节点30a中的对应一个,节点30a由服务器65a存储并且可以利用服务器65a的api访问。客户端63a使用针对节点30a的api以创建沙盒(以下更详细描述),将条目编程为查找型的转发路径元素32a,以及将转发路径元素32a连接到程序端到端转发状态。

以此方式,服务器65a在客户端63a与分组处理器24的底层硬件/转发路径66a之间实现了状态转换桥。例如,客户端63a发送节点和条目的数据流并且服务器65a将节点和条目转换成转发路径元素32a以用于配置转发路径66a。服务器65a还包括用于跟踪和管理从客户端63a接收的节点30a的数据结构,并且以此方式管理在转发路径66a中所表示的整体转发状态。图2中示出了服务器65a的此类数据结构、依赖关系77a的一个示例。

服务器65a利用节点30a的为节点指定了依赖关系的令牌引用列表生成依赖关系77a。例如,客户端63a可以向服务器65a发送包括用于接口的转发状态的节点x。在其令牌引用列表中具有对节点x的令牌值的令牌引用的任何节点30a取决于节点x。服务器65a表示依赖关系77a数据结构中的依赖关系,例如一个或多个树、列表、表、映射等,以使服务器65a能够更容易和更迅速地确定当另一节点被修改时哪些节点30a(以及对应的转发路径元素32a)应当得到更新。利用以上实例,依赖关系77a可以包括映射或其他数据结构,该映射或其他数据结构包括一个或多个映射,该一个或多个映射将节点x映射到在其令牌引用列表中具有节点x令牌值的所有其他节点30a。如果节点x后续被修改,则服务器65a将节点x映射到那些利用依赖关系77a依赖节点x的节点30a,并且为那些节点30a更新转发路径元素32a。以此方式,服务器65a使用依赖关系77a来向转发路径66a的底层转发拓扑传播对节点30a做出的改变。

被配置为用于由转发单元处理器62a执行的分组处理器驱动器60a(之后称为“驱动器60a”)利用用于由分组处理器24a执行的转发路径元素32a配置转发路径66a。分组处理器驱动器60a从服务器65a和平台管理器64a接收转发路径元素32a。转发路径元素32a可以包括由分组处理器24a可执行的指令。

客户端63a从应用程序接收表示控制处理操作的数据25、27,并且将数据25、27翻译成节点30a,平台管理器64a和服务器65a将节点30a推送至驱动器60a以配置转发路径66a。客户端63a可以表示接口适配器,例如p4、openflow、交换机抽象接口(sai)或者其他软件定义联网(sdn)协议接口适配器,其利用控制器或第三方应用程序15在对应接口上接收操作并利用服务器65aapi将该操作转换成节点30a。客户端63a将节点30a推送至服务器65a,服务器65a利用驱动器60a在转发路径66a中配置对应的转发路径元素32a。

在一些情况下,客户端63a可以调节参数(例如,在配置中改变的策略器参数)或者改变针对节点的依赖关系(例如,将路由前缀指向不同的下一跳)。一旦在转发路径66a中得到配置,服务器65a可以认为节点和条目不可变(即,不能改变)。相应地,为了改变节点,客户端63a利用和正被“修改”的节点相同的令牌值插入新节点。服务器65a接收该新节点,从转发路径66a中删除对应于旧节点的转发路径元素,在转发路径66a中插入对应于新节点的新转发路径元素,重新生成任意底层硬件状态,以及在依赖关系77a中并在转发路径元素32a之间更新任意依赖关系。由于服务器65a提供该这种业务,客户端63a仅需要插入新的经更新的节点。

如果转发单元2a无法路由多个分组中的至少一个分组,服务器65a可以促进转发路径元素32a的编程。由于服务器65中的每一个维护多个依赖关系数据结构77中的一个,服务器65a可以根据依赖关系数据结构77a对多个转发路径元素32a中的每个转发路径元素重新编程。

在一些情况下,分组可以到达入口接口35,并且转发路径元素32a可能无法处理从入口接口35到出口接口37的分组。在该实例中,分组处理器24a是离线的。分组处理器24a可以在其离线之后重新上线。在这种情况下,转发管理器16a的服务器65a可以检测分组处理器24a可用于处理分组以进行转发,并且服务器65a可以对硬件转发路径元素32a进行编程以将分组处理器24a内的转发路径66a恢复成正常操作。服务器65a可以在无经由服务器63来自网络设备10的控制单元12的指导下对转发路径元素32a进行编程。例如,服务器65a可以存储依赖关系数据结构77a,从而在没有控制单元12的输入的情况下为编程分组处理器24a提供基础。转发管理器16a的服务器65a可以被配置为使用依赖关系数据结构77a,以按照从最接近分组处理器24a的出口点的转发路径元素到最接近分组处理器24a的入口点的转发路径元素的顺序对转发路径元素32进行编程。在服务器65a对多个转发路径元素32a中的每个硬件转发路径元素进行编程之后,分组处理器24a可以恢复其处理一个或多个分组的功能。

在一个实例中,转发管理器16a可以被配置为维护有效注册表67a至67n(“有效注册表67”),该有效注册表67a至67n指示是否分组处理器24中的每一个可用于处理分组以进行转发(例如,在线)。在一些实例中,有效注册表67可以包括针对每个分组处理器24的状态的位。因此,在网络设备10包括64个分组处理器的实例中,有效注册表可以包括64位的数据(例如,“64位掩码”)。转发管理器16a可以存储有效注册表67a。在该实例中,转发管理器16检测至少一个分组处理器24已经变成可用于处理分组以进行转发。检测至少一个分组处理器24已经变成可用于处理分组以进行转发可以包括:转发管理器16基于检测到对有效注册表的改变来进行检测,例如一个或多个位的值从0变成1。检测到有效注册表的改变可以使转发管理器16的服务器65基于依赖关系数据结构77对至少一个分组处理器24的转发路径元素32进行编程。

控制单元12可以经由客户端63通过控制处理操作将节点30传递给服务器65。在一些实例中,每个节点可以包括位掩码,该位掩码标识了分组处理器24中那些对应于节点的转发路径元素32,即,对其而言转发路径元素存在于至少一个转发路径中的那些分组处理器24。每个位包括“1”值或者“0”值,并且“1”值可以表示分组处理器24的转发路径元素32对应于该节点,而“0”值可以表示分组处理器24并不对应于该节点。在一些情况下,节点30的位掩码指明该节点对应于每个分组处理器24的转发路径元素。在其他情况下,节点30的位掩码指明该节点对应于分组处理器24的特定组(子集)或者分组处理器24中的单个分组处理器的转发路径元素。每次节点30被写入服务器65,节点30的位掩码与有效注册表67交叉引用。例如,转发管理器100可以利用有效注册表67的位掩码对每个节点的位掩码执行逻辑“和(and)”操作,例如在检测到有效注册表67的改变之后、在对新近有效的分组处理器进行编程之前,从而确定哪些节点和转发路径元素需要被编程到该新近有效的分组处理器。例如,有效注册表67可以指示每个分组处理器24的在线状态,并且仅对与有效注册表67标识为在线的那些分组处理器24的节点60相关联的那些转发路径元素进行编程。

在许多情况下,客户端63并不通过控制处理器操作改变写入到服务器63的节点30的位掩码。在节点应用于特定一组分组处理器24的转发路径元素的一些情况下,客户端63可以改变或设置该位掩码。应用于特定一组分组处理器的一些节点的实例可以包括出站接下来的跳、多播接口以及输入接口。

有效注册表67的改变可以警告转发管理器16一个或多个分组处理器24重新上线。如果转发管理器16检测到有效注册表67的变化(并且在一些情况下,是转发管理器16更新有效注册表67),服务器65可以停止处理指令以及经由内部通信链路28来自控制单元12的其他配置数据,并且开始对转发路径元素32进行编程。在另一实例中,转发管理器16可以接收指示分组处理器24无法路由一个或多个分组的错误信号,这可以使服务器65对转发路径元素32进行编程。在一些实例中,另一种类型的外部激励或另一种信号可以通知转发管理器16转发单元20的分组处理器24无法路由一个或多个分组,这可以发起对转发路径元素32的编程。

图3是示出了根据本文所述技术的网络设备的示例性实施方式的选定部件的框图。在图3的实例中,转发管理器16a和转发路径66a支持用于相应应用程序142a至142n的多个沙盒150a至150n,其可以表示图1的守护进程14和第三方应用程序中的任一个。沙盒在2015年11月17日提交的标题为“用于第三方控制分组转发路径的网络设备数据平面沙盒(networkdevicedataplanesandboxesforthird-partycontrolledpacketforwardingpaths)”的美国专利申请第14/944,113号中进行了描述,其整体通过引用结合与此。

分组处理器24可以各自配置有一个或多个沙盒150。分组处理器24中的每一个可以促进相对于本公开技术的类似或一致的沙盒功能,以下主要关于分组处理器描述所述功能。

沙盒150表示用于分组处理器24a的独立的、并行的、以及异步的转发路径逻辑,其被暴露以用于由应用程序142经由转发管理器16a配置。尽管用于分组处理器24a的整体转发路径通过本地应用程序(例如,守护进程14)利用平台管理器64a进行管理和配置,本地应用程序可以配置沙盒150使得整个转发路径66内的沙盒转发逻辑的配置被委托给其他应用程序142。

例如,沙盒150a表示用于将被配置成与用于分组处理器24a的内部转发路径66a的其他转发路径元素内联的指令的容器。在一些实例中,沙盒150a是一种“逻辑”容器,因为如果被服务器65a配置在沙盒150内作为用于分组处理器24a的内部转发路径的一部分,指令在沙盒150a“内部”。在此类实例中,沙盒150a可以在分组处理器24a内向应用程序142a提供独立的、隔离的、虚拟分组处理器,以此方式应用程序142a对在沙盒150a已确立的范围内由沙盒150a逻辑执行的操作具有控制权。

在其他实例中,沙盒150a可以表示采用以下形式的物理上分离的分组处理器,即转发逻辑与主分组处理器24a并与转发路径66a物理地分离。在此类实例中,沙盒150a可以从物理分离的存储器读取指令,其定义了沙盒150a的转发路径。在此类实例中,沙盒150a可以向应用程序142a提供与用于分组处理器14a的转发路径66a内联的独立的、隔离的分组处理器,以此方式第三方对在沙盒150a的物理分离范围内由沙盒150a逻辑执行的操作具有完全控制权。尽管以上关于沙盒150a进行了描述,但是其他沙盒150可以类似地配置和操作。尽管转发路径66a被示出为由分组处理器24a执型,多个分组处理器24可以执行共用转发路径或者具有共用的转发路径元素的转发路径。分组处理器24可以位于单个线卡上。

在该实例中,应用程序142中的每一个与转发管理器16a的适配器140中的对应适配器连接并向其发送表示控制处理操作的数据。就这一点而言,转发管理器16a提供沙盒接口。例如,适配器140a从应用程序142a接收控制处理操作并将该控制处理操作转换成节点30a-1。类似地,适配器140n从应用程序142n接收控制处理操作并将该控制处理操作转换成节点30a-n。客户端63a至63n使用服务器65aapi来将节点30a-1至30a-n推送到服务器65a,并且更具体地,推送到相应的沙盒管理器144a至144n。客户端63可以由相应线程同时地执行以从应用程序142同时地接收控制处理操作。

客户端63可以分配存储器并利用服务器65aapi构建节点,但是客户端63分配存储器区域中的节点。通过利用通过服务器65a所提供的基于节点的配置方案实现并行性,并且由于客户端63独立地操作以配置相应的沙盒150,客户端63不再彼此依赖并且可以同时地运行。相应地,客户端63中的每一个可以独立地与沙盒管理器144中的单独沙盒管理器进行通信,该沙盒管理器144可以各自有不同的执行线程来执行。因此,服务器65a允许同时地配置多个沙盒150。

沙盒管理器144可以由不同的线程执行以针对对应客户端63独立地管理节点和依赖关系。例如,沙盒管理器144a从客户端63a接收节点30a-1并生成依赖关系146a,其可以类似于图2的依赖关系77a。沙盒管理器144中的每个为沙盒管理器的对应节点30a的令牌管理单独的令牌空间。例如,用于节点30a-1的令牌可以与用于节点30a-n的令牌重叠。服务器65可以因此操作为向不同的应用程序142提供一致的模型以用于与底层分组处理器24硬件进行交互。

节点30a-1至30a-n(“节点30a”)中的每一个可以包括标识沙盒150中对应于节点30a的元素的位掩码。每次应用程序142通过客户端63a将节点30a传递给服务器65a,节点30a的位掩码与有效注册表67a交叉引用。有效注册表67a还包含数据的位,然而有效注册表67a包括指示分组处理器24a的在线状态的位。如果有效注册表67a指示分组处理器24a在线,则可以将节点30a应用于沙盒150。

图4a至图4c是示出了对转发路径的元素进行编程的方法的框图。转发管理器100可以是图1中转发管理器16a至16n的示例。节点110可以是图1中元件节点30a至30n的示例。尽管图4a至图4c示出每个转发路径66对应于四个节点,在一些实例中,每个转发路径66可以对应于四个以上的节点。

转发路径66a至66n可以各自包括多个转发路径元素,并且每个转发路径元素可以对应于转发管理器100的节点110,如图4a中所示。转发路径元素的依赖关系进而记录在节点110a至110y的令牌中(在图4a至图4c中未绘出)。转发管理器100可以配置为基于节点110的令牌创建依赖关系数据结构77a至77n。依赖关系数据结构77可以在分组处理器24a至24n的整个生命期间实时地更新以反映对节点110以及转发路径66的对应转发路径元素的依赖关系的准确的当前计数。当使分组处理器24在离线一段时间之后上线时,如图4b中所示,节点110与转发路径元素之间的连接已经被切断,并且转发路径元素的依赖关系未被编程。这种状态中断了分组处理器24n的操作,从而阻止了转发路径元素66n执行从入口点到出口点路由一个或多个分组的功能。

转发管理器100可以接收分组处理器24n已经上线的指示,如图4b中所示。例如,在转发单元上运行的处理中的一个可以向转发管理器提供该指示,例如响应于从网络设备的管理接口57(图2)接收的配置命令(例如,在“关闭”一个或多个分组处理器之后使其上线的命令),或者响应于处理检测到具有相关联分组处理器的分组接口集线器(pic)的插入。转发管理器100或者另一处理可以更新有效注册表67n以反映该指示。转发管理器100可以检测对有效注册表67n的改变,并且开始对已经上线的分组处理器24n的转发路径66n的转发路径元素进行编程的处理。响应于有效注册表67n的改变,转发管理器100可以停止处理来自控制单元的请求(例如经由客户端63a(图2)接收的),并且访问依赖关系数据结构77n以对转发路径66n的转发路径元素编程。由于依赖关系数据结构77位于转发管理器100内,转发路径66可以在没有网络设备(图4a至图4c中未绘出)的控制单元的指导下进行编程。该特征可以实现网络设备的连续操作。例如,在一个或多个转发路径离线或者正在进行编程时,可操作的转发路径可以继续处理分组。因此,转发管理器100的依赖关系数据结构77可以大大降低在一段时间期间整个网络设备无法处理分组的概率。

在一些实例中,节点110可以包括共用节点和专用节点。共用节点可以对应于多个分组处理器24中的多个分组处理器。图4a至图4c中共用节点的实例可以包括节点110b和节点110c,因为这些节点对多个分组处理器也就是分组处理器24a和分组处理器24b的转发路径来说是共用的。专用节点是那些仅对应于多个分组处理器24中的单个分组处理器的节点。在图4a至图4c的实例中,专用节点包括节点110a和节点110d。共用节点数量上可以比专用节点更多,并且共用节点可以更可能在转发路径66a至66n的中央而不是在转发路径66的入口点和出口点处找到。在一些情况下,专用节点可以表示仅在特定分组处理器上或仅在特定一组分组处理器上而不是在全部分组处理器上存在的物理接口。专用节点的一些实例可以表示转发路径元素,例如出站接下来的跳、输入接口以及多播接口。在一些情况下,多播接口可以由共用节点表示。

在一个实例中,例如在图4c中,响应于检测到分组处理器24n已经上线,转发管理器100可以基于依赖关系数据结构77对全部共用节点和全部专用节点进行编程。转发管理器100可以从出口到入口向后遍历依赖关系数据结构77a中的依赖关系,并且转发管理器100可以从最接近出口点的元件到最接近入口点的元件顺序地对转发路径66n中的每个转发路径元素进行编程。例如,对应于离线分组处理器24n的专用节点,例如节点100x和100y,可以在分组处理器24n离线(如图4b中所示)时休眠。然而,一旦分组处理器24n重新在线,转发管理器100可以按照以下顺序对每个转发路径元素进行编程:以对应于节点110y的转发路径元素开始,随后是对应于节点110c的转发路径元素,随后是对应于节点110b的转发路径元素,以及最后是对应于节点110x的转发路径元素。

在一些实例中,在遍历依赖关系数据结构77a过程中,转发管理器100可以基于由节点为该转发路径元素存储的位掩码是否指示该转发路径元素被分组处理器24n使用,确定给定的转发路径元素是否与该转发路径相关,即节点是否应当被编程到转发路径66n。在转发管理器100遍历依赖关系数据结构77a以用于编程转发路径66n的同时,其他有效的分组处理器,例如分组处理器24a至24(n-1),继续利用相应转发路径66a至66(n-1)处理输入的分组。相应转发路径66a至66(n-1)可以包括在该时间期间稍微陈旧的数据,因为转发管理器100的服务器65a(图2)已经暂时停止执行经由客户端63a从控制单元12接收的控制处理操作。当转发管理器100已经完成遍历依赖关系数据结构77a和编程转发路径66n时,服务器65a恢复执行经由客户端63a从控制单元12接收的控制处理操作。分组处理器24n也开始利用新近编程的转发路径66n处理分组。

图5是示出根据本公开所述技术用于对一个或多个分组处理器编程的网络设备的示例性操作模式的流程图。操作500的模式关于图1的网络设备10的转发管理器16进行描述,但是可以由执行指令以为线卡配置至少一个分组处理器的任何转发单元处理器执行。

网络设备10的转发管理器16a可以检测至少一个分组处理器24a已经变成可用于处理分组以进行转发(510)。响应于检测到该至少一个分组处理器24a已经变成可用于处理分组以进行转发,转发管理器16a可以停止执行在转发管理器16处从网络设备10的控制单元12接收的控制处理操作(520)。例如,服务器65a可以在执行从客户端63a(图2)接收的控制处理操作过程中暂停。在停止执行控制处理操作之后,转发管理器16a可以基于依赖关系数据结构77a对至少一个分组处理器24a的多个转发路径元素32a进行编程(530)。例如,转发管理器16a可以根据依赖关系数据结构77a所指示的依赖关系,例如基于依赖关系数据结构77a中的节点和节点令牌中反映的依赖关系,按照从出口到入口的顺序对多个转发路径元素32a编程。在转发管理器16a已经对转发路径元素32a编程之后,转发管理器16a可以恢复执行从网络设备10的控制单元12接收的控制处理操作(540)。例如,服务器65a可以继续执行从客户端63a接收的控制处理操作。分组处理器24n还开始利用新近编程的转发路径66n处理分组。

本公开中所述的技术可以至少部分地在硬件、软件、固件或其任意组合中实施。例如,所述技术的各个方面可以在一个或多个处理器内实施,包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga),或者任何其他等同的集成或分立逻辑电路,以及此类部件的任何组合。术语“处理器”或“处理电路”可以一般指单独的或与其他逻辑电路相结合的前述逻辑电路,或者任何其他等同电路。包括硬件的控制单元也可以执行本公开的一种或多种技术。

此类硬件、软件和固件可以实施在同一设备内或者实施在单独的设备内以支持本公开中所述的各种操作和功能。此外,任何所述单元、模块或部件可以一起地或单独地实施为分立但是可互操作的逻辑设备。将不同的特征描述为模块或单元旨在强调不同的功能方面且并不一定暗示此类模块或单元必须通过单独的硬件或软件部件来实现。而是,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件部件执行,或者集成在共用的或单独的硬件或软件部件内。

本公开中所述的技术还可以体现或编码在计算机可读介质中,例如包含指令的非暂时性计算机可读介质或计算机可读存储介质。嵌入或编码在计算机可读介质中的指令使可编程处理器或其他处理器例如在指令执行时执行方法。计算机可读存储可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、硬盘、cd-rom、软盘、卡带、磁介质、光介质,或者其他计算机可读存储介质。术语“计算机可读存储介质”指的是物理存储介质而非信号或载波,尽管术语“计算机可读介质”除了物理存储介质之外可以包括瞬态介质,例如信号。

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