优化用于电子设备内的虚拟节点的结构路径转发的制作方法

文档序号:17861447发布日期:2019-06-11 22:53阅读:172来源:国知局
优化用于电子设备内的虚拟节点的结构路径转发的制作方法

本申请要求保护于2017年11月30日提交的美国申请号15/827,476的权益,通过引用将其全部内容结合在此。

本发明涉及计算机网络,并且更具体地,涉及计算机网络内的分组路由和切换。



背景技术:

计算机网络是能够交换数据并且共享资源的互连计算设备的集合。在基于分组的网络中,诸如以太网网络等,计算设备通过将数据划分成称为分组的可变长度块来通信数据,所述可变长度块被分别地跨网络从源设备路由至目的地设备。目的地设备从分组中提取数据并且将数据组装成其原始形式。

某些设备(被称之为路由器)维护表示网络拓扑的路由信息。路由器交换路由信息,以通过网络维护可用路由的准确表示。“路由”通常被定义为网络上的两个位置之间的路径。在收到输入数据分组时,路由器检查分组内的信息,通常被称之为“密钥”,以根据路由信息选择要转发分组的适当下一跳。

路由器可以包括通过内部交换结构而互连的一个或多个转发部件,例如,分组转发引擎。分组转发引擎经由接口卡与其他外部设备接收和发送数据。交换结构提供了一种在分组转发引擎之间的路由器内转发数据、以通过网络进行最终传输的内部互连机制。在一些实施例中,路由器或交换机设备可以采用分布式、多级交换结构架构,其中,网络分组遍历位于路由器的分布式转发部件中的交换结构的多个级,以从交换结构的入口点行进至交换结构的出口点。

通过将诸如分组转发引擎等路由器的硬件资源分割几份可以使得路由器虚拟化成多个虚拟网络节点。两个虚拟节点之间可以设置一个或多个链路。例如,聚合结构接口(af)链路(即,逻辑链路)构造并且提供虚拟节点连接。源分组转发引擎可以经由af链路穿过内部交换结构的输入数据负载平衡到目的地分组转发引擎,以通过网络进行最终传输。



技术实现要素:

总之,本公开描述了当内部分组负载平衡通过其他方式可能导致结构跳数增加时,将分组从入口分组转发引擎直接转发至特定目的地分组转发引擎(pfe)的技术。例如,源pfe可以接收目的地为仅通过具体目的地pfe(例如,出口pfe)可到达的路由器的输入分组。源pfe从目的地pfe获得与出口pfe相关联的结构路径信息,以使得源pfe可以将输入分组直接转发至出口pfe,而不是将输入分组负载平衡至可能成是非出口pfe的目的地pfe。尤其在将路由器已被分割成多个虚拟节点并且来自入口pfe且发往虚拟节点的流通常在虚拟节点的入口pfe处内部地负载均衡的情况下,该技术可以提供具体的技术改进,诸如减少结构跳等。

作为一个实施例,为了获得与出口pfe相关联的结构路径信息,源pfe将输入分组修改为包括结构路径报头,结构路径报头指示接收pfe将与出口pfe相关联的结构路径信息发送至路径模块,而不是将分组转发至下一结构跳。源pfe进而从路径模块接收具体结构路径至出口pfe的指示符(例如,哈希值),源pfe可以使用指示符将输入分组直接转发至出口pfe,而不是负载平衡分组。

在一个实施例中,一种方法包括:通过单框网络设备的源虚拟路由节点接收分组,单框网络设备具有多个分组废引擎(pfe)和在多个pfe的相应结构接口处耦接多个pfe的相应配对的多个结构链路。该方法还可以包括:通过源虚拟路由节点将修改分组发送至多个pfe的接收pfe,其中,修改分组包括被添加至分组中的结构路径报头,用于请求与出口pfe相关联的结构路径信息。该方法可以进一步包括:通过源虚拟路由节点并且从路径模块接收与出口pfe相关联的结构路径信息。该方法还可以包括:通过源虚拟路由节点将与出口pfe相关联的结构路径信息存储在源虚拟路由节点的转发信息中。该方法可以进一步包括:通过源虚拟路由节点将下一分组直接发送至出口pfe,而不是负载平衡下一分组。

在另一实施例中,方法可以包括:通过单框网络设备的接收虚拟路由节点从源虚拟路由节点接收修改分组,单框网络设备具有多个分组转发引擎(pfe)和在多个pfe的相应结构接口处耦接多个pfe的多个结构链路的相应配对,其中,该修改分组包括结构路径报头以请求与出口pfe相关联的结构路径信息。该方法还可以包括:通过接收虚拟路由节点确定修改分组包括报头。该方法可以进一步包括:通过接收虚拟节点并且从接收虚拟节点的转发信息中检索与出口pfe相关联的结构路径信息。该方法还可以包括:通过接收虚拟节点将与出口pfe相关联的结构路径信息发送至路径模块,而不是将修改分组转发至下一结构跳。

在另一实施例中,单框网络设备包括:多个分组转发引擎(pfe);多个结构链路,在多个pfe的相应结构接口处耦接多个pfe的相应配对;多个虚拟路由节点中的第一虚拟路由节点和第二虚拟路由节点;其中,第一虚拟路由节点被配置为:接收分组;将修改分组发送至多个pfe中的接收pfe;其中,修改分组包括被添加至分组中的结构路径报头,用于请求与出口pfe相关联的结构路径信息;从路径模块接收与出口pfe相关联的结构路径信息;将与出口pfe相关联的结构路径信息存储在第一虚拟路由节点的转发信息中;并且将下一分组直接发送至出口pfe,而不是负载平衡下一分组。

在所附附图和下列描述中阐述了此处描述的技术的一个或多个实施例的细节。从描述与附图、以及权利要求书中,此处描述的技术的其他特征、目标、以及优点将变得显而易见。

附图说明

图1是示出包括根据本公开中描述的技术配置的单框路由器的逻辑图的示例性网络环境的框图。

图2是示出根据本公开中描述的技术的图1中将分组直接转发至特定目的地pfe、而不是负载平衡分组的示例性单框路由器的框图。

图3是进一步详细示出了图2中的控制单元与分组转发引擎的示例性实例的框图。

图4是示出根据此处描述的技术的示例性分组的框图。

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

具体实施方式

图1是示出包括根据本公开中描述的技术配置的单框路由器12的逻辑图的示例性网络环境10的框图。出于示例之目的,相对于图1中的简化网络环境10描述了本公开中的技术,其中,单框路由器12与核心路由器(cr)30a-30b(“核心路由器30”)通信,以向客户端设备22a-22b(“客户端设备22”)提供对由互联网协议(ip)/多协议标签交换(mpls)核心网络16中的设备提供的服务的接入。

图1中示出的网络环境10的配置仅是实施例。尽管未示出该些配置,然而,ip/mpls核心网络16可以耦接至由其他供应商管理的一个或多个网络,并且可以由此构成大规模公共网络基础设施(例如,互联网)的一部分。以太网聚合网络14可以被视为互联网的接入网络。服务供应商网络可以向耦接至客户端设备22的计算设备提供对互联网的接入,并且可以允许客户网络(未示出)内的计算设备彼此通信。在另一实施例中,ip/mpls核心网络16可以在互联网的核心内提供网络服务。在任意情况下,ip/mpls核心网络16可以包括除单框路由器12、供应商边缘(pe)路由器28、以及核心路由器30之外的各种网络设备(未示出),诸如其他路由器、交换机、服务器、或其他设备等。

单框路由器12包括虚拟供应商边缘(vpe)节点20(“vpe20”)和虚拟核心路由器(vp)节点18a-18b(“vp18”),从单框路由器12的外部的网络设备的角度,这些节点为操作为多个不同的节点的协作虚拟路由部件。单框路由器12是具有单个物理框的路由器,其通过分割路由器的硬件资源而被虚拟化成多个虚拟网络节点(被称之为“vnode”),诸如分组转发引擎(pfe)等。在图1的实施例中,vnode18、20各自包括一个或多个pfe,例如、pfe24a-24f(“pfe24”)。各个pfe24与具体的vnode相关联并且并不在多个vnode中共享。在图1的实施例中,vpe20可以包括pfe24a和pfe24b;vp18a可以包括vpe20c和vpe20d;并且vp18b可以包括pfe24e和pfe24f。

客户端设备22可以是与耦接至客户边缘(ce)路由器23的一个或多个客户网络(未示出)相关联的设备。在一些实施例中,客户端设备22可以包括计算设备,例如,诸如个人电脑、膝上型电脑、手持式电脑、工作站、服务器、交换机、打印机、客户数据中心、或其他设备等。在其他实施例中,客户端设备22可以是诸如交换机、路由器、网关等端点设备,或操作为客户设备之间的分界点的另一终端,诸如用户设备和服务供应商设备等。在一个实施例中,客户端设备22可以包括数字用户线路接入多路复用器(dslam)或其他交换机设备。例如,客户端设备22可以连接至一个或多个无线电或基站(未示出),以与用户设备无线地交换分组化数据。客户端设备22可以包括交换机、路由器、网关、或将从无线电接收的分组化数据聚合至ce路由器23的另一终端。在一些实施例中,聚合网络14可以包括光学接入网络。例如,ce路由器23可以包括经由光纤电缆连接至一个或多个客户端设备22或光学网络单元(onu)的光学线路终端(olt)。

客户端设备22可以是耦接至客户网络和用户设备的接入节点。客户端设备22是由pe路由器28提供的服务的客户端。在该实施例中,服务供应商网络包括向用户设备提供对聚合网络14的接入的客户端设备22和客户边缘(ce)路由器23。在一些实施例中,ce路由器23可以包括维护用户设备与聚合网络14之间的路由信息的路由器。例如,ce路由器23可以包括宽带远程接入服务器(bras)功能,其将来自一个或多个客户端设备22的输出聚合至更高速上行链路(至聚合网络14)。

单框路由器12包括多个路由部件(例如,路由处理)和转发部件(例如,pfe24),它们被物理地耦接并且被配置为操作为单独的逻辑路由器。对于网络环境10中的核心路由器30和ce路由器23,单框路由器12表现为多个路由设备,具体地,虚拟pe(vpe)路由器20、和虚拟供应商(vp)路由器18。例如,尽管单框路由器12包括单个框,然而,从核心路由器30的角度,单框路由器12具有多个外部通告的网络地址,并且对于维护与各个核心路由器30的对等路由会话的每个路由协议,维护多个对等路由会话。

每个vnode的控制面(vcp)25a-25c(“vcp25”)以虚拟机(vm)技术为实例。vcp25位于单框路由器14的路由引擎(re)内或re之外。每个vnode可以扮演不同的网络功能的角色,诸如互联网服务供应商边缘(pe)、虚拟私有网络(vpn)服务pe、以及多协议标签交换(mpls)标签交换路由器(lsr)等。除这些vnode之外,在一些实施例中,单框路由器12还可以包括以共享资源管理(例如,管理面,图1中未示出)为实例的管理vm。

在单框路由器12的两个vnode之间,提供一个逻辑层-3链路,其对单框路由器12的外部的设备可见。例如,在图1中,聚合结构接口(af)链路32a-32b(“af链路32”)分别提供vpe20与vp18a之间、以及vpe20与vp18b之间的逻辑链路。各个af链路32是层-3逻辑链路构造并且提供vnode至vnode连接。af链路32捆绑连接相同vnode的这些结构互连。af提供vnode之间的单逻辑链路连接并且可以具有多个层-1、层-2、或层-3结构捆绑,其视实现方式而定。

af32a包括结构互连33a-33d,并且af32b包括结构互连33e-33h(统称为“结构互连33”)。结构互连在一个pfe24的结构接口处终止。结构接口具有通常并不向位于单框路由器12的外部的设备通告的标识符。结构互连13被模型化成在一对pfe24之间的点到点以太网链路。af与结构接口(fi)模拟了点到点接口。

在一个实施例中,假设vpe20提供基于mpls的vpn服务,并且ce23连接至pfe24a。还假设vpe20经由pfe24c和pfe24d通过结构等价的逻辑路径连接至vp18a,并且vpe20经由pfe24e和pfe24f通过结构等价逻辑路径连接至vp18b。当来自以太网聚合网络14并且目的地至pe28的分组到达vpe20时,在缺少本公开的技术的情况下,vpe20将基于ecmp负载平衡将数据流发送至任意pfe24c-24f。例如,af链路32a可以包括结构接口33a-33d和结构互连33e-33h,结构接口33a-33d用于将vpe20的pfe互连至vp18a的pfe,结构互连33e-33h用于以将vpe20的pfe互连至vp18b的pfe。vpe20可以执行哈希算法来确定使用结构互连33中的哪一个作为输出接口。然而,哈希与出口pfe上的出口接口无关。

假设仅经由pfe24e从vp18b是可到达pe28的。按照惯例,vpe20负载平衡至结构的流。如果非出口目的地pfe接收到该流,则非出口pfe通常将流转发至出口pfe24e,以将分组从wan链路转发至ip/mpls核心16。这导致了消耗结构带宽的额外的结构跳。通过负载平衡该流,被转发至非出口目的地pfe的流的几率为[(n-1)/n]*100百分比。在图1的实施例中,当pfe24a负载平衡至结构的流时,将该流转发至pfe24e以外的pfe的几率为83.3%。随着pfe的数目的增加,将流转发至非出口pfe的几率接近100%,由此增加了进行浪费带宽的额外结构跳的可能性。

根据本公开中的技术,源pfe可以将流直接发送至特定目的地pfe(例如,出口pfe)、而不是负载平衡该流。例如,单框路由器12的虚拟节点可以将与出口pfe相关联的结构路径信息发送至路径模块27,以使得路径模块27可以将结构路径信息推送至源虚拟节点,以将输入流直接转向至出口pfe,而不是负载平衡流。在一些实施例中,路径模块27可以包括遥测服务器,遥测服务器接收统计数据并且执行诸如监测业务流和更新业务流等额外功能。尽管路径模块27被示为在单框路由器12内,然而,路径模块27可以位于单框路由器12的外部。

在图1的实施例中,源虚拟节点vpe20的源pfe(例如,pfe24a)可以从以太网聚合网络14接收指定至pe28的流。源pfe24a可以执行查找,以确定是否已知到出口pfe的结构路径。响应于确定出口pfe未知,源pfe24a可以例如修改输入分组的副本,以包括例如结构路径报头,其指示接收pfe将与出口pfe相关联的结构路径信息发送至路径模块27,而非将分组转发至下一结构跳。在一些实施例中,如下面图2中进一步描述的,源pfe24a可以修改被识别为具有高分组速率的输入分组。然后,源pfe24a将修改分组和原始分组负载平衡至结构。

在一个实例中,非出口pfe(此处也被称之为“接收pfe”)(例如,pfe24d)可以接收修改分组和原始分组。非出口pfe24d执行其转发信息的查找来确定出口pfe(例如,pfe24e)。在一些实施例中,将原始分组转发至下一结构跳(至出口pfe24e)。非出口pfe24d可以基于修改分组将结构路径信息36发送至路径模块27,而不是将修改分组转发至下一结构跳。例如,结构路径信息36可以包括查找值(即,与出口pfe24e相关联的信息)、与源pfe224a相关联的哈希值、以及与源pfe224a相关联的信息。在一些实施例中,接收pfe24d可以将结构路径信息36直接发送至源pfe24a。

pfe24d可以使用连接34与路径模块27通信。连接34可以是pfe24与路径模块27之间建立的通信通道,以交换结构路径信息。例如,可以使用用户数据报协议(udp)建立连接34。在图1的实施例中,在vpe20与路径模块27之间、vp18a与路径模块服务器27之间、以及vp18b与路径模块27之间建立连接34。尽管未示出,然而,其他虚拟节点可以与路径模块27建立连接。

路径模块27可以从非出口pfe24d接收结构路径信息36,并且可以将结构路径信息(“结构路径信息37”)推送至源pfe24a。源pfe24a可以接收结构路径信息37并且可以存储与出口pfe24e相关联的信息。以这种方式,在接收到输入流时,源pfe24a可以执行其转发信息的查找并且确定已知到出口pfe24a的结构路径,并且将输入流直接转发至出口pfe24a,而非负载平衡分组。

在一些实施例中,路径模块27可以监测到出口pfe24a的结构路径。在到pfe24a的结构路径不可用或不再有效的实例中,路径模块27可以移除结构路径或将流重新定向至另一结构路径(至配置有上述所述技术的另一目的地pfe)。

以这种方式,将从源pfe接收的输入分组直接转发至特定目的地pfe,由此消除了将分组转发至非出口pfe并且引起浪费带宽的额外结构跳的可能。

图2是示出根据本公开中描述的技术的提供将分组直接转发至特定目的地pfe、而非负载平衡的示例性单框路由器212的框图。单框路由器212可以代表图1中的单框路由器12。单框路由器212可以包括例如操作为虚拟供应商边缘或虚拟客户边缘路由器、虚拟自动系统边界路由器(asbr)、虚拟区域边界路由器(abr)、或其他一类型的网络设备(诸如虚拟交换机)的多个虚拟节点。

在该实施例中,单框路由器212包括为单框路由器212提供控制面功能的控制单元218。控制单元218可以分布在多个实体之间,诸如一个或多个路由单元及可插入到单框路由器212中的一个或多个服务卡等。在这种情况下,单框路由器212因此可以具有多个控制面。在一些实施例中,单框路由器212中的每个虚拟路由节点可以具有其自身的虚拟控制面,例如,图1中的vcps25。

控制单元218可以包括路由引擎220,其提供控制面功能、以路由表形式存储网络拓扑、执行路由协议以与对等路由设备通信、以及维护并且更新路由表。路由引擎220还提供了允许用户接入和配置单框路由器212的接口。

单框路由器212还包括示例性的分组转发引擎224a-224n(“pfe224”)和交换结构226的形式的多个转发部件,它们一起提供用于转发用户流和通过其他方式处理用户流的转发面。例如,pfe224可以是图1中的任意pfe224。

控制单元218通过内部通信链路230连接至各个pfe224。例如,内部通信链路230可以包括100mbps或1gbps的以太网连接。路由引擎220可以运行守护进程(未示出),例如,可以运行网络管理软件的用户级进程,执行路由协议以与对等路由设备通信、运行从管理员接收的配置命令、维护并且更新一个或多个路由表、管理用户流处理、和/或创建用于安装至pfe224的一个或多个转发表等其他功能。

控制单元218可以包括运行存储在计算机可读存储介质(再次,图2中未示出)的软件指令(诸如用于定义软件或计算机程序的软件指令)的一个或多个处理器(图2中未示出),诸如包括存储设备(例如,磁盘驱动器或光驱动器)的非暂时性计算机可读介质和/或诸如随机存取存储器(ram)等存储器(包括各种形式的动态ram(dram)的(例如,ddr2sdram)或静态ram(sram)各种形式)、闪存、能用于以指令或数据结构的形式携带或存储所需的程序代码和程序数据、并且处理器能访问的另一种形式的固定或可移除存储介质、或存储致使一个或多个处理器执行此处描述的技术的指令的任意其他类型的易失性或非易失性存储器等。可替代地或另外地,控制单元218可以包括用于执行此处描述的技术的专用硬件,诸如,一个或多个集成电路、一个或多个专用应用集成电路(asic)、一个或多个专用标准产品(assp)、一个或多个场可编程门阵列(fpga)、或上述专门硬件的实施例的一个或多个的任意组合等。

pfe224经由各自与pfe224中的相应一个相关联的接口卡222a-222n(“ifc222”)的接口接收和发送数据分组。各个pfe224及其相关联的一些ifc222可以驻留在单框路由器212的独立线路卡(未示出)上。示例性的线路卡包括柔性可编程集成电路(pic)集中器(fpc)、密集端口集中器(dpc)、以及模块化端口集中器(mpc)。各个ifc222可以包括关于层2(l2)技术的各种组合的接口,包括以太网、千兆以太网(gige)、以及同步光网络(sonet)接口。在各个方面,各个pfe224可以包括更多或更少的ifc。

交换结构226提供高速互连,用于将输入数据分组转发至所选的一个pfe224中以通过网络输出。交换结构226可以包括诸如图1中的结构链路33等多个结构链路(未示出)。在一些实施例中,交换结构226可以是分布式、多级交换结构架构,其中,网络分组遍历位于路由器的分布式转发组件中的交换结构的多个级,以从交换结构的入口点行进至交换结构的出口点。作为一个实施例,交换结构226可以实现为单个多级clos交换结构,其中继跨交换结构的各级的通信。典型的多级clos交换结构具有多个互连的交换机以形成多个级。在典型的布置中,交换结构包括入口(或“第一”)级、一个或多个中间级、以及出口(“最后”)级,且每个级具有一个或多个交换机(例如,纵横式(crossbar)交换机-通常更为简单地称之为“纵横式”)。此外,交换结构可以被实现为使得交换机被布置成多个平行的结构面,即,每个结构面通过多个级独立提供从入口端口至出口端口的转发,其中一个或多个可以被视为备用的结构面。换言之,各个平行的结构面可以视为多级clos交换结构的独立部分,其中,每个面提供切换冗余。

在分组遍历单框路由器212的内部架构时,pfe224通过在各个内部分组处理路径上对每个分组执行一系列的操作来处理分组。例如,通过任意对应的入口接口、入口pfe224、出口pfe224、出口接口、或先前分组所指向的单框路由器212的其他部件(诸如一个或多个服务卡等)可以对每个分组执行操作。分组处理的结果确定了pfe224将分组从其一个ifc222上的输入接口转发(或其他方式处理)至ifc222之一上的输出接口的方式。

图2中的实施例示出了每个pfe224包括转发信息228(被另行称之为转发信息库(fib))。转发信息228a在查找下一跳时提供在转发面中使用的转发信息。

为了通过实施例示出,假设pfe224a代表了图1中的pfe224a。pfe224a可以经由一个ifc222上的入口接口接收输入的流。pfe224a可以从转发信息228a的查找中确定是否已知与特定目的地pfe相关联的信息,例如,出口pfe信息275a(“出口pfe信息275a”)。

如果pfe224a确定出口pfe信息275a不在转发信息228a中,则pfe224a则可以发起指令以请求与出口pfe相关联的结构路径信息。例如,pfe224a可以修改分组的副本以包括结构路径报头,该结构路径报头指示接收pfe将与出口pfe相关联的结构路径信息发送至路径模块227,而不是将分组转发至下一结构跳。在一些实施例中,报头可以包括与源pfe224a相关联的哈希值和与源pfe224a相关联的信息。

pfe224a可以经由pfe224a中的一个ifc222的出口接口将原始分组和修改分组负载平衡到结构。在负载平衡中,当等价多路径(ecmp)对于前缀可用时,哈希算法从聚合结构接口(例如,图1中的af32a)选择出口接口。即,pfe224a可以从af的下一跳列表中选择下一跳并且经由一个ifc222上的输出接口将原始分组和修改分组发送至所选择的下一跳(至接收pfe)。

例如,假设pfe224n代表了图1中的非出口pfe24d。pfe224n可以经由一个ifc222上的入口接口从pfe224a中接收原始分组和修改分组。基于确定修改分组包括结构路径报头,pfe224n可以执行转发信息228n的查找,以确定与出口pfe相关联的信息(例如,出口pfe信息275n),并且pfe224n可以将查找信息236发送至路径模块227。在一些实施例中,非出口pfe224n可以将结构路径信息直接发送至源pfe224a。在一些实施例中,接收pfe224n可以发送包括与出口pfe相关联的查找信息、与源pfe相关联的信息、以及哈希值(此处被统称为“结构路径信息”)的信息。路径模块227可以将结构路径信息237推送至源pfe224a。源pfe可以将结构路径信息作为出口pfe信息275a安装在转发信息228a中。接收pfe224n可以将原始分组转发至出口pfe224e以通过网络进行最后的传输,并且可以丢弃修改分组。

在收到输入分组时,源pfe224a可以查找转发信息228a并且基于出口pfe信息275a确定特定目的地pfe。以这种方式,源pfe224a可以将输入分组直接转发至特定目的地pfe,而非负载平衡流。

图3是进一步详细示出了图2中的路由引擎218和pfe224的路由引擎318和分组转发引擎324(“pfe324”)的示例性实例的框图。在该实施例中,路由引擎318提供控制面302的操作环境,用于运行在用户空间306中运行的各个用户级守护进程314。守护进程314是用户级进程,其可以运行网络管理软件、执行路由协议以与对等路由设备通信、运行从管理员接收的配置命令、维护并更新一个或多个路由表、管理用户流处理、和/或创建用于安装至pfe324的一个或多个转发表等其他功能。在该实施例中,守护进程314包括命令行接口守护进程332(“cli332”)、路由协议守护进程334(“rpd334”)、以及简单网络管理协议守护进程336(“snmp336”)。在该方面,控制面302可以为单框路由器212提供路由面、服务面、以及管理面功能。路由引擎318的各个实例可以包括图3中未示出的附加守护进程314,该附加守护进程314对单框路由器212执行其他控制、管理、或服务面功能和/或驱动和通过其他方式管理转发面功能。

守护进程314在内核343上操作并且与内核343交互,内核343为用户级进程提供运行时操作环境。例如,内核343可以包括诸如linux或berkeley软件分布(bsd)等unix操作系统衍生品。内核343提供了库和驱动,通过库和驱动,守护进程314可以与底层系统交互。内核343的pfe接口316包括内核级库,通过该内核级库,守护进程314和其他用户级进程或用户级库可以与pfe324a的编程接口364交互。pfe接口316可以包括例如用于通过专有网络链路与pfe324a通信的套接字库。

路由引擎318的硬件环境350包括微处理器352,其执行从储存器(图3中也未示出)加载至主存储器(图3中未示出)中的程序指令,以执行路由引擎318的软件栈(包括内核343和用户空间306)。微处理器352可以包括一个或多个通用或专用处理器,诸如数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、或任何其他等效逻辑装置等。因此,此处使用的术语“处理器”或“控制器”可以指上述结构中的任何一个或多个,或可操作为执行此处描述的技术的任何其他结构。

rpd334执行一个或多个内部和/或外部路由协议,以与其他网络设备交换路由信息,并且将收到的路由信息存储在路由信息库345(“rib345”)中。例如,rpd334可以运行诸如边界网关协议(bgp)(包括内部bgp(ibgp)、外部bgp(ebgp)、多协议bgp(mp-bgp))、标签分布协议(ldp)、以及流工程扩展的资源预留协议(rsvp-te)中的一种或多种协议等协议。此外或可替代地,rpd334可以执行用户数据报协议(udp)以发送和接收关于各种系统资源(诸如物理接口)的数据。例如,rpd334可以使用udp发送和接收来自路径模块327的数据。尽管示出了udp,然而,rpd334可以运行任何协议以与路径模块327交换系统资源的数据。

rib345可以包括定义网络拓扑的信息,包括一个或多个路由表和/或链接状态数据库。rpd334解析由rib345中的路由信息定义的拓扑,以选择或确定通过网络的一个或多个活动路由,然后,将这些路由安装至转发信息库328a(“fib328a”)。通常,rpd334以根或其他查找树形式生成fib328a,以将分组信息(例如,具有目的地信息和/或标签栈的报头信息)映射至下一跳,并且最终到达与相应的pfe324相关联的接口卡中的接口端口。内核343可以使路由引擎318的fib328a与pfe324a中的转发信息348同步。

命令行接口守护进程332(“cli332”)提供外壳,管理员或其他管理实体可以通过该外壳使用基于文本的命令来修改单框路由器212的配置。snmp336包括snmp代理,其接收来自管理实体的snmp命令以设置并检索单框路由器212的配置和管理信息。例如,使用cli332和snmp336,管理实体例如可以启用/禁用并且配置服务、管理分组流的分类和服务类别、安装路由、启用/禁用并且配置限制器、配置移动网络的流承载以及配置接口。在该实施例中,rpd334、cli332、以及snmp336经由pfe接口316配置转发面304,以实现所配置的服务、和/或添加/修改/删除路由。pfe接口316允许守护进程314驱动pfe324a的分组处理路径372的安装与配置。具体地,pfe接口316包括应用编程接口(api),守护进程314通过应用编程接口(api)可以将分组流映射至结构接口而进行转发。

pfe324a与单框路由器212中的其他pfe324组合,实现转发面304(也被称为“数据面”)功能,以处理来自入口接口(通过该入口接口将接收分组至发送分组的出口接口)的分组处理。转发面304确定通过单框路由器212的数据分组转发、应用服务、限制分组流速率、过滤分组、并且使用由控制面302安装至转发面304的服务对象和查找数据来通过其他方式处理分组。尽管图3仅详细示出了pfe324a,然而,单框路由器212中的每个pfe324包括执行大致相似功能的相似模块。

pfe324a包括基于专用集成电路的分组处理器(“asic368”),其根据此处描述的技术的执行处理路径372。asic368包括具有密钥引擎370的一个或多个可编程的专用集成电路,密钥引擎370运行微代码(或“微指令”)来控制和应用asic368的固定硬件组件以处理分组“密钥”。分组密钥包括分组字段和确定沿着诸如路径373等内部处理路径的分组的分组处理流的其他参数。密钥引擎370包括密钥缓冲器363,用于存储密钥引擎当前正在处理的相应分组的分组字段数据。密钥缓冲器363还可以提供受限的可写存储器,可将内部处理路径的元素写入该受限的可写存储器,以传递未来元件可访问的消息。asic368的一些实例可以包括多个密钥引擎,每个密钥引擎具有相关联的密钥缓冲器。

asic368的内部处理路径372(“处理路径372”)包括可编程的、可执行的微代码及固定的硬件组件,其确定由密钥引擎370执行的分组处理动作和其他操作。pfe324a可以将处理路径372的可执行的指令存储在诸如静态随机存取存储器(sram)等计算机可读存储介质中。尽管在asic368中示出了,然而,在一些实施例中,处理路径372的可执行的指令可以存储在pfe324a中的asic368外部的存储器中。

在一些方面,例如,处理路径372包括用于发起处理的下一跳数据结构。在密钥引擎370每个处理步骤结束时,结果为指定额外处理或终止处理的下一跳。此外,下一跳可以指定要由密钥引擎370和/或要应用的一个或多个硬件元件执行的一个或多个功能(例如,监管器)。密钥引擎370可以与存储用于执行下一跳的结果的结果(或“查找”)缓冲器(未示出)相关联。例如,密钥引擎370可以执行由下一跳列表指定的查找,并且将查找结果存储至相关联的结果缓冲器。结果缓冲器的内容可能影响下一跳的动作。

逻辑接口371(“ifl371”)是包括一个或多个逻辑接口的表或其他数据结构。各个ifl371是至路径373的处理路径的接口。路径373表示由密钥缓冲器363上的密钥引擎370执行的一个或多个处理路径。

pfe微处理器360管理asic368并且执行编程接口364以提供用于/到路由引擎318的接口。例如,编程接口364可以包括一个或多个用户或内核级库、程序、工具包、应用编程接口(api),并且可以使用套接字经由内部通信链路(例如,通信链路230)将控制消息与数据消息通信至pfe324。pfe微处理器360可以运行微内核362来为接口提供操作环境。编程接口364从路由引擎318接收指导分组转发引擎324a配置逻辑接口371的消息。

在操作中,源pfe(例如,源pfe324a)可以接收通过结构通信的输入分组。源pfe324a的密钥引擎370执行转发信息348的查找,以确定与具体目的地pfe(例如,出口pfe324e)相关联的结构路径信息是否是已知的。作为一个实施例,密钥引擎370可以对输入分组执行最长前缀匹配,以确定与出口pfe324e相关联的结构路径信息是否是已知的。最长前缀的成功匹配向源pfe324a提供到出口pfe的下一跳信息,而最长前缀的失败匹配表示与出口pfe324e相关联的结构路径信息是未知的,并且源pfe324a可以发起指令以获得与出口pfe324e相关联的结构路径信息。

响应于最长前缀匹配失败,源pfe324a发起指令以获得与出口pfe324e相关联的结构路径信息。例如,在对修改分组进行负载平衡之前,源pfe324a的微内核362将输入分组的副本修改为包括结构路径报头。结构路径报头可以提供接收pfe的指示,以将与出口pfe324e相关联的结构路径信息发送至路径模块327,而不是将分组转发至下一结构跳。在一些实施例中,结构路径报头可以包括哈希值和与源pfe324a相关联的信息。在一些实施例中,微内核362可以修改已被确定为具有高分组速率的输入分组。为了确定高分组速率数据流,微内核362可以对输入分组执行较短前缀匹配,并且在定义的时间段内计算匹配次数。例如,对于每次匹配,微内核362可以将每次匹配次数存储到转发信息348中。如果匹配次数超过定义的阈值分组速率,则微内核362可以将与较短前缀匹配的下一输入分组(例如,作为哈希值)存储在转发信息348中。微内核362可以将下一输入分组修改为包括结构路径报头。这样,pfe324a可以将结构路径报头添加到被确定为具有高分组速率的分组中。

然后,源pfe324a将原始分组和修改分组负载平衡到结构。例如,微内核362将原始分组和修改分组经由ifl371中的对应一个输出至在路径373中的所选的下一跳,所选的下一跳至下一跳(到pfe)列表中的pfe(例如,pfe324n))。

非出口pfe324n接收原始分组和修改分组,并且非出口pfe324n的密钥引擎370确定修改分组包括结构路径报头。非出口pfe324n不是将修改分组转发至出口pfe324e而是执行目的地pfe(例如,出口pfe324e)的查找,并且可以经由微内核362将查找信息发送至路径模块327。在一些实施例中,非出口pfe324n还可以发送与源pfe相关联的、包括在结构路径报头中哈希值和信息。在一些实施例中,接收pfe324n可以将结构路径信息直接发送至源pfe324a。非出口pfe324n可以将原始分组转发至出口pfe324e,以通过网络进行最终传输,并且非出口pfe324n可以丢弃修改分组。

路径模块327将结构路径信息推送至源pfe324a。例如,路径模块327可以经由内核343将存储在转发信息348中的结构路径的哈希条目发送至出口pfe(“egressinfo375”)。哈希项可以是具有最长前缀的条目。内核343还可以标记ifl371的出口接口(朝向出口pfe324e)。以这种方式,当源pfe324a执行下一输入分组的查找时,源pfe324a可以确定已知到出口pfe324a的结构路径,密钥引擎370可以经由ifl371的所标记的接口将分组输出至下一跳(至出口pfe324e)。

例如,响应于接收到下一输入分组,源pfe327a的密钥引擎370可以执行如上所述的最长前缀匹配。响应于成功的最长前缀匹配,pfe324a基于查找信息,将分组从ifl371的所标记的接口直接发送到出口pfe324e,而不是对分组进行负载平衡。

在一些实施例中,路径模块327可以监测至出口pfe324e的结构路径的可用性。路径模块327可以确定至出口pfe324e的结构路径是否不可用,路径模块327可以确定至另一出口pfe324的结构路径。例如,转发信息348还可以将结构路径至出口pfe324e的哈希条目作为待监测的样品存储在转发信息348中。在每次确定输入分组具有高分组速率时,微内核362可以将样本的哈希值的副本发送至路径模块327,以确定至出口pfe的结构路径是否仍可用。

图4是示出根据此处描述的技术的示例性修改分组400的框图。在图4的实施例中,分组400可以包括目的地mac地址字段402、源mac地址字段404、结构路径报头字段406、以太网报头字段408、类型/长度字段410、以及有效载荷412。

目的地mac地址字段402可以包括目的地节点(例如,图1中的pe设备28)的mac地址。源mac地址字段404可以包括源节点(例如,图1中的ce设备23)的mac地址。例如,以太网报头字段408可以基于电气电子工程师协会(ieee)802.1q标准。类型字段410可以包括连接的类型以及分组400的长度。有效载荷412可以包括分组的数据。

例如,结构路径报头字段406可以基于ieee802.1br标准。如上所述,在一些实施例中,结构报头字段406可以是16字节宽,其中,2个字节保留用于以太网类型,并且其余14个字节可以用于包括诸如哈希值416等的附加信息414、以及与源pfe418相关联的信息。

图5是示出根据本公开的一个或多个方面的网络设备的示例性操作的流程图。将出于示例性目的参考图1a和图1b、图2、以及图3描述图4。虚拟节点的源pfe24a(例如,图1中的vpe20a)接收分组(502)。源pfe24a确定与出口pfe相关联的结构路径信息(504)是否已知。如上所述,源pfe24a可以执行最长前缀匹配,以确定是否已知与出口pfe24e相关联的结构路径信息。

响应于确定与出口pfe相关联的信息是已知的(504中的“是”分支),源pfe24a将输入分组直接发送至出口pfe24e(522)。

响应于确定与出口pfe相关联的信息是未知的(504中的“否”分支),源pfe24a通过负载平衡将包括结构路径报头的分组的修改副本发送至结构(506)。结构路径报头指示第二虚拟路由节点将与出口pfe相关联的结构路径信息发送至路径模块27,而不是发送至下一结构跳。如上所述,结构路径报头可以包括与源pfe24a相关联的哈希值和信息。源pfe24a可以将负载平衡原始分组和修改分组负载平衡到下一跳(到至pfe的下一跳列表中所选的pfe)。

接收pfe24d接收修改分组(508)并且确定分组是否包括结构路径报头(510)。响应于确定接收分组包括结构路径报头(510中的“是”分支),接收pfe24d可以将包括结构路径信息的查找信息发送至路径模块217(512)。如上所述,结构路径信息可以包括与出口pfe24e相关联的信息、以及与源pfe24a相关联的、包括在结构路径报头中的哈希值和信息。在一些实施例中,接收pfe24d可以将结构路径信息直接发送至源pfe24a。可替代地,响应于接收分组确定不包括结构路径报头(510中的“否”分支),接收pfe24d将接收分组转发至下一结构跳。尽管未示出,然而,接收pfe24d可以将原始分组转发至出口pfe24e,以通过网络进行最终的传输,并且可以丢弃修改分组。

路径模块27可以从接收pfe24d接收结构路径信息(516),并且可以将结构路径信息发送至源pfe24a(518)。例如,路径模块27可以将关于结构路径的哈希条目发送至出口pfe24e。在一些实施例中,至出口pfe24e的结构路径的哈希条目可以是最长前缀。

源pfe24a可以从路径模块27接收与出口pfe24e相关联的结构路径信息(520)。源pfe24a可以将与出口pfe24e相关联的结构路径信息存储在其转发信息中。

如上所述,响应于接收下一输入分组,源pfe24a确定与出口pfe相关联的结构路径信息(504)是否已知,并且一旦成功查找出至出口pfe24e的结构路径,源pfe24a则将输入分组直接发送至出口pfe24e(522)。

在硬件、软件、固件、或其任何组合成可以实现此处描述的技术。被描述为模块、单元、或部件的各个特征可以一起在集成式逻辑设备中实现或在分开、但可以相互操作的逻辑设备或其他硬件设备中单独实现。在一些情况下,电子线路的各个特征可以实现为诸如集成电路芯片或芯片集等一个或多个集成电路设备。

如果在硬件中实现,则本公开可以面向一种诸如处理器或集成电路设备(诸如集成电路芯片或芯片集等)等装置。可替代地或此外,如果在软件或固件中实现,则可以至少部分通过包括指令的计算机可读数据存储介质实现技术,当运行指令时,指令致使处理器执行上述所述一种或多种方法。例如,计算机可读数据存储介质可以存储由处理器运行的该等指令。

计算机可读介质可以构成计算机程序产品的一部分,可以包括封装材料。计算机可读介质可以包括诸如随机接入存储器(ram)、只读存储器(rom)、非易失性随机接入存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪存存储器、磁或光学数据存储媒介等计算机数据存储介质。在一些实施例中,制造物品可以包括一个或多个计算机可读存储媒介。

在一些实施例中,计算机可读存储媒介可以包括非易失性媒介。术语“非易失性”可以指示不涵盖在载波或传播信号中的存储介质。在特定实施例中,非易失性存储介质可以存储随着时间而变化的数据(例如,存储在ram或缓存器中)。

代码或指令可以是由包括一个或多个处理器的处理线路执行的软件和/或固件,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、场可编程门阵列(fpga)、或其他等效集成或离散逻辑线路等。相应地,此处使用的术语“处理器”可以指上述结构或适合于实现此处描述的技术的任何其他结构中的任一种。此外,在一些方面,在软件模块或硬件模块内可以提供本公开中描述的功能。

除上面实施例之外或作为上面实施例的替代实施例,描述了下列实施例。此处描述的任意其他实施例可以利用在任意下列实施方式中描述的特征。

实例1.一种方法,包括:通过单框网络设备的源虚拟路由节点接收分组,该单框网络设备具有多个分组转发引擎(pfe)和在多个pfe的相应结构接口处耦接所述多个pfe的相应配对的多个结构链路;通过源虚拟路由节点将修改分组发送至多个pfe中的接收pfe,其中,修改分组包括被添加至分组中的结构路径报头,以请求与出口pfe相关联的结构路径信息;通过源虚拟路由节点并且从路径模块接收与出口pfe相关联的结构路径信息;通过源虚拟路由节点将与出口pfe相关联的结构路径信息存储在源虚拟路由节点的转发信息中;并且通过源虚拟路由节点将下一分组直接发送至出口pfe,而不是负载平衡下一分组。

实例2.根据实例1所述的方法,进一步包括:确定与多个pfe中的出口pfe相关联的结构路径信息是否已知;并且如果该结构路径信息是未知的,则将修改分组发送至多个pfe中的接收pfe。

实例3.根据实例1所述的方法,其中,修改分组包括:与源虚拟节点的源pfe相关联的哈希值;和与源pfe相关联的信息。

实例4.根据实例1所述的方法,其中,结构路径报头基于电气和电子工程师协会802.1br标准。

实例5.根据实例1所述的方法,进一步包括:通过源虚拟路由节点确定分组是否具有高分组速率;并且响应于确定分组具有高分组速率,通过源虚拟路由节点将结构路径报头添加至具有高分组速率的分组中。

实例6.根据实例5所述的方法,其中,确定分组是否包括高分组速率包括:计算在一时间段内发生的较短前缀匹配的次数;并且确定较短前缀匹配的次数超过定义的阈值。

实例7.根据实例1所述的方法,其中,接收与出口pfe相关联的结构路径信息包括:接收与出口pfe相关联的哈希值。

实例8.根据实例7所述的方法,其中,与出口pfe相关联的哈希值包括最长前缀。

实例9.根据实例2所述的方法,其中,确定与多个pfe中的出口pfe相关联的结构路径信息是否已知包括:确定分组是否与最长前缀相匹配。

实例10.根据实例1所述的方法,进一步包括:通过单框网络设备的接收虚拟路由节点从源虚拟路由节点接收修改分组,单框网络设备具有多个分组转发引擎(pfe)和在多个pfe的相应结构接口处耦接多个pfe的相应配对的多个结构链路,其中,修改分组包括结构路径报头以请求与出口pfe相关联的结构路径信息;通过接收虚拟路由节点确定修改分组包括报头;通过接收虚拟节点并且从接收虚拟节点的转发信息中检索与出口pfe相关联的结构路径信息;并且通过接收虚拟节点将与出口pfe相关联的结构路径信息发送至路径模块,而不是将修改分组转发至下一结构跳。

实例11.根据实例10所述的方法,其中,与出口pfe相关联的结构路径信息包括:

与出口pfe相关联的信息;与源虚拟路由节点的源pfe相关联的哈希值;以及与源pfe相关联的信息。

实例12.一种方法包括:通过单框网络设备的接收虚拟路由节点从源虚拟路由节点接收修改分组,单框网络设备具有多个分组转发引擎(pfe)和在多个pfe的相应结构接口处耦接相应配对的多个pfe的多个结构链路,其中,修改分组包括结构路径报头,以请求与出口pfe相关联的结构路径信息的;通过接收虚拟路由节点确定修改分组包括报头;通过接收虚拟节点并且从接收虚拟节点的转发信息中检索与出口pfe相关联的结构路径信息;并且通过接收虚拟节点将与出口pfe相关联的结构路径信息发送至路径模块,而不是将修改分组转发至下一结构跳。

实例13.一种单框网络设备,包括:多个分组转发引擎(pfe);多个结构链路,在多个pfe的相应结构接口处耦接多个pfe的相应配对;多个虚拟路由节点中的第一虚拟路由节点和第二虚拟路由节点,其中,第一虚拟路由节点被配置为:接收分组;将修改分组发送至多个pfe中的接收pfe,其中,修改分组包括被添加至分组中的结构路径报头,以请求与出口pfe相关联的结构路径信息;从路径模块接收与出口pfe相关联的结构路径信息;将与出口pfe相关联的结构路径信息存储在第一虚拟路由节点的转发信息中;并且将下一分组直接发送至出口pfe,而不是负载平衡下一分组。

实例14.根据实例13所述的单框网络设备,其中,第一虚拟路由节点被进一步配置为:确定与多个pfe中的出口pfe相关联的结构路径信息是否已知;并且如果结构路径信息是未知的,则将修改分组发送至多个pfe中的接收pfe。

实例15.根据实例13所述的单框网络设备,其中,为了发送修改分组,第一虚拟路由节点被进一步配置为:发送与第一虚拟节点的源pfe相关联的哈希值和与源pfe相关联的信息。

实例16.根据实例13所述的单框网络设备,其中,结构路径报头基于电气和电子工程师协会802.1br标准。

实例17.根据实例13所述的单框网络设备,第一虚拟路由节点被进一步配置为:确定分组是否具有高分组速率;

响应于确定分组具有高分组速率,将结构路径报头添加至具有高分组速率的分组中。

实例18.根据实例17所述的单框网络设备,进一步包括:计数器,计算在一时间段内发生的较短前缀匹配的次数;其中,为了确定分组是否包括高分组速率,第一虚拟路由节点被配置为:确定较短前缀匹配的次数超过定义的阈值。

实例19.根据实例13所述的单框网络设备,其中,为了接收与出口pfe相关联的结构路径信息,第一虚拟路由节点被配置为:接收与出口pfe相关联的哈希值。

实例20.根据实例19所述的单框网络设备,其中,与出口pfe相关联的哈希值包括最长前缀。

实例21.根据实例14所述的单框网络设备,其中,为了确定与多个pfe中的出口pfe相关联的结构路径信息是否已知,第一虚拟路由节点被配置为:确定分组是否与最长的前缀相匹配。

实例22.根据实例13所述的单框网络设备,其中,多个虚拟路由节点中的第二虚拟路由节点被配置为:从第一虚拟路由节点接收修改分组,其中,修改分组包括所述结构路径报头,以请求与出口pfe相关联的结构路径信息;确定修改分组包括报头;从第二虚拟节点的转发信息中检索与出口pfe相关联的结构路径信息;并且将与出口pfe相关联的结构路径信息发送至路径模块,而不是将修改分组转发至下一结构跳。

实例23.根据实例22所述的单框网络设备,其中,为了将与出口pfe相关联的结构路径信息发送至路径模块,第二虚拟路由节点被配置为:发送与出口pfe相关联的信息、与第一虚拟路由节点的源pfe相关联的哈希值、以及与源pfe相关联的信息。

而且,可以将在上述所述任意实施例中阐述的任意具体特征组合成所描述技术的有益实施例。即,任意具体特征通常可应用于本公开的全部实施例。已经描述了技术的各个实施例。这些及其他实施例在下列权利要求书的范围内。

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