参考文档:华为产品文档
MPLS TE简介
定义
MPLS TE(MPLS Traffic Engineering),即MPLS流量工程。MPLS流量工程通过建立基于一定约束条件的LSP隧道,并将流量引入到这些隧道中进行转发,使网络流量按照指定的路径进行传输,达到流量工程的目的
目的
传统的IP网络中,节点选择最短的路径作为最优路由,不考虑带宽等因素。这样的选路方式容易出现流量集中于最短路径而导致拥塞,而其他可选链路则较为空闲,如图1中所示。
图1 传统路由选路
图1中,假设每个链路的metric值相同且每段链路的带宽都是100Mbit/s。其中,Switch_1向Switch_4发送的流量为40Mbit/s,Switch_7向Switch_4发送的流量为80Mbit/s。IGP路由的计算结果是基于最短路径的,如图中的Path1和Path2,所有流量均经过链路Switch_2→Switch_3→Switch_4,此时该链路出现过载而引起拥塞,而另外一条链路Switch_2→Switch_5→Switch_6→Switch_4则处于空闲状态。
针对这种由于网络资源分配不合理引起的拥塞问题,可以通过流量工程来解决,即将一部分流量分配到空闲的链路上,使网络中流量的分配更合理。
在MPLS TE出现之前,有如下两种流量工程的解决方案:
- IP流量工程:通过调整路径Metric而控制网络流量的传输路径,这种解决方法能够解决某些链路上的拥塞,但是可能会引起另外一些链路拥塞。另外,在拓扑结构复杂的网络上,Metric值的调整比较困难,往往一条链路的改动会影响多条路由,难以把握和权衡。
- ATM流量工程:现有的IGP协议都是拓扑驱动,只考虑网络的连接情况,但不能灵活反映带宽和流量特性这类动态状况。解决这种缺陷的一种方法是使用IP over ATM重叠模型。ATM流量工程采用这种重叠模型建立虚连接引导部分流量,从而容易实现流量的合理调配和良好的QoS功能。然而,实际应用中实施ATM流量工程时额外开销大且可扩展性差。
为了在大型骨干网络中部署流量工程,必须采用一种可扩展性好、简单的解决方案。MPLS作为一种叠加模型,可以方便地在物理的网络拓扑上建立一个虚拟的拓扑,然后将流量映射到这个拓扑上。因此,MPLS与流量工程相结合的技术应运而生,即MPLS TE。
对于图1中的拥塞问题,MPLS TE通过建立一条带宽为80Mbit/s、路径为Path1的LSP,另一条带宽为40Mbit/s、路径为Path2的LSP,并将流量引入到这两条LSP中传输,从而解决上述拥塞问题。
图2 MPLS流量工程
受益
MPLS TE可以在不进行硬件升级的情况下对现有网络资源进行合理调配和利用,并对网络流量提供带宽和QoS保证,最大限度的节省企业成本。由于其基于MPLS技术实现,因此易于在现有网络部署和维护。同时,MPLS TE具有丰富的可靠性技术,能够给骨干网络提供网络级和设备级的可靠性。
MPLS TE隧道主要用于承载MPLS L2VPN和MPLS L3VPN业务,使得VPN业务不仅有良好的安全性,而且有可靠的QoS保证。
MPLS TE基本概念
LSP隧道
对于一条LSP,一旦在Ingress节点给报文打上标签,流量的转发就完全由标签决定了。流量对LSP的中间节点是透明的,从这个意义上来说,一条LSP可以看作是一条LSP隧道。
MPLS TE隧道
在MPLS TE中,经常会把多条LSP联合起来使用,并将这些LSP与一个虚拟隧道接口关联起来,这样的一组LSP称为MPLS TE隧道。MPLS TE隧道涉及以下几个概念:
- 隧道接口:隧道接口是为实现报文的封装而提供的一种点对点类型的虚拟接口,与Loopback接口类似,都是一种逻辑接口。
- 隧道标识(Tunnel ID):采用十进制数字来唯一标识一条MPLS TE隧道,以便对隧道进行规划和管理,这个数字称为Tunnel ID。
- LSP标识(LSP ID):采用十进制数字来唯一标识一条LSP,以便对LSP进行规划和管理,这个数字称为LSP ID。
比如图1中,有两条LSP,其中一条路径LSRA→LSRB→LSRC→LSRD→LSRE作为主路径(LSP ID=2),另外一条LSRA→LSRF→LSRG→LSRH→LSRE作为备份路径(LSP ID=1024),而两条LSP隧道都对应同一个隧道ID为100的MPLS TE隧道Tunnel1。
图1 MPLS TE隧道与LSP隧道
链路属性
MPLS TE的链路属性用于标识一条物理链路上的带宽资源使用情况、路由成本及链路的可靠性,包括如下内容:
-
链路总带宽
物理链路所具有的带宽值。
-
最大可预留带宽
本链路中可以预留给MPLS TE隧道使用的带宽值,最大可预留带宽小于等于链路总带宽。
-
TE Metric
链路的TE度量。为了增强对TE隧道路径计算中的可控性,MPLS TE提供了TE Metric,使得隧道在计算路径时能更独立于IGP的路由选路。缺省情况下,链路采用IGP的度量值作为TE度量值。
-
SRLG
共享风险链路组SRLG(Shared Risk Link Group)是一组共享一个公共的物理资源(比如共享一根光纤)的链路。同一个SRLG的链路具有相同的风险等级,即如果SRLG中的一条链路失效,组内的其他链路也失效。
-
链路管理组
也称为链路颜色,是一个表示链路属性的32位向量,在实际的使用中其中的每一个比特位都可以设置或不设置,网络的管理员可以将其关联为任何需要的意义。比如说,用来表示链路的带宽、性能或者完全出于管理策略(比如标识这段链路上有MPLS TE隧道经过或者这段链路上承载的为组播业务)。链路管理组需要和亲和属性配合使用来达到控制隧道路径的目的。
隧道属性
MPLS TE隧道所使用的LSP称为基于一定约束条件建立的LSP,通常简称为CR-LSP(Constraint-based Routed Label Switched Path),这些约束条件可以称为隧道属性。
与普通LSP(比如LDP LSP)不同,CR-LSP的建立不仅依赖路由信息,还需要满足其他一些约束条件,这些约束条件包括带宽约束和路径约束两个方面:
-
带宽约束
主要为隧道带宽。
-
路径约束
主要包括显式路径、优先级与抢占、路径锁定、亲和属性和跳数限制。
建立和管理约束条件的机制称为基于约束的路由CR(Constraint-based Routing),下面对CR的主要内容进行介绍。
- 隧道带宽
隧道的带宽值,需要根据隧道要承载的业务进行规划,隧道建立时,将根据这个值在隧道的沿途进行带宽预留,从而为业务提供带宽保证。
- 显式路径
显式路径是指在CR-LSP建立时由用户手工指定其必须经过(或避开)指定的节点,可以分为如下两种:
- 严格显式路径
严格方式可以指定路径上必须经过哪些节点,下一跳与前一跳必须直接相连。通过严格显式路径,可以最精确地控制LSP所经过的路径。
LSRA作为LSP的入节点,LSRF作为出节点,从LSRA到LSRF用严格显式路径建立一条LSP。“LSRB Strict”表示该LSP必须经过LSRB,并且LSRB的前一跳是LSRA,“LSRC Strict”表示该LSP必须经过LSRC,并且LSRC的前一跳是LSRB,依此类推,就可以精确控制该条LSP所经过的路径。 - 松散显式路径
松散方式可以指定路径上必须经过哪些节点,但是列出的节点之间可以有其他节点。
从入节点LSRA到出节点LSRF用松散显式路径建立一条LSP。“LSRD Loose”表示该LSP必须经过LSRD,但是LSRD与LSRA之间可以存在其他LSR,不必直接相连。
- 优先级与抢占
优先级与抢占能根据TE隧道承载业务的重要程度来解决隧道建立过程中的资源竞争问题。
隧道使用建立优先级(Setup Priority)和保持优先级(Holding Priority)来决定是否可以进行抢占。优先级用来指示新建路径和当前已经建立路径之间的抢占关系,如果新建CR-LSP的建立优先级高于已经建立CR-LSP的保持优先级,则前者抢占后者的资源。优先级的范围从0到7,7为最低优先权。同一条隧道的建立优先级不能高于保持优先级。
如果在建立隧道的过程中,无法找到满足所需带宽要求的路径,则拆除另外一条已经建立的路径,占用为它分配的带宽资源,这种处理方式称为抢占(Preemption)。抢占分为硬抢占和软抢占两种:
- 硬抢占:高优先级的隧道和低优先级隧道发生资源竞争时,高优先级隧道直接抢占低优先级隧道的资源,通常会造成低优先级隧道的部分流量丢失。
- 软抢占:高优先级的隧道和低优先级隧道发生资源竞争时,采用Make-Before-Break的原则,直到低优先级隧道的流量切换到新TE隧道后,高优先级隧道才抢占原低优先级隧道的资源。
优先级和抢占属性共同决定隧道之间的资源抢占关系。当多条隧道需要建立时,建立优先级高的LSP隧道优先占有资源、优先建立。当带宽等资源不够时,保持优先级低的、已建成的LSP隧道的带宽资源可能被一个建立优先级高的并且资源不够的LSP隧道抢占。
如下图所示,各个链路的带宽分布如图中所示,每个链路的Metric值都相同。存在两条TE隧道:
- Tunnel 1:路径为Path1,带宽需求为100Mbit/s,建立和保持优先级为0。
- Tunnel 2:路径为Path2,带宽需求为100Mbit/s,建立和保持优先级为7。
链路故障前
如果LSRB→LSRE间的链路发生了故障,则LSRA会重新计算出Tunnel 1新路径Path3(LSRA→LSRB→LSRF→LSRE)。显然链路LSRB→LSRF的带宽不够Tunnel 1、Tunnel 2共同使用,将发生抢占,如图:
发生抢占
Tunnel 1的新路径建立过程:
- 经过MPLS TE的路径计算后,Path消息沿着LSRA→LSRB→LSRF→LSRE发送,Resv消息沿着LSRE→LSRF→LSRB→LSRA发送。
- 当Resv消息从LSRF发送到LSRB时,在LSRB进行资源预留时,发现带宽不足,发生抢占。此时在两种抢占方式下的处理如下:
在硬抢占方式下:由于Tunnel 1的优先级高于Tunnel 2,LSRB将直接拆除Tunnel 2的路径Path2,并往LSRF发PathTear消息告知删除节点路径信息,往LSRC发送ResvTear消息告知删除节点预留状态。此时如果Tunnel 2存在流量,部分流量将丢失。
在软抢占方式下:LSRB往LSRC发送ResvTear消息,并在LSRB和LSRC不拆除Path2的前提下,沿着Path4重新建立路径。等路径建立完成,将流量切换后,拆除原有的Tunnel 2的路径Path2。
- 路径锁定
当一条CR-LSP建立完成后,网络拓扑变化或者改变某些隧道的属性时,可能导致这条CR-LSP根据实时网络状态重新建立。这里存在两个问题:
- 新建立的LSP路径可能与原路径不同,这就不便于网络管理员的运维管理。
- 流量需要从老的CR-LSP切换到新CR-LSP,这有可能导致流量丢失。
路径锁定可以用来解决上述两个问题。路径锁定是指在CR-LSP建立完成后强制其路径不随路由变化而变化,从而使得业务流量具有连续性,并能够提供一定的可靠性保证。
- 亲和属性
亲和属性(Affinity attribute)是描述TE隧道所需链路的32位向量值,在隧道的首节点来配置实施,需要和链路管理组联合使用。
为隧道配置亲和属性后,隧道在计算路径时,会将亲和属性和链路的管理组属性进行比较,决定选择还是避开某些属性的链路。MPLS TE隧道使用一个32位的掩码表示需要比较的位,通过把链路管理组和隧道的亲和属性与掩码分别相与,如果得到的结果相同,隧道选路时则选择该路径,不同则摒弃该路径。其比较规则如下:
-
在所有掩码为1的位中,管理组中至少有1位与亲和属性中的相应位都为1。亲和属性为0的位对应的管理组属性位不能为1。
举例说明:假设亲和属性为0x0000FFFF,掩码为0xFFFFFFFF,则可用链路的管理组属性高16位只能取0,低16位至少有1位为1。即,可以使用的链路管理组属性取值范围是0x00000001~0x0000FFFF。
-
对于掩码为0的位,则不对管理组的相应位进行检查。
举例说明:假设亲和属性为0xFFFFFFFF,掩码为0xFFFF0000,则可用链路的管理组属性高16位至少有1位为1,低16位则可以任意取0或1,即,可以使用的管理组属性取值范围是0x00010000~0xFFFFFFFF。
不同设备制造商实现的管理组和亲和属性的比较规则可能有所不同,当在同一网络中使用不同设备制造商的设备时,需要事先了解各自的实现方式,以保证不同制造商设备间能够互通。
对于部署MPLS TE隧道的网络管理员来说,可以将链路管理组和隧道亲和属性配合使用来达到控制隧道路径的目的。
- 跳数限制
跳数限制值作为CR-LSP建立时的选路条件之一,就像管理组和亲和属性一样,可以限制一条CR-LSP允许选择的路径跳数不超过某个值。
实现过程
MPLS TE的实现框架如下图所示:
序号 | 功能 | 功能描述 |
---|---|---|
1 | 信息发布 | 除了网络的拓扑信息外,流量工程还需要知道网络的负载信息。为此,MPLS TE通过对现有的IGP进行扩展,来发布TE信息,包括最大链路带宽、最大可预留带宽、当前预留带宽、链路颜色等。每个节点收集本区域所有节点每条链路的TE相关信息,生成流量工程数据库TEDB(TE DataBase)。 |
2 | 路径计算 | 通过CSPF(Constrained Shortest Path First)算法,利用TEDB中的数据来计算满足指定约束的路径。CSPF算法由最短路径优先算法演变而来,它首先在当前拓扑结构中删除不满足隧道约束条件的节点和链路,然后再通过SPF(Shortest Path First)算法来计算。 |
3 | 路径建立 | 建立CR-LSP,CR-LSP包括以下两种:- 静态CR-LSP:静态CR-LSP通过手工配置转发信息和资源信息,不涉及信令协议和路径计算。由于不需要交互MPLS相关控制报文,消耗资源比较小,但静态CR-LSP不能根据网络的变化动态调整,通常适用于拓扑简单、规模小的组网。-动态CR-LSP:设备采用RSVP(Resource Reservation Protocol)TE信令建立CR-LSP隧道。RSVP-TE信令能够携带隧道带宽、显式路径、亲和属性等约束条件。通过信令动态地建立LSP隧道可以避免逐跳配置的麻烦,适用于规模大的组网。为了增强路径建立的安全性和可靠性,可以通过RSVP认证机制实现。 |
4 | 流量转发 | 将流量引入到MPLS TE隧道,并进行MPLS转发。前面三个功能可以实现一条MPLS TE隧道建立,流量转发用于将进入设备的流量引入到MPLS-TE隧道中进行转发。 |
- 对于静态CR-LSP来说,由于其是用户手工建立,因此不涉及信息发布和路经计算。
- 对于动态CR-LSP来说,由于其是信令动态建立,因此上述四个功能都包括。
在网络中部署MPLS TE,需要配置链路属性和隧道属性,之后MPLS TE自动建立相应的隧道。隧道建立后,需要将流量引入隧道进行流量转发。
信息发布
MPLS TE中的信息发布是指通过路由协议发布网络中各节点的资源分配情况。MPLS TE网络中的各个节点尤其是隧道的入节点将根据信息发布的结果决定隧道经过哪些节点。
信息发布的内容
信息发布的内容包括以下几种资源信息:
- 链路状态信息:IGP协议本身收集的信息,如接口IP地址、链路类型、链路开销。
- 带宽信息:包括链路最大物理带宽、最大可预留带宽和每个优先级对应的当前可用带宽。
- TE Metric:链路的TE度量值。缺省情况下,链路采用IGP的度量值作为TE度量值。
- 链路管理组:链路颜色。
- 亲和属性:TE所需的链路颜色。
- SRLG:共享风险链路组,作为备份隧道路径计算的限制条件,使得备份路径不与隧道主路径建立在具有同等风险等级的链路上。
信息如何发布?
TE信息的发布主要是依靠现有链路状态路由协议的扩展,包括OSPF TE和IS-IS TE。两种IGP路由协议会自动收集信息发布内容,并对这些信息进行泛洪,发布给MPLS TE网络中的其他节点。
OSPF TE
OSPF是一种基于链路状态信息的路由协议,具有较强的扩展功能。OSPF定义了第1~5、7类的LSA来携带区域内、区域间、自治系统外部等路由信息,并用于路由计算。但是这几种LSA的固定格式不能够适应MPLS TE的需求,因而出现了Opaque LSA和TE LSA扩展。
– Opaque LSA
Opaque LSA分为三类,分别为第9、10、11类LSA。第9类LSA只能在某一个接口上扩散;第10类LSA只能在某一个区域内扩散;而第11类LSA则与第5类LSA具有相同的扩散范围,可以在除了STUB、NSSA之外的整个自治系统内部扩散。
Opaque LSA与其它几类LSA具有相同的头部结构。只是四字节的Link State ID字段被分为了两部分:“Opaque Type”和“Opaque ID”,如图
最高位的一个字节称为“Opaque Type”,用来区分此LSA的应用类型;低位的三个字节称为“Opaque ID”,用来区分同一种应用类型的不同的LSA。因此,同一种Opaque LSA可以有255种不同的应用,而每一种应用可以在相应的扩散范围内同时拥有16777216个不同的LSA。
例如,应用于OSPF Graceful Restart的LSA属于第9类LSA,其应用类型为“3”;而应用于流量工程扩展的则属于第10类LSA,其应用类型为“1”。
“Opaque Information”字段中是LSA携带的信息,信息格式可由不同的应用根据各自的需求来单独定义。通常采用的格式是一种非常具有扩展能力的TLV(Type/Length/Value)结构:
- Type:标志了这个结构中携带的信息类型。
- Length:标明了“Value”字段的有效字节长度。
- Value:TLV携带的信息。可以是一个TLV结构,这种嵌套的TLV称为“子TLV(sub-TLV)”。
– TE LSA扩展
应用于流量工程扩展的LSA称为TE LSA,属于第10类LSA,其应用类型为“1”。因此,TE LSA都具有“1.x.x.x”形式的Link State ID,而其扩散范围被限制在一个区域内。TE LSA的结构如图所示。
TE LSA使用TLV结构来携带需要的信息。目前只定义了两种TLV:
-
TLV Type 1
Router Address TLV,唯一标识一个MPLS节点,在CSPF中相当于OSPF中的Router ID的作用。
-
TLV Type 2
Link TLV,携带了使能MPLS TE的一条链路的属性。其中,Link TLV中可携带的sub-TLV请参见表1。
表1 Link TLV携带的子TLV
sub-TLV | 说明 |
---|---|
Type1:Link Type(Value域长度为1字节) | 链路类型。• Point-to-Point:值为1 • MultiAccess:值为2 该sub-TLV的Value域后面是3字节的填充域。 |
Type2:Link ID(Value域长度为4字节) | 链路标识,IP地址格式。•Point-to-Point:邻居的OSPF Router ID。•MultiAccess:DR节点的接口IP地址。 |
Type3:Local IP Address(Value域长度为4N字节) | 本地接口的IP地址,可以包含多个本地接口的IP地址,每个4字节。 |
Type4:Remote IP Address(Value域长度为4N字节) | 对端接口的IP地址,可以包含多个对端接口的IP地址,每个4字节。•Point-to-Point链路:使用对端IP地址。•MultiAccess链路:可以使用0.0.0.0,也可以省略此sub-TLV。 |
Type5:Traffic Engineering Metric(Value域长度为4字节) | 在TE链路上配置的TE Metric。ULONG数据格式。 |
Type6:Maximum Bandwidth(Value域长度为4字节) | 链路上的最大带宽。以四个字节存储的浮点数据格式。 |
Type7:Maximum Reservable Bandwidth(Value域长度为4字节) | 链路上的最大可预留带宽。以四个字节存储的浮点数据格式 |
Type8:Unreserved Bandwidth(Value域长度为32字节) | 链路上的8个优先级的可预留带宽。每个优先级都是以四个字节存储的浮点数据格式。 |
Type9:Administrative Group(Value域长度为4字节) | 链路管理组属性。 |
当将一条链路标记为一条MPLS TE链路时,若该链路也同时运行了OSPF协议、并且已经建立了OSPF邻居,那么OSPF的TE扩展功能就会根据这一条TE链路产生一条对应的TE LSA发布到区域中。如果区域中有其它的节点也支持TE的扩展,那么在这些节点之间就会产生一个TE链路组成的网络拓扑。每一个发布TE LSA的节点必须具有一个唯一的Router Address。
Opaque Type 10 LSA是在OSPF区域内发布的,所以CSPF计算也是基于区域的,跨区域的LSP需要分段计算。
IS-IS TE
IS-IS也是基于链路状态信息的路由协议,因此可以使用扩展的IS-IS发布TE信息。
IS-IS扩展了两种新的TLV:
Type 135:Wide Metric
IS-IS的有两种度量:
- Narrow Metric:6比特窄域度量。
- Wide Metric:32比特广域度量。该TLV不用于路由计算,仅用于传递TE相关信息。
Narrow Metric只有64个度量值,难以满足大型流量工程的需求。因此使用Wide Metric来传递TE相关信息。
在窄域向广域过渡中,IS-IS TE需要支持以下兼容的度量值:
- Compatible:可以接收和发送度量类型为narrow和wide的报文。
- Wide Compatible:可以接收度量类型为narrow和wide的报文,但只发送wide的报文。
Type 22:IS可达性TLV
Type类型为22的IS可达性TLV格式如图所示:
IS可达性TLV结构包括:
- 系统ID和伪节点ID
- 缺省链路度量
- 子TLV长度
- 可变长的子TLV
其中子TLV的描述请参见表2。
表2 IS-IS TE的子TLV
Sub-TLV | 描述 |
---|---|
Type3:Administrative group(4字节) | 链路管理组属性,以32个比特标识32个管理组。 |
Type6:IPv4 interface address(4N字节) | 本地接口的IP地址,可以包含多个本地接口的IP地址,每个4字节。 |
Type8:IPv4 neighbor address(4N字节) | 对端接口的IP地址可以包含多个对端接口的IP地址,每个4字节。•Point-to-Point链路:使用对端IP地址。•MultiAccess链路:使用0.0.0.0。 |
Type9:Maximum link bandwidth(4字节) | 链路上的最大带宽。 |
Type10:Reservable link bandwidth(4字节) | 链路上的最大可预留带宽。 |
Type11:Unreserved bandwidth(32字节) | 链路上的8个优先级的可预留带宽。 |
Type18:TE Default metric(3字节) | 在TE链路上配置的TE Metric。 |
信息发布时机
为了形成本区域内统一的流量工程数据库,OSPF TE和IS-IS TE需要对链路信息进行泛洪。除了首次配置MPLS TE隧道会触发泛洪之外,其他的泛洪时机和条件如下:
- 达到IGP TE的泛洪周期,此周期可由用户配置
- 链路生效或失效
- 由于没有足够的资源来预留带宽导致LSP无法建立时,该节点会马上泛洪,通告链路的当前可用带宽
- 链路属性发生变化,如链路的管理组和亲和属性发生变化
- 链路带宽发生变化
当MPLS接口的剩余带宽发生变化时,系统会更新TEDB并进行泛洪。当节点上创建大量需要预留带宽的隧道时,系统会频繁更新TEDB并泛洪。例如某条链路带宽为100Mbit/s,在此链路上建立100条1Mbit/s的TE隧道时,则需要进行100次泛洪。
为了抑制更新TEDB和泛洪的频率,提供了如下带宽泛洪机制:
- 一条链路上为MPLS TE隧道保留的带宽与TEDB中的链路剩余带宽的比值等于或大于设定的阈值。
- MPLS TE隧道释放的带宽与TEDB中剩余带宽的比值等于或大于设定的阈值。
当满足以上两种条件的任意一个时,IGP将对该链路信息进行泛洪,随之更新TEDB。
例如某条链路剩余带宽为100Mbit/s,在此链路上建立100条1Mbit/s的TE隧道时,如果设置泛洪阈值为10%,则变化带宽与剩余带宽的比值如图5。
建立第1~9条时,不进行泛洪;当建立第10条时才对第1~10条所占用的10Mbit/s带宽进行泛洪。此时剩余带宽为90Mbit/s。当建立第11~18条隧道时不进行泛洪,当建立第19条时才泛洪。依此类推。
图5 变化带宽与剩余带宽比值
信息发布结果
OSPF TE或IS-IS TE泛洪完成后,将形成本区域内统一的流量工程数据库TEDB。
在网络中部署MPLS TE,需要把相关资源信息进行通告。每台设备收集本区域内各链路的约束信息、带宽使用状况等信息,形成描述网络链路属性和拓扑属性的数据库。这种数据库称为流量工程数据库TEDB。
设备根据TEDB中的信息计算出节点到达区域内其它节点的最合适的路径。MPLS TE使用该路径建立CR-LSP。
TEDB与IGP路由协议的LSDB是两个完全独立的数据库。两者来源相同,都是IGP路由协议泛洪的产物。但内容和功能不同,TEDB除了具备LSDB中所有的内容外,还包含流量工程的信息。LSDB用于IGP最短路径的计算而TEDB则用于流量工程LSP最优路径的计算。
路径计算
MPLS TE使用CSPF算法计算出到达某个节点的最优路径。CSPF是带有约束条件的SPF算法,从SPF算法衍生而来。
CSPF算法的计算依据
CSPF有两个计算依据:
- 待建立LSP隧道的带宽、显式路径、建立/保持优先级、亲和属性等约束条件,这些都在隧道的入节点配置。
- 流量工程数据库TEDB。
如果网络中不配置OSPF TE和IS-IS TE,就不能形成TEDB。这种情况下生成的CR-LSP是由IGP路由得到的,而不是CSPF计算出来的。
CSPF算法的计算过程
CSPF针对待建立LSP隧道的约束条件,先对TEDB中的链路进行裁剪,把不满足属性要求的链路剪掉,再采用SPF算法计算路径的权值,寻找一条到隧道目的地址的最短路径。
在OSPF TE和IS-IS TE同时部署的情况下,CSPF在计算路径时预先采用OSPF协议生成的TEDB来计算CR-LSP的路径。如果根据OSPF的TEDB计算出路径,则不会再根据IS-IS协议的TEDB数据计算。如果根据OSPF的TEDB数据计算失败,则根据IS-IS协议的TEDB数据再次计算。
用户可以根据需要设置CSPF优先采用IS-IS协议生成的TEDB来计算CR-LSP路径,如果计算失败才采用OSPF的TEDB数据再次计算。
CSPF在计算路径的过程中,如果遇到多条权值相同的路径,将根据策略选择其中的一条。这个过程称为仲裁(tie-breaking)。可用的仲裁策略有:
- Most-fill:选择已用带宽和最大可预留带宽的比值最大的链路,使链路带宽资源高效使用。
- Least-fill:选择已用带宽和最大可预留带宽的比值最小的链路,使各条链路的带宽资源均匀使用。
- Random:随机选取,使每条链路上的LSP数量均匀分布,不考虑带宽因素。
在已用带宽和最大可预留带宽的比值相同的情况下,此时不管配置的是Least-fill还是Most-fill,选择的是首先发现的链路。
以图1所示网络为例,说明CSPF的计算过程。除了标注具体带宽以及蓝色的链路外,其他链路都为100Mbit/s,颜色为黑色。此时需要建立一条目的地址为LSRE,带宽为80Mbit/s,亲和属性为黑色且必须经过LSRH节点的MPLS TE隧道,其中经过CSPF计算裁剪后的链路拓扑如图1所示。
图1 CSPF裁剪过程
裁剪后将按照SPF算法进行计算,其最终的计算结果如图2所示。
图2 CSPF计算结果
CSPF与SPF的区别
CSPF是专门用于MPLS TE路径计算的算法,它与一般的SPF算法相差不大,但又有几点区别:
- CSPF只计算到达隧道终点的最短路径,而SPF需要计算到达所有节点的最短路经。
- CSPF不再使用简单的邻居间链路代价作为度量值,而使用隧道的约束条件作为度量值。
- CSPF不存在负载分担,当两条路径有同样的权值时需要仲裁。
路径建立
路径建立方式简介
CR-LSP建立方式
CR-LSP的建立方式可以分为静态建立和动态建立。
静态CR-LSP的建立完全依靠企业网络管理员的手工配置,这里只介绍使用RSVP-TE信令建立动态CR-LSP的原理。
RSVP-TE简介
资源预留协议RSVP是为Integrated Service模型而设计的,用于在一条传输路径的各节点上进行带宽资源预留。这种带宽预留能力使得其非常适合作为MPLS TE路径建立的信令协议。
RSVP-TE在原始RSVP协议进行了一定程度的扩展以满足MPLS TE的要求。RSVP-TE对RSVP扩展的内容主要有:
- 在Path消息中引入Label Request对象,支持发起标签请求;在Resv消息中引入Label对象,支持标签分配。
- 扩展的消息除了可以携带标签绑定信息外,还可以携带路径约束条件信息。
- 通过扩展对象支持MPLS-TE带宽约束条件,使其具有资源预留功能。
RSVP消息类型
RSVP消息分为如下几类:
- Path消息:由发送者向下游转发,保存所经过的节点的路径信息。
- Resv消息:由接收者向上游逐跳转发,用于响应Path消息,提出资源预留请求。
- PathErr消息:RSVP节点在处理Path消息时,如果发生错误,就向上游发送PathErr消息。
- ResvErr消息:RSVP节点在处理Resv消息时,如果发生错误,就向下游发送ResvErr消息。
- PathTear消息:用来删除节点路径信息,其作用与Path消息相反。
- ResvTear消息:用来删除节点预留状态,其作用与Resv消息相反。
- ResvConf消息:由发送者向下游逐跳转发,用于确认资源预留请求。在Resv消息中包含RESV_CONFIRM对象时才会发送ResvConf消息。
- Srefresh消息:用来刷新RSVP状态。
动态CR-LSP的建立
动态CR-LSP的建立主要分为入节点向出节点发送Path消息和出节点向入节点发送Resv消息。Path消息用于创建RSVP会话和关联路径状态,发送时途经的节点上会建立路径状态块PSB(Path State Block)。Resv消息携带了资源预留信息,发送时途经的节点会建立资源预留状态块RSB(Reservation State Block)和分配标签。
下面详细介绍RSVP-TE建立CR-LSP的过程,如图1。
图1 建立CR-LSP
- PE1触发CSPF计算从PE1到PE2的路径,这条路径是指定了沿途每一跳的IP地址。PE1将CSPF计算出来的IP地址列表作为显式路径对象ERO(Explicit Route Object)的内容,构造Path消息,并根据Path消息构造PSB,然后根据ERO将Path消息发送给P1,Path消息携带的内容如表1。
- P1收到PE1的Path消息,解析报文,根据Path消息构造PSB。然后P1更新Path消息,根据ERO将Path消息发送给P2,Path消息携带的内容如表2。
- 与PE1更新Path消息的RSVP_HOP为PE1到P1的出接口地址类似,P1更新Path消息的RSVP_HOP为P1到P2的出接口地址。
- P1更新Path消息的ERO,删除P1自己的出、入接口地址及LSR ID。
- P2收到P1的Path消息,与P1类似的处理,根据Path消息创建PSB,并更新Path消息,根据ERO将Path消息发送给PE2,Path消息携带的内容如表3。
-
PE2收到Path消息后,从Session对象的Destination内容获知自己为待建立的CR-LSP的Egress节点。此时,PE2分配标签和资源,根据本地PSB产生Resv消息。Resv消息被发送给P2,该消息携带了PE2分配给P2的标签。
PE2从收到的Path消息中提取RSVP_HOP字段的地址作为Resv消息的目的IP地址。此外,Resv消息沿着反向路径进行转发,因此Resv消息中并不携带ERO,消息携带的内容如表4。
Resv消息如果包含RESV_CONFIRM对象,接收该消息的节点需要向发送该消息的节点发送ResvConf消息来确认资源预留请求。
- 当P2收到Resv消息时,记录相关信息到RSB中,并分配一个新标签,更新Resv消息发给P1,Resv消息携带的内容如表5。
-
当P1收到P2的Resv消息时,同P2一样,记录相关信息到RSB中,并分配一个新标签,更新Resv消息发给PE1,Resv消息携带的内容如表6。
PE1收到Resv消息,获得P1分配的标签,表明资源预留成功,此时CR-LSP建立成功。
动态CR-LSP的维护
路径状态维护
- 软状态
软状态是指在RSVP-TE中,通过RSVP消息的定时刷新来维持节点上的资源预留状态。
资源预留状态包括路径状态(path state)和预留状态(reservation state)。这两种状态分别由Path消息和Resv消息创建并定时刷新,将定时刷新时发送的Path消息和Resv消息统称为RSVP Refresh消息。RSVP Refresh消息用于在RSVP邻居节点进行状态同步,消息内容分别包含路径状态块和预留状态块。对于路径状态或者预留状态,如果连续一段时间没有收到刷新消息,这个状态将被删除。
- RSVP Refresh
RSVP消息是以IP数据报的形式传输的,因此RSVP消息的传输是不可靠的。在CR-LSP建立后,通过软状态机制同步RSVP邻居节点的状态(包括PSB和RSB),各节点仍然会周期性的向上下游邻居节点发送RSVP Refresh消息。
Refresh消息并不是一种新的消息,它是以前发布过的消息的再次传送。刷新周期即为消息的Time Value字段指定的时间间隔。
对于某个状态,如果在指定刷新周期内没有收到刷新消息,这个状态将被删除。
相邻节点间发送的Path和Resv消息在时间上无先后顺序关系。
- RSVP Srefresh
RSVP Refresh消息除了可以进行节点间状态同步之外,还可以检测各邻居间的可达性,维护RSVP节点之间的邻居关系。但是这种“软状态”机制所采用的Path消息和Resv消息的报文长度较大,当建立的CR-LSP很多时会过多的占用网络带宽资源。RSVP摘要刷新可以解决这个问题。
RSVP摘要刷新是通过在原有RSVP协议中定义新的对象来实现的,其具体实现原理如下:
-
- Message_ID扩展和重传机制
Message_ID扩展机制是在RSVP消息中携带扩展的对象。其中,Message_ID和Message_ID_ACK对象用于RSVP消息确认,从而提高RSVP消息的可靠性。
使用Message_ID扩展对象还可实现RSVP重传机制。节点发送携带Message_ID的RSVP消息后初始化重传时间(假设为Rf秒)。如果在Rf时间间隔内没有收到ACK消息,经过(1+Delta)×Rf后,将重传此消息。Delta取决于发送方增加重传间隔的速率。重传将一直持续,直到收到一个确认消息或重传次数达到允许的最大限制值(称为重传增量)。
-
- 摘要刷新Srefresh(Summary Refresh)
摘要刷新可以不传送标准的Path或Resv消息,而仍能实现对RSVP状态的刷新。使用摘要刷新的好处是它减少了维持RSVP状态所需传输及处理的信息量。使用Srefresh消息更新RSVP状态时,常规的刷新消息将被抑制。
摘要刷新消息承载了一系列Message_ID对象,用于识别需要被刷新的Path及Resv状态。摘要刷新需要与Message_ID扩展配合使用。只有那些已经包含Message_ID的Path和Resv消息发布过的状态才能使用摘要刷新机制刷新。
当节点接收到一条摘要刷新消息时,与本地状态块(PSB或RSB)进行匹配。如果匹配,就更新本地状态,就像接收到一个标准的RSVP刷新消息一样;如果不匹配,节点将发送一个NACK消息来通知摘要刷新消息的发送者,并根据Path或Resv消息刷新相应的PSB或RSB,同时更新Message_ID。
Message_ID对象中包含了Message_ID序列号。当LSP发生变化时,相应的Message_ID序列号增大。节点收到Path消息时,将其中的Message_ID序列号与本地状态块中保存的Message_ID序列号比较:如果相等,则保持状态不变;如果大于,则表示状态已更新。
错误通告
RSVP-TE依靠以下两种类型消息进行LSP的错误通告:
- PathErr消息:RSVP节点在处理Path消息的时候,如果发生错误,就向上游发送PathErr消息。中间节点收到PathErr消息后,继续向上游转发,直至入节点。
- ResvErr消息:RSVP节点在处理Resv消息时,如果发生错误,就向下游发送ResvErr消息。中间节点收到ResvErr消息后,继续向下游转发消息,直至出节点。
路径拆除
入节点在收到用户的删除LSP的命令或者PathErr消息后,会立即向下游发送PathTear消息通告下游节点拆除路径,下游节点收到此消息后会回复ResvTear消息给上游节点并拆除路径。
其中:
- PathTear消息:用来删除节点路径信息,其作用与Path消息相反。
- ResvTear消息:用来删除节点预留状态,其作用与Resv消息相反。
RSVP-TE消息
RSVP-TE消息用于MPLS TE实现过程中节点之间的信息交互。
- RSVP消息格式
RSVP各类消息都包含一个通用头部,随后是多个可变长度、类型的消息对象,如图1。
各字段解释见表1
- Path消息
RSVP-TE中,Path消息用于创建RSVP会话和关联路径状态。Path消息是从Ingress节点沿着数据流方向发送到Egress节点,途经的节点上会建立路径状态块PSB(Path State Block)。
Path消息IP源地址是入节点的LSR ID,目的地址是出节点的LSR ID。
表2列出了包含在Path消息中的一些对象。
- Resv消息
当Egress节点收到Path消息时,将发送一个Resv消息作为回应。Resv消息携带了资源预留信息,从Egress节点逐跳发送给前一跳节点。沿途的每个节点会创建和维护资源预留状态块RSB(Reserved State Block)并分配标签。当Resv消息到达Ingress时,一条LSP就建立成功了。
表3列出了包含在Resv消息中的一些对象。
RSVP资源预留风格
资源预留风格是指RSVP节点处理上游节点的资源预留请求时的资源预留方式。常用的预留风格有:
- 固定过滤风格FF(Fixed Filter):为每个资源预留请求的发送者创建单独的预留,该预留不与其他发送者共享。即同一链路的不同CR-LSP有不同的资源预留。
- 共享过滤风格SE(Shared Explicit):建立单一的资源预留。该预留允许指定的一系列发送者共享。即同一链路的不同CR-LSP共享一个资源预留。
流量转发
流量引入MPLS TE隧道
静态路由指定–适用于网络拓扑简单或者网络环境稳定的场景
将流量引入TE隧道最简单的方法是使用静态路由,将TE隧道的Tunnel接口设置为静态路由的出接口。
隧道策略指定–适用于需要选择TE隧道承载VPN业务的场景
通常,VPN流量通过隧道进行转发时,默认采用LSP隧道而非MPLS TE隧道,此时需要在VPN应用隧道策略(Tunnel Policy)将VPN流量引入到MPLS TE隧道中。包括如下两种方式:
- 按优先级顺序选择(Select-seq)方式:该策略可以改变VPN选择的隧道类型,按照配置的隧道类型优先级顺序将TE隧道选择为VPN的公网隧道。
- 隧道绑定(Tunnel Binding)方式:该策略可以为VPN绑定TE隧道以保证QoS,将某个目的地址与某条TE隧道进行绑定。
自动路由发布–适用于网络拓扑复杂或者网络环境经常变动的场景
自动路由(Auto Route)是指将TE隧道看作逻辑链路参与IGP路由计算,使用隧道接口作为路由出接口。这里,隧道被看做点到点链路,并且可以设置其Metric值。自动路由方式有两种:
- 转发捷径(IGP Shortcut):不将这条LSP链路发布给邻居节点,其他节点不能使用此隧道。
- 转发邻接(Forwarding Adjacency):将这条LSP发布给邻居节点,其他节点能够使用此隧道。
转发邻接是通过IGP的邻居信息来发布该隧道的。
使用转发邻接时,隧道两端必须在同一区域中。
可以通过如下的例子来了解两种自动路由方式的区别。
在图1中,在Switch_7上建立一条目的地址为Switch_2、路径为Switch_7→Switch_6→Switch_2的TE隧道,且设置此隧道的TE Metric为图中所示的值。现在需要在Switch_5和Switch_7上分别查询去往Switch_2和Switch_1的路由,则有如下情形:
- 不配置自动路由:去往Switch_2和Switch_1的路由的下一跳为Switch_4和Switch_6。
配置自动路由将流量引入:
- 采用转发捷径方式发布TE隧道Tunnel1,在Switch_5和Switch_7上分别查询去往Switch_2和Switch_1的路由,Switch_5的下一跳仍为Switch_4,Switch_7的下一跳变为了Tunnel1。可见Switch_5并不感知隧道的存在,并未利用Tunnel1来进行IGP选路,只有Switch_7自己感知并利用Tunnel1进行IGP的选路。
- 采用转发邻接方式发布TE隧道Tunnel1,在Switch_5和Switch_7上分别查询去往Switch_2和Switch_1的路由,Switch_5的下一跳变为了Switch_7,Switch_7的下一跳变为了Tunnel1。可见Switch_5和Switch_7都感知并利用Tunnel1进行IGP的选路。
隧道重优化
MPLS TE隧道重优化能够根据MPLS网络中的拓扑信息变化,自动进行隧道的路径优化,保证TE隧道一直采用最优路径。
产生原因
MPLS TE隧道的一个主要目标就是优化网络上流量的分布。通常建立一条MPLS TE隧道时,根据业务的初始带宽需求配置隧道的初始带宽,根据初始的网络状态计算和建立隧道的路径。但是网络中拓扑结构时常发生变化,可能会引起网络的带宽资源浪费,这在一定程度上背离了MPLS TE所要达到的目标。因此需要对MPLS TE隧道进行重优化。
实现过程
隧道重优化通过一定的事件,触发隧道入节点对CR-LSP进行路径的重优化,使得CR-LSP能够采用最优路径,即满足Metric值更小的路径。
- 如果隧道的资源预留风格为固定过滤风格FF,则不能配置隧道重优化。
- 采用显式路径技术建立的TE隧道不能配置隧道重优化。
根据触发方式的不同,重优化可以分为以下两种:
- 自动重优化
隧道入节点根据网络管理员在隧道下配置的重优化的触发周期,自动触发CSPF计算该隧道的路径。如果CSPF计算出来的路径比现有路径的Metric值更小,则以新的路径创建CR-LSP。若建立成功则通知转发层面进行流量切换,删除原CR-LSP,重优化完成。若建立不成功,则流量还按照原路径转发。
- 手工重优化
由网络管理员执行重优化命令,触发隧道入节点进行路径重优化。
重优化技术采用了Make-Before-Break机制,以确保在进行优化时用户的业务流不中断。即新的CR-LSP必须先建立,业务在旧的CR-LSP被拆除前切换到新的CR-LSP上。
重优化技术采用了Make-Before-Break机制,以确保在进行优化时用户的业务流不中断。即新的CR-LSP必须先建立,业务在旧的CR-LSP被拆除前切换到新的CR-LSP上。
隧道自动带宽调整
自动带宽调整能够根据MPLS TE隧道中的业务流量变化,自动进行隧道的带宽调整,节省网络的带宽资源。
产生原因
MPLS TE隧道的一个主要目标就是优化网络上流量的分布。对于一条MPLS TE隧道来说,隧道的初始带宽是根据业务的初始带宽需求配置的,为了保证流量的不间断,通常会选择最大流量所需的带宽作为隧道带宽。但是网络中业务流量不是一成不变的,如果流量的变化幅度大且持续时间长,则会引起网络的带宽资源浪费,一定程度上背离了MPLS TE所要达到的目标。自动带宽调整即用来解决此问题。
相关概念
自动带宽调整,即可以动态检测隧道接口的流量速率,并周期性地根据检测结果按照实际的业务带宽需求重新建立隧道。
表1中给出自动带宽调整中几个概念及相应解释:
实现过程
自动带宽调整包含如下几个执行过程:
1.流量采样
在隧道接口下启动了自动带宽调整后,入节点会启动一个定时器A,并同时对隧道接口每隔B秒一次进行流量采样,以获得每个采样周期内的峰值带宽。并将这些峰值带宽值记录下来,作为自动带宽调整的目标带宽值的计算依据。
2.带宽计算
当定时器A超时时,即到达了带宽调整周期时,入节点将根据带宽调整周期内的所有采样值计算一个采样的平均值,并将此值作为自动带宽调整的目标带宽值D。
3.路径计算
带宽计算完毕后,入节点根据计算出的带宽值触发CSPF重新计算新CR-LSP所需路径,并按照此路径建立新CR-LSP。
4.流量切换
在新的CR-LSP建成后,将流量切换到新的CR-LSP上,之后拆除旧的CR-LSP。至此,一个周期的带宽调整完毕。
在隧道接口下启动了自动带宽调整后,每到达一个调整周期,隧道就会按照上述流程进行带宽调整。如果某些调整周期内的流量变化的幅度不大,则很可能没有必要进行这个周期内的带宽的调整。因此,自动带宽调整提供了阈值调节功能,系统会将采样周期内计算出的平均带宽和实际带宽进行比较,如果变化值和实际带宽的比值大于调节阈值threshold,即(|D-C|÷C)×100 > threshold,才进行自动带宽调整,反之不进行调整。从而进一步优化自动带宽调整功能。
其他功能
除自动带宽调整的基本功能外,系统还提供以下功能:
- 只对TE隧道接口进行流量采样,不进行带宽调整。
- 可以通过配置目标带宽值的上、下限阈值来控制带宽调整的范围。
MPLS TE安全性
RSVP认证通过验证RSVP协议报文摘要信息的正确性,来防止协议报文被篡改或伪造的恶意攻击,同时提供用于防止回放攻击和报文失序的认证增强机制,从而增强了MPLS TE安全性。
产生原因
RSVP使用RawIP传递协议报文,而RawIP本身不提供安全性,很容易遭受欺骗攻击,RSVP认证可以用来解决此问题。RSVP认证通过密钥验证的方式来防止欺骗攻击,收到过时报文后认证关系终止。
但是这种密钥验证不能防止回放攻击,也无法解决因RSVP报文的失序导致邻居之间认证关系终止的问题,RSVP认证增强功能可以解决该问题。RSVP认证增强是在基于原有认证的基础上增加了认证生存时间、认证握手机制和消息滑窗特性。RSVP认证增强能使得RSVP自身的安全性得到很大的提高,同时加强了在网络阻塞等恶劣网络环境时对邻居关系的合法性进行验证的能力。
相关概念
- RawIP:与UDP类似,是不可靠的,即没有任何控制能确定RawIP数据报是否已被接收。
- 欺骗攻击:对端路由器在没有授权的情况下和本路由器建立邻居关系,或通过伪造RSVP报文的方式和本路由器建立RSVP邻居后对路由器进行攻击(比如恶意的预留大量的带宽)。
- 回放攻击:对端路由器反复给RSVP邻居发送过时的报文(序列号小于当前的保存的序列号),当出现RSVP报文的序列号比当前保存的对方的最大序列号小时,RSVP认证关系会终止,已经建立的CR-LSP会被拆除。
实现原理
密钥验证
RSVP认证通过对邻居间的报文携带的密钥信息进行匹配来确保报文的安全性,避免受到欺骗攻击。在需要认证的两个节点上,用户需要配置相同的密钥。在发送报文时,节点使用密钥为报文计算得到一个摘要(通过HMAC-MD5算法),摘要信息作为报文的一个对象(Integrity对象),随着报文一起发送到对端节点。对端节点使用相同的密钥、相同的算法重新计算报文摘要,然后比较两个摘要是否相同,如果相同则接收此报文,如果不同则丢弃此报文。
认证生存时间
认证生存时间用来指定RSVP邻居关系能够持续存在的时间,主要有以下功能:
- 当RSVP邻居之间不存在CR-LSP时可以保持RSVP邻居关系,直到RSVP认证生存时间超时。RSVP认证时间不影响已存在的CR-LSP的状态。
- 可以防止RSVP认证无法终止。例如,设备RTA和RTB建立好了RSVP认证关系后,如果RTA发给RTB的RSVP报文因为受篡改而导致密钥被破坏,RTB收到报文后发现密钥不正确会将报文丢弃,这样就导致RTA不断地给RTB发送被损坏的RSVP消息而该消息不断的被RTB丢弃。但邻居之间的认证关系无法拆除。这种情况下,需要配置认证生存时间,如果邻居之间在生存时间内收到合法的RSVP报文,则重置RSVP认证生存时间,否则认证时间超时后删除RSVP邻居的认证关系。
认证握手机制
握手机制用来在收到过时报文的情况下维持RSVP认证状态。
在两个RSVP邻居之间认证成功后,双方互发握手机制的报文,如果握手成功,双方会把对方发过来的握手报文记录在本端,作为一种状态,标志双方已经握手成功。当本端收到过时报文时,就有如下几种处理方式:
- 如果过时报文表明发送方未使能握手机制,则直接丢弃该报文。
- 如果过时报文表明发送方也使能了握手机制,且在本端存有与其握手成功过的状态,则也直接丢弃该报文;如果本端没有保存与其握手成功的状态,则说明是第一次收到发送方的报文,需要与其进行握手。
消息滑窗
消息滑窗用来保存RSVP邻居发送的RSVP报文的序列号。当滑窗大小为1时保存邻居RSVP报文的最大序列号,其他情况则可保存多个邻居RSVP报文的序列号。比如当滑窗大小为10,而邻居RSVP报文的最大序列号为80时,如果没有发生报文乱序,则滑窗保存的内容为[71,80]之间的共10个序列号。如果已经发生报文乱序,则将报文重新排序后,记录其中10个由大到小依次排序的值。
当消息滑窗不为1时,当接收到RSVP邻居发送的RSVP报文之后,如果发现该报文序列号比消息滑窗中保存的最大序列号还大或者是以前的一个序列号但是比消息滑窗中最小序列号大并且没有保存在消息滑窗中时,该报文即为合法报文。接收该报文后,该报文的序列号将被添加到消息滑窗中,然后处理该报文,如果该报文序列号大于消息滑窗中的最大序列号,还将同时删除消息滑窗中最小的那个序列号。序列号比消息滑窗中最小序列号还小或者已经存在于消息滑窗中的报文将被丢弃。
默认情况下,滑窗大小为1,认证握手机制中讨论的处理方式基于滑窗大小为1的情况。当消息滑窗大小不为1时,该机制的处理方式将受到影响,认证握手机制接收到过时报文时,在判断发送方是否使能握手机制前:
- 如果发现该报文序列号比消息滑窗中最小序列号大并且没有保存在消息滑窗中,仍然会正常处理该报文。
- 如果该序列号已经存在于消息滑窗中,则直接丢弃该报文。
- 如果发现该报文的序列号比消息滑窗中的最小序列号还小,则会判断双方是否使能了握手机制,如果任意一方没使能握手机制,则丢弃该报文。如果双方都使能了握手机制,本端将与发送方重新进行握手,同时丢弃该报文。
例如,滑窗大小为10时,消息滑窗保存有序列号71,75和80。如果接收到序列号为72的报文,此时会将该序列号添加到消息滑窗中并正常处理该报文。如果接收到序列号为75的报文,则直接丢弃。如果接收到序列号为70的报文,会判断双方是否使能握手机制,只有在双方都使能的情况下,才重新进行握手。
RSVP密钥管理方式
RSVP密钥管理包括以下两种方式:
MD5密钥
用户可以使用明文或者密文的方式输入密钥,密钥算法为MD5。这种密钥管理方式的特点是:
- 每个协议特性都需要配置自己的密钥,密钥不能共享。
- 每个接口、邻居只能配置一个密钥,要更换密钥必须重新配置。
Keychain密钥
Keychain是一种增强型加密算法,允许用户定义一组密码,形成一个密码串,并且分别为每个密码指定加解密算法及密码使用的有效时间。在收发报文时,系统会按照用户的配置选出一个当前有效的密码,并按照与此密码相匹配的加密解密算法,进行发送时加密和接收时解密报文。此外,系统可以依据密码使用的有效时间,自动完成有效密码的切换,避免了长时间不更改密码导致的密码易破解问题。
这种密钥管理方式的特点是:
- Keychain的密码、所使用的加解密算法以及密码使用的有效时间可以单独配置,形成一个Keychain配置节点,每个Keychain配置节点至少需要配置一个密码,并指定加解密算法。
- Keychain可以被各个协议特性引用,实现密钥集中管理、多特性共享。
RSVP支持在接口、邻居下引用Keychain,并仅支持HMAC-MD5算法。
MD5密钥属于不安全密钥,建议使用Keychain密钥。
RSVP的认证级别
RSVP的认证级别分为两种:
–面向邻居的认证
该级别的认证是指用户可以根据不同的邻居地址配置认证密钥等信息,RSVP会针对每个邻居进行单独的认证。
有两种配置方式:
- 以邻居设备的某接口的IP地址作为邻居地址进行配置。
- 以邻居设备的LSR ID作为邻居地址进行配置。
–面向接口的认证
用户在接口上配置认证,RSVP会根据消息的入接口进行认证处理。
面向邻居的认证优先级高于面向接口的认证。只有在高优先级的认证没有使能的情况下才会进行低优先级的认证处理,一旦高优先级认证没有通过,则丢弃该报文。