2024年2月26日发(作者:)
MPLS traffic engineering2013年10月20日16:54概述:流量工程:操作网络中的流量走向的技术,穿越网络的流量将从最优化的路径进行转发。传统的流量工程是通过ATM或者Frame relay技术实现,统称overlay模型早期的IP网络实现基础为fr或者arm,但是现在越来越多的网络开始建立在纯IP网络或者基于MPLS的IP网络。IP网络需要一种新的流量工程技术,纯IP网络TE技术现在还无法实现,但是基于MPLS,可以为MPLS/IP提供TE方案每一个IP协议都为每条链路指定了一个“成本”,路径中每条链路cost累加用来就算最低成本路径,IP数据报文先通过成本最低的路径“尽可能快的转发”。这是现代IP网络协议设计的基本原理。OSPF和ISIS使用单一的metric度量成本。EIGFRP使用一种复合度量技术,使用5个权重系数与链路度量值bw ,delay ,reliability,load综合考虑链路状态:
RIP使用跳数作为度量单位IP网络转发报文时,每跳路由器基于自己的路由表决定如何转发该报文,转发决定并不依赖于转发路径的带宽、丢包等情况。因此,即使该链路因为拥塞出现丢包,路由器仍然会继续向该路径转发报文。同时另一条也能到达该目的地的路径即使空闲,但是由于cost较高,得不到利用。对这种情况,TE能带来一种解决方案:操纵流量避开拥塞链路帮助减少丢包,抖动等情况,合理利用网络资源,为客户流量提供较好的服务质量。MPLSTE引入了一种TE方案:在下层基础网络上构造一层LSP(标签转发路径),用以掩盖下层实际拓扑,并用于操作流量走向,路径的计算是由LSP(TEtunnel)的第一跳路由器完成。需要记住的是TEtunnel是单向的,要完成双向通信,你需要每个方向各建立一条tunnel。MPLSTE基本概念:首端路由器Headend router:MPLS TE tunnel 隧道起点成为TE首端路由器,相应的是尾端路由器的定义。TE信息分发:TEtunnel是由首端路由器计算的,这条路径需要满足TE的需求:带宽,抖动,延迟等参数。这些参数与每条链路相关联,通过一种一种方式被泛洪到区域内,首端路由器收集完成组成TEDB,然后运行CSPF计算出满足TE要求的最短路径。要将链路TE信息进行分发,通常由链路状态路由协议完成,OSPF和ISIS经过扩展后能完成该工作。CSPF:基于约束的最短路径计算,为了计算出满足要求的路径,CSPF路由器通过TEDB计算出到目的网络的拓扑,并从中删除不满足约束要求的路径,从剩余的路径中计算出最短的路径,这条路径就是TE隧道经过的路径。cisco的CSPF别称为PCALC(路径计算)。首端路由器和末端路由器之间的中间路由器也需要知道该LSP的标签分配情况,否则无法通过LFIB正确的进行转发。有两种信令协议来实现这种要求:CR-LDP和RSVP-TE。CR-LDP基于约束路由的LDP,IETF已经停止对CR-LDP的开发。见RFC3468:“The Multiprotocol Label Switching (MPLS) Working Group Decision on MPLS Signaling Protocols.”RSVP-TE,是针对TE进行扩展后的RSVP,可以用来建立TE隧道,并分发TE标签。
分区MPLS技术架构的第1 页
RSVP-TE,是针对TE进行扩展后的RSVP,可以用来建立TE隧道,并分发TE标签。RSVP-TE将沿着HER和LER之间的路由器路径建立TE隧道。RSVP通过PATH消息逐跳从HDR发往LER,其中携带了MPLS标签请求。LER收到PATH消息后,沿着相反的路径通过RESV消息携带标签消息返回。这些操作同时也需要验证LSR可以建立起该满足约束要求的隧道,否则会有相应的错误消息返回发送端。PATH消息中携带了ERO显示路由对象,详细的列出了该隧道要经过的每一跳LSR,每一跳路由器都需要临时的预留隧道请求的约束信息(带宽等),然后分配一个标签,最终PATH消息到达尾端路由器。尾端路由器沿相反路径发送RESV消息,携带RRO,记录了用于MPLS转发平面需要的标签,并通知每跳路由器预留用于该TE的资源。隧道建立完成后,最重要的任务是确保流量发送到TE tunnel中。TE信息分发区域中启用TE功能的路由器需要泛洪拓扑消息给其他所有路由器,构建TEDB,流量工程数据库,仅有链路状态路由协议才能完成这项工作,距离矢量路由协议不了解本区域内的完整拓扑,最佳路径是由其他路由器通过路由通告完成的,他不能基于自己的拓扑表计算最短路径。无法完成这项工作。所以在使用MPLSTE的网络中,你需要确保使用链路状态路由协议,但是其他的基于MPLS的网络无此要求。因为TEtunnel路径是由首端路由器通过PCALC计算完成的,因此要保证它能获取完整的TEDB。TEDB存放了区域内所有链路的TE资源信息:链路的TE资源属性如下:•TEmetric度量•最大带宽•最大可预留带宽•不可预留带宽•管理组TEmetric用来构建不同于IP 拓扑的TE拓扑所用。最大带宽是该链路的总带宽。最大可预留带宽是这条链路可供TE使用的最大带宽不可预留带宽是总带宽减去最大可预留带宽。
分区MPLS技术架构的第2 页
不可预留带宽是总带宽减去最大可预留带宽。管理组:一个32-bit的字段,每位用来可以单独定义一种链路属性,TE信息泛洪向后兼容,即使有路由器不理解TE信息,它可以简单的忽略。OSPFTE扩展:RFC2370描述了OSPF的三个不透明opaque LSA:三种LSA的区别主要在于泛洪范围:LSA9:仅能在本地链路泛洪;LSA10:在区域内泛洪;LSA11:在AS中泛洪。区域内MPLSTE泛洪依靠LSA10OSPFLSA 10结构:OSPF LSA options:(存在于hello,DBD,allLSA 头部)DNODCEAN/PMCEMTO位置一表示生成该LSA的路由器支持opaqueLSA。LSID被Opaque Type 1字节和Opaque ID 3字节代替。mpls te 的type为的内容由TLV构成:
分区MPLS技术架构的第3 页
目前有RouterTLV(type =1 )和link TLV(type=2)两种类型,其中link TLV里面还存在如下sub-TLVs。Type 5-9是涵盖了链路的TE属性可能存在厂商自行定义的其他sub-tlv。如cisco的类型32770为IGPmetriclink type:代表了该链路属于点到点还是多路访问网络。linkID 表示:当链路为点到点类型时,表示邻居路由器的Router ID,当链路为多路访问网络时,表示为DR的接口地址。带宽单位是Bytesper second.注意不可预留带宽字段为32字节,每个优先级(priority level)4个字节,共8个:0-7这8个优先位使用在TE tunnel的建立优先级(setup priority)。为OSPF启用TE扩展:1、全局启用mplste:mplstraffic-eng tunnels2、需要启用te的每条链路都必须通过手动开启interfacee0/0mpls traffic-eng tunnels3、配置ospf:router ospf 1 traffic-eng router-id lo0 为mplste分配router-id mpls traffic-eng area 0 //在区域0开启mplste扩展show ip ospf
area0 area has RRR enabledshow ip ospf databaseType-10 Opaque link area link states (area 0)link ID1.0.0.0 暗示这是TE的LSA
分区MPLS技术架构的第4 页
路由器TLV 链路TLV链路子TLVIS-ISTE扩展RFC3784对ISIS携带TE信息做了扩展。•定义了2种新的TLV;•将最大metric从63 扩展到224-1;•使用sub-tlv。扩展的IS可达性TLVtype22,对比原始的IS邻居TLV(type2)Table 10-4. TLVs used for extending IS-IS 1222134TLVOptional ChecksumExtended IS
ReachabilityRFC33583784DescriptionAdds checksum capability to SNPsAdds Traffic Engineering capabilities, replaces type
2 TLVsAdds Traffic Engineering capabilityTraffic 3784Engineering Router
IDExtended IP
ReachabilityDynamic Hostname37842763135137Adds Traffic Engineering and wide metrics
capability, replaces types 128 and 130 TLVsAdds the ability for nodes to be identified by
hostname rather than SysID in commands such as show
isis database
分区MPLS技术架构的第5 页
isis database2235236237240RestartMT Intermediate
SystemsMulti-TopologyIPv6 Interface
Address3847DraftDraftDraftAdds Graceful Restart capabilityUsed with type 22 TLVs for multitopology supportAdds multitopology supportEquivalent to type 132 TLVs, for IPv6 supportUsed with type 135 TLV for multitopology supportEquivalent to types 128 and 130, for IPv6 supportUsed with type 236 TLVs for multitopology supportAdds 3-way handshaking capabilityMT Reachable IPv4 DraftPrefixesIPv6 ReachabilityDraftMT Reachable IPv6 DraftPrefixesPoint-to-Point
Three-Way
AdjacencyExperimental3373250DraftUsed for experimental extensionsTable 10-2. TLV codes used with 1234568TLVArea AddressesIS Neighbors (LSPs)ES Neighbors[*]Partition Designated level 2 IS[**]Prefix NeighborsIS Neighbors (Hellos)PaddingISO 10589RFC 1195XXXXXXX91131132133LSP EntriesAuthentication InformationLSP BuffersizeIP Internal Reachability InformationProtocols SupportedIP External Reachability InformationInter-Domain Routing Protocol InformationIP Interface AddressAuthentication Information[***]XXXXXXXXX
分区MPLS技术架构的第6 页
两种扩展的TLV结构如下:屏幕剪辑的捕获时间: 2013/10/21 0:26
分区MPLS技术架构的第7 页
屏幕剪辑的捕获时间: 2013/10/21 0:26为ISIS启用TE扩展:mpls traffic-eng tunnelsinterface s0/0mpls traffic-eng tunnelsip router isis testrouter isis testnet 49.0001.0000.0000.0001.00mpls traffic-eng router-id lo0mpls traffic-eng level-2metric-style wide
分区MPLS技术架构的第8 页
TE信息何时泛洪对于OSPF和ISIS来说,TE信息在如下时刻被泛洪:▪▪▪▪▪link state changes
manual configuration changesperiodic floodchanges in reservation bandwidthAfter a tunnel setup fail链路UP/DOWN事件,新增或者删除IGP链路;手动配置影响了TE属性;OSPFISIS LSA(LSP)定期刷新;预留带宽发生了变化;TE隧道建立失败。TELSA有一个默认3分钟的泛洪定时器:在全局配置模式下:mpls traffic-eng link-management timers periodic-flooding(0-3600s)这个定时器用在一些对预留带宽做出的小的变化暂时不影响TE隧道的建立时,不需要立刻刷新,默认3分钟才将变化泛洪。小的变化定义:对一条有充足可预留带宽做出的修改比没有特别多预留带宽的链路做出的修改,更不容易引起tunnel建立失败。预留带宽百分比触发更新定义:下降门限:100 99 98 97 96 95 90 85 80 7560 45 30 15
上升门限:15 30 45 60 75 80 85 90 95 97 98 99 100
100
分区MPLS技术架构的第9 页
预留带宽百分比触发更新定义:下降门限:100 99 98 97 96 95 90 85 80 7560 45 30 15
上升门限:15 30 45 60 75 80 85 90 95 97 98 99 100
10099 MARK 500门限定义命令:mpls traffic-eng flood threshold [down|up]value1 value2 …隧道建立失败:虽然在首端路由器可以计算出一条满足要求的路径,但是RSVP-TEsignal这条隧道时,也有可能失败,因为在这之前,刚好有另外一条隧道将一些带宽预留,导致LSR无法这条隧道无法预留足够的带宽。所以发生错误的这个LSR需要立刻泛洪LSA,让首端路由器了解情况,重新计算一条不同的路径。路由和TE LSP 成本链路TE属性最大可预留带宽属性标记TE度量共享风险链路组最大可预留子池带宽最大可预留带宽:接口下配置的:ip rsvp bandwidthbwkbps该bw是分配给说有TE隧道的全局带宽。属性标记:每条参与TE的链路都有一个属性标记与之关联,32-bit。每一位都可以单独定义一种含义,表示该链路是够有此属性。配置命令:mpls traffic-eng attribute-flags 0x0000FFFF
TE隧道有一个亲和属性(affinityflag和一个mask),和上述attribute flag结合使用可以去顶TE是否可以使用这个链路;tunnel mpls traffic-eng affinity0x0000FFFF mask0xFFFFFFFF.掩码位为1 表示,link attribute需要和tunnel的affinity响应位一样。默认affinity为0x00000000 ,默认掩码位为0x0000FFFFShared risk link groups:可能某些链路最终都通过一条光纤传输,一旦光纤断开,这些链路都会断开,因此这些链路都属于同一个共享风险连露珠,TE隧道应该尽可能在FRR时,避开SRLG。最大可预留子池带宽:属于最大可预留带宽中的一小部分。
分区MPLS技术架构的第10 页
属于最大可预留带宽中的一小部分。DiffServ-TE使用sub-pool分配带宽。MPLS TE隧道属性••••••隧道终点带宽需求亲和属性路径选项建立和保持优先级重新优化隧道终点:是指TE隧道的尾端路由器的MPLSTE router id。带宽需求是指该TEtunnel需要多少带宽。 隧道接口配置命令:tunnel mpls traffic-eng bandwidth [sub-pool|global]bandwidth global指示这是一条普通(RSVP?)的TEtunnel; sub-pool指示这是一条DiffServTet unnel亲和属性:已经在linkTE属性中讲过了路径选项:路径建立选项:TEtunnel建立方式有2种:显示和动态。显示定义:你需要手动指定该tunnel途径的每一条LSR,可以使用LSR的routerid,也可以使用链路接口地址。动态定义:使用PCALC自动通过TEDB计算出最短的满足约束条件的TEtunnel。不管是静态还是动态,都是在首端路由器上完成。路径选项可以有1-1000个,选项索引越小,就表示这个优先级越高,建立路径时,首先要尝试从最低的选项开始,如果第一个不可用,将向下尝试,如果都不可用,这条tunnel就维持在down状态了。配置命令:interface tunnel1ip addres 12.0.0.1 255.255.255.0tunnel destination 3.3.3.3tunnel mode mpls traffic-engtunnel mpls traffic-eng path-option 1 explicit name R1-R2-R3tunnel mpls traffic-eng bandwidth global 100tunnel mpls traffic-eng affinity 0x00030000 0x000F0000ip explicit-path name R1-R2-R3 enablenext-address 2.2.2.2示例:
分区MPLS技术架构的第11 页
示例:显示指定路径不可达,option2 dynamic被用来考虑建立tunnel path。
分区MPLS技术架构的第12 页
IP地址排除选项: 如果不想经过某个LSR的某个接口或者这台LSR,可以使用IP地址排除选项。这样CSPF在进行计算时,会自动将该IP地址排除掉。interface tunnel1tunnel mpls traffic-eng path-option 1 explicit name NO-R2ip explicit name NO-R2enableexclude-address 2.2.2.2如果你想对某台LSR进行维护,可以配置地址排除,让TEpath绕过这台LSR,需要注意的事,配置完成后,你需要等待重优化完成后,才可以对LSR进行维护。建立和保持优先级:TE隧道的重要性有时候需要进行区分,比如一个更重要的TEtunnel在不太重要的tunnel之后建立,那么,这个tunnel可能得不到足够的带宽,或者没有足够的低延迟,也就是说,这个tunnel没有得到最好的优化。tunne的建立存在两个优先级:建立优先级和保持优先级,如果一条tunnel的建立优先级高于已存在的tunnel的保持优先级,那么,这条tunnel就可以抢占低优先级的tunnel。需要注意的是,一条tunnel的建立优先级不应该比保持优先级大,否则很可能到此tunnel 反复建立拆除。配置命令:
分区MPLS技术架构的第13 页
配置命令:interface tunnel 1tunnel mpls traffic-eng prioritysetup-priority [hold-priority]优先级:0-7,值越低,表示优先级越高。重新优化:reoptimizationTE隧道建立完成后,网络汇总可能发生变化,这是,这条path可能不是最优化的。此时这条tetunnel需要重新优化:三种类型的触发器会执行重新优化:•定期重新优化•事件驱动重新优化•手动重新优化定期重优化:IOS默认每1小时对tunnel进行重新优化,你也可以将这种定期检查优化行为关掉:全局配置模式下,调整重优化间隔:mpls traffic-eng reoptimize timers frequencyinterval(default 3600 seconds)关闭重新优化检查:tunnelmpls traffic-eng path-option
number{explicit {name path-name|path-number}|dynamic} [lockdown]事件驱动的重新优化:默认,IOS不会因为linkUP自动对路径重新优化,你需要手动打开该功能:mplstraffic-eng reoptimize events link-up手动重新优化:强制首端路由器重新对路径进行优化:全局执行模式下:全部进行重新优化:mpls traffic-eng reoptimize对某一条tunnel进行优化:mpls traffic-eng reoptimize tunneltunnel-number
分区MPLS技术架构的第14 页


发布评论