分组转发路径元素的节点表示的制作方法

文档序号:18226672发布日期:2019-07-19 23:31阅读:204来源:国知局
分组转发路径元素的节点表示的制作方法

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



背景技术:

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

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

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

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



技术实现要素:

总体而言,本公开描述了用于使用元素节点表示网络设备转发平面的转发路径元素的技术。在一些示例中,元素节点包括对应的标识令牌,其可用于将元素节点和对应的转发路径元素连接成用于构成网络设备转发平面的转发单元的内部分组转发路径的转发拓扑。元素节点(下文中,“节点”)可以表示不同类型的转发路径元素,诸如简单动作(例如,计数器、策略器、丢弃)和对诸如表、树和查找的复杂构造的条件。节点的令牌是唯一标识该节点和所表示的转发路径元素的值。网络设备可以使用令牌作为唯一参考,用于为转发路径内的节点或查找类型节点的条目指定下一个(或下游)节点。

例如,网络设备转发单元可以执行服务器模块,该服务器模块提供对其内部转发路径的编程访问。服务器模块暴露接口,该接口使服务器模块的客户端能够通过从服务器模块请求新节点然后使用节点令牌作为参考向服务器模块指定新节点之间的连接来利用转发路径元素配置内部转发路径。服务器模块的一个或多个客户端通过按照节点和条目描述转发路径来编程底层转发路径,其中每个节点和条目可以具有一个或多个依赖关系,这些依赖关系是由节点的相应和唯一令牌参考的其他节点的关系。使用节点令牌和令牌参考,服务器模块可以管理节点和条目依赖关系,并在客户端更改节点时更新依赖关系。

该技术可以提供一个或多个优点。例如,使用具有唯一标识令牌的节点表示网络设备转发单元的内部转发路径的转发路径元素可以使在转发单元上执行的编程模块能够指定转发路径元素之间的依赖关系,以使用相应的令牌的值来创建分组转发拓扑。例如,与基于指针的参考方案相比,这可以使这样的编程模块(例如,服务器模块和一个或多个客户端)能够跨进程和存储器边界进行通信,同时减少用于转发路径元素的存储器值的转换。该技术还可以向客户端和第三方应用程序提供对网络设备的至少一部分转发路径的直接编程访问。例如,使用节点、客户端和第三方应用可以独立于网络设备转发信息库(fib)来配置、移除和改变转发路径元素的状态。更进一步地,在一些示例中,该技术可以提供用于管理不同转发路径元素的接口,例如路由、防火墙和封装。这些技术还可以或可选地提供以下优点中的一个或多个,诸如简化依赖关系管理并提供用于处理转发路径元素之间的依赖关系的平台、提供转发拓扑的有效分类和可视化、以及为缺少的依赖关系和乱序消息提供良好的错误处理。

在一个示例中,一种方法包括:通过用于内部转发路径的转发管理器,从网络设备的控制单元接收一个或多个分组处理操作,该内部转发路径由网络设备的转发单元的至少一个分组处理器执行;通过转发管理器,基于一个或多个分组处理操作生成多个节点,每个节点包括唯一令牌,其中,该多个节点中的第一节点包括设置为对于该多个节点中的第二节点的令牌的值的令牌参考;通过转发管理器,基于节点,配置转发路径以包括用于多个节点的相应转发路径元素;以及通过该至少一个分组处理器,通过执行转发路径元素处理由转发单元接收的分组。

在一个示例中,网络设备包括:被配置为执行至少一个应用程序的控制单元;以及转发单元,包括:被配置为接收分组的接口卡;可操作地耦接到存储器的至少一个分组处理器;内部转发路径,其中转发路径的至少一部分被存储到存储器并且可由至少一个分组处理器执行;转发单元处理器;以及配置为由转发单元处理器执行的转发管理器,其中,转发管理器被配置为接收一个或多个分组处理操作,其中,转发管理器被配置为基于一个或多个分组处理操作生成多个节点,每个节点包括唯一令牌,其中,节点的第一节点包括设置为针对节点的第二节点的令牌的值的令牌参考,其中,转发管理器被配置为基于节点配置转发路径以包括用于节点的相应转发路径元素,以及其中,至少一个分组处理器被配置为通过执行转发路径元素来处理由转发单元接收的分组。

在一个示例中,一种非暂时性计算机可读介质,包括用于使一个或多个可编程处理器和网络设备的转发单元的至少一个分组处理器执行以下操作的指令:通过用于内部转发路径的转发管理器,从网络设备的控制单元接收一个或多个分组处理操作,该内部转发路径由网络设备的转发单元的至少一个分组处理器执行;通过转发管理器,基于一个或多个分组处理操作生成多个节点,每个节点包括唯一令牌,其中,多个节点中的第一节点包括设置为多个节点中的第二节点的令牌的值的令牌参考;通过转发管理器,基于节点配置转发路径以包括用于多个节点的相应转发路径元素;以及通过至少一个分组处理器,通过执行转发路径元素处理由转发单元接收的分组。

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

附图说明

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

图2是进一步详细地示出根据本公开的技术的分组处理器和用于分组处理器的转发管理器的框图。

图3是进一步详细地示出根据本文描述的技术的其中配置转发单元的示例网络设备的框图。

图4是示出根据本文描述的技术的用于网络设备的示例实现方式的所选组件的框图。

图5是示出根据本公开中描述的技术的网络设备的实例操作模式的流程图。

在整个附图和文本中,相同的参考标号表示相似的元件。

具体实施方式

图1是示出根据本文描述的技术的其中配置一个或多个转发单元的示例网络设备的框图。网络设备10可以包括路由器(诸如提供商边缘或客户边缘路由器、核心路由器)、或其他类型的网络设备(诸如交换机)。在该示例中,网络设备10包括控制单元12,其为该设备提供控制平面功能。网络设备10还包括多个转发单元20a至20n(“转发单元20”)和交换结构26,它们一起提供用于处理网络流量的数据平面。转发单元20通过接口卡22a至22n(“ifc22”)的接口接收和发送数据分组,每个接口卡与相应的一个转发单元20相关联。每个转发单元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执行多个应用程序,包括守护进程14a至14k(“守护进程14”)和一个或多个第三方应用程序15。每个应用程序可以表示由控制单元操作系统管理的单独处理。守护进程14可以表示由网络设备10的制造商开发和部署的用户级处理。这样,守护进程14对于网络设备10是“本机的”,因为制造商小心地管理应用程序的开发以促进网络设备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)。每个芯片组可以包括不同的芯片,每个芯片具有专门的功能,例如排队、缓冲、接口和查找/分组处理。每个芯片可以代表基于专用集成电路(asic)、基于现场可编程门阵列(fpga)或其他可编程硬件逻辑。单个转发单元20可以包括一个或多个分组处理器24。

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

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

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

转发单元20包括各自的转发管理器16,其将表示从应用程序接收的分组处理操作的数据转换为转发路径元素32(其可以包括转发“下一跳”,以下称为转发路径元素),转发路径元素32包括可由各个分组处理器24执行的指令,并将转发路径元素32存储到分组处理器24的存储器(图1中未示出)。每个转发管理器16可以表示可执行指令,诸如用于处理的指令。分组处理器24执行转发路径元素32以处理所接收的分组以满足由应用程序提供的高级分组处理要求。以这种方式,应用程序将路由和下一跳(操作)的更高级别表示注入到由分组处理器存储的可配置转发状态流中,并且配置转发状态流至少部分地定义用于由分组执行的分组处理操作。因为转发路径元素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一个节点或条目的变化可能需要更新另一个节点的依赖关系。

图2是进一步详细地示出根据本公开的技术的分组处理器和用于分组处理器的转发管理器的框图。分组处理器24a包括具有转发路径元素114a至114d的转发路径66a。出于说明目的,以简化拓扑示出了有限数量的转发路径元素114。转发路径66a的其他实例可以包括以复杂拓扑连接的数千个转发路径元素。在下面参考图3包括转发路径66a的附加细节。

转发路径元素114a、114b和114d表示作为查找容器的转发路径元素,例如表或树。查找容器配置有一个或多个条目,这些条目是容器的单个匹配元素。条目可以由其父容器转发路径元素114、用于匹配查找项的唯一密钥、以及标识后续节点110以在唯一密钥与查找项(例如,分组字段或接口)的成功匹配时执行的节点令牌112标识。例如,查找树114c中的条目可以具有与分组字段匹配的唯一密钥,并且参考表示计数器类型转发路径元素114c的节点110。转发管理器16a配置转发路径66a,使得随后使用转发路径元素114c处理使用查找树114c的分组处理,该查找树具有与唯一密钥匹配的分组字段值。

节点110a至110d表示节点30a的示例实例。每个节点110表示转发路径元素114中的相应一个,并且可由转发管理器16a使用,用于利用相应的转发路径元素114来操纵、参考和配置转发路径66a。每个节点110包括相应的令牌112。例如,节点110a包括令牌112a,节点110b包括令牌11b,等等。转发管理器16a使用令牌112通过修改任何节点110以指定另一节点110的令牌112来在节点110之间创建连接。节点110的每个节点可以包括用于表示节点的正向或反向依赖关系的一个或多个其他节点110的令牌参考列表。在一些示例实现方式中,转发管理器16a包括单独数据结构以存储节点110的令牌参考。

节点110可以包括到其他节点110的令牌112的正向令牌参考118和反向令牌参考116。在所示示例中,例如,节点110b包括到节点110c的令牌112c的正向令牌参考118。节点110c包括到节点110b的令牌112b的反向令牌参考116。正向令牌参考118可以是为转发路径元素的入口指定的令牌值。例如,从节点110b到节点110c的正向令牌参考118可以是用于转发路径元素114b的入口的令牌值。基于该正向令牌参考118,转发管理器16a配置转发路径66a以在转发路径66a的转发拓扑中将转发路径元素114b连接到转发路径元素114c。转发管理器16a可以使用正向令牌参考118和反向令牌参考116来生成依赖关系结构,例如,如下面进一步详细描述的,如果转发路径元素参考的节点被修改,则转发管理器16a可用于更新转发路径元素的一个或多个图谱。

图3是进一步详细地示出根据本文描述的技术的其中配置转发单元的示例网络设备的框图。图3中示出的网络设备10可以表示图1的网络设备10的示例实例。

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

守护进程14和管理接口57在内核43上执行并与内核43交互,内核43为用户级处理提供运行时操作环境。内核43可以表示例如unix操作系统衍生物,诸如linux或伯克利软件套件(bsd)。内核43提供库和驱动,通过库和驱动,用户级处理可以与底层系统交互。控制单元12的硬件环境50包括微处理器52,其执行从存储设备(也未在图3中示出)加载到主存储器(图3中未示出)中的程序指令,以便执行控制单元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可包括执行基本相似功能的基本相似的组件,在下文中主要关于图3中详细示出的转发单元20a描述所述组件和功能。图3的转发单元20a可进一步详细示出图1的转发单元20a的示例。转发单元20a分别通过转发单元20a的接口卡(ifc)22的入站接口35和出站接口37接收和发送网络分组。转发单元20a还包括分组处理器24a,其表示提供网络流量的高速转发的硬件、或硬件和软件的组合。同样,转发单元20b包括分组处理器24b等。在一些示例中,转发单元20中的一个或多个可以各自包括与分组处理器24a基本类似的多个分组处理器。

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

在一些情况下,网络设备10可以表示多机柜路由器,并且交换结构可以包括多级交换结构,诸如3级clos交换结构,其通过使用多路复用通信的光学互连来中继多机柜路由器的路由节点之间的分组交换通信和电路交换通信。在2007年8月1日提交的名称为multi-chassisrouterwithmultiplexedopticalinterconnects的美国公开no.2008/0044181中描述了这种使用多路复用通信的光学互连的多机柜路由器,其全部内容通过参考结合于此。

网络设备10的转发单元20a至20n划分网络设备10的控制平面和数据平面。即,转发单元20a执行控制平面和数据平面功能。通常,分组处理器24a和ifc22实现用于转发单元20a的数据平面,而转发单元处理器62a(图示为“转发单元处理器62a”)执行包括转发管理器16a和分组处理器驱动器60a的软件,其实现转发单元20a内的网络设备10控制平面的部分。控制单元12还实现网络设备10的控制平面的部分。转发单元20a的转发单元处理器62a管理分组处理器24a并执行指令以向控制单元12提供接口并处理主机绑定或其他本地网络分组(诸如包括选项字段值或ttl过期分组的分组)。转发单元处理器62a可以执行用于转发单元20a的微内核。由转发单元处理器62a执行的微内核可以提供用于执行转发管理器16a和分组处理器驱动器60的模块的多线程执行环境。

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

分组处理器24a识别分组属性并执行绑定到属性的动作。分组处理器24a的一个或多个密钥引擎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之一的表查找可以确定是否应该由密钥引擎71a执行转发路径元素32a中的另一个。例如,密钥引擎71a可以执行分组属性的表查找,以确定密钥引擎71a应该进一步执行树查找以识别分组的出站接口。分组处理器24a可以将转发路径元素32a存储在诸如静态随机存取存储器(sram)的计算机可读存储介质中。虽然在分组处理器24a内示出,但是可以将转发路径元素32a存储在外部的并且可由分组处理器24a访问的存储器中。

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

关于转发路径元素(下一跳)和转发路径元素(下一跳)链接的附加信息可在2008年11月6日提交的platform-independentcontrolplaneandlower-levelderivationofforwardingpathelements,美国申请序列号12/266,298中获得,其全部内容通过参考并入本文。在2011年7月29日提交的名称为packetforwardingpathprogrammingusingahigh-leveldescriptionlanguage的美国专利申请13/194,571中;以及在2007年5月8日授权的题为“systemsandmethodsforprocessingpackets”的美国专利no.7,215,637中描述了一种其中控制平面用转发路径元素编程转发平面的网络路由器的示例细节,其全部内容通过参考并入本文。

转发单元20a通过ifc22接收入站网络流量,并且分组处理器24a使用内部转发路径66a处理网络流量。分组处理器24a为传输网络分组查找出站接口并转发传输网络分组,该传输网络分组作为经由出站接口37的出站流量既不受主机约束另外也不需要通过控制平面的逻辑决策的响应。尽管主要关于单个分组处理器24a和单个转发路径66a进行了描述,但是用于转发单元20a的转发管理器16a可以配置多个分组处理器24,每个分组处理器24具有单独的和/或共享的转发路径66。

转发单元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具有由服务器65a存储并且可使用服务器65aapi访问的节点30a中的对应一个。客户端63a使用用于节点30a的api来创建沙箱(在下面进一步详细描述),将条目编程到查找类型转发路径元素32a中,并且将转发路径元素32a连接到程序端到端转发状态。

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

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

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

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

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

图4是示出根据本文描述的技术的用于网络设备的示例实现方式的所选组件的框图。在图4的示例中,转发管理器16a和转发路径66a支持用于各个应用程序142a至142n的多个沙箱150a至150n,其可以表示图1中的任何守护进程14或第三方应用程序。在2015年11月17日提交的题为“networkdevicedataplanesandboxesforthird-partycontrolledpacketforwardingpaths”的美国专利申请no.14/944,113中描述了沙箱,该申请通过参考整体并入本文。

分组处理器24每个可以配置有一个或多个沙箱150。每个分组处理器24可以促进关于本公开的技术的类似和并发的沙箱功能,所述功能在下文中主要关于分组处理器24a进行描述。

沙箱150表示用于分组处理器24a的独立、并行和异步转发路径逻辑,该分组处理器24a由应用142经由转发管理器16a暴露以供配置。虽然分组处理器24a的整体转发路径由本机应用程序(例如,守护进程14)使用平台管理器64a来管理和配置,但是本机应用程序可以配置沙箱150,使得整个转发路径66内的沙箱转发逻辑的配置被委派到其他应用程序142。

例如,沙箱150a表示用于与分组处理器24a的内部转发路径66a的其他转发路径元素一起内联配置的指令的容器。在一些示例中,沙箱150a是“逻辑”容器,其中如果由服务器65a配置为在沙盒150a内,作为分组处理器24a的内部转发路径的一部分,则指令是“内部”沙箱150a。在这样的示例中,沙箱150a可以以应用程序142a具有在沙箱150a的已建立范围内由沙箱150a逻辑执行的操作控制的方式向应用程序142a呈现分组处理器24a内的独立的、隔离的虚拟分组处理器。

在其他示例中,沙箱150a可以以转发逻辑物理上与主分组处理器24a以及与转发路径66a物理分离的形式表示物理上分离的分组处理器。在这样的示例中,沙箱150a可以从物理上分离的存储器读取指令,该存储器定义沙箱150a的转发路径。在这样的示例中,沙箱150a可以向应用程序142a呈现独立的、隔离的分组处理器,其与分组处理器24a的转发路径66a一致,使得第三方具有在沙箱150a的物理上分开的范围内由沙箱150a逻辑执行的全部操作控制。虽然上面关于沙箱150a进行了描述,但是其他沙箱150可以被配置并且类似地操作。虽然转发路径66a被示为由分组处理器24a执行,但是多个分组处理器24可以执行共同转发路径或具有共同的转发路径元素的转发路径。分组处理器24可以位于单线卡上。

在该示例中,应用程序142中的每一个与转发管理器16a的适配器140中的对应一个连接并将表示分组处理操作的数据发送到转发管理器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,其可以类似于图3的依赖关系77a。每个沙箱管理器144为沙箱管理器管理用于对应节点30a的令牌的单独令牌空间。例如,节点30a-1的令牌可以与节点30a-n的令牌重叠。因此,服务器65可以操作以向不同的应用程序142提供用于与底层分组处理器24硬件交互的一致模型。

图5是说明根据本公开中所描述的技术的网络设备的实例操作模式的流程图。关于图1的网络设备10的转发管理器16a描述操作模式200,但是可以由执行指令以配置用于线卡的至少一个分组处理器的任何转发单元处理器来执行操作模式200。

转发管理器16a从由网络设备10的控制单元执行的至少一个应用程序接收分组处理操作(201)。转发管理器16a生成元素节点以表示用于在网络设备10的转发平面中实现分组处理操作的转发路径元素(202)。例如,转发管理器16a可以包括适配器140a,其接收用于诸如开放流的sdn协议的分组处理操作,并且将操作转换为可以使用由服务器模块65a呈现的api所生成和操纵的节点。例如,转发管理器16a可以设置节点的令牌参考以参考另一节点的令牌以便在节点之间创建连接。转发管理器16a使用这些节点为分组处理器24a配置内部转发路径66a,以包括由元素节点表示的转发路径元素并实例化由节点的令牌参考表示的转发路径之间的连接(204)。

另外,转发管理器16a生成指示节点之间的依赖关系的依赖关系结构(206)。例如,转发管理器16a可以从包括第二节点的令牌的值的第一节点的令牌参考确定第一节点依赖于第二节点。作为响应,转发管理器16a可以利用从第二节点到第一节点的映射或其他关联来更新依赖关系结构,以指示第一节点依赖于第二节点。

基于新的分组处理操作或新的状态数据,转发管理器16a随后生成新节点以更新现有节点(208)。转发管理器16a利用新节点的新转发路径元素配置转发路径66a(210),并且使用先前生成的依赖关系结构,更新转发路径66a中的至少一个现有转发路径元素以设置新转发路径元素作为至少一个现有转发路径元素的下一跳(212)。

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

这样的硬件、软件和固件可以在同一设备内或在单独的设备内实现,以支持本公开中描述的各种操作和功能。另外,任何所描述的单元、模块或组件可以一起或单独地实现为离散但可互操作的逻辑设备。将不同特征描述为模块或单元旨在突出不同的功能方面,并且不一定暗示这些模块或单元必须由单独的硬件或软件组件实现。而是,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件执行,或者集成在公共或单独的硬件或软件组件中。

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

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