MPLS分段路由的制作方法

文档序号:14453248阅读:344来源:国知局
MPLS分段路由的制作方法

本申请根据美国法典§119(e)的法令35要求于2012年10月5日提交、发明人为Daniel C.Frost、Stewart F.Bryant和Clarence Filsfils、题为“使用链路由的方法”的美国临时专利申请No.61/710,121的国内权益。



背景技术:

在计算机网络中,分组是由网络运载的格式化数据单元。分组通常包含两种数据:控制数据和载荷数据。控制数据提供网络需要递送分组的信息,例如:源地址和目的地地址、类似校验和的错误检测码以及排序信息。通常,在分组头部和尾部发现控制信息,而载荷数据在两者之间。

路由器是在网络内或网络之间转发分组的设备。路由器可以连接到来自不同网络的两个或多个数据线路。当数据分组经由这些线路之一到达时,路由器可以读取分组中的地址信息来确定其最终目的地。然后,使用路由表或路由策略中的信息,路由器可以将分组指向其目的地。

附图说明

通过参照附图,本公开可以被更好地理解,并且使得其多个对象、特征及优点对于本领域技术人员而言是显而易见的。

图1是示出示例网络的框图。

图2是示出可以在图1的网络中被使用的示例路由器的框图。

图3是示出可以在图1的网络中被使用的另一路由器示例的框图。

图4示出由图3的路由器计算得到的示例路径集。

图5是示出由如图3中所示的路由器实现的处理的某些方面的流程图。

图6是示出可以在图1的网络中被使用的示例路由器的某些部件的框图。

具体实施方式

概述

公开了MPLS分段路由。在一个实施例中,第一核心路由器生成第一数据结构,该第一数据结构将第一端口代码映射到相应第一邻居路由器或相应第一链路的标识。第一端口代码标识第一核心路由器的相应第一端口,并且这些第一端口分别经由这些第一链路分别被耦合于这些第一邻居路由器。第一核心路由器生成并发送第一链路状态分组,该第一链路状态分组包括第一数据结构和第一核心路由器的标识。

路由

路由是将网络流量(例如,分组)转发至目的地的过程。路由在许多种网络中被执行。在多协议标签交换(MPLS)网络中,分组路由通常遵照两个基本范式之一:使用IP路由表或转发表中的信息、基于目的地互联网协议(IP)地址的路由,或者通过经由例如对资源预留协议(RSVP-TE)的流量工程的扩展而被构建的网络、基于沿明确路径的路由。

本公开描述了用于在MPLS使能网络中沿着具体路径来对分组进行指向的方法,应当理解,所附权利要求不应当被限制为在MPLS使能网络中使用。而且,本公开中所描述的方法可以沿着具体路径来对分组进行指向,无需RSVP-TE创建的预先存在的流量工程路径。

该方法可以提供各种优点。例如,本文所描述的方法可以当在受制于等价多路径(ECMP)负载均衡的MPLS使能网络中结合操作、管理和维护(OAM)操作来使用时是有利的。ECMP是一种路由策略,在该策略中,下一跳分组转发至单个目的地可以通过路由度量计算中获得并列最高位置的多个“最佳路径”而发生。在MPLS使能网络中,OAM操作的实现方式可能具有挑战性,其中,MPLS使能网络受制于在节点A和节点B之间传输的流量由于ECMP负载均衡而可以穿越A和B之间的多个路径的行为。OAM操作可能受挫于ECMP,因为在没有针对OAM分组创建流量工程隧道的情况下,可能不存在指定该OAM分组所沿行的路径的方法,其中,OAM操作被设计为对诸如分组丢失或传输延时之类的路径变量进行监控或测量。

路由表

路由表可以被用在MPLS使能网络中以转发分组。路由表可以被存储在网络节点(例如,路由器)中,并且列出至特定目的地的路由,在一些情形中,列出与这些路由相关联的度量(例如,距离)。仅为解释的目的,网络节点在本文中主要被描述为路由器。然而,网络节点可以包括一个或多个路由器、一个或多个网桥、一个或多个交换机以及任意其他合适的通信处理设备中任意合适的组合。

构建路由表是路由协议的主要目标之一。存在许多种路由协议。内部网关协议(IGP)是为创建路由表的目的而在自主系统中交换路由信息的路由协议。相反,外部网关协议(EGP)被用来确定自主系统之间的网络可到达性,但使用IGP。自主系统是由一个个体或组织控制的单个路由域(例如,网络)。

IGP可以被划分为若干个种类,其中一种是链路状态路由协议。链路状态路由协议(例如,中间系统到中间系统(IS-IS))的基本概念是每个路由器以图形的形式构建网络连通性的拓扑地图,示出哪些路由器被连接到哪些其他的路由器。每个路由器可以使用其地图来独立计算从其至网络中每个可能的目的地的最佳逻辑路径。最佳路径的集合然后将形成路由表。

构建路由表可以通过几个步骤来实现。首先,每个路由器识别其邻居路由器或者通过完整的功能通信链路而被直接连接到该路由器的路由器。路由器可以使用简单的可到达性协议来完成上述操作,其中,所述简单的可到达性协议分别对其直接连接的邻居路由器来运行。接下来,每个路由器周期地并且在连通性更改的情形中创建被称为链路状态分组的短消息,该链路状态分组对该路由器及其直接连接的所有其他的路由器进行标识。链路状态分组还可以包括序列号,该序列号随着路由器每次生成新版本的链路状态分组而增大。一旦链路状态分组被创建,该链路状态分组将被洪泛至整个网络。

针对网络中的每个其他路由器,网络中的每个路由器可以记住该路由器接收到的最近的链路状态分组的序列号。当链路状态分组被接收时,路由器查找该路由器针对广播路由器(即,起初创建该链路状态分组的路由器,该路由器的标识被包含在该链路状态分组中)已经存储的序列号。如果该链路状态分组比已经保存的更新,则副本被转发给该路由器的每个邻居。该过程快速得到至网络中的每个路由器的每个路由器的链路状态分组的最新版本的副本。

利用完整的链路状态分组集,路由器可以产生网络地图。该处理的算法通过包含在链路状态分组集合中的信息进行简单地迭代;对于每个路由器,该算法在网络地图上建立从发送该链路状态分组的路由器至该分组指示的直接耦合的邻居的所有路由器的线路。一旦每个路由器知道所有其他的路由器以及连接它们的链路,则该路由器运行Dijkstra最短路径优先算法来确定并记录从其自己至所有其他路由器的最短路径。该处理还可以包括产生路由表。

MPLS

与基于网络地址和路由表来转发分组的IP相反,MPLS基于最短路径标签(以下称为标签)将分组从一个路由器转发至下一路由器。应当注意,MPLS使能路由器可以使用路由表来接收并发送IP分组(非MPLS)。

MPLS网络可以经由标签交换路径(LSP)来发送分组。分组可以经由入口(ingress)标签交换路由器(LSR)进入MPLS网络,沿着一个或多个核心LSR的LSP来行进,并且经由出口(egress)LSR退出。一般,MPLS网络的入口LSR将标签分配给传入(incoming)数据分组。当将标签分配给传入分组时,入口LSR查看该分组的IP头部的信息(例如,源地址和/或群组地址)以及一些其他信息(例如,分组到达的接口),以确定要分配的适当的标签。入口LSR可以潜在地使用一系列属性(而非仅仅使用分组的目的地地址)来对每个分组进行分类,以确定要使用哪个LSP。有标签的分组被沿着可以包括多个核心LSR的LSP向下游进行转发,其中,每个核心LSR基于被附连到其接收到的分组的标签来决定转发分组的方式。更具体地,LSR可以使用标签信息库(LIB)表来将其接收到的分组的标签映射到传出(outgoing)标签和传出接口。这可以允许使用十分快速并且简单的转发引擎,这些引擎通常被实现在硬件中。LSR将分组的标签与映射后的传出标签进行调换,其中,传出标签告诉LSP中的下一跳LSR如何转发分组。该分组经由也在LIB中被标识的传出接口被发送至下一跳LSR。LSR以逐跳的方式对分组进行转发,直到分组到达出口LSR。以这种方式,LSR基于标签做出转发决策。由于MPLS使用标签来转发分组,因此,MPLS是独立于协议的,从而有MPLS中的术语“多协议”。MPLS可以被用来运载任何内容(不仅仅是分组)。

存在两个主要的用于管理MPLS路径的标准化控制协议:标签分布协议(LDP)和RSVP-TE(资源预留协议(RSVP)针对流量工程的扩展)。不幸地是,使用LDP或RSVP-TE通过MPLS网络来创建LSP可能在计算上十分昂贵。

LDP是由IETF(RFC 5036)为在MPLS环境中分布标签的目的而定义的协议。在LDP中,具有建立起的会话的两个路由器被称为LDP对等端,它们交换包括本地相关的MPLS标签在内的信息。LDP依赖于由IGP提供的潜在的路由表。与TE路径(使用约束和明确路由来建立端到端LSP)不同,LDP被用来通过信号通知最努力的LSP。尽管使用LDP或RSVP-TE创建的路径可以被用来经过MPLS网络而移动分组,但当入口LSR接收到用于转发的分组时,经过该网络的整个路径不一定为入口LSR所知。而是,如果恰当的标签被附连到入口LSR接收到的分组,则该入口LSR可以简单地知道该分组将到达目的地出口LSR。

分段路由

分段路由指定分组使用端口代码栈通过网络所采用的路径。在分段路由的一个实施例中,分组被封装有头部,该头部包括端口代码栈。分组和头部可以通过在每一跳处从栈中弹出最顶端的端口代码来经过网络被转发,并且将具有头部的分组经由被映射到所弹出的端口代码的路由器的退出端口转发给下一跳。下面更加详细地描述如何创建和使用端口代码栈。

图1以框图的形式示出能够使用分段路由来传输分组的示例MPLS使能网络102的相关部件。为解释的目的,网络102中的每个路由器使用MPLS和IGP或其修改后的版本。为方便说明,图1中的每个路由器均指代LSR。应当理解,术语网络不应该被限制为图1中所示出的网络。网络可以比图1所示的示例更加复杂。

网络102的每个LSR被分配以标识(identity)(例如,IP地址)。图1中的核心LSR被标识为A-D,而边界LSR被标识为X和Y。每个路由器具有被耦合于通信链路的多个接口或端口。每个端口与端口代码相关联。例如,核心LSR A包括与端口代码“1”、“3”和“7”相关联的至少三个端口。核心LSR A的两个端口经由独立的通信链路被耦合于核心LSR C并被分配以端口代码“1”和“3”。在一个实施例中,端口代码可以采用路由器内所生成的20比特MPLS标签的形式。

如图1所示,边界LSR X和Y分别与路由器104和106进行数据通信,其中,路由器104和106位于网络102外部。在该配置中,边界LSR X可以经由路由器104从源S(例如,服务器)接收数据分组。这些分组经由路由器106最终去往接收机R(例如,台式计算机)。边界LSR X可以将其接收到的这些数据分组经由边界LSR X所选择的穿越两个或多个核心LSR的路径发送至边界LSR Y。该路径可以是预定的,或者该路径可以被即时(on the fly)(即,当边界LSR X接收到分组时)计算。例如为了测量或监控网络102内的具体路径,边界LSR X还能够生成用于传输至网络102中的其他LSR(包括边界LSR Y)的OAM分组。LSR X可以将端口代码栈附连到与所选择的路径相对应的分组。端口代码栈可以是预定的,或者端口代码栈可以被即时(例如,当LSR X接收到分组时)计算。如将进行更加完整地描述,端口代码栈告诉路径中的LSR如何将分组路由到目的地LSR。

图2以框图的形式示出网络102内的示例核心LSR 200的某些部件。核心LSR 200包括经由功能通信链路而被耦合于邻居LSR的多个端口202。每个端口202由相应的端口代码进行标识。在所示的实施例中,核心LSR 200还包括与分组转发引擎206进行数据通信的IGP管理器204。每个IGP管理器204和分组转发引擎206可以使用硬件、固件和软件的适当组合来实现。在一个实施例中,每个IGP管理器204和分组转发引擎206可以使用在核心LSR 200的一个或多个处理器上运行的指令来实现。应当注意,核心LSR 200可以包括其他部件,例如,网络拓扑生成器。

IGP管理器204可以被配置为生成与上述链路状态分组类似的链路状态分组。这些链路状态分组可以被用来利用核心LSR 200相关信息(包括将端口代码映射到邻居LSR标识(例如,IP地址或其他标识)或者其之间的通信链路的表或其他数据对象)对网络102进行洪泛。仅出于解释的目的,假设端口代码被映射到邻居LSR或去往邻居LSR的链路,应当理解,所附权利要求不应被限制于此。网络102中的LSR可以使用端口代码与邻居LSR标识之间的映射来创建端口代码栈,这将进行更加完整地描述。

IGP管理器204可以实现可到达性协议来识别邻居LSR(即,通过功能通信链路经由相应端口202被直接耦合的LSR)。一旦邻居LSR被识别,IGP管理器204分别将邻居LSR的标识(例如,IP地址)映射到分别针对端口202的端口代码,可以通过这些端口代码到达相应的邻居LSR。之后,IGP管理器204可以创建链路状态分组,该链路状态分组包含将邻居LSR的标识映射到相应端口代码的表或其他对象。该链路状态分组还应该包括核心LSR 200的标识(例如,IP地址)。附加信息可以被包含在链路状态分组中。例如,链路状态分组可以包含序列号,该序列号随着每次IGP管理器204生成链路状态分组而被增大。此外,链路状态分组还可以包含针对可到达的邻居LSR的单独的标识列表,该列表被用来创建拓扑地图。最后,IGP管理器204可以利用链路状态分组来洪泛网络102。在一个实施例中,链路状态分组可以经由转发引擎206而被洪泛。

图3示出图1中所示的示例边界LSR X的某些部件。图3中所示的LSR只是可以在网络中被使用的边界LSR的一个示例。LSR X包括IGP管理器304,IGP管理器304可以使用硬件、固件和软件的任意合适组合来实现。例如,LSR X可以使用在一个或多个处理器上运行的软件指令来实现。IGP管理器304可以根据上述IGP的许多原理进行操作。IGP管理器304能够经由端口302从网络102的其他LSR接收链路状态分组。这些接收到的链路状态分组可以与参照图2所描述的链路状态分组示例类似。每个链路状态分组标识了广播LSR(即,链路状态分组起源的LSR)和该广播分组被直接连接到的所有邻居LSR。此外,链路状态分组可以包括将邻居LSR的标识与标识了被耦合至这些邻居LSR的广播路由器的端口的相应端口代码进行映射的表或其他对象。链路状态分组可以包含诸如序列号之类的其他信息。IGP管理器304将来自链路状态分组的信息存储于链路状态和策略存储器306(以下称为链路状态存储器)中。

对于IGP管理器304接收到的每个链路状态分组,IGP管理器304可以将广播该链路状态分组的LSR的标识和该广播LSR的邻居LSR的标识存储于链路状态存储器306中。IGP管理器304还可以存储将LSR或链路标识映射到端口代码的表。图3示出了由LSR X存储于链路状态存储器306中的用于被标识为A-D的路由器响应于接收到相应链路状态分组的表。如图所示,每个表被存储有广播该表的LSR并且由该LSR进行标识。这些表可以被用来创建下面将进行详细描述的端口代码栈。链路状态存储器306还可以存储附加信息(例如,由LSR X当转发分组时所使用的策略考量)。

当IGP管理器304接收到针对网络102的完整的链路状态分组集时,拓扑地图生成器310可以处理存储于链路状态存储器306中的链路状态分组的信息,并且生成用来存储于网络地图存储器312中的网络地图。地图生成器310针对该处理所使用的算法可以通过链路状态存储器306中的信息进行迭代。例如,对于每个表和LSR标识,地图生成器310可以在网络102的地图上建立从所识别的LSR至表指示为直接耦合的邻居的所有LSR的链路。可以使用硬件、固件和软件的任意合适组合来实现拓扑地图生成器310。在某些实施例中,可以使用在一个或多个处理器上运行的指令来实现拓扑地图生成器310。

路径或路由生成器320可以基于网络地图存储器312中所包含的拓扑地图来计算去往网络102内的其他LSR的路径。路由生成器320可以在路由器接收要被递送至目的地LSR的分组之前对去往该目的地LSR的路径进行计算,或者路由生成器320可以当路由器接收要被递送至目的地LSR的分组之前对去往该目的地LSR的路径进行计算。每个路径可以被计算为LSR X与目的地LSR(例如,边界LSR Y)之间的跳的序列。该序列可以以路径中LSR的标识或通信链路来表达。为解释的目的,所生成的路径将被表达为LSR标识的序列,应当理解,所附权利要求不应被限制于此。路径可以可选地省略LSR X的标识。去往每个目的地LSR的路径可以被存储于路径/栈存储器318中。图4示出由生成器320计算的从LSR X至LSR Y的示例路径集,其中,每个路径由LSR标识序列来定义。可以使用硬件、固件和软件的任意合适组合来实现路径或路由生成器320。在某些实施例中,可以使用在一个或多个处理器上运行的指令来实现路径或路由生成器320。

分段生成器316可以针对路径/栈存储器318中的每个路径计算至少一个端口代码栈。分段生成器316可以预先计算路径的端口代码栈,或者分段生成器316可以按需计算端口代码栈。在一个实施例中,在该处理期间,分段生成器316使用链路状态存储器306中将LSR标识映射到端口代码的表。可以使用硬件、固件和软件的任意合适组合来实现分段生成器316。在某些实施例中,可以使用在一个或多个处理器上运行的指令来实现分段生成器316。

图5示出描述创建端口代码栈的示例方法的某些方面的流程图。具体如图5所示,该方法在分段生成器316选择路径/栈存储器318中的特定路径时开始。在504处,分段生成器316选择该路径中所标识的第一LSR,并且将其标记为“当前”LSR。例如,在从LSR X至LSR Y的包含LSR跳X-B-D-Y的路径中,第一LSR X被选为初始的“当前”LSR。在步骤506中,生成器316根据所选择的路径来选择下一跳LSR,并且将其标记为“下一跳”LSR。在步骤510中,被指定为“当前”LSR的标识然后被用来访问链路状态存储器306中相应的LSR标识/端口代码表。在步骤512中,从所访问的表中读取被映射到被指定为“下一跳”LSR的标识的端口代码。如步骤514中所示,该端口代码被添加到栈中。生成器316然后确定另一跳是否被包含在所选择的路径中。如果是,则生成器316在步骤520中将被指定为“下一跳”的LSR重新标记为“当前”LSR。之后,可以重复步骤504至516。最终,当最后的端口代码在步骤514中被添加到栈中时,或者换言之,当路径中的最后一跳LSR被识别时,该处理结束,并且生成器316在步骤522中将端口代码栈映射到路径/栈存储器306中的路径。图4示出了由生成器316创建的被映射到路径/栈存储器318中的路径的示例端口代码栈。

一旦端口代码栈被创建,LSR X可以使用它来通过网络102传输分组。继续参照图1和图3,分组转发引擎314可以被连接至端口302中的每个端口。可以使用硬件、固件和软件的任意合适组合来实现转发引擎314。在某些实施例中,可以使用在LSR X的一个或多个处理器上运行的指令来实现转发引擎314。

转发引擎314可以从被连接至路由器104的端口302之一接收分组(例如,数据分组),或者分组转发引擎314可以从OAM管理器322接收OAM分组。分组转发引擎使用被包含在所接收的分组中的信息(例如,源地址和/或目的地地址)来选择路径/栈存储器318中可以到达该分组所去往的LSR的若干路径(如果这些路径预先存在于路径/栈存储器318中)之一。例如,转发引擎314可以从路由器104接收最终去往接收机R的数据分组。转发引擎314可以使用被包含在该分组中的信息以确定图1中所示的边界LSR Y是网络102内的目的地,在该处,该分组应被发送以到达接收机R(即,最终目的地)。

存在可以被选择来将接收到的分组转发至边界路由器Y的许多路径。图4示出路径/栈存储器306中可以被选择的示例预先存在的路径。在路径和/或端口代码栈被即时创建的实施例中,路径/栈存储器306在分组被接收时可能没有存储感兴趣的路径,并且在该实施例中,路由生成器可以使用所接收的分组中的信息来计算一个或多个路径以存储于路径/栈存储器306中。转发引擎可以使用链路状态存储器306中的策略信息来选择路径/栈存储器306中的路径中的适当路径。例如,转发引擎314可以选择具有去往边界LSR Y的最少数目的跳的路径。在负载均衡的尝试中,转发引擎314可以选择没有包含最少数目的跳的去往边界LSR Y的路径。无论如何,转发引擎314根据存储于链路状态存储器306中的策略或各种选择算法中的任意算法来选择路径之一。之后,如果被映射到路径/栈存储器318中所选择的路径的端口代码栈预先存在于路径/栈存储器318中,则转发引擎314读取该端口代码栈。在路径和/或端口代码栈被即时创建的实施例中,在分组被接收时,路径/栈存储器306可能没有存储感兴趣的端口代码栈,并且在该实施例中,可以由分段生成器316针对该路径来计算端口代码栈,并且将其映射到路径/栈存储器306中的路径。一旦该路径被即时选择或计算,相应的端口代码栈被添加到封装该分组的MPLS头部,并且具有此头部的分组后续被转发出由该栈的顶端的端口代码所标识的端口302。在一个实施例中,该栈的顶端的端口代码在具有此头部的分组被转发至网络102中的下一跳LSR之前被弹出。

继续参照图1至图3,当核心LSR(例如,图2中所示的核心LSR200)接收到具有端口代码栈的分组时,核心LSR的转发引擎314从栈的顶端弹出端口代码栈,并且经由所弹出的端口代码所标识的端口将分组随该端口代码栈一起转发给下一跳LSR。可以在下游的跳中继续该处理,直到数据分组到达其目的地(例如,边界路由器Y)为止。如果核心路由器是路径中距离目的地LSR的倒数第二跳,则在一个实施例中,端口代码栈将不包含其他端口代码。

上面的图2和图3示出了网络102中所采用的示例LSR的相关部件。图6是示出可以在网络102中使用的LSR的某些附加和/或替代部件的框图。在该描绘中,LSR 600包括多个线卡(线卡602(1)-(N)),这些线卡经由数据总线630和结果总线640被通信地耦合到转发引擎或分组转发器610和处理器620。线卡602(1)-(N)包括多个端口处理器650(1,1)-(N,N),由端口处理器控制器660(1)-(N)来控制这些端口处理器。还应当注意,转发引擎610和处理器620不仅仅经由数据总线630和结果总线640相互耦合,而且还通过通信链路670彼此通信地耦合。

每个线卡602的处理器650和660可以被安装在单个印刷电路板上。当接收到分组时,可以由路由器600以下面的方式对分组进行识别和分析。一旦被接收,分组(或其一些控制信息或其全部控制信息)被从端口处理器650(1,1)-(N,N)之一(分组在该端口处理器处被接收)发送到耦合于数据总线630的那些设备中的一个或多个设备(例如,端口处理器650(1,1)-(N,N)中的其他端口处理器、转发引擎610和/或处理器620)。可以例如由转发引擎610来确定对分组的处理。例如,转发引擎610可以确定分组应该被转发到端口处理器650(1,1)-(N,N)中的一个或多个。这可以通过向端口处理器控制器660(1)-(N)中相应的一个(或多个)指示以下内容来完成:保存在端口处理器650(1,1)-(N,N)中给定的一个(或多个)中的分组应该被转发至端口处理器650(1,1)-(N,N)中适当的一个。此外,或者可替代地,一旦分组已被识别为处理,转发引擎610、处理器620等可以被用来以相同的方式处理该分组,或者添加分组安全信息以确保分组安全。在发起这样的分组的节点上,该处理可以包括例如:对分组的信息中的一些或全部进行加密,添加能够保证分组安全的数字签名或一些其他信息或处理。在接收这样处理过的分组的节点上,执行相应的处理来恢复或验证已被保护的分组的信息。

尽管已结合若干实施例对本公开进行了描述,但不意欲将本公开限制为本文所提出的具体形式。相反,旨在覆盖可以被合理包括在所附权利要求所限定的本公开的范围内的替代、修改和等同。

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