CN110278139B - 在计算机网络内转发分组的方法、网络设备及存储介质 - Google Patents
在计算机网络内转发分组的方法、网络设备及存储介质 Download PDFInfo
- Publication number
- CN110278139B CN110278139B CN201811611861.8A CN201811611861A CN110278139B CN 110278139 B CN110278139 B CN 110278139B CN 201811611861 A CN201811611861 A CN 201811611861A CN 110278139 B CN110278139 B CN 110278139B
- Authority
- CN
- China
- Prior art keywords
- packet processor
- source
- data structure
- particular destination
- processors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0894—Packet rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/263—Rate modification at the source after receiving feedback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
- H04L49/505—Corrective measures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及在计算机网络内转发分组的方法、网络设备及存储介质。其中,本技术描述了基于来自分组处理器的流量反馈的自适应负载平衡。在一个示例中,网络设备的源虚拟网络节点可以确定特定目的地分组处理器是否超额使用或可能变得超额使用。例如,源虚拟网络节点的源分组处理器可以交换包括流量速率信息的反馈消息。源虚拟网络节点可以计算总流量速率并且将总流量速率与特定目的地分组处理器的带宽进行对比。响应于确定目的地分组处理器的带宽超额使用,源虚拟网络节点可以更新转发平面数据结构以降低选择要将分组流转发至的目的地分组处理器的可能性。
Description
技术领域
本公开涉及计算机网络,更具体地涉及在计算机网络内转发分组 (packet)。
背景技术
计算机网络是可以交换数据和共享资源的互连计算设备的集合。在诸如以太网等基于分组的网络中,计算设备通过将数据划分成被称为分组的长度可变块来传送数据,这些分组单独地跨越网络从源设备路由到目的地设备。目的地设备从分组中提取数据,并将数据组装成其原始形式。
某些设备(被称为路由器)维持代表网络拓扑的路由信息。路由器交换路由信息,以便维持通过网络的可用路由的准确表示。“路由”通常可以被定义为网络上两个位置之间的路径。在接收到传入的数据分组时,路由器检查分组内的信息(通常被称为“密钥”),以根据路由信息选择分组将被转发至的适当下一跳。
路由器可以包括通过内部交换结构互连的一个或多个分组处理器。分组处理器经由接口卡来与其他外部设备接收和发送数据。交换结构提供内部互连机制以用于在路由器内分组处理器之间转发数据,以便通过网络进行最终传输。在一些示例中,路由器或交换设备可以采用分布式多级交换结构架构,其中网络分组跨越位于路由器的分布式分组处理器中的交换结构的多个级以从交换结构的入口点行进到交换结构的出口点。
发明内容
总体上,本公开描述了用于基于来自分组处理器的流量反馈的自适应负载平衡的技术。在一些示例中,可以通过在多个虚拟网络节点之间分配路由器的硬件资源(诸如分组处理器)来将诸如路由器等网络设备虚拟化为多个虚拟网络节点。可以在两个虚拟网络节点之间提供一个或多个逻辑链路。例如,抽象结构接口(AF)链路是逻辑链路构造,其使用分组处理器之间的交换结构的底层物理结构链路来提供虚拟网络节点之间的连接。源分组处理器可以经由AF链路将传入的数据跨内部交换结构向目的地分组处理器转发,以便在网络上进行最终传输。
在一些示例中,网络设备的源虚拟网络节点可以确定目的地虚拟网络节点的目的地分组处理器是否超额使用或可能变得超额使用 (oversubscribe,超额预定)。例如,源虚拟网络节点的分组处理器可以交换包括流量速率信息的通知(诸如,反馈消息)。源虚拟网络节点可以例如部分地基于反馈/通知消息来确定总流量速率,并且将总流量速率与例如基于目的地分组处理器的带宽容量的目的地分组处理器的流量速率阈值进行对比。响应于由此对比而确定目的地分组处理器的带宽超额使用或可能变得超额使用,源虚拟网络节点可以更新其转发平面数据结构以降低选择目的地分组处理器来转发分组的可能性。例如,源虚拟网络节点可以重新编程散列查找数据结构,使得目的地分组处理器不太可能被选择作为源虚拟网络节点接收的给定分组流的目的地。
通过这种方式,网络设备可以自动调整到超额使用的目的地分组处理器的负载平衡(包括在目的地分组处理器基于保守阈值变为超额使用之前),从而减少对目的地分组处理器的超额使用,尤其是在多个源分组处理器将分组转发到同一目的地分组处理器的负载平衡情况下。
在一个示例中,本方法包括由网络设备的源虚拟网络节点确定多个目的地分组处理器中的特定目的地分组处理器可能变得超额使用,其中网络设备包括具有多个源分组处理器的源虚拟网络节点、具有多个目的地分组处理器的目的地虚拟网络节点、以及交换结构,交换结构包括在多个源分组处理器和多个目的地分组处理器的相应结构接口处将相应成对的多个源分组处理器和多个目的地分组处理器耦连的多个结构链路。本方法还可以包括:响应于确定特定目的地分组处理器可能变得超额使用,由源虚拟网络节点更新多个源分组处理器中的源分组处理器的转发平面数据结构,以降低选择要将分组流转发至的特定目的地分组处理器的可能性。本方法可以进一步包括由源虚拟网络节点根据经更新的转发平面数据结构对接收到的分组流进行负载平衡。
在另一示例中,网络设备包括:源虚拟网络节点,具有多个源分组处理器;目的地虚拟网络节点,具有多个目的地分组处理器;多个结构链路,在多个源分组处理器和多个目的地分组处理器的相应结构接口处将相应成对的多个源分组处理器和多个目的地分组处理器耦连,其中源虚拟网络节点被配置为:确定多个目的地分组处理器中的特定目的地分组处理器可能变得超额使用;响应于确定特定目的地分组处理器可能变得超额使用,更新多个源分组处理器中的源分组处理器的转发平面数据结构,以降低选择要将分组流转发至的特定目的地分组处理器的可能性;以及根据经更新的转发平面数据结构对接收到的分组流进行负载平衡。
在另一示例中,一种网络设备的非暂时性计算机可读存储介质,网络设备包括具有多个源分组处理器的源虚拟网络节点、具有多个目的地分组处理器的目的地虚拟网络节点、以及交换结构,交换结构包括在多个源分组处理器和多个目的地分组处理器的相应结构接口处将相应成对的多个源分组处理器和多个目的地分组处理器耦连的多个结构链路,非暂时性计算机可读存储介质存储指令,指令在执行时致使网络设备的一个或多个可编程处理器:确定多个目的地分组处理器中的特定目的地分组处理器可能变得超额使用;响应于确定特定目的地分组处理器可能变得超额使用,更新多个源分组处理器中的源分组处理器的转发平面数据结构,以降低选择要将分组流转发至的特定目的地分组处理器的可能性;以及根据经更新的转发平面数据结构对接收到的分组流进行负载平衡。
在以下附图和描述中阐述了在此描述的技术的一个或多个示例的细节。在此描述的技术的其他特征、目的和优点将通过描述和附图以及通过权利要求而显而易见。
附图说明
图1是示出示例网络环境的框图,包括根据本公开中描述的技术来配置的网络设备的逻辑视图。
图2是示出根据本公开中描述的技术的示例网络设备的框图。
图3是示出根据本公开中描述的技术的更详细的网络设备的组件的框图。
图4是示出根据本公开中描述的技术的示例转发平面数据结构和经更新的转发平面数据结构的框图。
图5是示出根据本公开中描述的技术的网络设备的示例操作的流程图。
具体实施方式
图1是示出示例网络环境2的框图,包括根据本公开中描述的技术来配置的网络设备20的逻辑视图。出于示例的目的,本公开的技术关于图1 的简化网络环境2进行描述,其中,网络设备20与核心路由器(CR) 10A-10B(“核心路由器10”)通信,以向客户端设备4A-4B(“客户端设备4”)提供对由互联网协议(IP)/多协议标签交换(MPLS)核心网络12 中的设备提供的服务的访问。
图1中所示的网络环境2的配置仅是示例。虽然未如此示出,但是 IP/MPLS核心网络12可以耦连到由其他提供商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,互联网)的一部分。聚合网络8可以被视为到互联网的接入网络。服务提供商网络可以向耦连到客户端设备4的计算设备提供对互联网的访问,并且可以允许客户网络 (未示出)内的计算设备彼此通信。在另一示例中,IP/MPLS核心网络12 可以提供互联网的核心内的网络服务。在任一情况下,IP/MPLS核心网络 12可以包括除网络设备20、提供商边缘(PE)路由器14和核心路由器 10之外的各种网络设备(未示出),诸如,附加路由器、交换机、服务器或其他设备。
客户端设备4可以是与耦连到客户边缘(CE)路由器6的一个或多个客户网络(未示出)相关联的设备。在一些示例中,例如,客户端设备4 可以包括计算设备,诸如,个人计算机、膝上型计算机、手持式计算机、工作站、服务器、交换机、打印机、客户数据中心或其他设备。在其他示例中,客户端设备4可以是端点设备,诸如,作为客户装备(诸如订户设备)与服务提供商装备之间的分界点操作的交换机、路由器、网关或另一终端。在一个示例中,客户端设备4可以包括数字订户线路接入多路复用器(DSLAM)或其他交换设备。例如,客户端设备4可以连接到一个或多个无线电或基站(未示出),以与订户设备无线地交换分组数据。客户端设备4可以包括将从无线电接收的分组数据聚合到CE路由器6的交换机、路由器、网关或另一终端。在一些示例中,聚合网络8可以包括光接入网络。例如,CE路由器6可以包括经由光纤电缆连接到一个或多个客户端设备4或光网络单元(ONU)的光线路终端(OLT)。
客户端设备4可以是耦连到客户网络和订户设备的接入节点。客户端设备4是PE路由器14提供的服务的客户端。在该示例中,服务提供商网络包括向订户设备提供对聚合网络8的访问的客户端设备4和客户边缘 (CE)路由器6。在一些示例中,CE路由器6可以包括维持订户设备与聚合网络8之间的路由信息的路由器。例如,CE路由器6可以包括宽带远程访问服务器(BRAS)功能,以将来自一个或多个客户端设备4的输出聚合到通至聚合网络8的更高速的上行链路。
网络设备20包括多个路由组件(例如,路由进程)和转发组件的分组处理器(在本文中另外称为“分组转发引擎(PFE)”),其物理耦连并被配置为作为分开的逻辑路由器操作。网络设备20包括虚拟提供商边缘 (vPE)节点22(“vPE 22”)和虚拟核心路由器(vP)节点28(“vP 28”),从网络设备20外部的网络设备的角度来看,这些节点是作为多个不同节点操作的协作虚拟路由组件。网络设备20可以是具有单个物理机箱的单机箱路由器,其通过在相应的虚拟网络节点中分配路由器的硬件资源(诸如分组处理器24A-24H(统称为“PP 24”)来被虚拟化为多个虚拟网络节点(称为“vNode”)。在图1的示例中,vPE 22可以包括PP 24A-24D,而 vP 28可以包括PP 24E-24H。单独的PP 24被分配给特定vNode,而不在多个vNode之间共享。
对于网络环境2的核心路由器10和CE路由器6,网络设备20表现为多个路由设备,具体地是虚拟PE(vPE)路由器22和虚拟提供商(vP) 路由器28。例如,虽然网络设备20包括单个机箱,但是从核心路由器10 的角度来看,网络设备20具有多个外部通告的网络地址,并且为每个路由协议维持多个对等路由会话,从而维持与每个核心路由器10的对等路由会话。
vNode的每个控制平面(vCP)26A-26B(“vCP 26”)使用虚拟机(VM) 技术实例化。vCP 26可以在网络设备20的控制单元(例如,路由组件) 内或在路由组件外部。每个vNode可以充当不同网络功能的角色,诸如,互联网服务提供商边缘(PE)、虚拟专用网络(VPN)服务PE和多协议标签交换(MPLS)标签交换路由器(LSR)。除了这些vNode之外,在一些示例中,网络设备20还可以包括实例化以用于共享资源管理的管理VM (例如,管理平面,图1中未示出)。
在网络设备20中的两个vNode之间,提供了一个逻辑层3链路,其对于网络设备20外部的设备是可见的。例如,在图1中,抽象结构接口 (AF)链路32(“AF链路32”)提供了vPE22与vP 28之间的逻辑链路。 AF链路32是层3逻辑链路构造,并提供vNode到vNode的连接。AF链路32捆绑连接相同vNode的结构互连。AF在vNode之间提供单个逻辑链路连接,并且可以在其中具有许多层1、层2或层3结构捆绑,这取决于实现方式。
AF链路32包括结构互连34A-34P(统称为“结构互连34”)。结构互连34终止于多个PP 24之一的结构接口处。在图1的示例中,PP 24A可以包括相应地终止于PP 24E-24H的结构互连34A-34D。PP 24B可以包括相应地终止于PP 24E-24H的结构互连34E-34H。PP 24C可以包括相应地终止于PP 24E-24H的结构互连34I-34L。PP 24A可以包括相应地终止于 PP24E-24H的结构互连34M-34P。在一些示例中,结构互连34可以具有通常不通告给网络设备20外部的设备的标识符。结构互连34被建模为一对PP 24之间的点对点以太网链路。
在一个示例中,假设vPE 22经由PP 24E-24H以相同成本的抽象结构路径连接到vP28。当分组从聚合网络8到达vPE 22并且目的地为PE 14 时,vPE 22典型地基于负载平衡将数据流量发送到PP 24E-24H中的任何一个。为了在PP 24E-24H之间对数据流量进行负载平衡,vPE 22可以例如基于分组的5元组(例如,源IP地址、目的地IP地址、源端口、目的地端口和协议)对来自所接收的分组的信息执行散列算法,以选择用作输出接口的AF链路32的结构互连34之一。
例如,PP 24A-24H可包括转发平面数据结构42A-42H(统称为“转发平面数据结构42”),这些转发平面数据结构相应地包括表示要转发流量的目的地分组处理器的分布的条目。在一些示例中,转发平面数据结构42 可以包括散列查找数据结构/选择器表,其存储指示要转发流量的目的地分组处理器的负载平衡分布的数据。在图1的示例中,转发平面数据结构42A 可以包括表示目的地PP 24E-24H的条目的分布。源PP 24A从转发平面数据结构42A中选择目的地分组处理器(例如,PP 24E-24H)(例如,对接收的分组执行散列算法以计算散列值),并将分组转发到所选择的目的地分组处理器。
在一些示例中,基于目的地分组处理器的带宽来确定与目的地分组处理器相关联的条目的数量。也就是说,目的地分组处理器的带宽越高,目的地分组处理器在转发平面数据结构42中将具有越多的条目。为了便于说明,假设目的地PP 24E-24H的带宽均具有100Gbit/秒的带宽。这样,转发平面数据结构42A-42D中的每一个转发平面数据结构对于目的地PP 24E-24H具有相等的条目分布。虽然目的地PP 24E-24H中的每一个具有相同的带宽,但是目的地PP 24E-24H中的每一个可以具有更高或更低的带宽,这相应地导致转发平面数据结构42中的更多或更少的条目。
在一些示例中,源PP 24A-24D中的每一个可以从聚合网络8接收流量并且将流量负载平衡到同一目的地分组处理器(例如PP 24E)。例如,源PP 24A-24D中的每一个源可以选择PP 24E以转发流量。这在所有流都散列到同一目的地分组处理器时(例如,因为在一组分组流中只有目的地 IP地址变化)可能发生。然而,当从源PP 24A-24D转发的总流量速率超过目的地PP 24E的带宽时,分组被丢弃。例如,假设PP 24A以90千兆每秒(Gbit/秒)的速率将流量转发到PP 24E,PP 24B以10Gbit/秒的速率将流量转发到PP 24E,PE 24C以10Gbit/秒的速率将流量转发到PP 24E,并且PP 24D以15Gbit/秒的速率将流量转发到PP24E。还假设目的地PP 24E具有100Gbit/秒的带宽。在该示例中,PP 24E从PP 24A-24D接收125 Gbit/秒的总流量速率,这超过PP 24E的100Gbit/秒的带宽。在没有本公开中描述的技术的情况下,尽管PP 24F-24H可用于承载流量,但PP 24E 将丢弃25Gbit的流量。这是因为源分组处理器通常仅知道它们自己的“本地”流量速率,但是不知道其他源分组处理器的其他“非本地”流量速率。这可能导致对目的地分组处理器带宽的低效利用。
根据本文中描述的技术,源PP 24A-24D被配置为交换通知(例如,反馈消息)以提供流量速率信息,并使用该信息来更新其转发平面数据结构内的目的地分组处理器的负载平衡分布。这些技术可以允许更有效地利用目的地分组处理器带宽,并且可以避免超额使用的目的地分组处理器丢弃流量。为了便于说明,以下示例关于PP 24A进行描述,但是也可以由 vPE 22的任何源分组处理器实现。
在图1的示例中,PP 24A-24H可以包括反馈组件44A-44H,以相应地确定本地和非本地流量速率。例如,源PP 24A-24D中的每一个源可以执行定时器线程以确定在本地转发平面数据结构中选择目的地分组处理器(例如,PP 24E)的实例的数量(在本文中称为“本地计数”或“C本地”)。例如,PP 24A的反馈组件44A可以确定从本地转发平面数据结构42A中选择PP 24E的实例的数量,并将实例的数量存储在转发平面数据结构42A 的本地计数字段中;PP 24B的反馈组件44B可以确定从本地转发平面数据结构42B中选择PP 24E的实例的数量,并且将实例的数量存储在转发平面数据结构42B的本地计数字段中;PP 24C的反馈组件44C可以确定从本地转发平面数据结构42C中选择PP 24E的实例的数量,并将实例的数量存储在转发平面数据结构42C的本地计数字段中;并且PP 24D的反馈组件44D可以确定从本地转发平面数据结构42D中选择PP 24E的实例的数量,并将实例的数量存储在转发平面数据结构42D的本地计数字段中。例如,假设PP 24A在转发平面数据结构42A的本地计数字段中存储 90Gbit/秒的值,PP 24B在转发平面数据结构42B的本地计数字段中存储 10Gbit/秒的值,PP 24C在转发平面数据结构42C的本地计数字段中存储 10Gbit/秒的值,并且PP24D在转发平面数据结构42D的本地计数字段中存储15Gbit/秒的值。
源PP 24A-24D可以交换流量反馈信息。例如,源PP 24A-24D可以相应地经由反馈组件44A-44D交换本地流量速率信息。例如,反馈组件44A 可以生成包括例如标识AF 32的聚合结构索引和PP 24A的本地计数(例如,90Gbit/秒)的反馈消息,并且将反馈消息相应地发送到PP 24B-24D。 PP 24A还可以从PP 24B-24D接收相应的反馈消息,其中,每个反馈消息包括标识AF 32的聚合结构索引和相应的本地计数。例如,PP 24A可以从PP 24B接收具有标识AF 32的聚合结构索引和PP 24B的本地计数(例如,10Gbit/秒)的反馈消息、从PP 24C接收具有标识AF 32的聚合结构索引和PP 24C的本地计数(例如,10Gbit/秒)的反馈消息、并且从PP 24D 接收具有标识AF 32的聚合结构索引和PP 24D的本地计数(例如,15Gbit/秒)的反馈消息。在一些示例中,反馈消息可以包括从微代码生成的中断消息。
PP 24A可以从PP 24B-24D接收相应的反馈消息(本文中另外称为“通知”或“通知消息”)并且将PP 24B-24D的相应本地计数(本文中称为“非本地计数”或“C非本地”)存储在转发平面数据结构42A的一个或多个非本地计数字段中。非本地计数可以表示其他源分组处理器选择目的地分组处理器(例如,PP 24E)的实例的数量。例如,PP 24A可以从PP 24B接收包括标识AF 32的聚合结构索引和PP 24B的本地计数(例如,10Gbit/ 秒)的反馈消息,并且将PP 24B的本地计数添加到转发平面数据结构42A 中的非本地计数字段。PP 24A还可以从PP 24C接收包括标识AF 32的聚合结构索引和PP 24C的本地计数(例如,10Gbit/秒)的反馈消息,并且将PP 24C的本地计数添加到转发平面数据结构42A中的非本地计数字段。 PP24A可以进一步从PP 24D接收包括标识AF 32的聚合结构索引和PP 24D的本地计数(例如,15Gbit/秒)的反馈消息,并且将PP 24D的本地计数添加到转发平面数据结构42A中的非本地计数字段。基于上面的反馈消息,转发平面数据结构42A可以包括具有35Gbit/秒的值的非本地计数字段,其表示从源PP 24B-24D到目的地PP 24E的流量速率。
在一些示例中,PP 24A可以计算转发平面表42A的本地计数字段和非本地计数字段的总和(本文中称为“总流量速率”),并确定总流量速率是否超过目的地分组处理器的带宽,如下所示:
Sum(C本地,C非本地)>目的地PP的带宽
例如,如果总流量速率超过目的地PP 24E的带宽,则vPE 22可以更新PP 24A的转发平面数据结构42A,以降低在转发平面数据结构42A内选择目的地PP 24E来转发分组流的可能性。继续上面的示例,源PP 24A 可以计算125Gbit/秒的总流量速率,其超过了目的地PP 24E的100Gbit/ 秒的带宽。作为一个示例,vPE 22可以动态调整转发平面表42A内的目的地PP 24E的权重,以减少目的地PP 24E的超额使用。在一些示例中,vPE 22可以计算目的地PP 24E的动态权重,动态权重用于调整转发平面数据结构42A内的目的地PP 24E的条目的数量。
在一些示例中,vPE 22可以如下确定目的地分组处理器的动态权重:
PP 24E的动态权重是根据PP 24E的默认权重(例如1)、过量带宽的数量(即,25Gbit/秒)和目的地PP 24E的带宽(即,100Gbit/秒)计算的。在该示例中,转发平面数据结构42A中的PP 24E的动态权重减小了 25%(即,动态权重为75%)。
vPE 22可以根据动态权重更新转发平面数据结构42A,如下所示。
条目的数量=FN(动态权重*目的地PP的带宽)
例如,vPE 22可以基于目的地PP 24E的动态权重和带宽来减少转发平面数据结构42A内的目的地PP 24E的条目的数量。例如,假设转发平面数据结构42A包括64个条目,并且PP 24E-24H中的每一个具有相同的带宽(例如,100Gbit/秒)。在该示例中,转发平面数据结构42A对于目的地PP 24E-24H中的每一个最初配置有16个条目的均匀分布。响应于确定总流量速率超过目的地PP 24E的带宽,vPE 22可以计算目的地PP 24E 的动态权重(例如,0.75),根据动态权重减小PP 24E的带宽,并且通过将PP 24E的条目的数量从16减少到13来更新转发平面数据结构42A,并且将PP 24F-24H各自的条目的数量从16增加到17。通过减少转发平面数据结构42A中的PP 24E的条目的数量,与PP 24E相比,PP 24A更可能选择目的地PP 24F-24G中的另一个目的地来从转发平面数据结构42A 转发分组(例如,如图1中较重的加权线所示)。也就是说,转发平面数据结构42A中的源PP 24A选择目的地PP 24E的可能性降低,从而降低了目的地PP 24E的超额使用的可能性。
在一些示例中,动态权重被配置在至少0.2到小于1的范围内。例如,假设朝向目的地PP 24E的过量带宽是100Gbit/秒。在此示例中,PP 24E 的计算出的动态权重为0。为了避免从转发平面数据结构42A中排除PP 24E的所有条目,vPE 22可以将PP 24E的动态权重配置为至少0.2且小于 1。
在一些示例中,vPE 22可以将每个目的地分组处理器24E-24H的权重复原至默认权重(即,1)。例如,可以使用恢复计时器来用于周期性地评估AF 32上的总流量速率。当恢复计时器过去一段时间时,vPE 22可以评估总流量速率。如果流量速率低于阈值流量速率,则vPE 22可以诸如通过将所有权重重置为1(例如,默认权重)来增加权重。在一个示例中,如果来自vPE 22的总流量速率低于PP 24E-24H的总带宽的阈值带宽(例如,20%),则在转发平面数据结构42A中的每个目的地PP 24E-24H的动态权重恢复为1,并且更新转发平面数据结构42A以均匀地分布PP 24E-24H的条目的数量。以这种方式,vPE 22可以采用动态权重分配来管理负载平衡权重。
图2是示出根据本公开中描述的技术的提供自适应负载平衡的示例网络设备200的框图。例如,网络设备200可以表示图1的网络设备20。网络设备200可以包括被示出为转发组件240A-240N(统称为“转发组件 240”)多个虚拟网络节点,这些虚拟网络节点操作为例如虚拟提供商边缘或虚拟客户边缘路由器、虚拟自主系统边界路由器(ASBR)、虚拟区域边界路由器(ABR)或诸如虚拟交换机等其他类型的网络设备。
在该示例中,网络设备200包括为网络设备200提供控制平面功能的控制单元202。控制单元202可以分布在多个实体(诸如,一个或多个路由组件和可插入网络设备200中的一个或多个服务卡)之间。在这种情况下,网络设备200因此可以具有多个控制平面。在一些示例中,网络设备 200的每个虚拟网络节点可以具有其自己的虚拟控制平面,例如图1的vCP 26。
控制单元202可以包括路由组件204,路由组件提供控制平面功能、以路由表的形式存储网络拓扑、执行路由协议以与对等路由设备通信并且维持和更新路由表。路由组件204还提供允许用户访问和配置网络设备 200的接口。
网络设备200还包括多个转发组件(例如,转发组件240)和交换结构228,转发组件和交换结构一起提供用于转发和以其他方式处理订户流量的转发平面。转发组件240可以是例如图1的vPE 22和vP 28中的任何一个。
控制单元202通过内部通信链路230连接到每个转发组件240。例如,内部通信链路230可以包括100Mbps或1Gbps的以太网连接。路由组件 204可以执行守护进程(未示出)(例如,可以运行网络管理软件的用户级进程),从而执行路由协议以与对等路由设备通信、执行从管理员接收的配置命令、维持和更新一个或多个路由表、管理订户流程处理和/或创建一个或多个转发表(例如,转发平面数据结构242)以便安装到转发组件240、以及其他功能。
控制单元202可以包括一个或多个处理器(图2中未示出),处理器执行存储到计算机可读存储介质(同样,图2中未示出)的软件指令(诸如,用于定义软件或计算机程序的软件指令),计算机可读存储介质诸如是包括存储设备(例如,磁盘驱动器或光盘驱动器)和/或诸如随机存取存储器(RAM)(包括各种形式的动态RAM(DRAM),例如,DDR2 SDRAM 或静态RAM(SRAM))等存储器的非暂时性计算机可读介质、闪存、另一种形式的固定或可移动的存储介质,其可以用于以指令或数据结构的形式携带或存储所期望的程序代码和程序数据,并且可以由处理器或存储使得一个或多个处理器执行本文中描述的技术的指令的任何其他类型的易失性或非易失性存储器访问。替代地或另外地,控制单元202可以包括专用硬件,诸如,一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用特殊处理器(ASSP)、一个或多个现场可编程门阵列 (FPGA)、或一个或多个前述专用硬件示例的任何组合,以用于执行本文中描述的技术。
转发组件240经由接口卡222A-222N(“IFC 222”)的接口接收和发送数据分组,每个接口卡与转发组件240中的相应一个转发组件相关联。转发组件240中的每一个转发组件及其相关联的一个IFC 222可以驻留在用于网络设备200的单独的线卡(未示出)上。示例线卡包括柔性可编程集成电路(PIC)集中器(FPC)、密集端口集中器(DPC)和模块化端口集中器(MPC)。每个IFC 222可以包括用于第二层(L2)技术的各种组合的接口,包括以太网、千兆以太网(GigE)和同步光网络(SONET) 接口。在各个方面,每个转发组件240可以包括更多或更少的IFC。交换结构228提供高速互连以用于将传入的数据分组转发到所选择的一个转发组件240,以便通过网络输出。交换结构228可以包括多个结构链路(未示出)。
在一些示例中,交换结构228可以是分布式多级交换结构架构,其中网络分组跨越位于路由器的分布式转发组件中的交换结构的多个级以从交换结构的入口点行进到交换结构的出口点。作为一个示例,交换结构228 可以实现为单个多级Clos交换结构,中继跨交换结构的各级的通信。典型的多级Clos交换结构具有多个互连的交换机以形成多个级。在典型的布置中,交换结构包括入口(或“第一”)级、一个或多个中间级、以及出口(或“最终”)级,每一级具有一个或多个交换机(例如,纵横交换机(通常更简单地称为“交叉开关(crossbar)”))。此外,交换结构可以被实现为使得交换机被布置为多个平行结构平面,每个平行结构平面通过多个级提供从入口端口到出口端口的独立转发,多个平行结构平面中的一个或多个可以被视为备用结构平面。换句话说,每个平行结构平面可以被视为多级Clos交换结构的独立部分,其中每个平面提供交换冗余。
当分组横跨(遍历,traverse)网络设备200的内部架构时,转发组件 240通过在相应内部分组处理路径上对每个分组执行一系列操作来处理分组。例如,可以通过对应的入口接口、入口转发组件(例如,转发组件 240A)、出口转发组件(例如,转发组件240N)、出口接口或分组所指向的网络设备200的其他组件(诸如一个或多个服务卡)中的任一者来对每个分组执行操作。分组处理的结果确定分组从多个IFC 222之一上的其输入接口到多个IFC222之一上的其输出接口被转发组件240转发或以其他方式处理的方式。
为了通过示例的方式进行说明,假设转发组件240A和240N可以相应地包括PP224A-224D和224E-224H。PP 224A-224H可以是图1的PP 24A-24H。在图2的示例中,转发组件240A可以表示源转发组件,并且转发组件240N可以表示目的地转发组件。还假设转发组件240N是用于将数据发送到IP/MPLS核心网络的出口转发组件。转发组件240A最初可以将传入的流量转发到转发组件240N,该转发组件进而将分组转发到 IP/MPLS核心网络。
为了提供自适应负载平衡,PP 224A可以基于来自PP 224B-224D的流量反馈来更新转发平面数据结构242A。例如,PP 224A-224D相应地包括反馈组件244A-244D(统称为“反馈组件244”)以用于确定从源分组处理器到目的地分组处理器的本地流量速率和非本地流量速率。在图2的示例中,PP 224A包括用于确定PP 224A的本地流量速率(例如,在本文中称为“本地计数”)的反馈组件244A,并且将PP 224A的本地计数存储在转发平面数据结构242A的本地计数条目246A中(例如,使转发平面数据结构中的计数器递增)。PP 224B包括用于确定PP 224B的本地计数的反馈组件244B,并且将PP 224B的本地计数存储在转发平面数据结构242B 的本地计数条目246B中。PP 224C包括用于确定PP 224C的本地计数的反馈组件244C,并且将PP 224C的本地计数存储在转发平面数据结构 242C的本地计数条目246C中。PP 224D包括用于确定PP 224D的本地计数的反馈组件244D,并且将PP 224D的本地计数存储在转发平面数据结构242D的本地计数条目246D中。
反馈组件244A可以接收反馈消息252A-252C(统称为“反馈消息 252”),每个反馈消息包括聚合结构索引和相应的本地计数。例如,反馈组件244A可以从反馈组件244B接收反馈消息252A,该反馈消息包括标识聚合结构的聚合结构索引以及PP 224B的本地计数。反馈组件244A将 PP 224B的本地计数添加到转发平面数据结构242A中的非本地计数字段248A。反馈组件244A还可以从反馈组件244C接收反馈消息252B,该反馈消息包括标识聚合结构的聚合结构索引以及PP 224C的本地计数。反馈组件224A将PP 224C的本地计数添加到转发平面数据结构242A中的非本地计数字段248A。反馈组件244A可以进一步从反馈组件244D接收反馈消息252C,该反馈消息包括标识聚合结构的聚合结构索引以及PP 224D 的本地计数。反馈组件244A将PP 224D的本地计数添加到转发平面数据结构242A中的非本地计数字段248A。
PP 224A可以计算总流量速率,即,转发平面数据结构242A中的本地计数字段246A和非本地计数字段248A的总和。PP 224A可以将总流量速率与转发组件240N的PP 224E的带宽进行对比。如果总流量速率超过 PP 224E的带宽,则转发组件240A可以更新转发平面数据结构242A以降低在转发平面数据结构242A内选择PP 224E的可能性。例如,反馈单元244A可以向转发组件240A的微内核发送请求消息(如关于图3进一步描述的),使得微内核可以计算用于更新转发平面数据结构242A的PP 224E 的动态权重。
图3是更详细地示出图2的网络设备200的组件的框图。转发组件 340A-340N(统称为“转发组件340”)中的任一个转发组件可以是关于一个分组流的入口转发组件和关于另一分组流的出口转发组件。虽然转发组件340被示出为包括用于入口转发组件和出口转发组件的模块,但是转发组件340可以包括与图3所示相比更多或更少的模块。如下所述,转发组件340A可以表示图1的vPE 22。
在该示例中,路由组件310提供控制平面302操作环境以用于执行在用户空间306中执行的各种用户级守护进程312。守护进程312是用户级进程,其可以运行网络管理软件、执行路由协议以与对等路由设备通信、执行从管理员接收的配置命令、维持和更新一个或多个路由表、管理订户流程处理和/或创建一个或多个转发表以便安装到转发组件340、以及其他功能。在该示例中,守护进程312包括命令行接口守护进程314(“CLI 314”)、路由协议守护进程316(“RPD 316”)和简单网络管理协议守护进程318(“SNMP 318”)。在这方面,控制平面302可以为网络设备提供路由平面、服务平面和管理平面功能。路由组件310的各种实例可以包括图 3中未示出的执行其他控制、管理或服务平面功能和/或驱动和以其他方式管理网络设备的转发平面功能的附加守护进程312。
守护进程312在内核320上操作并与内核320交互,内核为用户级进程提供运行时的操作环境。内核320可以包括例如UNIX操作系统衍生物,诸如,Linux或Berkeley软件分布(BSD)。内核320提供库和驱动程序,守护进程312可以通过它们来与底层系统交互。内核320的转发组件接口 322(“FC接口322”)包括内核级库,守护进程312和其他用户级进程或用户级库可以通过该内核级库来与转发组件340A的编程接口342交互。 FC接口322可以包括例如用于通过专用网络链路来与转发组件340A通信的套接字库。
路由组件310的硬件环境324包括微处理器326,微处理器执行从存储装置(图3中未示出)加载到主存储器(图3中也未示出)中的程序指令,以便执行路由组件310的软件栈(包括内核320和用户空间306)。微处理器326可以包括一个或多个通用或专用处理器,诸如,数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效逻辑设备。因此,本文中所使用的术语“处理器”或“控制器”可以指代前述结构中的任何一个或多个或可操作以执行本文中描述的技术的任何其他结构。
RPD 316执行一个或多个内部和/或外部路由协议以与其他网络设备交换路由信息,并将接收到的路由信息存储在路由信息库330(“RIB 330”) 中。例如,RPD 316可以执行诸如边界网关协议(BGP)中的一种或多种的协议,包括内部BGP(iBGP)、外部BGP(eBGP)、多协议BGP(MP-BGP)、标签分布协议(LDP)、以及具有流量工程扩展的资源预留协议 (RSVP-TE)。RPD 316可以附加地或替代地执行用户数据报协议(UDP) 以发送和接收各种系统资源(诸如物理接口)的数据。尽管关于UDP进行了描述,但是RPD 316可以执行任何协议来交换系统资源的数据。
RIB 330可以包括定义网络拓扑的信息,包括一个或多个路由表和/ 或链路状态数据库。RPD 316解析由RIB 330中的路由信息定义的拓扑,以选择或确定通过网络的一个或多个活动(active)路由,然后将这些路由安装到转发信息库FIB 332。通常,RPD 316以基数或其他查找树的形式生成FIB 332,以将分组信息(例如,具有目的地信息和/或标签栈的报头信息)映射到下一跳,并最终到达与相应转发组件340相关联的接口卡的接口端口。内核320可以将路由组件310的FIB 332与转发组件340A 的转发信息同步。
命令行接口守护进程314(“CLI 314”)提供外壳(shell),管理员或其他管理实体可以使用基于文本的命令通过外壳来修改网络设备的配置。 SNMP 318包括SNMP代理,SNMP代理从管理实体接收SNMP命令以设置和检索网络设备200的配置和管理信息。例如,使用CLI 314和SNMP 318,例如,管理实体可以启用/禁用和配置服务、管理分组流的分类和服务类别、安装路由、启用/禁用和配置速率限制器、配置移动网络的流量载体、以及配置接口。在该示例中,CLI 314、RPD 316和SNMP 318经由 FC接口322配置转发平面304以实现配置的服务和/或添加/修改/删除路由。FC接口322允许守护进程312驱动转发组件340A的安装和配置。具体地,FC接口322包括应用程序编程接口(API),守护进程312可以通过该应用程序编程接口将分组流映射到结构接口以进行转发。
网络设备200的转发组件340A-340N(统称为“转发组件340”)各自实现转发平面304(也称为“数据平面”)功能,以处理从接收分组的入口接口到发送分组的出口接口的分组处理。转发平面304确定通过网络设备 200的数据分组转发、应用服务、速率限制分组流、过滤分组、并且使用由控制平面302安装到转发平面304的服务对象和查找数据来处理分组。虽然图3仅详细示出了转发组件340A,但是网络设备200的每个转发组件340包括执行基本类似功能的类似模块。
转发组件340各自可以包括一个或多个分组处理器。例如,转发组件 340A可以包括分组处理器350A-350N(统称为“分组处理器350”或“PP 350”)。分组处理器350可以包括例如基于专用集成电路(“ASIC”)的分组处理器或根据本文中描述的技术执行自适应负载平衡的任何分组转发引擎。分组处理器350A-350N包括相应地具有密钥引擎352A-352N(统称为“密钥引擎352”)的一个或多个可编程专用集成电路,其执行微代码 (或“微指令”),从而控制和应用分组处理器350的固定硬件组件以处理分组“密钥”。分组密钥包括确定分组流的分组字段和其他参数。
分组处理器350A-350N的内部转发路径354A-354N(统称为“转发路径354”)中的每一个包括确定密钥引擎352执行的分组处理动作和其他操作的可编程可执行微代码和固定硬件组件。转发组件340A可以将转发路径354的可执行指令存储在计算机可读存储介质中,诸如,静态随机存取存储器(SRAM)。虽然在分组处理器350内示出,但是在一些示例中,转发路径354的可执行指令可以被存储在转发组件340A中的分组处理器 350外部的存储器中。
在一些方面,转发路径354中的每一个包括下一跳数据结构以发起处理。在密钥引擎352的每个处理步骤结束时,结果是例如可以指定附加处理或处理终止的下一跳。另外,下一跳可以指定要由密钥引擎352执行的一个或多个功能和/或要应用的一个或多个硬件元件(例如,策略器 (policer))。
如下面进一步描述的,转发路径354可以相应地包括转发平面数据结构366A-366N(统称为“转发平面数据结构366”)。每个转发平面数据结构366可以包括表或其他数据结构,表或其他数据结构包括本地计数字段 367A-367N(统称为“本地计数字段367”)、非本地计数字段368A-368N (统称为“非本地计数字段368”)以及用于转发流量的目的地分组处理器的负载平衡分布369A-369N(统称为“分布369”)中的相应一者。
转发组件微处理器360(“FC微处理器360”)管理分组处理器350并执行编程接口342以提供用于/到路由组件310的接口。例如,编程接口 342可以包括一个或多个用户或内核级库、程序、工具箱、应用编程接口 (API),并且可以经由内部通信链路(例如,图2中的通信链路230)使用套接字将控制和数据消息传送到转发组件340。FC微处理器360可以执行微内核362以提供接口的操作环境。编程接口342从路由组件310接收指示分组转发组件340A配置转发路径354的消息。
根据本公开的技术,分组处理器350A-350N可以相应地包括反馈组件 364A-364N(统称为“反馈组件364”),以确定从入口转发组件340A的源分组处理器350到出口转发组件340N的目的地分组处理器的流量速率。
例如,分组处理器350A的反馈组件364A可以利用分组处理器350N 的反馈组件364N来确定和交换流量速率信息。反馈组件364A可以确定实例(该实例中,从本地转发平面数据结构366A中选择目的地分组处理器)的数量,并将该值存储在转发平面数据结构366A的本地计数字段 367A中。PP 350A的反馈组件364N可以确定实例(从本地转发平面数据结构366N中选择同一目的地分组处理器)的数量,并将该值存储在转发平面数据结构366N的本地计数字段367N中。
反馈组件364可以经由结构链路366交换包括流量速率信息的反馈消息370A-370N(统称为“反馈消息370”)。反馈组件364可以交换反馈消息370,使得转发组件340A的分组处理器350可以确定从其他源分组处理器到转发组件340N的目的地分组处理器的流量速率。例如,反馈组件 364A可以生成反馈消息370A(包括聚合结构索引和来自本地计数字段367A的值),并且将反馈消息370A发送到分组处理器350N的反馈组件 364N。反馈组件364A还可以从源分组处理器350N的反馈组件364N接收一个或多个反馈消息370N,其中,反馈消息370N包括聚合结构索引和来自本地计数字段367N的值。在一些示例中,反馈消息370可以是使用微代码生成的中断消息。
响应于从反馈组件364N接收到反馈消息370N,反馈组件364A标识聚合结构索引、执行针对所标识的聚合结构的转发平面数据结构366A的查找、并且将来自反馈消息370N中包括的本地计数字段367N的值添加到转发平面数据结构366A中的非本地计数字段368A。
在一些示例中,反馈组件364A可以计算来自转发平面数据结构366A 的本地计数字段367A和非本地计数字段368A的总流量速率,并确定总流量速率是否超过目的地分组处理器的带宽。如果总流量速率超过目的地分组处理器的带宽,则反馈组件364A可以生成请求消息372以请求微内核362更新/重新编程转发平面数据结构366A。在一些示例中,反馈组件 364A可以使用微代码生成请求消息372。请求消息372可以包括超额使用 (或将被超额使用)的目的地分组处理器的标识符、总流量速率(例如,本地计数字段367A和非本地计数字段368A的总和)、以及转发平面数据结构366A的本地计数字段367A和非本地计数字段368A的值。
反馈组件364A可以将请求消息372发送到微内核362。虽然图4是关于反馈组件364A发送请求消息372来描述的,但是分组处理器350的其他反馈组件364也可以向微内核362发送请求消息。响应于接收到请求消息372,微内核362可以动态地调整转发平面数据结构366A内的目的地分组处理器的负载平衡分布369A。在一些示例中,微内核362可以被配置为仅在特定阈值数量的分组处理器350A-350N(例如,大于50%)发送指示特定目的地分组处理器被超额使用的请求消息372时才更新转发平面数据结构。相反,如果小于阈值数量的分组处理器350报告目的地分组处理器被超额使用,则微内核362将不会对该目的地分组处理器的转发平面数据结构进行改变。该方面可能需要分组处理器之间的一些协议,从而避免基于虚假通知改变权重并导致转发状态中的流失。在任何情况下,在一些示例中,微内核362可以基于请求消息372中包括的本地计数字段来确定将最多流量转发到目的地分组处理器的源分组处理器,并且可以动态地调整转发最大流量的源分组处理器的转发平面数据结构内的负载平衡分布。
微内核362可以使用在请求消息372中包括的信息来计算目的地分组处理器的动态权重(如关于图1所描述的)。微内核362可以降低分组处理器350A可以在转发平面数据结构366A中选择目的地分组处理器以转发分组流的可能性。例如,微内核362可以计算用于减少目的地分组处理器的带宽的目的地分组处理器的动态权重。微内核362可以基于目的地分组处理器的减少的带宽来更新目的地分组处理器的负载平衡分布 369A。在一些示例中,微内核362可以包括恢复计时器(未示出)以用于周期性地评估聚合结构(例如,图1的AF32)上的总流量速率。例如,微内核362可以确定来自其每个分组处理器(例如分组处理器350A-350N) 的流量速率。如果聚合结构上的总流量速率低于目的地分组处理器的带宽的20%,则转发组件340N中的每个目的地分组处理器的动态权重被恢复为1,并且更新转发组件340A以均匀地分布PP 350A-350N的条目的数量。
图4是根据本文中描述的技术的更新的转发平面数据结构的示例图示。图4的转发平面数据结构400和400’可以表示图1的转发平面数据结构42、图2的转发平面数据结构242和/或图3的散列查找数据结构366 中的任一者。将关于图1中的源分组处理器24A的转发平面数据结构42A 描述转发平面数据结构400和400'。在图4的示例中,转发平面数据结构400可以表示初始的转发平面数据结构,并且转发平面数据结构400'可以表示更新的转发平面数据结构。
转发平面数据结构400包括聚合结构索引402(“AF索引402”)、本地计数字段404、非本地计数字段406、以及目的地分组处理器PP 24E-24H 的负载平衡分布(“分布408”)。
在该示例中,聚合结构索引402标识聚合结构(例如,图1的AF 32)。本地计数字段404可以包括由PP 24A确定的本地流量速率。例如,本地流量速率可以表示实例(该实例中,由分组处理器24A从转发平面数据结构42A中选择目的地分组处理器(例如,PP 24E))的数量。非本地计数字段406可以包括PP 24B-24D的非本地流量速率。例如,非本地流量速率可以表示由其他分组处理器(例如,PP 24B-24D)从相应的转发平面数据结构中选择PP 24E的实例的数量。
在图4的示例中,分布408可以包括表示目的地分组处理器PP 24E-24H的负载平衡分布的64个条目。例如,假设PP 24E-24H均具有相同的带宽(例如,100Gbit/秒)。在该示例中,转发平面数据结构400可以表示具有对于各个PP 24E-24H的条目均匀分布的初始转发平面数据结构。例如,分布408可以包括对于PP 24E的16个条目(由阴影条目示出)、对于PP24F的16个条目、对于PP 24G的16个条目和对于PP 24H的16 个条目。响应于确定总流量速率超过目的地分组处理器的带宽,转发组件的微内核可以计算超额使用(或将被超额使用)的目的地分组处理器(例如,PP 24E)的动态权重。微内核可以使用PP 24E的动态权重(例如, 0.75)来减少PP 24E的带宽并且基于PP 24E的减小的带宽来更新(例如,重新编程)转发平面数据结构400(由转发平面数据结构400'表示)。在该示例中,转发平面数据结构400'的分布408'被更新为包括对于PP 24E的 13个条目(由阴影条目示出),而PP 24F-24H各自包括17个条目。以这种方式,更新的转发平面数据结构400'包括更少的PP 24E的条目,使得选择PP 24E的可能性降低。
图5是示出根据本公开中描述的技术的网络设备的示例操作的流程图。将出于示例的目的关于图1至图3来描述图5。
在图5的示例中,源虚拟网络节点(例如,网络设备20的vPE 22) 可以确定多个目的地PP 24E-24H的目的地分组处理器可能变得超额使用。例如,源PP 24A可以确定从PP24A到目的地分组处理器(例如PP 24E) 的流量速率(502)。在一些示例中,PP 24A可以确定从源PP 24A的本地转发平面数据结构42A中选择PP 24E的实例的数量。PP 24A可以将实例的数量存储在转发平面数据结构42A的本地计数字段中。
PP 24A可以接收一个或多个反馈消息,反馈消息指定从其他源分组处理器(例如,PP 24B-24D)到目的地PP 24E的相应流量速率(504)。例如,PP 24A可以从PP 24B-24D接收相应的反馈消息,每个反馈消息包括标识AF 32的聚合结构索引和PP 24B-24D的相应流量速率。PP 24A可以将PP 24B-24D的相应流量速率存储在转发平面数据结构42A的非本地计数字段中。
PP 24A可以基于来自每个源分组处理器的流量速率来计算总流量速率(506)。例如,PP 24A可以计算转发平面数据结构42A中的本地计数字段和非本地计数字段的总和。
PP 24A可以将总流量速率与PP 24E的带宽进行对比(508)。例如,如果源PP 24A-24D的总流量速率不超过PP 24E的流量速率阈值(步骤508 的“否”分支),则转发平面数据结构42A保持不变(510)。
如果源PP 24A-24D的总流量速率超过PP 24E的流量速率阈值(步骤 508的“是”分支),则更新转发平面数据结构42A以降低在转发平面数据结构42A内选择PP 24E的可能性(512)。例如,PP 24A可以生成到转发组件的微内核的请求消息。响应于接收到请求消息,微内核可以基于过量带宽的量和特定目的地分组处理器的带宽来计算目的地PP 24E的动态权重。在关于图1描述的示例中,过量带宽可以是25Gbit/秒,PP 24E的带宽可以是100Gbit/秒。如此,微内核可以为目的地PP 24E计算0.75的动态权重。微内核可以根据0.75的动态权重调整PP 24E的带宽。结果, PP 24E的调整带宽(例如,75Gbit/秒)用于更新转发平面数据结构42A。
以这种方式,转发平面数据结构42A在转发平面数据结构42A中被用较少的PP 24E条目更新,从而降低了在转发平面数据结构42A内选择 PP 24E的可能性。在一些示例中,微内核可以计算在至少0.2且小于1的范围内的动态权重,以避免从转发平面数据结构42A中排除PP 24E的所有条目(例如,当过量带宽与PP 24E的带宽是相同的值时)。在一些示例中,vPE 22可以将每个目的地分组处理器24E的权重复原至默认权重(即, 1)。例如,微内核362可以包括恢复计时器以用于周期性地评估聚合结构 (例如AF 32)上的总流量速率。如果在聚合结构上的总流量速率低于PP 24E的带宽的20%,则在转发平面数据结构42A中的每个目的地PP 24E-24H的动态权重恢复为1,并且更新转发平面数据结构42A以均匀地分布PP24E-24H的条目的数量。
源PP 24A负载平衡分组根据更新的转发平面数据结构42A流动 (514)。以这种方式,vPE 22可以基于包括流量速率信息的反馈消息动态地调整PP 24A的分组流的负载平衡。
本文中所描述的技术可以硬件、软件、固件或其任何组合实现。被描述为模块、单元或组件的各种特征可以一起实现在集成逻辑设备中或者单独实现为分离地但可互操作的逻辑设备或其他硬件设备。在一些情况下,电子电路的各种特征可以作为一个或多个集成电路设备实现,诸如,集成电路芯片或芯片组。
如果以硬件实施,则本公开可以针对诸如处理器或集成电路设备(诸如集成电路芯片或芯片组)的装置。可替代地或另外地,如果以软件或固件实现,则本技术可以至少部分地由包括指令的计算机可读数据存储介质来实现,这些指令在被执行时使处理器执行上述方法中的一个或多个。例如,计算机可读数据存储介质可以存储此类指令以由处理器执行。
计算机可读介质可以形成计算机程序产品的一部分,计算机程序产品可以包括封装材料。计算机可读介质可以包括计算机可读储存介质,诸如,随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦可编程只读存储器(EEPROM)、闪存、磁或光学数据储存介质等。在一些示例中,制造品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以指示存储介质并非以载波或传播信号实现。在某些实例中,非暂时性存储介质可以存储可随时间改变的数据(例如,在RAM或缓存中)。
代码或指令可以是由包括一个或多个处理器的处理电路执行的软件和/或固件,诸如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他等效集成或离散逻辑电路。因此,本文中所使用的术语“处理器”可以指代前述结构中的任一个或适于实现本文中描述的技术的任何其他结构。此外,在一些方面,本公开中描述的功能可被提供在软件模块或硬件模块内。
已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
Claims (14)
1.一种在计算机网络内转发分组的方法,包括:
由网络设备的源虚拟网络节点的多个源分组处理器的第一源分组处理器接收来自所述多个源分组处理器中的其他源分组处理器的多个反馈消息,
其中,所述反馈消息包括从所述其他源分组处理器到特定目的地分组处理器的相应流量速率信息,并且
其中,所述网络设备包括:
具有包括特定目的地分组处理器的多个目的地分组处理器的目的地虚拟网络节点,以及
交换结构,所述交换结构包括在所述多个源分组处理器和所述多个目的地分组处理器的相应结构接口处将相应成对的所述多个源分组处理器和所述多个目的地分组处理器耦连的多个结构链路;
由所述源虚拟网络节点并且基于多个所述反馈消息,确定所述特定目的地分组处理器可能变得超额使用,其中,基于所述多个反馈消息进行确定包括:
基于来自所述其他源分组处理器的相应流量速率信息和从所述第一源分组处理器到所述特定目的地分组处理器的流量速率信息来计算总流量速率;以及
将所述总流量速率与对于所述特定目的地分组处理器的阈值流量速率进行对比;
响应于通过确定所述总流量速率超过所述特定目的地分组处理器的阈值流量速率而确定所述特定目的地分组处理器可能变得超额使用,由所述源虚拟网络节点更新所述第一源分组处理器的转发平面数据结构,以降低选择要将分组流转发至所述特定目的地分组处理器的可能性,
其中,所述转发平面数据结构包括与所述特定目的地分组处理器相关联的多个条目,基于所述特定目的地分组处理器的带宽来确定所述条目的数量,并且
其中,更新所述第一源分组处理器的所述转发平面数据结构包括减少所述转发平面数据结构的与所述特定目的地分组处理器相关联的所述条目的数量,以及
由所述源虚拟网络节点根据经更新的转发平面数据结构对接收到的分组流进行负载平衡。
2.根据权利要求1所述的方法,其中,所述转发平面数据结构包括散列查找数据结构,所述散列查找数据结构包括表示要转发流量的所述多个目的地分组处理器的负载平衡分布的条目。
3.根据权利要求1所述的方法,其中,所述多个结构链路中的每个结构链路是耦连所述网络设备的所述源虚拟网络节点和所述目的地虚拟网络节点的单个抽象结构接口的一部分。
4.根据权利要求1所述的方法,其中,来自所述其他源分组处理器的相应流量速率信息和来自所述第一源分组处理器的流量速率信息包括实例的数量,在所述实例中所述特定目的地分组处理器选自所述源分组处理器的转发平面数据结构。
5.根据权利要求1所述的方法,其中,减少所述转发平面数据结构的与所述特定目的地分组处理器相关联的所述条目的数量包括:
确定所述特定目的地分组处理器的动态权重,其中,基于过量带宽的量和所述特定目的地分组处理器的带宽确定所述动态权重;
根据所述动态权重调整所述特定目的地分组处理器的带宽;以及
根据所述特定目的地分组处理器的经调整的带宽更新所述转发平面数据结构。
6.根据权利要求5所述的方法,其中,确定所述特定目的地分组处理器的动态权重包括在至少0.2且少于1的范围内确定所述动态权重。
7.根据权利要求1至3中任一项所述的方法,其中,更新所述转发平面数据结构以降低在所述转发平面数据结构内选择所述特定目的地分组处理器的可能性包括更新具有最高流量速率的源分组处理器的转发平面数据结构。
8.一种网络设备,包括:
源虚拟网络节点,具有多个源分组处理器;
目的地虚拟网络节点,具有多个目的地分组处理器;
多个结构链路,在所述多个源分组处理器和所述多个目的地分组处理器的相应结构接口处将相应对的所述多个源分组处理器和所述多个目的地分组处理器耦连,
其中,所述源虚拟网络节点被配置为:
由所述多个源分组处理器的第一源分组处理器接收来自所述多个源分组处理器中的其他源分组处理器的多个反馈消息,其中,所述反馈消息包括从所述其他源分组处理器到所述多个源分组处理器中的特定目的地分组处理器的相应流量速率信息;
基于多个所述反馈消息,确定所述特定目的地分组处理器可能变得超额使用,其中,基于所述多个反馈消息进行确定包括:
基于来自所述其他源分组处理器的相应流量速率信息和从所述第一源分组处理器到所述特定目的地分组处理器的流量速率信息来计算总流量速率;以及
将所述总流量速率与对于所述特定目的地分组处理器的阈值流量速率进行对比;
响应于通过确定所述总流量速率超过所述特定目的地分组处理器的阈值流量速率而确定所述特定目的地分组处理器可能变得超额使用,更新所述第一源分组处理器的转发平面数据结构,以降低选择要将分组流转发至的所述特定目的地分组处理器的可能性,
其中,所述转发平面数据结构包括与所述特定目的地分组处理器相关联的多个条目,基于所述特定目的地分组处理器的带宽来确定所述条目的数量,并且
根据经更新的转发平面数据结构对接收到的分组流进行负载平衡。
9.根据权利要求8所述的网络设备,其中,所述转发平面数据结构包括散列查找数据结构,所述散列查找数据结构包括表示要转发流量的所述多个目的地分组处理器的负载平衡分布的条目。
10.根据权利要求8所述的网络设备,其中,所述多个结构链路中的每个结构链路是耦连所述网络设备的所述源虚拟网络节点和所述目的地虚拟网络节点的单个抽象结构接口的一部分。
11.根据权利要求8所述的网络设备,其中,来自所述其他源分组处理器的相应流量速率信息和来自所述第一源分组处理器的流量速率信息包括实例的数量,在所述实例中所述特定目的地分组处理器选自所述源分组处理器的转发平面数据结构。
12.根据权利要求8所述的网络设备,其中,为了减少所述转发平面数据结构的与所述特定目的地分组处理器相关联的所述条目的数量,所述虚拟网络节点进一步被配置为:
确定所述特定目的地分组处理器的动态权重,其中,计算所述动态权重是基于过量带宽的量和所述特定目的地分组处理器的带宽;
根据所述动态权重调整所述特定目的地分组处理器的带宽;以及
根据所述特定目的地分组处理器的经调整的带宽更新所述转发平面数据结构。
13.根据权利要求12所述的网络设备,其中,为了确定所述特定目的地分组处理器的动态权重,所述虚拟网络节点进一步被配置为在至少0.2且少于1的范围内确定所述动态权重。
14.一种网络设备的非暂时性计算机可读存储介质,所述网络设备包括具有多个源分组处理器的源虚拟网络节点、具有多个目的地分组处理器的目的地虚拟网络节点、以及交换结构,所述交换结构包括在所述多个源分组处理器和所述多个目的地分组处理器的相应结构接口处将相应成对的所述多个源分组处理器和所述多个目的地分组处理器耦连的多个结构链路,所述非暂时性计算机可读存储介质存储指令,所述指令在执行时致使网络设备的一个或多个可编程处理器:
由所述多个源分组处理器的第一源分组处理器接收来自所述多个源分组处理器中的其他源分组处理器的多个反馈消息,其中,所述反馈消息包括从所述其他源分组处理器到所述多个源分组处理器中的特定目的地分组处理器的相应流量速率信息;
基于多个所述反馈消息,确定所述特定目的地分组处理器可能变得超额使用,其中,基于所述多个反馈消息进行确定包括:
基于来自所述其他源分组处理器的相应流量速率信息和从所述第一源分组处理器到所述特定目的地分组处理器的流量速率信息来计算总流量速率;以及
将所述总流量速率与对于所述特定目的地分组处理器的阈值流量速率进行对比;
响应于通过确定所述总流量速率超过所述特定目的地分组处理器的阈值流量速率而确定所述特定目的地分组处理器可能变得超额使用,更新所述第一源分组处理器的转发平面数据结构,以降低选择要将分组流转发至的所述特定目的地分组处理器的可能性,
其中,所述转发平面数据结构包括与所述特定目的地分组处理器相关联的多个条目,基于所述特定目的地分组处理器的带宽来确定所述条目的数量,并且
根据经更新的转发平面数据结构对接收到的分组流进行负载平衡。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/919,662 | 2018-03-13 | ||
US15/919,662 US10785157B2 (en) | 2018-03-13 | 2018-03-13 | Adaptive load-balancing over a multi-point logical interface |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110278139A CN110278139A (zh) | 2019-09-24 |
CN110278139B true CN110278139B (zh) | 2021-11-19 |
Family
ID=65019268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811611861.8A Active CN110278139B (zh) | 2018-03-13 | 2018-12-27 | 在计算机网络内转发分组的方法、网络设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10785157B2 (zh) |
EP (1) | EP3541028B1 (zh) |
CN (1) | CN110278139B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9774537B2 (en) | 2014-09-30 | 2017-09-26 | Nicira, Inc. | Dynamically adjusting load balancing |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US10841209B2 (en) * | 2018-12-21 | 2020-11-17 | Cisco Technology, Inc. | Method, node, and medium for establishing connection between a source and endpoint via one or more border nodes |
CN112039795B (zh) * | 2019-06-04 | 2022-08-26 | 华为技术有限公司 | 一种负载分担方法、装置和网络设备 |
US11140083B1 (en) * | 2019-12-06 | 2021-10-05 | Juniper Networks, Inc. | Load balancing over a plurality of packet forwarding components |
US11368387B2 (en) * | 2020-04-06 | 2022-06-21 | Vmware, Inc. | Using router as service node through logical service plane |
US11411869B1 (en) * | 2020-05-11 | 2022-08-09 | Cisco Technology, Inc. | Designated forwarder selection for multihomed hosts in an ethernet virtual private network |
US11658895B2 (en) * | 2020-07-14 | 2023-05-23 | Juniper Network, Inc. | Synthesizing probe parameters based on historical data |
US20240291761A1 (en) * | 2023-02-28 | 2024-08-29 | Juniper Networks, Inc. | Load balancing network traffic processing for workloads among processing cores |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8125902B2 (en) * | 2001-09-27 | 2012-02-28 | Hyperchip Inc. | Method and system for congestion avoidance in packet switching devices |
CN101075960A (zh) * | 2007-06-22 | 2007-11-21 | 清华大学 | 高速网络中基于路由器显式虚拟负载反馈的流量控制方法 |
ATE498966T1 (de) | 2009-05-12 | 2011-03-15 | Alcatel Lucent | Verkehrslastabhängige leistungsreduzierung in hochgeschwindigkeits-paketvermittlungssystemen |
US8767529B2 (en) * | 2011-09-12 | 2014-07-01 | International Business Machines Corporation | High availability distributed fabric protocol (DFP) switching network architecture |
US8953599B1 (en) | 2012-06-29 | 2015-02-10 | Juniper Networks, Inc. | Traffic cut-through within network device having multiple virtual network devices |
US9379982B1 (en) | 2013-09-30 | 2016-06-28 | Juniper Networks, Inc. | Adaptive stateless load balancing |
US9231871B2 (en) * | 2013-11-25 | 2016-01-05 | Versa Networks, Inc. | Flow distribution table for packet flow load balancing |
US9544233B2 (en) * | 2014-04-28 | 2017-01-10 | New Jersey Institute Of Technology | Congestion management for datacenter network |
EP3206338A1 (en) * | 2016-02-11 | 2017-08-16 | Xieon Networks S.à r.l. | Service-based loss forwarding in communication networks |
US10764722B2 (en) * | 2018-01-12 | 2020-09-01 | Keysight Technologies, Inc. | Subscriber sampling for network packet forwarding based upon unique subscriber identifiers |
-
2018
- 2018-03-13 US US15/919,662 patent/US10785157B2/en active Active
- 2018-12-21 EP EP18215646.3A patent/EP3541028B1/en active Active
- 2018-12-27 CN CN201811611861.8A patent/CN110278139B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP3541028B1 (en) | 2021-04-28 |
US20190288946A1 (en) | 2019-09-19 |
CN110278139A (zh) | 2019-09-24 |
US10785157B2 (en) | 2020-09-22 |
EP3541028A1 (en) | 2019-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110278139B (zh) | 在计算机网络内转发分组的方法、网络设备及存储介质 | |
JP7417825B2 (ja) | スライスベースルーティング | |
CN109587054B (zh) | 使用抽象结构接口连接网络设备中的虚拟节点 | |
Mendiola et al. | A survey on the contributions of software-defined networking to traffic engineering | |
US9807035B1 (en) | Using available bandwidths of an IP fabric to intelligently distribute data | |
US11611517B2 (en) | Tenant-driven dynamic resource allocation for virtual network functions | |
US10164845B2 (en) | Network service aware routers, and applications thereof | |
WO2018233580A1 (zh) | 一种网络中建立转发路径的方法、控制器及系统 | |
Duliński et al. | MPLS-based reduction of flow table entries in SDN switches supporting multipath transmission | |
US8964596B1 (en) | Network service aware routers, and applications thereof | |
CN115225395A (zh) | 作为使用虚拟节点的服务的网络 | |
CN110300073A (zh) | 级联端口的目标选择方法、聚合装置及存储介质 | |
US10972402B1 (en) | Dynamic management of inline entries in hardware across protocols in a scaled environment | |
CN113316769B (zh) | 网络功能虚拟化中使用基于规则反馈的事件优先级的方法 | |
CN109861912B (zh) | 优化用于电子设备内的虚拟节点的结构路径转发 | |
Soni et al. | Scalable guaranteed-bandwidth multicast service in software defined ISP networks | |
Benet et al. | Policy-based routing and load balancing for EVPN-based data center interconnections | |
Ha et al. | Fairness Enhanced Dynamic Routing Protocol in Software-Defined Networking | |
GB2578453A (en) | Software defined networks | |
US12081443B2 (en) | Adaptive control plane policing | |
Yabusaki et al. | Network management for higher-bandwidth-use efficiency by optimizing paths in virtual networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Juniper Networks, Inc. Address before: California, USA Applicant before: Jungle network |
|
GR01 | Patent grant | ||
GR01 | Patent grant |