CN106105130B - 一种在源路由中提供熵源的方法和设备 - Google Patents
一种在源路由中提供熵源的方法和设备 Download PDFInfo
- Publication number
- CN106105130B CN106105130B CN201480070004.5A CN201480070004A CN106105130B CN 106105130 B CN106105130 B CN 106105130B CN 201480070004 A CN201480070004 A CN 201480070004A CN 106105130 B CN106105130 B CN 106105130B
- Authority
- CN
- China
- Prior art keywords
- data packet
- entropy
- source
- routing
- route data
- 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
Classifications
-
- 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/72—Routing based on the source address
-
- 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/34—Source 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/24—Multipath
-
- 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/56—Routing software
- H04L45/566—Routing instructions carried by the data packet, e.g. active networks
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种实现在源路由中提供熵源的方法,所述方法包括:接收包含熵头的源路由数据包,其中,所述熵头包含熵字段和标识(identifier,简称ID)列表;从所述ID列表中确定下一跳ID;确定所述下一跳ID是否标识多条路由以到达下一跳节点;使用所述熵字段,从所述多条路由中选择第一路由;通过所述第一路由发送所述源路由数据包,其中,所述ID列表指示用于将所述源路由数据包从源头传送至目的地的路由。
Description
相关申请案交叉申请
本申请要求于2013年12月20日递交的发明名称为“通过熵头的源路由”的第14/136,259号美国专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入,如同将其全文复制于本文中。
技术领域
本发明通常涉及网络通信,尤其涉及熵头源路由。
背景技术
源路由是在源路由头中部分或完全指定数据包在网络上所经过的路由的协议。所述源路由头可以包含要遍历的链路和/或节点的严格表或松散表。所述严格表可以明确列出数据包可能传送经过的所有链路和/或节点。或者,所述松散表可以指定所述数据包要到达目的地可能需要遍历的一条或多条链路和/或一个或多个节点。所述松散表可以不包含数据包要到达目的地可能会遍历的所有链路和/或节点。因此,可以采用附加的路由决策来路由所述数据包经由一个中间点到达另一个中间点。与使用转发表相比,实施源路由可以简化数据转发网络节点,并减少路由时间和时延。网络节点(例如:路由器)使用所述源路由头内的路由信息来转发所述数据包,而不是通过路由表执行查找功能。
可以使用负载均衡对数据包进行跨多路径的路由。例如,负载均衡可以减轻容量规划,并通过跨多路径扩散突发话务量来吸收突发话务量。负载均衡也可以提供替代路径,并为链路和/或节点失败提供更好的恢复。当进行负载均衡时,一项重要限制是要将属于一个给定流的数据包映射到相同路径(例如:经过网络的完全相同的链路序列)上。将相同流中的数据包映射到相同路径上避免了抖动、时延和重排等问题。一种用于将数据包从相同流映射到相同路径上的方法是指将从数据包头中获得的密钥输入到负载均衡函数(例如:哈希函数)中。随后,所述负载均衡函数试图将对应某个特定流的全部数据包分配到相同路径上。因此,所述负载均衡函数试图通过将不同流分配到不同路径,把数据包均匀地分发到多条路径中。
在某些例子中,网络节点可以接收包含链路标识的源路由数据包,所述链路标识对应于所述网络节点和下一跳网络节点之间的多条物理链路。为了避免数据包重排,所述网络节点可以不随机(例如:使用轮询算法)选择所述源路由头中标识的所述物理链路中的一条并随后在经过随机选择的物理链路中的一条传输所述数据包。通常,所述网络节点可以利用净负荷中的信息使用负载均衡函数来路由所述源路由数据包至所述物理链路中的一条。不幸的是,执行所述负载均衡函数可能会比较复杂,从而,增加了网络节点的处理时间。例如,针对不定长度的源路由头,净负荷和链路表之间的间隔可以是变化的。此外,所述网络节点可能需要确定所述净负荷的准确格式以实施所述负载均衡函数。
发明内容
在一个示例实施例中,本发明包括网络节点,利用源路由数据包中的熵源来选择下一跳链路。所述源路由数据包包含提供熵字段和标识(identifier,简称ID)列表的熵头。所述方法可以基于所述ID列表中的路由之一来路由源路由数据包。用于路由所述源路由数据包的所述链路和/或节点可以由所述下一跳ID标识。当所述下一跳ID标识有多条路由可用于到达下一跳节点时,所述熵字段用于选择所述路由的其中之一来转发所述源路由数据包。
在另一示例实施例中,本发明包括网络节点,用于确定ID是否标识不明确的链路或节点。当所述ID对应用有多条路由将源路由数据包从所述节点传送到下一跳节点时,所述ID标识不明确的链路或节点。如果所述链路ID标识不明确链路或节点,则所述网络节点基于所述源路由数据包中熵值分配所述路由的其中之一来转发所述源路由数据包。所述熵值和所述ID位于所述源路由数据包头内,且所述ID用于将所述源路由数据包从所述节点路由至所述下一跳节点。所述熵值指示随机化源以路由所述源路由数据包。
在又一示例实施例中,本发明包括网络节点,配置为用于确定位于所述熵头内的当前ID是否标识多于一条下一跳路由。当所述当前ID标识多于一条下一跳路由时,所述网络节点通过所述熵头内熵字段选择所述下一跳路由的其中之一作为转发路由。或者,当所述当前ID标识一条下一跳路由时,所述网络节点分配由所述当前ID标识的单条路由作为所述转发路由。之后,所述网络节点通过所述转发路由转发所述源路由数据包至下一跳节点。
通过以下结合附图和权利要求的详细描述,这些以及其他特征将会被更清楚地理解。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1为一种源路由网络的示例实施例的示意图,其中,本发明示例实施例可在该源路由网络中执行;
图2为网元示例实施例的示意图;
图3为源路由数据包示例实施例的示意图;
图4为一种用于为源路由数据包生成和封装熵值的方法的示例实施例的流程图;
图5为一种用于在所述链路ID标识不明确的链路或节点时选择链路的方法的示例实施例的流程图。
具体实施方式
首先应理解,尽管下文提供一项或多项示例实施例的说明性实施方案,但所公开的***和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
此处公开了使用携带熵头的源路由的各种示例实施例。所述熵头可以包含表示熵或者随机化源的熵字段,且所述熵字段用于在多个下一接口中分发数据包以到达所述数据包的目的地。为避免数据包混乱,熵可以是数据包流的一个函数,使得相同流中的数据包具有相同的熵值。在入口节点封装所述熵头时,所述熵字段可以包含从净负荷信息中生成的熵值。所述熵字段可以被封装在熵头内链路ID列表和/或其他一些固定位置的前面。当所述链路ID标识不明确的链路或节点时,所述熵值结合源路由转发操作、节点随机化源和/或其他本地随机化源可以用于选择单条链路来到达下一跳。
图1为一种源路由网络100的示例实施例的示意图,其中,本发明示例实施例可在该源路由网络100中操作。所述源路由网络100可以是配置为使用基于链路的源路由的任何网络。例如,所述源路由网络100可以包括,但不限于,互联网协议(Internet Protocol,简称IP)网络、多协议标记交换(Multiprotocol Label Switching,简称MPLS)网络、以太网网络、软件定义网络(Software-Defined Networking,简称SDN)等。源路由网络100可以为包含一个或多个局域网(local area network,简称LAN)、虚拟网络和/或广域网(wide areanetwork,简称WAN)的网络。基于链路的源路由可以指导至少一些数据包从源头通过隧道遍历所述源路由网络100到达目的地。图1示出所述源路由网络100可以包括入口节点102、中间节点106A至D以及出口节点108。
入口节点102、中间节点106A至D以及出口节点108可以为路由器、交换机、网桥和/或能够通过源路由网络100传送数据包的任何其他网络设备。入口节点102、中间节点106A至D以及出口节点108可以和链路104a至j耦合在一起。链路104a至j可以为物理链路,例如,光纤链路、电力链路和无线链路;或者可以为间接连接,例如,逻辑连接和/或带有中间节点的物理链路。链路104a至j可以被布置为两个节点(例如:相邻节点)之间的并行链路组中的单条链路,和/或各种组合以用于在源路由网络100中传送数据。在本发明中,链路104a至j可以统称为链路104。
入口节点102可以初始接收对应特定流的输入数据包。例如,所述流可以对应传输控制协议(Transmission Control Protocol,简称TCP)会话。所述入口节点102可以配置为通过源路由隧道传送所述入数据包。所述入口节点102可以从位于所述源路由网络100之外的外部节点接收所述入数据包。为实施源路由,所述入口节点102可以从源头和目的地中确定路由,并随后封装包含熵字段和源路由头的熵头以组成源路由数据包。在一示例实施例中,所述入口节点102可以采用公知的路由技术来为源路由数据包生成路由,例如,采用最短路径、距离、成本、链路宽带、时延、内部网关协议(Interior Gateway Protocol,简称IGP)和/或边界网关协议(Border Gateway Protocol,简称BGP)等以确定最优路径。如本领域普通技术人员所知,前述的例子是非包容的,且任何合适的路由技术都可以被所述入口节点102采用以确定针对所述源路由数据包的所述最优路径。在另一示例实施例中,所述入口节点102可以从另一节点中获得路由信息,例如,集中控制器(例如:SDN控制器)和/或管理实体。在封装之后,所述熵头可以表示所述源路由数据包的头部分,且所述接收到的输入数据包可以位于所述源路由数据包的净负荷部分。
所述熵字段可以包含熵值,所述熵值可以用作随机化源来选择对应于不明确的链路的其中一条链路。在一示例实施例中,链路104可以表示物理链路。当所述源路由头中的链路ID标识节点(例如:中间节点106A)和所述下一跳网络节点(例如:中间节点106B)之间有多条链路104(例如:多于一条链路104)时,表明存在不明确的链路。在图1中,链路ID#4和#2可以归类为不明确的链路。具体地,链路ID#4标识三条不同的链路104b至d,链路ID#2标识4条不同的链路104f至i。在一实施例中,链路104b至d和104f至i可以为并行链路。所述熵值可以为所述源路由数据包的所述净负荷信息(例如:接收的封装前的输入数据包)的函数。
在一示例实施例中,所述链路ID可以表示节点标识(例如:节点的松散表),所述节点标识标识用于到达中间节点106A至D和/或出口节点108的中间节点。记得在一示例实施例中,所述链路104至少有一部分可以为间接连接,例如,逻辑连接和/或带有中间节点的物理链路。例如,链路104b至d中的每一个都可以包含介于中间节点106A和中间节点106B之间的中间节点(图1未示出)。所述中间节点可以通过一条或多条物理链路与中间节点106A以及106B互连。所述链路ID可以标识用于从中间节点106A到达中间节点106B的中间节点。在这个例子中,链路ID#4可以归类为不明确的节点,因为链路ID#4可以标识用于从中间节点106A到达中间节点106B的多个中间节点。为了便于讨论,源路由头中的ID这一术语在本发明中被理解为标识用于到达下一跳节点的链路和/或节点的标识。
所述源路由头可以包括用于通过源路由网络100路由所述输入数据包的链路ID列表。在一示例实施例中,所述链路ID列表可以为明确列出用于通过源路由网络100路由所述输入数据包的严格表。以图1为例,所述链路ID列表可以包含[链路ID#3、链路ID#4、链路ID#7、链路ID#2和链路ID#5]来将所述输入数据包从源头(例如:入口节点102)传送至目的地(例如:出口节点108)。链路ID#3标识链路104a;链路ID#4标识链路104b-d;链路ID#7标识链路104e;链路ID#2标识链路104f至i;以及链路ID#5标识链路104j。在封装之后,所述入口节点102可以在链路104a上发送(例如:传输)所述源路由数据包,所述链路104a由链路ID#3标识。如图1所示,链路104b至d和104f至i可以为用于到达下一跳的链路。在另一实施例中,所述链路ID列表可以为标识源路由数据包可能需要遍历的所述链路和/或节点的松散表。松散表可以包括用于将源路由数据包从源头路由至目的地的所有所述链路ID的子集。换言之,所述松散表可以标识一个完整的端到端列表内多个但并非全部的所述链路和/或节点。因此,松散表不会针对所述源路由数据包明确标识路径内所有所述链路和/或节点。
中间节点106A可以接收所述源路由数据包,并从所述源路由头中确定通过由链路ID#4标识的链路104将所述源路由数据包转发以到达下一跳。所述中间节点106A可以确定链路ID#4标识不明确的链路和/或节点(例如:标识多于一条能够用于到达下一跳的链路104和/或节点),且可以分配所述链路104b至d的其中一条来传送所述源路由数据包至所述中间节点106B。通过所述熵字段中的所述熵值、源路由转发操作(例如:所述链路ID#4)、节点随机化源和/或本地随机化源,中间节点106A可以分配所述链路104b-d的其中一条。中间节点106A可以将来自相同流的其他源路由数据包分配到相同链路104以避免源路由数据包重排。例如,如果所述中间节点106A分配所述源路由数据包到链路104b,相同流内所有其他相关联的源路由数据包会被路由到链路104b上。一旦分配了链路104(例如:链路104b),中间节点106A可以通过所述被分配的链路104转发所述源路由数据包至中间节点106B。
在接收所述源路由数据包之后,中间节点106B可以通过由链路ID#7标识的所述链路104(例如:链路104e),转发所述源路由数据包以到达所述中间节点106C。对于中间节点106B,因为所述链路ID#7不标识不明确的链路,反而是标识单条链路,所述熵值可以不用于选择链路104e。一旦中间节点106C接收到所述源路由数据包,所述中间节点106C可以分配所述链路104f至i的其中一条来发送所述源路由数据包。当所述链路ID标识不明确的链路时,中间节点106C可以按照类似于中间节点106A分配链路104的方式来分配链路104。随后,中间节点106C可以通过所选择的链路(例如:104g)发送所述源路由数据包以到达中间节点106D。然后,中间节点106D可以通过链路104j发送所述源路由数据包至出口节点108,所述链路104j由链路ID#5标识。所述出口节点108可以通过移除所述熵头来解封装所述源路由数据包,随后可以发送所述数据包到所述源路由网络100之外。
如本领域的普通技术人员所知,尽管前述讨论是针对于从源头至目的地的单流,但是所述公开的技术并不限于这一应用,并且反而可以同样应用到所述源路由网络100中的多条其他路径和/或流。此外,源路由网络100可以包含不同网络拓扑和布局,所有的拓扑和布局都包含在本发明中。单流和布局的使用以及讨论只是为了便于描述和解释。
本发明所述的至少部分特征/方法可在网元中被实施。例如,本发明的特征/方法的实施可使用硬件、固件、和/或安装在硬件上运行的软件。所述网元可以为通过网络传输数据的任何设备,例如,交换机、路由器、网桥、服务器和客户端等。图2为网元200的实施例的示意图,网元200可以为任何传输和/或处理源路由数据包的设备,例如,图1所示的入口节点102以及中间节点106A至D。如图4和图5所示的方法400和500分别所述,当所述链路ID标识不明确的链路或节点时,所述网元200也可以配置成生成所述熵值以及选择链路。
所述网元200可包含与收发器(Tx/Rx)212耦合的一个或多个下游端口210,所述收发器可以为发送器、接收器、或者二者的结合。所述Tx/Rx 212可以通过所述下游端口210向其他节点发送帧和/或从其他节点接收帧。类似地,所述网元200可以包括与多个上游端口230耦合的另一Tx/Rx 212,其中所述Tx/Rx 212可以通过所述上游端口230向其他节点发送帧和/或从其他节点接收帧。所述下游端口210和/或上游端口230可包括电和/或光发送和/或接收组件。
处理器225可与所述Tx/Rx 212耦合,并配置为处理所述帧和/或确定向哪些节点发送所述帧。所述处理器225可包括一个或多个多核处理器和/或存储器222,所述存储器222可用于数据存储、缓冲等。处理器225可作为一个通用处理器或者可作为一个或多个专用集成电路(application specific integrated circuit,简称ASIC)和/或数字信号处理器(digital signal processor,简称DSP)的一部分来实施。虽然示出的是单个处理器,但所述处理器225并不限于此,且可包括多个处理器。所述处理器225可配置为实施此处所述的任何方案,包括图4和图5分别所示的方法400和500。
存储器222可以与所述处理器225耦合,可以配置为用于存储各类数据的非瞬时性介质。存储器222可以包含存储设备,包括二级存储器、只读存储器(read only memory,简称ROM)和随机存取存储器(random access memory,简称RAM)。通常,所述二级存储器包括一个或多个硬盘驱动器、固态硬盘(solid-state drive,简称SSD)和/或磁带驱动器,且用于数据的非易失性存储,并在RAM不够容纳所有工作数据时用作溢出数据存储设备。当程序被选择来执行时,所述二级存储器可用于储存被装入所述RAM的所述程序。所述ROM用于储存在程序执行期间读取的指令,可能还有数据。所述ROM为一种非易失性存储器设备,相对于拥有更大存储容量的二级存储器来说,它通常仅具有很小的存储容量。所述RAM用于储存易失性数据或储存指令。访问所述ROM和所述RAM通常比访问二级存储器来得快。
所述存储器222可用于容纳所述指令,这些指令用于实施此处所述的***和方法,例如,入口节点102和/或中间节点106A至D等。在一示例实施例中,所述存储器222可以包含可以实施在所述处理器225上的熵生成模块228(例如:入口节点102)。或者,所述熵生成模块228可直接在所述处理器225上实施。当所述链路ID标识不明确的链路或节点时,所述熵生成模块228可配置为生成用于选择单条链路的所述熵值。在熵生成期间,所述熵生成模块228可以基于所述源路由数据包的净负荷信息生成熵值。所述熵值可以通过多种方法从所述净负荷中生成,该多种方法包括但不限于利用所述源路由数据包的所述净负荷信息来执行加法函数、乘法函数和/或循环冗余校验(cyclic redundancy check,简称CRC)(例如:CRC-16或者CRC-32)。在另一示例实施例中,所述存储器222可以包括链路选择模块229,所述链路选择模块229基于所述熵值分配链路以转发所述源路由数据包。图4和图5将更为详细地讨论熵值的生成和针对不明确的链路或节点进行的链路分配。
可以理解的是,通过编程和/或加载可执行指令至所述网元200中,处理器225、缓存和长期存储器中的至少一个会发生改变,将所述网元200部分转变为特定的机器或装置,例如,多核转发架构,具有本发明所述的新型功能。对于电气工程和软件工程技术至关重要的是,通过加载可执行软件到计算机来实现的功能可以转换为按照公认的设计规则的硬件的实现方式。在软件还是硬件中实施某一概念通常取决于对于待生产单元设计稳定性和数量的考虑,而并非考虑任何涉及从软件领域到硬件领域的转换问题。通常,经常变化的设计可以优先在软件中实施,因为重编硬件实施方式要比重编软件设计更加昂贵。通常,稳定性好并大量生产的设计可以优先在硬件中实施,例如,在ASIC中实施,因为大量生产的运行使得硬件实施比软件实施更廉价。通常,一项设计可以以软件的形式进行开发和测试,之后根据公认的设计规则转化为ASIC中等效的硬件实施方式,所述软件的指令固化在ASIC中。按照相同的方式,由新型ASIC控制的机器即为一种特定机器或装置,同样地,已被编程和/或加载可执行指令的计算机可被视为一种特定的机器或装置。
图3为源路由数据包300的示例实施例的示意图。所述源路由数据包300可用于各种实施此处所公开的技术的示例实施例中,例如,所述源路由网络100。所述源路由数据包300可包含熵头314和净负荷316。所述熵头314可包含熵字段302和源路由头312。所述净负荷316可以包含封装所述熵头314之前接收的原始输入数据包。例如,如果所述输入数据包是IP数据包,所述净负荷316可以包含所述IP数据包中的IP头和净负荷信息。具体地,所述IP头可以包括源IP、目的地IP、数据包类型、源端口和目的地端口。
如图3所示,所述熵字段302可以封装在所述源路由头312的前面。通过将所述熵字段302置于所述源路由头312的前面,网络节点(例如:图1中的中间节点106A至D)可以无需查看所述净负荷316来生成随机化源和/或查看数据包末端来寻找MPLS熵标记。当链路ID标识不明确的链路或节点时,所述熵字段302可以包含作为随机化源来选择链路的熵值。通常,所述熵字段302的长度范围为大约16比特到大约20比特。当执行负载均衡时,取决于数据包尺寸限制以及所期望的熵或随机性,其他实施例可以使用不同比特长度。所述熵字段的长度越短,熵越少,因此,所述不明确的链路中的并行链路之间数据流量分布越不均匀。所述熵字段的长度越长,熵越多,因此,链路的数据流量分布越均匀。所述熵字段302中的所述熵值可以是针对整个流的一个唯一值,属于相同流的源路由数据包300的熵值是相同的。
所述源路由头312可以包括跳数字段304、当前跳字段306、跳尺寸字段308和跳字段[1]310到跳字段[N]310。在一示例实施例中,所述跳数字段304、所述当前跳字段306、所述跳尺寸字段308和跳字段[1]310到跳字段[N]310每个的长度都大约为8比特。所述跳数字段304指示了所述源路由头312中所述跳字段310的数目。换言之,所述跳数字段304可以指示用于路由所述源路由数据包300的跳数。以图3为例,所述跳字段310的数目可以约为N,其中,N是整数。所述当前跳字段306可以指示所述路径内的当前跳(例如:跳[2]字段310)。所述当前跳字段306可以充当指针来追踪哪一个跳字段310可以用于确定所述链路ID。所述跳尺寸字段308可以指示每一跳字段310所用的比特数。例如,所述跳尺寸字段308可以指示每一跳字段310大约为8比特长。在一示例实施例中,所述跳字段310可以表示用于转发所述源路由数据包300的链路ID(例如:图1中的链路ID#2)和/或网络节点的严格表。跳字段[1]310可以表示用于实现自所述源头(例如:入口节点)算起的第一跳和/或下一跳网络节点的链路ID。跳字段[N]310可以表示用于实现到达目的地的最后一跳和/或目的地节点的链路ID。在另一实施例中,所述跳字段310可以表示链路ID和/或网络节点的松散表。
当所述源路由数据包300遍历源路由网络时,所述源路由头312中的所述当前跳字段306可以被更新。以图1为例,当中间节点106A从入口节点102接收所述源路由数据包300时,所述当前跳字段306可以指向跳字段[1]310,所述跳字段[1]310可以包含链路ID#3。在接收到所述源路由数据包300后,中间节点106A可以将所述当前跳字段306增加1来指向跳字段[2]310,所述跳字段[2]310表示链路ID#4。在每一中间节点106,所述当前跳字段306继续被更新来指向正确的跳字段310,直到所述源路由数据包到达其目的地(例如:出口节点108)。
图4为一种用于为源路由数据包生成和封装熵值的方法400的示例实施例的流程图。方法400可以在隧道入口节点实施,例如,图1所述的入口节点102。在步骤402中,方法400可以从源路由数据包的净负荷中生成熵值。所述熵值可以通过对净负荷内容执行各种随机数生成函数,例如,实施加法和/或乘法操作、CRC-16和/或CRC-32,来随机生成。针对每个流都可以生成唯一的熵值。因此,对应于不同流的源路由数据包可以封装携带不同的熵值,且相同流中的源路由数据包可以分配有相同的熵值。在完成步骤402后,方法400可以转到方框404:在所述源路由数据包中的链路ID列表的前面封装所述熵值。换言之,在一示例实施例中,所述熵值可以是所述源路由数据包中最外层的字段。如下面表1所示,所述熵值可以为所述净负荷的一个函数且可以封装在所述源路由头的前面:
表1
表1表示可以用于生成熵值并封装源路由数据包中的熵头的伪代码。F(净负荷)表示可应用于所述净负荷中至少一些数据的一个函数(例如,CRC-16)。例如,如果封装前所述数据包为IP数据包,所述函数可应用于源IP地址、目的地IP地址、数据包类型字段、源端口字段和/或目的端口字段以生成所述熵值。然后,方法400可以转到方框406:通过由所述链路ID标识的所述链路和/或节点发送所述源路由数据包。记得在图3中,当前跳字段306可以指向包含所述链路ID的正确的跳字段310。
图5为一种用于在链路ID标识不明确的链路或节点时选择链路的方法500的示例实施例的流程图。方法500可以在隧道入口节点和/或中间节点实施,例如,入口节点102和/或中间节点106A至D。在步骤502中,方法500可以接收封装携带熵头的源路由数据包。然后,方法500可以进入步骤504:识别所述源路由数据包中的下一链路ID。记得在图3中,当前跳字段306可以是指向跳字段310其中之一的指针。在步骤504中,方法500可以将所述当前跳字段306增加大约1,使得所述当前跳字段306指向包含所述下一链路ID的跳字段310。
方法500可以继续到步骤506:判断所述下一链路ID是否对应不明确的链路或节点。当多于一条链路或节点可用于到达下一跳时,方法500可以确定所述下一链路ID标识不明确的链路或节点。如果方法500确定所述链路ID对应不明确的链路或节点,则方法500转到步骤508。在步骤508中,方法500可以使用所述熵头中的所述熵值来随机选择由所述下一链路ID标识的所述链路和/或节点的一条链路和/或一个节点。在一示例实施例中,方法500也可以使用源路由转发操作、节点随机化源和/或其他本地随机化源来随机选择所述链路和/或节点的一条链路和/或一个节点。之后,方法500可以进入步骤510:通过所述选择的链路和/或节点发送所述源路由数据包。返回到步骤506,如果所述下一链路ID不对应不明确的链路或节点,则方法500就可以进入步骤512:选择由所述下一链路ID标识的所述链路和/或节点。在步骤512中,所述下一链路ID对应仅一条链路和/或节点,因此不是不明确的。在步骤512之后,方法500可以转到步骤510。
如下所示,表2提供可以用于实施方法500的伪代码:
表2
如上所示,当中间节点接收到源路由数据包时,所述下一链路ID是从所述源路由数据包的跳字段中获得。所述中间节点采用所述跳字段,该跳字段等于所述当前跳字段加1。然后,所述中间节点判断所述下一链路ID是否不明确。如果确定所述下一链路ID不明确,可以采用消除歧义函数确定真正的链路。所述消除歧义函数可以使用所述熵字段、所述下一链路ID以及对应所述中间节点的本地节点随机化发生器来获得所述真正的链路或节点。一旦所述中间节点确定所述真正的链路或节点,所述中间节点可以通过所述真正的链路或节点转发所述源路由数据包至所述下一跳节点。在确定所述下一链路ID不是不明确的例子中,所述中间节点可以通过由所述下一链路ID标识的所述链路或者节点来转发所述源路由数据包。
本发明公开至少一项示例实施例,本领域的普通技术人员对所述示例实施例和/或所述示例实施例的特征作出的变化、组合和/或修改均在本发明公开的范围内。因组合、合并和/或省略所述示例实施例的特征而得到的替代性示例实施例也在本发明的范围内。在明确说明数字范围或限制的情况下,此类表达范围或限制应被理解成包括在明确说明的范围或限制内具有相同大小的迭代范围或限制(例如,从约为1到约为10包括2、3、4等;大于0.10包括0.11、0.12、0.13等)。例如,只要公开具有下限Rl和上限Ru的数字范围,则明确公开了此范围内的任何数字。具体而言,在所述范围内的以下数字是明确公开的:R=Rl+k*(Ru–Rl),其中k为从1%到100%范围内以1%为增量的变量,即,k为1%、2%、3%、4%、5%……50%、51%、52%……95%、96%、97%、98%、99%或100%。此外,由上文所定义的两个数字R定义的任何数字范围也是明确公开的。除非另有说明,否则术语“约”是指随后数字的±10%。相对于权利要求的任一元素使用术语“可选地”意味着所述元素是需要的,或者所述元素是不需要的,两种替代方案均在所述权利要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如“由……组成”、“基本上由……组成”以及“大体上由……组成”等较窄术语的支持。因此,保护范围不受上文所陈述的说明限制,而是由所附权利要求书界定,所述范围包含所附权利要求书的标的物的所有等效物。每一和每条权利要求作为进一步揭示内容并入说明书中,并所附权利要求书是本发明的示例实施例。对所述揭示内容中的参考进行的论述并非承认其为现有技术,尤其是具有在本申请案的在先申请优先权日期之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例、程序性或其它细节。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的***和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,并本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一***中组合或合并,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、***、子***和方法可以与其它***、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其他变化、替代和改变的示例可以由本字段的技术人员在不脱离本文精神和所公开的范围的情况下确定。
Claims (20)
1.一种实现在源路由中提供熵源的方法,其特征在于,所述方法包括:
接收包含熵头的源路由数据包,其中,所述熵头包含熵字段和标识ID列表;
从所述ID列表中确定下一跳ID;
确定所述下一跳ID是否标识多条路由以到达下一跳节点;
使用所述熵字段,从所述多条路由中选择第一路由;
通过所述第一路由发送所述源路由数据包,
其中,所述ID列表指示用于将所述源路由数据包从源头传送至目的地的路由。
2.根据权利要求1所述的方法,其特征在于,所述熵字段位于所述熵头内所述ID列表的前面。
3.根据权利要求1所述的方法,其特征在于,所述下一跳ID用于选择所述多条路由的其中之一,并且所述多条路由至少为下列其中之一:用于到达所述下一跳节点的多条并行链路和多个节点。
4.根据权利要求1所述的方法,其特征在于,使用本地随机化源选择所述多条路由的其中之一。
5.根据权利要求1所述的方法,其特征在于,所述源路由数据包属于将数据包从源头传送至目的地的流,并且所述方法还包括:接收属于相同流的第二源路由数据包,并选择所述第一路由传送所述第二源路由数据包。
6.根据权利要求5所述的方法,其特征在于,所述第二源路由数据包包含具有与所述熵字段相同熵值的第二熵字段。
7.根据权利要求1所述的方法,其特征在于,所述熵字段位于所述熵头最外层的字段。
8.根据权利要求1所述的方法,其特征在于,所述源路由数据包还包含净负荷,其中,所述熵字段是通过将随机数发生器函数应用于所述净负荷来生成。
9.根据权利要求1所述的方法,其特征在于,所述源路由数据包还包含净负荷,其中,当所述下一跳ID标识所述多条路由时,所述净负荷不直接用作随机化源来选择所述第一路由。
10.根据权利要求1所述的方法,其特征在于,当所述下一跳ID标识所述多条路由时,所述源路由数据包末端不用作随机化源来选择所述第一路由。
11.一种非瞬时性计算机可读介质,其特征在于,所述非瞬时性计算机可读介质中存储有计算机可执行指令,所述计算机可执行指令在被处理器执行时能够使节点执行以下操作:
确定标识ID是否标识多条路由,所述多条路由用于将源路由数据包从所述节点传送到下一跳节点;
基于所述源路由数据包内的熵值,分配所述路由的其中之一来转发所述源路由数据包,
其中,所述熵值和所述ID位于所述源路由数据包的头内,
其中,所述ID用于将所述源路由数据包从所述节点路由至所述下一跳节点,
其中,所述熵值指示随机化源以路由所述源路由数据包。
12.根据权利要求11所述的非瞬时性计算机可读介质,其特征在于,所述熵值位于所述源路由数据包的头内在所述ID的前面。
13.根据权利要求11所述的非瞬时性计算机可读介质,其特征在于,存储在非瞬时性计算机可读介质中的所述指令在被处理器执行时会使所述节点接收包含第二熵值的第二源路由数据包,其中,当所述源路由数据包和所述第二源路由数据包属于相同流时,所述熵值和所述第二熵值相同。
14.根据权利要求11所述的非瞬时性计算机可读介质,其特征在于,所述ID是位于所述源路由数据包的头内的ID列表的一部分,其中,所述ID列表标识至少下列其中之一:用于将所述源路由数据包从源头传送至目的地的多条并行链路和多个节点。
15.根据权利要求11所述的非瞬时性计算机可读介质,其特征在于,节点随机化源和源路由转发操作用于分配所述路由的其中之一来转发所述源路由数据包。
16.根据权利要求11所述的非瞬时性计算机可读介质,其特征在于,所述源路由数据包包含净负荷,其中,所述熵值从所述净负荷中生成。
17.根据权利要求11所述的非瞬时性计算机可读介质,其特征在于,所述源路由数据包包含净负荷,其中,所述净负荷信息不用于直接分配所述路由的其中之一来转发所述源路由数据包。
18.一种用于通过源路由选择路径的装置,其特征在于,包括:
接收器,配置为接收包含熵头和净负荷的源路由数据包;
处理器,与所述接收器耦合,其中,所述处理器配置为:
确定位于所述熵头内的当前标识ID是否标识多于一条的下一跳路由;
当所述当前ID标识多于一条的下一跳路由时,利用熵头内的熵字段选择所述下一跳路由的其中之一作为转发路由;
当所述当前ID标识一条下一跳路由时,分配由所述当前ID标识的单条路由作为转发链路;
发送器,与所述处理器耦合,其中,所述发送器配置为通过所述转发路由将所述源路由数据包发送至下一跳节点,
其中,所述熵头明确列出针对所述源路由数据包的端到端路由。
19.根据权利要求18所述的装置,其特征在于,所述熵头包含ID列表,其中,所述熵字段位于所述熵头内的所述ID列表的前面,且所述当前ID是所述ID列表的一部分。
20.根据权利要求18所述的装置,其特征在于,所述熵字段内的值是所述净负荷的函数,并且对于对应于相同流的数据包,所述熵字段内的所述值是相同的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/136,259 | 2013-12-20 | ||
US14/136,259 US9967183B2 (en) | 2013-12-20 | 2013-12-20 | Source routing with entropy-header |
PCT/CN2014/094503 WO2015090240A1 (en) | 2013-12-20 | 2014-12-22 | Source routing with entropy-header |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106105130A CN106105130A (zh) | 2016-11-09 |
CN106105130B true CN106105130B (zh) | 2019-04-19 |
Family
ID=53401355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480070004.5A Active CN106105130B (zh) | 2013-12-20 | 2014-12-22 | 一种在源路由中提供熵源的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9967183B2 (zh) |
EP (1) | EP3072274B1 (zh) |
CN (1) | CN106105130B (zh) |
WO (1) | WO2015090240A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629160B (zh) | 2012-03-16 | 2016-08-03 | 华为终端有限公司 | 一种输入法、输入装置及终端 |
US9608858B2 (en) * | 2014-07-21 | 2017-03-28 | Cisco Technology, Inc. | Reliable multipath forwarding for encapsulation protocols |
US9838246B1 (en) * | 2014-09-30 | 2017-12-05 | Juniper Networks, Inc. | Micro-loop prevention using source packet routing |
CN106165359B (zh) * | 2014-10-17 | 2020-05-08 | 华为技术有限公司 | 数据流分发方法和设备 |
US11277338B2 (en) * | 2016-09-26 | 2022-03-15 | Juniper Networks, Inc. | Distributing service function chain data and service function instance data in a network |
WO2018058677A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 一种报文处理方法、计算设备以及报文处理装置 |
CN107948138B (zh) * | 2017-11-02 | 2020-12-11 | 东软集团股份有限公司 | 路由连接的检测方法、装置、可读存储介质及电子设备 |
CN112154628B (zh) * | 2018-05-17 | 2022-10-14 | 瑞典爱立信有限公司 | 拆除经过通信网络的标签交换路径 |
US11095555B2 (en) | 2018-06-14 | 2021-08-17 | Nokia Solutions And Networks Oy | Flexible label value encoding in label switched packet networks |
US11621913B2 (en) * | 2018-06-14 | 2023-04-04 | Nokia Solutions And Networks Oy | Path compression in routing of source routed packets |
WO2019239171A1 (en) | 2018-06-14 | 2019-12-19 | Nokia Solutions And Networks Oy | Flow-specific fast rerouting of source routed packets |
US10986017B2 (en) * | 2018-08-23 | 2021-04-20 | Agora Lab, Inc. | Large-scale real-time multimedia communications |
US10999182B2 (en) | 2019-05-13 | 2021-05-04 | 128 Technology, Inc. | Routing using segment-based metrics |
US11329912B2 (en) * | 2019-05-13 | 2022-05-10 | 128 Technology, Inc. | Source-based routing |
EP4287561A4 (en) * | 2021-01-29 | 2024-03-13 | Beijing Xiaomi Mobile Software Co Ltd | DATA PACKET SENDING METHOD, DATA PACKET SENDING APPARATUS AND STORAGE MEDIUM |
US11792092B2 (en) * | 2021-03-09 | 2023-10-17 | Arista Networks, Inc. | Network telemetry |
US11570807B2 (en) * | 2021-04-27 | 2023-01-31 | Qualcomm Incorporated | Configured grant for multi-hop in sidelink |
US20230388220A1 (en) * | 2022-05-26 | 2023-11-30 | Nokia Solutions And Networks Oy | Source route compression based on address compression |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101534573A (zh) * | 2008-11-20 | 2009-09-16 | 上海交通大学 | 无线自组织网络中链路层实现传输层确认的方法 |
CN101729135A (zh) * | 2008-10-29 | 2010-06-09 | 上海华为技术有限公司 | 无线网状网的传输方法、通信设备及通信*** |
CN102916894A (zh) * | 2012-11-08 | 2013-02-06 | 华为技术有限公司 | 一种网络流量转发的方法和源路由设备 |
CN103181131A (zh) * | 2010-10-29 | 2013-06-26 | 瑞典爱立信有限公司 | 最短路径桥接网络中的负载平衡 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6868083B2 (en) | 2001-02-16 | 2005-03-15 | Hewlett-Packard Development Company, L.P. | Method and system for packet communication employing path diversity |
JP3757917B2 (ja) | 2002-08-20 | 2006-03-22 | 日本電気株式会社 | パケット転送装置、パケット転送方法解決サーバ、dnsサーバ、ネットワークシステム及びプログラム |
US7643467B2 (en) | 2003-12-23 | 2010-01-05 | Nortel Networks Limited | Source-implemented constraint based routing with source routed protocol data units |
JP4509955B2 (ja) * | 2006-03-13 | 2010-07-21 | 株式会社東芝 | Vpn通信検出方法及び装置 |
US20080159288A1 (en) | 2006-12-29 | 2008-07-03 | Lucent Technologies Inc. | TRAFFIC ENGINEERING AND FAST PROTECTION USING IPv6 CAPABILITIES |
US8868775B2 (en) | 2008-02-10 | 2014-10-21 | Cisco Technology, Inc. | Load balancing manipulation of packet flows within a transport conduit |
US9253062B2 (en) * | 2011-12-23 | 2016-02-02 | Ixia | Byte by byte received data integrity check |
US9270584B2 (en) * | 2012-02-28 | 2016-02-23 | Cisco Technology, Inc. | Diverse paths using a single source route in computer networks |
US9071541B2 (en) | 2012-04-25 | 2015-06-30 | Juniper Networks, Inc. | Path weighted equal-cost multipath |
US9094323B2 (en) * | 2013-06-26 | 2015-07-28 | Cisco Technology, Inc. | Probe packet discovery of entropy values causing specific paths to be taken through a network |
US9461910B2 (en) * | 2013-07-29 | 2016-10-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for using entropy labels in segment routed networks |
US9210089B2 (en) * | 2013-10-21 | 2015-12-08 | Cisco Technology, Inc. | LSP ping/trace over MPLS networks using entropy labels |
-
2013
- 2013-12-20 US US14/136,259 patent/US9967183B2/en active Active
-
2014
- 2014-12-22 EP EP14873096.3A patent/EP3072274B1/en active Active
- 2014-12-22 CN CN201480070004.5A patent/CN106105130B/zh active Active
- 2014-12-22 WO PCT/CN2014/094503 patent/WO2015090240A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101729135A (zh) * | 2008-10-29 | 2010-06-09 | 上海华为技术有限公司 | 无线网状网的传输方法、通信设备及通信*** |
CN101534573A (zh) * | 2008-11-20 | 2009-09-16 | 上海交通大学 | 无线自组织网络中链路层实现传输层确认的方法 |
CN103181131A (zh) * | 2010-10-29 | 2013-06-26 | 瑞典爱立信有限公司 | 最短路径桥接网络中的负载平衡 |
CN102916894A (zh) * | 2012-11-08 | 2013-02-06 | 华为技术有限公司 | 一种网络流量转发的方法和源路由设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106105130A (zh) | 2016-11-09 |
EP3072274A1 (en) | 2016-09-28 |
EP3072274B1 (en) | 2018-03-07 |
US9967183B2 (en) | 2018-05-08 |
US20150180771A1 (en) | 2015-06-25 |
WO2015090240A1 (en) | 2015-06-25 |
EP3072274A4 (en) | 2016-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106105130B (zh) | 一种在源路由中提供熵源的方法和设备 | |
US9680751B2 (en) | Methods and devices for providing service insertion in a TRILL network | |
US11374848B2 (en) | Explicit routing with network function encoding | |
US9843504B2 (en) | Extending OpenFlow to support packet encapsulation for transport over software-defined networks | |
US8509087B2 (en) | Per-graph link cost assignment in layer 2 multipath networks | |
JP6527880B2 (ja) | フロールーティング、スケーラビリティおよびセキュリティの向上を伴う、自律システム内および自律システム間のトラフィックのソフトウェア定義ルーティングのためのシステムならびに方法 | |
US10033641B2 (en) | Deterministic and optimized bit index explicit replication (BIER) forwarding | |
CN102415065B (zh) | 在有路由的网络中冗余主机连接的方法和装置 | |
US10778584B2 (en) | System and method for multi-path load balancing in network fabrics | |
US8244909B1 (en) | Method, apparatus and networking equipment for performing flow hashing using quasi cryptographic hash functions | |
US8792506B2 (en) | Inter-domain routing in an n-ary-tree and source-routing based communication framework | |
JP5373625B2 (ja) | マルチキャストルーティングのための方法および装置 | |
CN108462646B (zh) | 一种报文处理方法及装置 | |
Kempf et al. | OpenFlow MPLS and the open source label switched router | |
US20160197812A1 (en) | Network status mapping | |
CN108574639A (zh) | Evpn报文处理方法、设备及*** | |
WO2018187049A1 (en) | Digital signature systems and methods for network path trace | |
EP2677704B1 (en) | Unicast data frame transmission method and apparatus | |
JP6589060B2 (ja) | ソフトウェア定義ネットワークのエントリ生成およびパケット転送 | |
US11784984B2 (en) | Methods to strengthen cyber-security and privacy in a deterministic internet of things | |
CN102150148A (zh) | 层2拓扑中针对单播帧和多播帧的差别化服务 | |
CN111147372B (zh) | 下行报文发送、转发方法和装置 | |
CN102891800A (zh) | 获知溢出地址的可升级转发表 | |
TWI543567B (zh) | 在電腦網路中進行封包的多路徑路由選擇的裝置及其方法 | |
Chen et al. | Scalable and flexible traffic steering for service function chains |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |