CN109981456B - 网络装置内用于分组重新排序的方法和装置 - Google Patents

网络装置内用于分组重新排序的方法和装置 Download PDF

Info

Publication number
CN109981456B
CN109981456B CN201811150924.4A CN201811150924A CN109981456B CN 109981456 B CN109981456 B CN 109981456B CN 201811150924 A CN201811150924 A CN 201811150924A CN 109981456 B CN109981456 B CN 109981456B
Authority
CN
China
Prior art keywords
packets
packet
routing node
virtual routing
path
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
Application number
CN201811150924.4A
Other languages
English (en)
Other versions
CN109981456A (zh
Inventor
萨扬塔尼·古普塔
巴布·辛加拉彦
夏尔米拉·科普拉
戈拉夫·加内里瓦尔
阿伦·G·梅农
维什努·贾纳达南·S
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Juniper Networks Inc filed Critical Juniper Networks Inc
Publication of CN109981456A publication Critical patent/CN109981456A/zh
Application granted granted Critical
Publication of CN109981456B publication Critical patent/CN109981456B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/44Distributed routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及网络装置内的虚拟节点的用于分组重新排序的智能缓存。本技术描述了响应于网络装置中的内部转发路径的变化而对在新路径上流动的分组进行分组重新排序。例如,网络装置可以动态地改变对内部转发路径的选择以实现结构路径优化(“OFP”)或确保优化负载平衡。缓存在新路径上转发的分组使得在新路径上转发的分组的传输被延迟至少是分组从源分组处理器发送至初始目的地分组处理器的时间的缓存时长。

Description

网络装置内用于分组重新排序的方法和装置
相关申请交叉引用
本申请要求于2017年12月27日提交的美国专利申请号15/855,276 的权益,该申请的全部内容通过引用结合于本文。
技术领域
本公开涉及计算机网络,并且更具体地涉及计算机网络内的分组路由和交换。
背景技术
计算机网络是可以交换数据和共享资源的互连计算装置的集合。在诸如以太网等基于分组(数据包)的网络中,计算装置通过将数据划分为称为分组的可变长度块来传送数据,这些分组被单独地跨过网络从源装置路由到目的地装置。目的地装置从分组中提取数据并且将数据组装成其原始形式。
某些装置(称为路由器)维持表示网络拓扑的路由信息。路由器交换路由信息以便维持穿过网络的可用路由的准确表示。“路由”通常可以被定义为网络上的两个位置之间的路径。在接收到输入数据分组时,路由器检查分组内的信息(通常称为“密钥”)以根据路由信息来选择用来转发分组的适当下一跳跃。
路由器可以包括通过内部交换结构互连的一个或多个分组处理器。分组处理器经由接口卡与其它外部装置进行数据接收和发送。交换结构提供内部互连机制以用于在分组处理器之间转发路由器内的数据以便通过网络进行最终传输。在一些示例中,路由器或交换装置可以采用分布式多级交换结构架构,其中网络分组遍历交换结构的位于路由器的分布式分组处理器中的多个级以从交换结构的入口点行进到交换结构的出口点。
发明内容
通常,本公开描述了用于响应于网络装置中的内部转发路径的变化而对在新路径上转发的分组进行智能缓存的技术。在一些示例中,诸如路由器等网络装置可以通过划分路由器的硬件资源(诸如分组处理器)而虚拟化为多个虚拟网络节点。可以在两个虚拟节点之间提供一个或多个逻辑链路。例如,抽象结构接口(AF)链路是逻辑链路结构,并且提供虚拟节点之间的连接。源分组处理器可以经由AF链路跨内部交换结构向目的地分组处理器转发输入数据以便最终传输在网络上。
例如,诸如单机架路由器等网络装置可以动态地改变对内部转发路径的选择以避免在结构路径上不必要的结构跳跃或者改进负载平衡。作为一个示例,内部转发路径可以从源分组处理器(例如,分组转发引擎(PFE)) 与初始目的地分组处理器之间的初始路径改变为源分组处理器与出口分组处理器之间的新路径。本文描述的技术提供了在新路径上转发的分组的缓存使得在新路径上转发的分组的传输被延迟至少为分组从源分组处理器发送至初始目的地分组处理器的时间的缓存时长。尤其是在初始路径上转发的一个或多个分组在出口分组处理器接收到沿着新路径转发的一个或多个后续分组之前尚未在交换结构上完成传输的情况下,这些技术可以为网络装置提供特定的技术改进,诸如解决目的地分组处理器处的所有类型数据和控制流量的分组重新排序问题。以此方式,网络装置可以在网络拓扑或分组流发生任何变化时自动缓存出口分组处理器处的分组,和/或向路径模块通知流和缓存超时的任何变化。
在一个示例中,一种方法包括由网络装置的目的地虚拟路由节点接收一个或多个分组,所述网络装置具有多个分组处理器和交换结构,所述交换结构包括在所述多个分组处理器的相应结构接口处耦接所述多个分组处理器的各对的多个结构链路。该方法还包括由所述目的地虚拟路由节点确定是在通过所述交换结构的第一路径上还是在通过所述交换结构的第二路径上转发所述一个或多个分组。该方法进一步包括响应于确定在所述第二路径上转发所述一个或多个分组,由所述目的地虚拟路由节点缓存所述一个或多个分组达到缓存时长。该方法还包括响应于已经经过所述缓存时长,由所述目的地虚拟路由节点在所述目的地虚拟路由节点的出口接口上传输缓存的一个或多个分组。
在另一个示例中,一种网络装置包括多个分组处理器;多个结构链路,其在多个结构部件的相应结构接口处耦接多个分组处理器的各对;多个虚拟路由节点中的虚拟路由节点,其中所述虚拟路由节点被配置为:接收一个或多个分组;确定是在通过所述交换结构的第一路径上还是在通过所述交换结构的第二路径上转发所述一个或多个分组;响应于确定在所述第二路径上转发所述一个或多个分组,缓存所述一个或多个分组达缓存时长;以及响应于已经经过所述缓存时长,在所述目的地虚拟路由节点的出口接口上传输缓存的一个或多个分组。
在另一个示例中,一种系统包括多个分组处理器;多个结构链路,其在所述多个结构部件的相应结构接口处耦接多个分组处理器的相应对;路径模块,其用于计算缓存时长;多个虚拟路由节点中的源虚拟路由节点和目的地虚拟路由节点,其中所述目的地虚拟路由节点被配置为:接收一个或多个分组;基于所述转发信息来确定是在通过所述交换结构的所述第一路径上还是在通过所述交换结构的所述第二路径上转发所述一个或多个分组;响应于确定在所述第二路径上转发所述一个或多个分组,缓存所述一个或多个分组达缓存时长;以及响应于已经经过所述缓存时长,在所述目的地虚拟路由节点的出口接口上传输缓存的一个或多个分组。
附图和以下描述中阐释本文所述的技术的一或多个示例的细节。通过具体实施方式、附图说明及权利要求书,本文描述的技术的其它特征、目的和优点将显而易见。
附图说明
图1是说明示例性网络环境的框图,该网络环境包括根据本公开中描述的技术配置的网络装置的逻辑视图。
图2是说明根据本公开的技术的示例性网络装置的框图。
图3是更详细地说明图2的控制单元和转发单元的示例性实例的框图。
图4是更详细地说明根据本公开中描述的技术配置的分组处理器的示例性转发路径的框图。
图5是说明根据本公开的一个或多个方面的网络装置的示例性操作的流程图。
图6是说明根据本公开的一个或多个方面的网络装置的示例性操作的流程图。
具体实施方式
图1是说明示例性网络环境10的框图,该网络环境包括根据本公开中描述的技术而配置的网络装置12的逻辑视图。出于示例目的,关于图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之外的各种网络装置(未示出),诸如附加的路由器、交换机、服务器或其它装置。
客户端装置22可以是与耦接到客户边缘(CE)路由器23的一个或多个客户网络(未示出)相关联的装置。在一些示例中,客户端装置22可以包括计算装置,诸如个人计算机、膝上型计算机、手持式计算机、工作站、服务器、交换机、打印机、客户数据中心或它装置。在其它示例中,客户端装置22可以是端点装置,诸如交换机、路由器、网关或充当客户设备(诸如用户装置(subscriber device))与服务供应商设备之间的分界点的其他终端。在一个示例中,客户端装置22可以包括数字用户线接入多路复用器(DSLAM)或其它交换装置。例如,客户端装置22可以连接到一个或多个无线电台或基站(未示出)以与用户装置无线地交换分组后的数据。客户端装置22可以包括交换机、路由器、网关或将从无线电台接收的分组化数据聚合到CE路由器23的其他终端。在一些示例中,聚合网络14可以包括光接入网络。例如,CE路由器23可以包括经由光纤电缆连接到一个或多个客户端装置22或光网络单元(ONU)的光线路终端 (OLT)。
客户端装置22可以是耦接到客户网络和用户装置的接入节点。客户端装置22是由PE路由器28提供服务的客户端。在该示例中,服务供应商网络包括客户端装置22和客户边缘(CE)路由器23,它们使用户装置接入聚合网络14。在一些示例中,CE路由器23可以包括路由器,其维护用户装置与聚合网络14之间的路由信息。例如,CE路由器23可以包括宽带远程接入服务器(BRAS)功能以将一个或多个客户端装置22的输出聚合到聚合网络14的更高速的上行链路中。
网络装置12包括多个路由部件(例如,路由进程)和分组处理器(例如,PFE),它们物理地耦接并且被配置为充当单独的逻辑路由器。网络装置12包括虚拟供应商边缘(vPE)节点20(“vPE 20”)和虚拟核心路由器 (vP)节点18A到18B(“vP 18”),它们是从网络装置12外部的网络装置的角度来看充当多个不同节点的配合虚拟路由部件。网络装置12可以包括具有单个物理机架的单机架路由器,其通过划分路由器的硬件资源 (诸如分组处理器24A到24F(“PP 24”),例如,分组转发引擎(PFE)) 而虚拟化为多个虚拟网络节点(称为“vNode”)。在图1的示例中,vNode 18、 20中的每一个包括一个或多个PP 24。单独的PP 24与特定vNode相关联,并且不在多个vNode之间共享。在图1的示例中,vPE 20可以包括PP24A 和24B;vP 18A可以包括PP 24C和24D;并且vP 18B可以包括PP 24E 和24F。
对于网络环境10的核心路由器30和CE路由器23,网络装置12表现为多个路由装置,具体地为虚拟PE(vPE)路由器20(在本文称为“源虚拟路由节点”)和虚拟提供者(vP)路由器18(在本文称为“目的地虚拟路由节点”)。例如,虽然网络装置12包括单个机架,但是从核心路由器 30的角度来看,网络装置12具有多个外部通告的网络地址,并且为每个路由协议维护多个对等路由会话,该路由协议维护与每个核心路由器30 的对等路由会话。
vNode的控制平面(vCP)25A到25C(“vCP 25”)中的每一个都使用虚拟机(VM)技术进行示例化。vCP 25可以在网络装置12的控制单元(例如,路由部件)内或在路由部件外部。每个vNode可以用作不同网络功能的角色,诸如互联网服务供应商边缘(PE)、虚拟专用网络(VPN) 服务PE以及多协议标签交换(MPLS)标签交换路由器(LSR)。除了这些vNode之外,在一些示例中,网络装置12还可以包括被示例化用于共享资源管理的管理VM(例如,管理平面,图1中未示出)。
在网络装置12中的两个vNode之间,提供一个逻辑3层链路,其对于网络装置12外部的装置是可见的。例如,在图1中,抽象结构接口(AF) 链路32A到32B(“AF链路32”)分别在vPE 20与vP 18A以及vPE 20与vP 18B之间提供逻辑链路。每个AF链路32是3层逻辑链路结构,并且提供vNode到vNode连接。AF链路32捆绑连接相同vNode的那些结构互连。AF在vNode之间提供单个逻辑链路连接,并且可以在其中具有许多1层、2层或3层结构捆绑,这具体取决于实施方案。
AF 32A包括结构互连33A到33D,而AF 32B包括结构互连33E到 33H(统称为“结构互连33”)。结构互连终止于一个PP 24的结构接口处。在一些示例中,结构接口可以具有标识符,其通常未被通告给网络装置12 外部的装置。结构互连33被建模为一对PP 24之间的点对点以太网链路。 AF仿真为点对多点,而结构接口(FI)仿真为点对点接口。
在一个示例中,假设vPE 20提供基于MPLS的VPN服务,并且CE 23 连接到PP 24A。还假设vPE 20经由PP 24C和PP 24D连接到具有结构等成本逻辑路径(with fabric equalcost logical path)的vP 18A,而vPE 20 经由PP 24E和PP 24F连接到具有结构等成本逻辑路径的vP 18B。当分组从以太网汇聚网络14到达vPE 20并且目的地为PE 28时,vPE 20通常基于ECMP负载平衡向PP 24C到24F中的任一个发送数据流量。例如,AF 链路32A可以包括结构接口33A到33D以用于将vPE 20的分组处理器互连到vP 18A的分组处理器,并且结构接口33E到33H将vPE 20的分组处理器互连到vP 18B的分组处理器。vPE 20可以执行散列算法以确定结构互连33中用于输出接口的一个结构互连。
假设PE 28仅可经由PP 24E从vP 18B到达。vPE 20通常可以通过执行散列算法选择用于向PE 28转发流量的结构接口(例如,结构接口33B) 来对流量进行负载平衡。在图1的示例中,vPE 20可以执行散列算法以选择结构互连33B,其源PP 24A在初始路径(另外称为“第一路径”)上向初始目的地PFE(例如,PFE 24D)转发分组。作为非出口PFE,PFE 24D 接收分组,确定出口FC,并且向出口FC转发分组以最终传输到IP/MPLS 核心网络16。这导致附加的结构跳跃。
为了优化网络装置12内的内部转发路径,在一些示例中,入口vNode 上的转发路径可以被改变为通过交换结构在新路径(另外称为“第二路径”)上直接向新的目的地分组处理器(例如,PP 24E)转发分组。以此方式,修改通过网络装置12的交换结构的内部转发路径以避免不必要的结构跳跃。在一个示例中,下游vNode(例如,vPE 18B)可以向相邻的上游vNode(例如,vP 20)发出与最佳结构路径下一跳跃相关联的信息,使得下一跳跃被配置为出口PP 24E。在另一个示例中,下游vNode(例如, vPE 18B)可以向路径模块26发送与出口分组处理器相关联的结构路径信息,使得上游vNode(例如,vP 20)可以接收与出口分组处理器相关联的结构路径信息,并且直接向出口分组处理器转发分组,而不是对分组进行负载平衡。在其它示例中,入口vNode可以执行自适应负载平衡。在于 2017年5月31日提交的美国专利申请号15/610,233和于2017年11月30 日提交的美国专利申请号15/827,476中提供了最佳结构路径的进一步示例,其中每个专利申请的全部相应内容通过引用结合于本文。
然而,在一些情况中,出口分组处理器可以在初始路径上的分组流中的一个或多个飞行中分组被传输到IP/MPLS核心网络16之前,在新路径上向IP/MPLS核心网络16传输同一分组流中的分组。例如,源PP 24A 可以在初始路径上向PP 24D转发分组流中的初始分组。在内部转发路径改变之后并且当初始分组仍然在飞行中时,源PP 24A可以在新路径上直接向出口PP 24E转发分组流中的后续分组。因为初始分组沿着初始路径行进所花费的时间(例如由于初始路径上的附加结构跳跃)可能比后续分组在新路径上行进所花费的时间更长,所以出口PP 24E可以在接收到初始分组之前接收到后续分组。在出口PP 24E从PP24D接收初始分组之前,源PP 24A可以在新路径上向IP/MPLS核心网络16传输后续分组。然后,出口PP 24E可以从PP 24D接收初始分组,这导致在出口PP 24E处进行分组重新排序。
根据本文描述的技术,目的地虚拟节点的出口分组处理器可以被配置为缓存在新路径上流动的分组持续至少分组从源分组处理器流向初始目的地分组处理器的时间(在本文称为“实际分组到达时间”)。在示例图1 中,出口PP 24E可以缓存被确定为在新路径上流动的一个或多个分组持续至少分组从源PP 24A流向初始目的地PP 24D的时间的缓存时长。出口 PP 24E可以例如基于从PP 24接收的一个或多个散列值来确定一个或多个分组的内部转发路径是否被优化。出口PP 24E还可以基于从PP 24接收的一个或多个时间戳来确定出口PP 24E应当在输出接口上在发送分组之前缓存一个或多个分组所持续的缓存时长。
例如,源PP 24A可以向目的地PP 24D发送采样分组36,该采样分组包括与通向目的地PP 24D的初始路径相关联的第一散列值。第一散列值用于选择源PP 24A向该结构转发分组的路径。在图1的示例中,vPE 20 可以执行散列算法以选择通向目的地PP 24D的路径(例如,初始路径)。在一些情况中,第一个散列值是基于5元组分组(例如,源IP地址、目的地IP地址、源端口、目的地端口以及协议)来计算,并且用于选择源 PP 24A向该结构转发分组的路径。在图1的示例中,vPE 20可以执行散列算法以选择通向目的地PP 24D的路径(例如,初始分组路径)。在一些示例中,第一散列值识别通向PP 24D的初始非优化路径,并且由路径模块26用来触发内部转发路径的改变。
采样分组36还可以包括与分组从源PP 24A流向目的地PP 24D的开始时间相关联的第一时间戳。例如,采样分组36的第一时间戳提供采样分组36向PP 24D行进的开始时间。源PP 24A可以在初始路径上向PP 24D 发送包括第一散列值和第一时间戳的采样分组36。虽然被说明为向PP 24D发送单个采样分组,但是该技术可以提供向PP 24D发送任意数量的采样分组。例如,相应的采样分组可以仅包括散列值或者仅包括时间戳。
PP 24D接收采样分组36并且可以向采样分组添加与通向出口FC 24E 的新路径相关联的第二散列值,其用于选择出口分组处理器(例如,PP 24E)以最终将分组传输到IP/MPLS核心网16。例如,vP 18A在一些情况中可以基于5元组参数来计算流的第二散列值,并且用于选择出口分组处理器(例如,PP 24E)以用于最终将分组传输到IP/MPLS核心网16。如下面进一步描述的,第二散列值唯一地识别要重新排序的分组流。
PP 24D还可以向采样分组添加表示分组从源PP 24A流向初始目的地 PP 24D的结束时间的第二时间戳。例如,在接收到采样分组36时,PP 24D 向采样分组添加第二时间戳,其提供采样分组36从源PP 24A行进到PP 24D的结束时间。
在一些示例中,PP 24D可以向路径模块26发送包括散列值和时间戳的采样分组38。在其它示例中,PP 24D可以直接向出口PP 24E发送采样分组38。在任何情况下,可以基于第一和第二时间戳来计算分组从源分组处理器流向目的地分组处理器的实际分组到达时间。例如,路径模块26 可以计算第一时间戳与第二时间戳之间的差值(即,从第二时间戳中减去第一时间戳)。时间戳的差值可以表示分组在初始路径上行进(例如,从源PP 24A行进到目的地PP 24D)的实际分组到达时间。基于实际分组到达时间,路径模块26可以计算缓存时长以控制出口PP 24E在传输缓存分组之前缓存从新路径接收的分组的时间。路径模块26可以向出口PP 24E 发送缓存时长和第二散列值。在一些示例中,路径模块26可以针对同一出口转发部件优化跨流的超时,从而导致更好的缩放。在一些示例中,路径模块26可以包括遥测服务器(telemetry server),该遥测服务器接收统计数据并且执行附加功能,诸如监视流量流和老化移出流量流。虽然路径模块26被说明为在网络装置12内,但是路径模块26可以在网络装置12 的外部。
出口PP 24E可以接收第二散列值和缓存时长。在一些示例中,当确定转发路径改变时并且在路径模块26将改变传播到源PP 24A之前,出口 PP 24E可以将从路径模块26接收的第二散列值存储在其转发信息中。在结构路径改变之后,出口FC 24E可以从交换结构或直接通过抽象结构接口接收分组,并且确定是在初始路径上还是在新路径上转发的分组。对于直接从其抽象结构接口接收的分组,出口PP 24E在一些示例中可以在其存储的转发信息中执行查找以确定所接收的分组的散列值是否与存储的散列值(例如,第二散列值)匹配。
如果查找成功,则出口PP 24E可以确定是在新路径上转发的分组(即,直接从源PP24A接收分组)。响应于确定在新路径上转发的分组,出口 PP 24E缓存所接收的分组并且启动从路径模块26接收的缓存时长的定时器。当已经经过缓存时长时,出口PP 24E可以释放缓存的分组并且将其传输到IP/MPLS核心网络16。
替代地,或另外,如果查找失败,即,在转发信息查找表中没有用于散列值的匹配条目,或者从交换结构而不是直接通过AF接口接收的分组,则出口PP 24E可以确定所接收的分组在初始路径上转发的(例如,由结构跳跃从PP 24D接收)。替代地,出口PP 24E可以通过确定已经从交换结构而不是直接通过抽象结构接口接收到分组来确定出从初始分组路径接收到的分组。
出口PP 24E可以向IP/MPLS核心网络16传输被确定为在初始路径上转发的分组。即,出口PP 24E向IP/MPLS核心网络16转发从初始路径接收的分组,而出口PP 24E缓存从新路径接收的分组直到缓存时长结束为止。
在一些示例中,出口PP 24E可以在缓存时长完成时按缓存该多个分组的顺序向IP/MPLS核心网络16传输缓存器中的该多个分组。在其它示例中,当已经经过缓存时长时,出口PP 24E可以释放缓存的分组并且按分组的序列号的顺序向IP/MPLS核心网络16传输分组。
以此方式,出口PP 24E可以延迟在新路径上接收的分组传输到 IP/MPLS核心网络16达在初始路径上流动的分组被传输的时间。这确保了如果在特定流的优化路径上存在任何飞行中的分组,则在对该特定流清空缓存器之后,这些分组被传输到IP/MPLS核心网络,由此解决了在目的地分组处理器处进行分组重新排序的问题。即,在超时之后针对流接收的所有分组被重新排序在缓存的分组之后。
图2是说明根据本公开的技术的示例性网络装置212的框图,该网络装置提供分组的缓存直到在管线中的初始路径上转发的分组的可变时长通过为止。例如,网络装置212可以表示图1的网络装置12。网络装置 212可以包括多个虚拟节点,其充当例如虚拟供应商边缘或虚拟客户边缘路由器、虚拟自主系统边界路由器(ASBR)、虚拟区域边界路由器(ABR)或诸如虚拟交换机等其他类型的网络装置。
在该示例中,网络装置212包括为网络装置212提供控制平面功能的控制单元218。控制单元218可以分布在多个实体(诸如一个或多个路由单元和可插入网络装置212中的一个或多个服务卡)之间。在这样的情况中,网络装置212因此可以具有多个控制平面。在一些示例中,网络装置 212的每个虚拟路由节点可以具有其自己的虚拟控制平面,例如图1的vCP 25。
控制单元218可以包括路由部件220,其提供控制平面功能,以路由表的形式存储网络拓扑,执行路由协议以与对等路由装置进行通信,以及维护和更新路由表。路由部件220还提供允许用户接入的接口和网络装置 212的配置。
网络装置212还包括示例性转发单元224A到224N(“转发单元224”) 的形式的多个转发单元以及交换结构228,它们一起提供用于转发和以其它方式处理用户流量的转发平面。转发单元224可以是例如图1的vPE 20 和vP 18A、18B中的任一个。
控制单元218通过内部通信链路230连接到每个转发单元224。例如,内部通信链路230可以包括100Mbps或1Gbps以太网连接。路由部件220 可以执行守护进程(未示出)(例如可以运行网络管理软件的用户级进程) 以执行路由协议与对等路由装置进行通信,执行从管理员接收的配置命令,维护和更新一个或多个路由表,管理用户流处理和/或创建一个或多个转发表以便安装到转发单元224,以及其它功能。
控制单元218可以包括一个或多个处理器(图2中未示出),其执行存储到计算机可读存储介质(同样图2中未示出)的软件指令(诸如用于定义软件或计算机程序的软件指令),介质包括诸如非暂时性计算机可读介质,包括存储装置(例如,磁盘驱动器或光盘驱动器),和/或诸如随机存取存储器(RAM)(包括各种形式的动态RAM(DRAM),例如DDR2 SDRAM,或静态RAM(SRAM))、闪存等存储器、其他形式的固定或可移动存储介质,其可以用于携带或存储以指令或数据形式的期望的程序代码和程序数据并且可以由处理器访问,或者存储使一个或多个处理器执行本文所述技术的指令的任何其它类型的易失性或非易失性存储器。替代地或另外,控制单元218可以包括专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用特定处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)或用于执行本文描述的技术的专用硬件的一个或多个前述示例的任何组合。
转发单元224经由接口卡222A到222N(“IFC 222”)的接口接收和发送数据分组,每个接口卡与相应的一个转发单元224相关联。每一个转发单元224以及其相关IFC 222可以常驻在用于网络装置212的单独的线卡(未示出)上。示例性线卡包括柔性可编程集成电路(PIC)集中器(FPC)、密集端口集中器(DPC)以及模块化端口集中器(MPC)。每一个IFC 222可以包括用于第二层(L2)技术的各种组合的接口,包括以太网、千兆以太网(GigE)以及同步光网络(SONET)接口。在各个方面,每个转发单元224可以包括更多或更少的IFC。交换结构228提供高速互连以用于向所选择的一个转发单元224转发输入数据分组以便通过网络输出。交换结构228可以包括多个结构链路(未示出),诸如图1的结构链路33。
在一些示例中,交换结构228可以是分布式多级交换结构架构,其中网络分组遍历交换结构的位于路由器的分布式转发部件中的多个级以从交换结构的入口点行进到交换结构的出口点。作为一个示例,交换结构228 可以被实施为单个多级Clos交换结构,其中跨交换结构的各级来中继通信。典型的多级Clos交换结构具有互连的多个交换机(switch,开关)以形成多个级。在典型的布置中,交换结构包括入口(或“第一”)级、一个或多个中间级以及出口(或“最终”)级,其中每一级具有一个或多个交换机(例如,交叉交换机(crossbarswitch)-通常更简单地称为“交叉交换机 (crossbar)”)。另外,交换结构可以被实施使得开关被布置为多个并行结构平面,每个并行结构平面通过多个级提供从入口端口到出口端口的独立转发,其中一个或多个级可以被视为备用结构平面。换句话说,每个并行结构平面可以被视为多级Clos交换结构的独立部分,其中每个平面提供交换冗余。
当分组遍历网络装置212的内部架构时,转发单元224通过在各个内部分组处理路径上对每个分组执行一系列操作来处理分组。例如,可以通过对应的入口接口、入口转发单元224、出口转发单元224、出口接口或分组先前所指向的网络装置212的其它部件(诸如一个或多个服务卡)中的任一个对每个分组执行操作。分组处理的结果确定分组被转发单元224 从其一个IFC 222上的输入接口转发或以其它方式处理到其一个IFC 222 上的输出接口的方式。
为了举例说明,假设转发单元224A、224B和224N可以包括分别与图1的PP 24A、24D和24E相关联的分组处理器(未示出)。在该示例中,目的地转发单元224N是新路径的新目的地转发单元,而目的地转发单元 224B是初始路径的初始目的地转发单元。还假设转发单元224N是用于将数据传输到IP/MPLS核心网络的出口转发单元。转发单元224A可以最初在初始路径上向转发单元224B转发输入流量,该转发单元224B进而在下一结构跳跃上向出口转发单元224N转发分组。为了改进(例如,优化) 转发路径,控制单元218可以触发分组路径的改变,使得转发单元224A 直接向目的地转发单元224N转发输入分组。在图2的示例中,路由部件 220可以包括路径模块226,其用于接收散列值和时间戳并且用于向目的地转发单元224N发送目的地转发单元224N缓存新路径上所转发的分组所持续的缓存时长。
例如,转发单元224可以各自包括用于配置包括散列值和时间戳值的采样分组的采样模块。在图2的示例中,转发单元224A包括采样模块 232A,并且转发单元224B包括采样模块232B。例如,在结构路径改变之前,源转发单元224A在一些情况中可以执行散列算法以选择目的地转发单元,例如转发单元224B。采样模块232A可以生成包括与在初始路径上的转发单元224B相关联的第一散列值的采样分组。采样模块232A可以另外或替代地生成包括第一时间戳值的采样分组,该第一时间戳值指示源转发单元224A生成采样分组的时间。源转发单元224A可以经由交换结构228向转发单元224B发送采样分组。
转发单元224B接收采样分组,并且采样模块232B可以向采样分组添加第二散列值和第二时间戳值。例如,转发单元224B可以执行散列算法以选择出口转发单元,例如转发单元224E。采样模块232B可以向采样分组添加与转发单元224E相关联的第二散列值,其表示识别重新排序的分组流。采样模块232B可以另外或替代地向采样分组添加第二时间戳值,该第二时间戳值指示目的地转发单元224B接收采样分组的时间。转发单元224B可以向路径模块226发送具有散列值和时间戳值的采样分组。
路径模块226可以基于行进时间信息来确定实际分组到达时间。这可以表示缓存分组的持续时间。例如,为了确定使分组从源转发单元224A 内部流向出口转发单元224N的实际分组到达时间,路径模块226可以从第二时间戳值中减去第一时间戳值。在一些示例中,路径模块226可以向实际分组时间添加公差值以计算超时值,该超时值提供缓存在新路径上转发的分组的缓存时长。
路径模块226可以向转发单元224N发送第二散列值,在这种情况下,该第二散列值将转发单元224N识别为出口转发单元。路径模块226还可以向出口转发单元224N发送缓存时长以控制缓存时间。
在转发路径的改变传播到转发单元224A之前,目的地转发单元224N 可以将第二散列值存储在散列查找表(例如,图3的散列LU表380)中。在图2的示例中,转发单元224N包括缓存模块227,其控制用于在缓存器234中缓存新路径上转发的输入分组的缓存时长。
作为一个示例,源转发单元224A可以在初始路径上向初始目的地转发单元224B发送一个或多个初始分组。当分组在管线(传递路径)中时,控制单元218可以触发新路径,使得转发单元224A直接向目的地转发单元224N转发输入分组。
在向IP/MPLS核心网络传输分组之前,源转发单元224A可以在新路径上直接向目的地转发单元224N发送一个或多个后续分组。转发单元 224N可以在其抽象结构接口上(经由交换结构228)直接从源转发单元 224A接收后续分组。转发单元224N可以执行散列信息的查找,并且基于转发信息中的第二散列值的查找来确定后续分组是在新路径上被转发的。缓存模块227可以指示转发单元224N将后续分组存储在缓存器234中并且启动计时器达由缓存模块227定义的缓存时长。在一些示例中,缓存模块227可以指示转发单元224N基于先进先出(“FIFO”)方法来缓存分组。
当后续分组被缓存时,转发单元224N可以通过交换结构228从转发单元224B接收初始分组。转发单元224N可以执行其散列查找表的查找,并且基于散列查找表中的第二散列值的查找失败,或者基于检测到从交换结构接收的分组不直接通过抽象结构接口,确定初始分组在初始路径上转发的。例如,转发单元224N可以从交换结构而不是直接通过抽象结构接口接收初始分组。在该示例中,因为转发单元224B已经通过其入口接口处理了分组,所以转发单元224N在接收到初始分组时不执行散列表查找并将且向IP/MPLS核心网络传输该分组。在另一个示例中,转发单元224N 在一些情况中可以直接通过抽象结构接口接收分组,执行其散列查找表的查找,并且确定查找失败。然后,转发单元224N可以继续经由一个IFC 222 向IP/MPLS核心网络传输初始分组。
响应于已经经过缓存时长,缓存模块227可以在缓存器234中释放后续分组,使得转发单元224N可以传输后续分组。例如,响应于确定定时器已到期,转发单元224N的缓存模块227可以触发缓存器234的释放并且禁用任何进一步的缓存。然后,转发单元224N可以经由一个IFC 222 向IP/MPLS核心网络传输后续分组。
在一些示例中,缓存器234可以按顺序存储在新路径上转发的后续分组,使得当定时器到期时,缓存模块227可以指示转发单元224N基于缓存分组的序列号顺序释放缓存器234中的分组。例如,缓存模块227可以为每个缓存的分组分配相应的序列号。当定时器到期时,转发单元224N 按分组的序列号的顺序释放缓存器。以此方式,以分组被缓存的顺序传输该分组。
图3是更详细地说明图2的转发单元224的路由部件318和转发单元 324(“转发单元324”)的示例性情况的框图。任一个转发单元324可以是关于一个分组流的入口转发单元和关于另一个分组流的出口转发单元。虽然转发单元324被说明为包括用于入口转发单元和出口转发单元的模块,但是转发单元324可以包括图3中所示的更多或更少的模块。
在该示例中,路由部件318提供控制平面302操作环境以用于执行在用户空间306中执行的各种用户级守护进程314。守护进程314是用户级进程,其可以运行网络管理软件,执行路由协议以与对等路由装置进行通信,执行从管理员接收的配置命令,维护和更新一个或多个路由表,管理用户流处理,和/或创建一个或多个转发表以便安装到转发单元324,以及其它功能。在该示例中,守护进程314包括命令行接口守护进程332(“CLI 332”)、路由协议守护进程334(“RPD 334”)以及简单网络管理协议守护进程336(“SNMP 336”)。在这方面,控制平面302可以为网络装置路由器212提供路由平面、服务平面以及管理平面功能。路由部件318的各种情况可以包括图3中未示出的附加守护进程314,其执行其它控制、管理或服务平面功能和/或驱动和以其它方式管理网络装置212的转发平面功能。
守护进程314在内核343上操作并与内核343交互,该内核为用户级进程提供运行时操作环境。内核343可以包括例如UNIX操作系统衍生物,诸如Linux或Berkeley SoftwareDistribution(BSD)。内核343提供了守护进程314可以与底层系统交互的库和驱动程序。内核343的转发单元接口 316(“FU接口316”)包括内核级库,守护进程314和其它用户级进程或用户级库可以通过该FU接口与转发单元324A的编程接口364交互。FU 接口316可以包括例如用于通过专用网络链路与转发单元324A进行通信的套接字库(sockets library)。
路由部件318的硬件环境350包括微处理器352,其执行从存储装置 (未在图3中示出)加载到主存储器(图3中也未示出)中的程序指令,以便执行路由部件318的包括内核343和用户空间306的软件堆栈。微处理器352可以包括一个或多个通用或专用处理器,诸如数字信号处理器 (DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其它等效逻辑装置。因此,如本文所使用的术语“处理器”或“控制器”可以指代任何一种或多种前述结构或者可操作以执行本文描述的技术的任何其它结构。
RPD 334执行一个或多个内部和/或外部路由协议以与其它网络装置交换路由信息,并且将接收的路由信息存储在路由信息库345(“RIB 345”) 中。例如,RPD 334可以执行诸如包括内部BGP(iBGP)、外部BGP(eBGP)、多协议BGP(MP-BGP)的边界网关协议(BGP)、标签分发协议(LDP) 以及具有流量工程扩展的资源预留协议(RSVP-TE)中的一个或多个等的协议。RPD 334可以另外或替代地执行用户数据报协议(UDP)以发送和接收各种系统资源(诸如物理接口)的数据。例如,RPD 334可以使用 UDP来发送和接收来自路径模块346的数据。虽然用UDP说明,但是RPD 334可以执行任何协议以与路径模块346交换系统资源的数据。
RIB 345可以包括定义网络拓扑的信息,其包括一个或多个路由表和/ 或链路状态数据库。RPD 334解析由RIB 345中的路由信息定义的拓扑以选择或确定一个或多个通过网络的有效路由,然后将这些路由安装到转发信息库328。通常,RPD 334以根基或其它查找树的形式生成FIB 328以将分组信息(例如,具有目的地信息和/或标签栈的报头信息)映射到下一跳跃并且最终映射到与相应的转发单元324相关联的接口卡的接口端口。内核343可以将路由部件318的FIB 328与转发单元324A的转发信息同步。
命令行接口守护进程332(“CLI 332”)提供外壳(shell),通过该外壳,管理员或其它管理实体可以使用基于文本的命令来修改网络装置212 的配置。SNMP 336包括SNMP代理,其从管理实体接收SNMP命令以设定和检索网络装置212的配置和管理信息。例如,使用CLI 332和SNMP 336,管理实体可以(例如)启用/禁用和配置服务,管理分组流的分类和服务类别,安装路由,启用/禁用和配置限速器,为移动网络配置流量承载,以及配置接口。在该示例中,RPD 334、CLI 332以及SNMP 336经由FU接口316配置转发平面304以实施配置的服务,和/或添加/修改/删除路由。 FU接口316允许守护进程314驱动转发单元324A的分组处理路径372 的安装和配置。具体地,FU接口316包括应用程序编程接口(API),守护进程314可以通过该应用程序编程接口将分组流映射到结构接口以进行转发。
转发单元324A与网络装置212的其它转发单元324一起实施转发平面304(也称为“数据平面”)功能,以处理从在上面接收分组的入口接口到在上面发送分组的出口接口的分组处理。转发平面304使用由控制平面 302安装到转发平面304的服务对象和查找数据来确定通过网络装置212 的数据分组转发、应用服务、对分组流限速、过滤分组以及以其它方式处理分组。虽然图3仅详细说明了转发单元324N,但是网络装置212的每个转发单元324包括执行大致上类似功能的类似模块。
转发单元324可以包括一个或多个分组处理器368。分组处理器368 可以包括例如基于专用集成电路的分组处理器(“ASIC”)或者根据本文描述的技术执行转发路径372的任何分组转发引擎。分组处理器368包括一个或多个可编程专用集成电路,其具有密钥引擎370,该密钥引擎执行微代码(或“微指令”)以控制和应用分组处理器368的固定硬件部件来处理分组“密钥”。分组密钥包括分组字段以及确定沿着处理路径(诸如路径 373)的分组的分组处理流的其它参数。密钥引擎370包括密钥缓存器363 以存储密钥引擎当前正在处理的对应分组的分组字段数据。密钥缓存器 363还可以提供处理路径的元件可以写入的有限的可写内存,以传递未来元件可访问的消息。分组处理器368的一些情况可以包括多个密钥引擎,每个密钥引擎具有相关密钥缓存器。
分组处理器368的转发路径372包括可编程的、可执行的微代码和固定硬件部件,其确定分组处理动作和由密钥引擎370执行的其它操作。转发单元324A可以将转发路径372的可执行指令存储在计算机可读存储介质中,诸如静态随机存取存储器(SRAM)。虽然在分组处理器368内示出,但是在一些示例中,转发路径372的可执行指令可以存储在转发单元324A中的分组处理器368外部的存储器中。
在一些方面中,转发路径372包括初始处理的下一跳跃数据结构。在密钥引擎370的每个处理步骤结束时,结果是例如可以指定附加处理或处理终止的下一跳跃。另外,下一跳跃可以指定要由密钥引擎370和/或要应用的一个或多个硬件元件(例如,流量监管器)执行的一个或多个功能。
逻辑接口371(“IFL 371”)是包括一个或多个逻辑接口的表或其它数据结构。每一个IFL 371是通向路径373的转发路径的接口。路径373表示用于由密钥引擎370在密钥缓存器363上执行的一个或多个转发路径。
转发单元微处理器360(“FU微处理器360”)管理分组处理器368并且执行编程接口364以提供用于/通向路由部件318的接口。编程接口364 可以包括一个或多个用户或内核级库、程序、工具包、应用程序编程接口 (API),并且可以经由内部通信链路(例如,图2中的通信链路230)例如使用套接字将控制和数据消息传送到转发单元324。FU微处理器360 可以执行微内核362以提供用于接口的操作环境。编程接口364从路由部件318接收引导分组转发部件324A配置逻辑接口371的消息。
在一些示例中,路由部件318可以确定下一跳跃的位置以提供避免不必要的结构跳跃的结构接口下一跳跃(称为最佳结构路径(OFP)接口)。为了执行OFP技术,路由部件318动态地计算下一跳跃,并且例如通过发送具有OFP属性的BGP消息向RPD 334提供下一跳跃以便通告。通告下一跳跃,并且接收vNode在RIB 345中重写下一跳跃以启用OFP。
在一些示例中,路径模块346可以从初始目的地转发单元(例如,转发单元324B)接收结构路径信息。路径模块346可以向源转发单元324A 发送结构路径信息,使得源转发单元324A可以将结构路径信息存储在转发信息(图3中未示出)中。源转发单元324A还可以将IFL 371的输出接口标记为朝向出口转发单元324N。以此方式,当源转发单元324A执行下一输入分组的查找时,源转发单元324A可以确定通向出口转发单元 324N的结构路径是已知的,对于该结构路径,转发单元324A可以经由标记的IFL 371的接口向通向出口转发单元324N的下一跳跃输出该分组。
在操作中,源转发单元(例如,源转发单元324A)可以通过该结构向目的地转发单元(例如,目的地转发单元324N)发送初始分组以最终传输到网络。例如,源转发单元324A可以在初始路径上向初始目的地转发单元(例如,转发单元324B)发送初始分组,该初始目的地转发单元进而在下一结构跳跃上向出口转发单元324N转发分组。当初始分组在管线中(即,未传输到网络)时,结构路径被改变为通向出口转发单元324N 的新路径,使得源转发单元324A直接在新路径上向出口转发单元324N 转发后续分组。
在图3的示例中,转发单元324可以各自包括采样模块376,其由入口转发单元或出口转发单元在分组流中用于配置包括散列值和/或时间戳值的采样分组。作为一个示例,源转发单元324A的采样模块376可以配置包括第一散列值和第一时间戳值的采样分组。例如,在结构路径改变之前,源转发单元324A在一些情况中可以执行散列算法以对分组选择目的地转发单元,例如转发单元324B。源转发单元324A的采样模块376可以生成采样分组以包括与初始路径上的初始目的地转发单元324B相关联的第一散列值以及第一时间戳值。例如,源转发单元324A可以生成具有从源转发单元324A接收的当前数据分组中复制的路由信息(例如,分组报头信息)的采样分组,使得采样分组可以与当前分组在相同的初始路径上发送。源转发单元324A可以在初始路径上向转发单元324B发送采样分组。转发单元324B接收采样分组,并且转发单元324B的采样模块376 可以添加第二散列值和第二时间戳值。转发单元324B可以经由编程接口 364向路径模块346发送具有散列值和时间戳值的采样分组。
路径模块346可以基于第一和第二时间戳来确定实际分组到达时间。例如,为了确定使分组从源转发单元324A内部流向出口转发单元324N 的实际分组到达时间,路径模块346可以从第二时间戳值中减去第一时间戳值。基于实际分组到达时间,在一些示例中,路径模块346可以向实际分组时间添加公差值以计算缓存时长,该缓存时长提供分组被缓存的时间。虽然被示出为包括在路由部件318中,但是在一些示例中,路径模块 346可以在网络装置外部。
路径模块346可以向转发单元324N发送第二散列值,在这种情况下,该第二散列值将转发单元324N识别为用于新路径的出口转发单元。例如,分组处理器368可以包括用于存储第二散列值的散列查找表380(“散列 LU表380”)。在一些示例中,路径模块346可以在转发路径372中安装包括第二散列值的散列查找表380。在一些示例中,缓存模块347可以安装散列查找表380,并且路径模块346可以将第二散列值安装在散列查找表 380中。
在出口转发单元324N处的第二散列值唯一地识别需要重新排序的分组流。在一些示例中,第二散列值由路径模块346安装在散列查找表380 中,并且仅针对包括与散列查找表380中的第二散列值匹配的散列的流启用缓存决策。路径模块346还可以经由FU接口316向出口转发单元324N 发送缓存时长,使得出口转发单元324N可以在缓存器374中缓存新路径上转发的分组流中的输入分组达如下所述的缓存时长。
在一些示例中,出口转发单元324N可以在向网络传输初始分组之前接收后续分组。响应于从源转发单元324A接收到后续分组,分组处理器 368可以确定后续分组是在初始路径还是新路径上转发的分组。例如,分组处理器368可以执行散列查找表380(“散列LU表380”)的查找,以确定后续分组是否与散列LU表380中的散列值(例如,第二散列值)匹配。响应于成功查找(指示后续分组是在新路径上被转发的),缓存模块347 可以指示转发单元324N将后续分组存储在缓存器374中并且启动与分组流相关联的定时器。
当后续分组被缓存时,出口转发单元324N可以通过交换结构从转发单元324B接收初始分组。出口转发单元324N的转发路径372可以确定分组没有直接通过抽象结构接口到达,并且可以经由出口接口向IP/MPLS 核心网络传输该分组。替代地,出口转发单元324N可以直接通过抽象结构接口接收初始分组。在该示例中,出口转发单元324N可以执行散列查找表380的查找,并且基于散列查找表380中的第二散列值的失败查找来确定初始分组是在初始路径上转发的。例如,分组处理器368可以确定所接收的分组的散列值与散列查找表380中的任何存储值不匹配。然后,转发单元324N的分组处理器368可以经由出口接口向IP/MPLS核心网络传输分组。例如,转发路径372可以执行IFL 371的查找以确定定义用于该分组的路径373中的对应转发路径的逻辑接口。
响应于分组流经过了缓存时长(即,定时器到期),缓存模块347可以指示转发单元324N释放与分组流相关联的缓存器374中的分组并且禁用对缓存器374的分组流中的分组的任何进一步缓存。然后,转发单元 324N的分组处理器368可以经由出口接口向IP/MPLS核心网络传输缓存的分组。例如,转发路径372可以执行IFL 371的查找以确定定义路径373中的用于该分组的对应转发路径的逻辑接口。
在一些示例中,缓存模块347可以基于序列号的顺序在缓存器374中存储和释放分组。例如,缓存模块347可以确定所接收的分组的序列号,并且基于每个分组的序列号来存储所接收的分组。当计时器到期时,缓存模块347在一个示例中可以按分组序列号的顺序释放缓存的分组,并且按分组序列号的顺序向IP/MPLS核心网络传输分组。在其它示例中,缓存模块347可以在缓存时长完成时按照缓存器中缓存多个分组的顺序向 IP/MPLS核心网络传输该多个分组。
图4是更详细地说明根据本公开中描述的技术而配置的图3的分组处理器368的示例性转发路径372的框图。在该示例中,分组处理器368可以经由分组处理器368的入口接口接收分组410A、410B(“分组410”)。假设例如分组410A在新路径上从源转发单元324A被转发到出口转发单元324N。还假设分组410A、410B可以与不同的分组流相关联,并且因此可以具有不同的5元组值(源IP地址、目的地IP地址、源端口、目的地端口以及协议)。
在一个示例中,分组处理器368可以接收分组410A,(例如,基于分组的5元组和与虚拟节点相关联的随机种子)确定分组410A的散列值,并且执行散列查找表380的查找以确定散列值是否与散列查找表380中的任何存储的散列值(例如,从路径模块接收的第二散列值)匹配。如上所述,第二散列值安装在转发路径372中的散列查找表380中。
响应于确定散列值与存储的散列条目402A的散列值匹配,将分组 410A在所选择的一个缓存器374中缓存达缓存时长。缓存模块347可以发起与分组流相关联的定时器403用于控制分组410A被缓存的时间。在一些示例中,缓存模块347可以基于散列值从均与不同的分组流相关联的多个缓存器和定时器中选择用于分组流的一个缓存器374和定时器403。例如,不同的分组流(未示出)可以与和散列查找表380中的不同条目402B 匹配的散列值相关联,该不同条目可以与不同的缓存器374相关联并且具有不同的定时器403,该不同的定时器对于该分组流具有不同的相关时长。这提供了基于采样分组的“滑动窗口”的缓存,并且为每个流设定延迟。
分组处理器368还可以接收分组410B,确定分组410B的散列值,并且在散列查找表380中执行散列值的查找以确定分组410B的散列值是否与散列查找表380中的存储的散列值匹配。响应于确定分组410B的散列值与散列查找表380中的任何存储值不匹配(“失败”查找),分组处理器 368允许分组410B沿着转发路径372继续而不缓存分组,从而最终向 IP/MPLS核心网络发送分组410B。例如,分组处理器368可以通过抽象结构接口接收分组410B。分组410B可以具有不同的5元组分组,因此具有与存储在散列查找表380中的散列值不同的散列值。分组处理器368确定分组410B的散列值与散列查找表380中的任何存储值不匹配,并且向 IP/MPLS核心网络转发分组410B。
来自IFL 371的逻辑接口404A、404B(“逻辑入站接口404”)中的每一个可以表示定义用于分组的转发路径的逻辑2层或3层接口。分组处理器368可以执行IFL 371的查找以确定路径373中为分组410B定义路径的逻辑接口,并且经由出口接口406向IP/MPLS核心网络传输分组410B。
响应于已经经过缓存时长(即,定时器到期),缓存模块347指示分组处理器368释放保持在缓存器374中的任何分组并且禁用缓存器374。在一些示例中,缓存模块347可以指示分组处理器368基于缓存的分组的序列号的顺序释放缓存器374中的分组。在该示例中,缓存模块347指示分组处理器368将缓存器中的第一分组标记为流的排头。这确保了对于特定流,如果在优化/新路径上存在飞行中的任何分组,则在针对该特定流清空缓存器之后,向通向IP/MPLS核心网络的出口接口406转发这些分组。
然后,分组处理器368开始向IP/MPLS核心网络传输分组410A的进程。例如,来自IFL 371的逻辑接口404A、404B(“逻辑入站接口404”) 中的每一个可以表示定义用于分组的转发路径的逻辑2层或3层接口。分组处理器368可以执行IFL 371的查找以确定在路径373中定义分组410A 的路径的逻辑接口,并且经由出口接口406向IP/MPLS核心网络传输分组 410A。
图5是说明根据本公开的一个或多个方面的用于生成采样分组的示例性操作的流程图。将出于示例的目的关于图1到图3描述图5。
虚拟路由节点可以生成一个或多个采样分组,其包括一个或多个散列值和/或指示分组在虚拟路由节点处的时间的一个或多个时间戳。例如,源 vPE 20可以向目的地虚拟路由节点(例如,vP 18A)发送一个或多个采样分组(502)。一个或多个采样分组可以包括给定分组流的与第一路径相关联的第一散列值。一个或多个采样分组可以另外或替代地包括第一时间戳,该第一时间戳指示分组流从源转发部件(例如,FC 24A)流向初始目的地转发部件(例如,FC 24D)的开始时间。
目的地vP 18B可以接收采样分组(504)并且可以向采样分组添加相同分组流的与第二分组路径相关联的第二散列值(506)。目的地vP 18B 可以另外或替代地向个或多个采样分组添加第二时间戳。例如,第二时间戳可以指示分组流从源转发部件(例如,FC 24A)流向初始目的地转发部件(例如,FC 24D)的结束时间。目的地vP 18B可以向路径模块26发送用于分组流的包括第一和第二散列值和/或第一和第二时间戳的一个或多个采样分组(508)。
路径模块26可以接收包括第一和第二散列值以及第一和第二时间戳的采样分组(510)。在一些示例中,第一散列值识别(例如,通向FC 24D 的)初始非优化路径,并且由路径模块26用以触发内部转发路径的改变。例如,入口vPE 20可能需要第一散列值来确定哪个流将经历其目的地路径变化。
在一些示例中,路径模块26可以基于第一和第二时间戳来计算缓存时长(512)。例如,路径模块26可以计算第一时间戳与第二时间戳之间的差值。第一时间戳和第二时间戳的差值表示分组从源转发部件行进到初始目的地转发部件所花费的时间。
路径模块26可以向出口转发单元(例如,FU 24E)发送用于分组流的缓存时长和第二散列值(514)。例如,路径模块27可以在转发路径的变化传播到源vPE 20之前发送缓存时长和第二散列值。
出口转发单元24E可以从路径模块26接收包括缓存时长和第二散列值的信息(516)。响应于从路径模块26接收到缓存时长和第二散列值,出口转发单元24E可以对其转发平面进行编程以向转发路径查找元素(例如,图3的散列LU表380)添加第二散列值,并且可以设定与在一个或多个接收的分组中指定的流相关联的缓存时长(518)。以此方式,出口转发单元24E可以确定是在初始路径(例如,第一路径)上还是在新路径(例如,第二路径)上转发的分组流的一个或多个接收分组,并且缓存在新路径上转发的一个或多个分组达缓存时长,如下面在图6中进一步描述的。
图6是说明根据本公开的一个或多个方面的网络装置的示例性操作的流程图。将出于示例的目的关于图1到图3(诸如从vP 18B的角度)描述图6。
目的地vP 18B可以接收一个或多个分组(602)。例如,目的地vP 18B 的出口转发部件24E可以从交换结构或直接通过抽象结构接口接收一个或多个分组。目的地vP 18B可以确定是在第一路径(例如,初始路径) 上还是在第二路径(例如,新路径)上转发的一个或多个分组(604)。如本文所述,对于直接通过抽象结构接口接收的分组,目的地vP 18B可以在目的地vP 18B的散列查找表380中执行由一个或多个分组中的至少一个携带的散列值的查找,并且基于该查找来确定:如果散列值在散列查找表380中没有对应条目则一个或多个分组是(i)在第一路径上转发的,或者如果散列值在散列查找表380中具有对应的条目则一个或多个分组是 (ii)在第二路径上转发的。在一些示例中,对于从交换结构接收的分组,目的地vP 18B可以通过确定是否已经从交换结构而不是直接通过抽象结构接口接收到一个或多个分组来确定是否从第一路径接收到分组。在一些示例中,目的地vP 18B的转发平面中的分组处理器在分组处理的入口侧进行查找。
响应于成功匹配(604的“是”分支),即,目的地vP 18B确定在第二路径上转发的一个或多个分组,目的地vP 18B可以缓存一个或多个分组持续缓存时长(606)。在一些示例中,目的地vP 18B可以按一个或多个分组中的每一个的序列号的顺序缓存一个或多个分组。
响应于目的地vP 18B确定已经经过缓存时长(608的“是”分支),目的地vP 18B在目的地虚拟路由节点的出口接口上传输缓存的一个或多个分组(610)。例如,响应于确定定时器已到期,目的地vP 18B的分组处理器的缓存模块347指示分组处理器368释放保持在缓存器中的任何分组并且禁用任何进一步的缓存。然后,目的地vP 18B可以在目的地vP 18B的出口接口上传输缓存的一个或多个分组。例如,出口转发部件24E在广域网(WAN)接口上传输一个或多个分组。替代地,如果目的地vP 18B 确定尚未经过缓存时长(608的“否”分支),则目的地vP 18B不传输分组,而是会继续缓存一个或多个分组。
响应匹配失败(604的“否”分支),即,在分组的报头中携带的散列值的查找与存储的散列值不匹配,或者从交换结构但不是直接通过抽象结构接口接收到分组,目的地vP18B可以传输在第一分组路径上转发的一个或多个分组而没有缓存该一个或多个分组(610)。
本文描述的技术可以在硬件、软件、固件或者它们的任何组合中实施。被描述为模块、单元或部件的各种特征可以在集成逻辑装置中一起实施,或者作为离散但可互操作的逻辑装置或其它硬件装置单独实施。在一些情况下,电子电路的各种特征可以被实施为一个或多个集成电路装置,诸如集成电路芯片或芯片组。
如果以硬件实施,则本公开可以涉及诸如处理器或集成电路装置(诸如集成电路芯片或芯片组)的设备。替代地或另外地,如果以软件或固件实施,则该技术可以至少部分地由包括指令的计算机可读数据存储介质来实现,该指令在被执行时使处理器执行上述一种或多种方法。例如,计算机可读数据存储介质可以存储这样的指令以供处理器执行。
计算机可读介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁性或光学数据存储介质等。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以指存储介质不体现在载波或传播信号中。在某些示例中,非暂时性存储介质可以存储随时间变化的数据(例如,存储在RAM或高速缓存存储器中)。
代码或指令可以是由处理电路执行的软件和/或固件,该处理电路包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文所使用的术语“处理器”可以指代任何前述结构或者适合于实施本文描述的技术的任何其它结构。另外,在一些方面中,可以在软件模块或硬件模块内提供本公开中描述的功能。
作为上述的补充或替代,描述了以下示例。以下任何示例中描述的特征可以与本文描述的任何其它示例一起使用。
示例1.一种方法,其包括:由网络装置的目的地虚拟路由节点接收一个或多个分组,所述网络装置具有多个分组处理器和交换结构,所述交换结构包括在所述多个分组处理器的相应结构接口处耦接所述多个分组处理器的相应对的多个结构链路;由所述目的地虚拟路由节点确定是在通过所述交换结构的第一路径上还是在通过所述交换结构的第二路径上转发所述一个或多个分组;响应于确定在所述第二路径上转发所述一个或多个分组,由所述目的地虚拟路由节点缓存所述一个或多个分组达到缓存时长;以及响应于已经经过所述缓存时长,由所述目的地虚拟路由节点在所述目的地虚拟路由节点的出口接口上传输缓存的一个或多个分组。
示例2.根据示例1所述的方法,其进一步包括:响应于确定在所述第一分组路径上转发所述一个或多个分组,由所述目的地虚拟路由节点传输所述一个或多个分组而不经过缓存在所述第一分组路径上转发的所述一个或多个分组。
示例3.根据示例1所述的方法,其中在所述目的地虚拟路由节点的所述出口接口上传输所缓存的一个或多个分组包括在广域网(WAN)接口上传输所述一个或多个分组。
示例4.根据示例1所述的方法,其中确定在所述第一分组路径上还是在所述第二分组路径上转发所述一个或多个分组包括:
在所述目的地虚拟路由节点的转发信息中,执行对由所述一个或多个分组中的至少一个分组携带的散列值的查找;以及基于所述查找来如果所述散列值在所述转发信息中没有对应条目则确定(i)在所述第一路径上转发的所述一个或多个分组,或者(ii)如果所述散列值在所述转发信息中具有对应条目则确定所述第二路径上转发的所述一个或多个分组。
示例5.根据示例1所述的方法,其中确定在所述第一分组路径上是否转发所述一个或多个分组:确定是否已经从所述交换结构而不是直接通过抽象结构接口接收到所述一个或多个分组。
示例6.根据示例1所述的方法,其进一步包括:
由所述网络装置的源虚拟路由节点向所述目的地虚拟路由节点发送采样分组,其中所述采样分组包括与所述第一路径相关联的第一散列值;由所述目的地虚拟路由节点接收所述采样分组;以及由所述目的地虚拟路由节点向所述采样分组添加在所述目的地虚拟路由节点的转发信息中与所述第二分组路径相关联的第二散列值,其中确定在所述第一分组路径上还是在所述第二分组路径上转发所述一个或多个分组包括确定从所述一个或多个分组生成的第三散列值是否与存储在所述转发信息中的所述第二散列值匹配。
示例7.根据示例6所述的方法,其中发送所述采样分组进一步包括发送包括第一时间戳的所述采样分组,所述第一时间戳指示所述源虚拟路由节点生成所述采样分组的时间,其中添加所述第二散列值进一步包括添加第二时间戳,所述第二时间戳指示所述目的地虚拟路由节点接收所述采样分组的时间,并且其中基于所述第一时间戳和所述第二时间戳来确定所述缓存时长。
示例8.根据示例7所述的方法,其进一步包括:由所述目的地虚拟路由节点向缓存模块发送所述采样分组,用于基于所述第一时间戳和所述第二时间戳来计算所述缓存时长;由所述目的地虚拟路由节点从所述缓存模块接收所计算的缓存时长的指示和至少所述第二散列值;以及由所述目的地虚拟路由节点将所述第二散列值存储在所述目的地虚拟路由节点的所述转发信息中。
示例9.根据示例1所述的方法,其中缓存所述一个或多个分组包括按所述一个或多个分组中的每一个的序列号的顺序缓存所述一个或多个分组,并且其中传输所缓存的一个或多个分组包括按所述序列号的顺序在所述出口接口上传输所述缓存的一个或多个分组。
示例10.一种网络装置,其包括:多个分组处理器;多个结构链路,其在所述多个结构部件的相应结构接口处耦接多个分组处理器的相应对;多个虚拟路由节点中的虚拟路由节点,其中所述虚拟路由节点被配置为:接收一个或多个分组;确定是在通过所述交换结构的第一路径上还是在通过所述交换结构的第二路径上转发所述一个或多个分组;响应于确定在所述第二路径上转发所述一个或多个分组,缓存所述一个或多个分组达缓存时长;以及响应于已经经过所述缓存时长,在所述目的地虚拟路由节点的出口接口上传输缓存的一个或多个分组。
示例11.根据示例10所述的网络装置,其中所述虚拟路由节点进一步被配置为:响应于确定在所述第一分组路径上转发所述一个或多个分组,传输所述一个或多个分组而不缓存在所述第一分组路径上转发的所述一个或多个分组。
示例12.根据示例10所述的网络装置,其中为了在所述目的地虚拟路由节点的所述出口接口上传输所缓存的一个或多个分组,所述虚拟路由节点进一步被配置为:在广域网(WAN)接口上传输所述一个或多个分组。
示例13.根据示例10所述的网络装置,其中为了确定在所述第一分组路径上还是在所述第二分组路径上转发所述一个或多个分组,所述虚拟路由节点进一步被配置为:在所述目的地虚拟路由节点的转发信息中,执行对由所述一个或多个分组中的至少一个分组携带的散列值的查找;并且基于所述查找来确定(i)如果所述散列值在所述转发信息中没有对应条目则在所述第一路径上转发的所述一个或多个分组,或者(ii)如果所述散列值在所述转发信息中具有对应条目则所述第二路径上的转发所述一个或多个分组。
示例14.根据示例10所述的网络装置,其中为了确定在所述第一分组路径是否转发所述一个或多个分组,所述虚拟路由节点进一步被配置为:确定是否已经从所述交换结构而不是直接通过抽象结构接口接收到所述一个或多个分组。
示例15.根据示例10所述的网络装置,其中所述虚拟路由节点包括第一虚拟路由节点,并且其中所述多个虚拟路由节点中的第二虚拟路由节点被配置为向所述第一虚拟路由节点发送采样分组,其中所述采样分组包括与所述第一路径相关联的第一散列值,其中所述第一虚拟路由节点进一步被配置为:接收所述采样分组,并且向所述采样分组添加与所述第二分组路径相关联的第二散列值,其中为了确定在所述第一分组路径上还是在所述第二分组路径上转发所述一个或多个分组,所述第一虚拟路由节点进一步被配置为确定从所述一个或多个分组生成的第三散列值是否与存储在所述转发信息中的所述第二散列值匹配,或者所述一个或多个分组是否从所述交换结构而不是直接通过抽象结构接口进入。
示例16.根据示例15所述的网络装置,其中为了发送所述采样分组,所述第二虚拟路由节点进一步被配置为发送包括第一时间戳的所述采样分组,所述第一时间戳指示所述源虚拟路由节点生成所述采样分组的时间,其中为了添加所述第二散列值,所述第一虚拟路由节点进一步被配置为添加第二时间戳,所述第二时间戳指示所述目的地虚拟路由节点接收所述采样分组的时间,并且其中基于所述第一时间戳和所述第二时间戳来确定所述缓存时长。
示例17.根据示例16所述的网络装置,其中所述第一虚拟路由节点进一步被配置为:向缓存模块发送所述采样分组,用于基于所述第一时间戳和所述第二时间戳来计算所述缓存时长;从所述缓存模块接收所计算的缓存时长的指示和至少所述第二散列值;并且将所述第二散列值存储在所述目的地虚拟路由节点的所述转发信息中。
示例18.根据示例10所述的网络装置,其中为了缓存所述一个或多个分组,所述虚拟路由节点进一步被配置为按所述一个或多个分组中的每一个的序列号的顺序缓存所述一个或多个分组,并且其中为了传输所缓存的一个或多个分组,所述虚拟路由节点进一步被配置为按所述序列号的顺序在所述出口接口上传输所述缓存的一个或多个分组。
示例19.一种系统,其包括:多个分组处理器;多个结构链路,其在所述多个结构部件的相应结构接口处耦接所述多个分组处理器的相应对;路径模块,其用于计算缓存时长;多个虚拟路由节点中的源虚拟路由节点和目的地虚拟路由节点,其中所述目的地虚拟路由节点被配置为:接收一个或多个分组;基于所述转发信息来确定是在通过所述交换结构的所述第一路径上还是在通过所述交换结构的所述第二路径上转发所述一个或多个分组;响应于确定在所述第二路径上转发所述一个或多个分组,缓存所述一个或多个分组达缓存时长;以及响应于已经经过所述缓存时长,在所述目的地虚拟路由节点的出口接口上传输缓存的一个或多个分组。
示例20.根据示例19所述的系统,其中所述多个分组处理器、所述多个结构链路、所述源虚拟路由节点以及所述目的地虚拟路由节点位于网络装置中,并且其中所述路径模块在所述网络装置外部。
示例21.根据示例19所述的系统,其中所述源虚拟路由节点被配置为:向所述目的地虚拟路由节点发送包括与第一路径相关联的第一散列值以及第一时间戳的采样分组,所述第一时间戳指示由所述源虚拟路由节点生成所述采样分组的时间,其中所述目的地虚拟路由节点进一步被配置为:接收所述采样分组;向所述采样分组添加与第二分组路径相关联的第二散列值并且添加第二时间戳,所述第二时间戳指示所述目的地虚拟路由节点接收所述采样分组的时间;并且向所述路径模块发送所述采样分组,所述缓存模块用于基于所述第一时间戳和所述第二时间戳来计算所述缓存时长;从所述路径模块接收所计算的缓存时长的指示和至少所述第二散列值;将所述第二散列值存储在所述目的地虚拟路由节点的所述转发信息中;并且确定从所述一个或多个分组生成的第三散列值是否与存储在所述转发信息中的所述第二散列值匹配,或者确定是否从所述交换结构而不是直接通过抽象结构接口接收到所述一个或多个分组。
另外,可以将上述任何示例中阐述的任何特定特征组合成所描述技术的有益示例。即,任何特定特征通常适用于本公开的所有示例。已经描述了这些技术的各种示例。这些和其它示例在以下示例的范围内。

Claims (21)

1.一种方法,包括:
由具有多个分组处理器和交换结构的网络装置的目的地虚拟路由节点接收一个或多个分组,所述交换结构包括在所述多个分组处理器的各结构接口处将所述多个分组处理器的各对分组处理器进行耦接的多个结构链路;
由所述目的地虚拟路由节点确定所述一个或多个分组是在穿过所述交换结构的第一路径上还是在穿过所述交换结构的第二路径上转发的;
响应于确定所述一个或多个分组是在所述第二路径上转发的,由所述目的地虚拟路由节点将所述一个或多个分组缓存达到缓存时长,其中,基于第一时间戳和第二时间戳确定所述缓存时长,所述第一时间戳指示源虚拟路由节点转发所述一个或多个分组的时间,所述第二时间戳指示由所述目的地虚拟路由节点接收所述一个或多个分组的时间;以及
响应于已经经过所述缓存时长,由所述目的地虚拟路由节点在所述目的地虚拟路由节点的出口接口上发送所缓存的一个或多个分组。
2.根据权利要求1所述的方法,进一步包括:
响应于确定所述一个或多个分组是在所述第一路径上转发的,由所述目的地虚拟路由节点在没有缓存在所述第一路径上转发的所述一个或多个分组的情况下发送所述一个或多个分组。
3.根据权利要求1所述的方法,其中,在所述目的地虚拟路由节点的出口接口上发送所缓存的一个或多个分组包括:在广域网(WAN)接口上发送所述一个或多个分组。
4.根据权利要求1所述的方法,其中,确定所述一个或多个分组是在所述第一路径上还是在所述第二路径上转发的包括:
在所述目的地虚拟路由节点的转发信息中执行对由所述一个或多个分组中的至少一个分组携带的散列值的查找;以及
基于所述查找,(i)如果所述散列值在所述转发信息中没有对应条目,则确定所述一个或多个分组是在所述第一路径上转发的,或者(ii)如果所述散列值在所述转发信息中具有对应条目,则确定所述一个或多个分组是在所述第二路径上转发的。
5.根据权利要求1所述的方法,其中,确定所述一个或多个分组是否是在所述第一路径上转发的:
确定是否已从所述交换结构但不是直接经由抽象结构接口接收到所述一个或多个分组。
6.根据权利要求1到5中任一项所述的方法,进一步包括:
由所述网络装置的源虚拟路由节点向所述目的地虚拟路由节点发送采样分组,其中,所述采样分组包括与所述第一路径相关联的第一散列值;
由所述目的地虚拟路由节点接收所述采样分组;以及
由所述目的地虚拟路由节点向所述采样分组添加所述目的地虚拟路由节点的转发信息中与所述第二路径相关联的第二散列值,
其中,确定所述一个或多个分组是在所述第一路径上还是在所述第二路径上转发的包括:确定从所述一个或多个分组生成的第三散列值是否与存储在所述转发信息中的所述第二散列值匹配。
7.根据权利要求6所述的方法,
其中,发送所述采样分组进一步包括:发送包括指示所述源虚拟路由节点生成所述采样分组时的时间的第一时间戳的所述采样分组,
其中,添加所述第二散列值进一步包括:添加指示所述目的地虚拟路由节点接收所述采样分组时的时间的第二时间戳。
8.根据权利要求7所述的方法,进一步包括:
由所述目的地虚拟路由节点将所述采样分组发送给缓存模块用于基于所述第一时间戳和所述第二时间戳来计算所述缓存时长;
由所述目的地虚拟路由节点从所述缓存模块接收计算出的所述缓存时长的指示和至少所述第二散列值;以及
由所述目的地虚拟路由节点将所述第二散列值存储在所述目的地虚拟路由节点的所述转发信息中。
9.根据权利要求1所述的方法,
其中,缓存所述一个或多个分组包括:按所述一个或多个分组中的每一个的序列号依次缓存所述一个或多个分组,并且
其中,发送所缓存的一个或多个分组包括:按所述序列号依次在所述出口接口上发送所缓存的一个或多个分组。
10.一种网络装置,包括:
多个分组处理器;
多个结构链路,在多个结构部件的各结构接口处将所述多个分组处理器的各对分组处理器进行耦接;
多个虚拟路由节点中的虚拟路由节点,其中,所述虚拟路由节点被配置为:
接收一个或多个分组;
确定所述一个或多个分组是在穿过交换结构的第一路径上还是在穿过所述交换结构的第二路径上转发的;
响应于确定所述一个或多个分组是在所述第二路径上转发的,将所述一个或多个分组缓存达到缓存时长,其中,基于第一时间戳和第二时间戳确定所述缓存时长,所述第一时间戳指示源虚拟路由节点转发所述一个或多个分组的时间,所述第二时间戳指示由目的地虚拟路由节点接收所述一个或多个分组的时间;以及
响应于已经经过所述缓存时长,在目的地虚拟路由节点的出口接口上发送所缓存的一个或多个分组。
11.根据权利要求10所述的网络装置,其中,所述虚拟路由节点进一步被配置为:
响应于确定所述一个或多个分组是在所述第一路径上转发的,在没有缓存在所述第一路径上转发的所述一个或多个分组的情况下发送所述一个或多个分组。
12.根据权利要求10所述的网络装置,其中,为了在目的地虚拟路由节点的出口接口上发送所缓存的一个或多个分组,所述虚拟路由节点进一步被配置为:
在广域网(WAN)接口上发送所述一个或多个分组。
13.根据权利要求10所述的网络装置,其中,为了确定所述一个或多个分组是在所述第一路径上还是在所述第二路径上转发的,所述虚拟路由节点进一步被配置为:
在目的地虚拟路由节点的转发信息中执行对由所述一个或多个分组中的至少一个分组携带的散列值的查找;以及
基于所述查找,(i)如果所述散列值在所述转发信息中没有对应条目,则确定所述一个或多个分组是在所述第一路径上转发的,或者(ii)如果所述散列值在所述转发信息中具有对应条目,则确定所述一个或多个分组是在所述第二路径上转发的。
14.根据权利要求10所述的网络装置,其中,为了确定所述一个或多个分组是否是在所述第一路径上转发的,所述虚拟路由节点进一步被配置为:
确定是否已从所述交换结构但不是直接经由抽象结构接口接收到所述一个或多个分组。
15.根据权利要求10所述的网络装置,其中,所述虚拟路由节点包括第一虚拟路由节点,并且
其中,所述多个虚拟路由节点中的第二虚拟路由节点被配置为向所述第一虚拟路由节点发送采样分组,其中,所述采样分组包括与所述第一路径相关联的第一散列值,
其中,所述第一虚拟路由节点进一步被配置为:
接收所述采样分组,以及
向所述采样分组添加与所述第二路径相关联的第二散列值,
其中,为了确定所述一个或多个分组在所述第一路径上还是在所述第二路径上转发的,所述第一虚拟路由节点进一步被配置为确定从所述一个或多个分组生成的第三散列值是否与存储在转发信息中的所述第二散列值匹配,或者确定所述一个或多个分组是否从所述交换结构但不是直接经由抽象结构接口进入。
16.根据权利要求15所述的网络装置,
其中,为了发送所述采样分组,所述第二虚拟路由节点进一步被配置为发送包括指示源虚拟路由节点生成所述采样分组时的时间的第一时间戳的所述采样分组,
其中,为了添加所述第二散列值,所述第一虚拟路由节点进一步被配置为添加指示目的地虚拟路由节点接收所述采样分组时的时间的第二时间戳。
17.根据权利要求16所述的网络装置,其中,所述第一虚拟路由节点进一步被配置为:
将所述采样分组发送给缓存模块用于基于所述第一时间戳和所述第二时间戳来计算所述缓存时长;
从所述缓存模块接收计算出的所述缓存时长的指示和至少所述第二散列值;以及
将所述第二散列值存储在所述目的地虚拟路由节点的所述转发信息中。
18.根据权利要求10所述网络装置,
其中,为了缓存所述一个或多个分组,所述虚拟路由节点进一步被配置为按所述一个或多个分组中的每一个的序列号依次缓存所述一个或多个分组,并且
其中,为了发送所缓存的一个或多个分组,所述虚拟路由节点进一步被配置为按所述序列号依次在所述出口接口上发送所缓存的一个或多个分组。
19.一种系统,包括:
多个分组处理器;
多个结构链路,在多个结构部件的各结构接口处将所述多个分组处理器的各对分组处理器进行耦接;
路径模块,用于计算缓存时长,其中,基于第一时间戳和第二时间戳确定所述缓存时长,所述第一时间戳指示源虚拟路由节点转发所述一个或多个分组的时间,所述第二时间戳指示由目的地虚拟路由节点接收所述一个或多个分组的时间;
多个虚拟路由节点中的源虚拟路由节点和目的地虚拟路由节点,其中,所述目的地虚拟路由节点被配置为:
接收一个或多个分组;
基于转发信息,确定所述一个或多个分组是在穿过交换结构的第一路径上还是在穿过所述交换结构的第二路径上转发的;
响应于确定所述一个或多个分组是在所述第二路径上转发的,将所述一个或多个分组缓存达到缓存时长;以及
响应于已经经过所述缓存时长,在所述目的地虚拟路由节点的出口接口上发送所缓存的一个或多个分组。
20.根据权利要求19所述的系统,
其中,所述多个分组处理器、所述多个结构链路、所述源虚拟路由节点以及所述目的地虚拟路由节点都位于网络装置中,并且
其中,所述路径模块位于所述网络装置外部。
21.根据权利要求19到20中任一项所述的系统,
其中,所述源虚拟路由节点被配置为:
向所述目的地虚拟路由节点发送包括第一散列值和第一时间戳的采样分组,所述第一散列值与所述第一路径相关联,所述第一时间戳指示由所述源虚拟路由节点生成所述采样分组时的时间,
其中,所述目的地虚拟路由节点进一步被配置为:
接收所述采样分组;
向所述采样分组添加与所述第二路径相关联的第二散列值以及指示所述目的地虚拟路由节点接收所述采样分组时的时间的第二时间戳;以及
向所述路径模块发送所述采样分组用于基于所述第一时间戳和所述第二时间戳来计算所述缓存时长,
从所述路径模块接收计算出的缓存时长的指示和至少所述第二散列值;
将所述第二散列值存储在所述目的地虚拟路由节点的转发信息中;并且
确定从所述一个或多个分组生成的第三散列值是否与存储在所述转发信息中的所述第二散列值匹配,或者确定是否从所述交换结构但不是直接经由抽象结构接口接收到所述一个或多个分组。
CN201811150924.4A 2017-12-27 2018-09-29 网络装置内用于分组重新排序的方法和装置 Active CN109981456B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/855,276 US10680966B2 (en) 2017-12-27 2017-12-27 Intelligent buffering for packet reordering by virtual nodes within a network device
US15/855,276 2017-12-27

Publications (2)

Publication Number Publication Date
CN109981456A CN109981456A (zh) 2019-07-05
CN109981456B true CN109981456B (zh) 2021-08-20

Family

ID=63708194

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811150924.4A Active CN109981456B (zh) 2017-12-27 2018-09-29 网络装置内用于分组重新排序的方法和装置

Country Status (3)

Country Link
US (1) US10680966B2 (zh)
EP (1) EP3506574B1 (zh)
CN (1) CN109981456B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4149066A4 (en) * 2020-05-30 2023-11-01 Huawei Technologies Co., Ltd. COMMUNICATION METHOD AND APPARATUS
US11245608B1 (en) * 2020-09-11 2022-02-08 Juniper Networks, Inc. Tunnel processing distribution based on traffic type and learned traffic processing metrics
US11985067B2 (en) * 2021-12-10 2024-05-14 Nokia Solutions And Networks Oy Flowlet switching using memory instructions

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103918307A (zh) * 2011-11-03 2014-07-09 高通股份有限公司 基于递送路径变化的分组排序
CN104536928A (zh) * 2014-12-23 2015-04-22 上海昭赫信息技术有限公司 通过多核pcie加速子卡后的数据排序方法
CN104813605A (zh) * 2012-12-17 2015-07-29 高通股份有限公司 用于多跳混合网络的无缝切换
CN105164984A (zh) * 2013-03-13 2015-12-16 马维尔以色列(M.I.S.L.)有限公司 保持并行处理网络设备中的分组顺序
WO2016014279A1 (en) * 2014-07-21 2016-01-28 Cisco Technology, Inc. Order-sensitive communications in packet reordering networks
CN106230744A (zh) * 2016-07-26 2016-12-14 京信通信系统(中国)有限公司 一种数据流乱序重组的方法及转发设备
US20170109296A1 (en) * 2012-10-22 2017-04-20 Intel Corporation High performance interconnect physical layer

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8605722B1 (en) 2009-12-10 2013-12-10 Juniper Networks, Inc. Deadlock-resistant fabric tree replication in a network device
US9680750B2 (en) * 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
US8943499B2 (en) * 2012-04-30 2015-01-27 Hewlett-Packard Development Company, L.P. Providing a virtual network topology in a data center
US9036476B2 (en) 2012-09-28 2015-05-19 Juniper Networks, Inc. Maintaining load balancing after service application with a network device
US9083655B2 (en) * 2012-10-05 2015-07-14 Broadcom Corporation Internal cut-through for distributed switches

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103918307A (zh) * 2011-11-03 2014-07-09 高通股份有限公司 基于递送路径变化的分组排序
US20170109296A1 (en) * 2012-10-22 2017-04-20 Intel Corporation High performance interconnect physical layer
CN104813605A (zh) * 2012-12-17 2015-07-29 高通股份有限公司 用于多跳混合网络的无缝切换
CN105164984A (zh) * 2013-03-13 2015-12-16 马维尔以色列(M.I.S.L.)有限公司 保持并行处理网络设备中的分组顺序
WO2016014279A1 (en) * 2014-07-21 2016-01-28 Cisco Technology, Inc. Order-sensitive communications in packet reordering networks
CN104536928A (zh) * 2014-12-23 2015-04-22 上海昭赫信息技术有限公司 通过多核pcie加速子卡后的数据排序方法
CN106230744A (zh) * 2016-07-26 2016-12-14 京信通信系统(中国)有限公司 一种数据流乱序重组的方法及转发设备

Also Published As

Publication number Publication date
CN109981456A (zh) 2019-07-05
EP3506574B1 (en) 2021-03-17
US10680966B2 (en) 2020-06-09
US20190199647A1 (en) 2019-06-27
EP3506574A1 (en) 2019-07-03

Similar Documents

Publication Publication Date Title
CN109587054B (zh) 使用抽象结构接口连接网络设备中的虚拟节点
US20220407800A1 (en) Traceroute for multi-path routing
US9698994B2 (en) Loop detection and repair in a multicast tree
EP3295654B1 (en) Configuration of network elements for automated policy-based routing
CN110535760B (zh) 聚合接口的转发检测
US9807016B1 (en) Reducing service disruption using multiple virtual IP addresses for a service load balancer
US20110307628A1 (en) Communication system, node, control server, communication method and program
US20210029021A1 (en) Guaranteed bandwidth for segment routed (sr) paths
US10785157B2 (en) Adaptive load-balancing over a multi-point logical interface
US9832121B1 (en) Next hop instruction associations for forwarding unit programming within a network device
CN109981456B (zh) 网络装置内用于分组重新排序的方法和装置
US11765077B1 (en) Ping and traceroute in inter-autonomous system (AS) segment routing (SR) networks without requiring headend router or path monitoring system (PMS) controller knowledge of topology outside of origin AS
CN114422415B (zh) 在分段路由中的出口节点处理流
CN110719188B (zh) 作为使用虚拟节点的服务的网络
CN109861912B (zh) 优化用于电子设备内的虚拟节点的结构路径转发
US10972402B1 (en) Dynamic management of inline entries in hardware across protocols in a scaled environment
US10728137B1 (en) Protocol independent multicast (“PIM”) fault tolerant designated router (“DR”) election
Bryant An introduction to packet switching for sync engineers

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

Address after: California, USA

Applicant after: Juniper Networks, Inc.

Address before: California, USA

Applicant before: Jungle network

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant