MPLS TE.note
·什么是 MPLS TE:
MPLS Traffic Engineering(MPLS TE)
普通的MPLS/LDP根据IGP路由来走,例如通过OSPF路由BR1 → CR1 → IR3
MPLS TE 就是人为/自动计算一条特殊的 MPLS 标签路径,然后把这条路径包装成一个 Tunnel 接口给路由使用,例如强制经过BR1 → ISP → IR1 → CR2 → CR1 —— BR2,但在两边其实只能看到这个tunnel接口,看不到底层路径(只有traceroute才行)
这个隧道也叫 RSVP-TE LSP(Label Switched Path)只有 OSPF 和 ISIS才支持 MPLS TE,但是ISIS一般不使用了,因此主要还是OSPF


1、配置 MPLS TE(OSPF):
先正常配置好 MPLS BGPVPN,把公网那些mpls ldp label什么的都配置了
(1)配置 BR1:
ip cef //默认就有(排错要注意是否被no 掉)
mpls traffic-eng tunnels # OSPF 开启Traffic Engineering(需要在所有核心路由器上开启,就是经过的路由器)
router ospf 150
mpls traffic-eng router-id Loopback1
mpls traffic-eng area 0 //当前链路处于哪个区域,就要设置哪个区域
# 如果链路跨区域,处于多个区域,就要同时开启,上面router-id定义的接口处于的区域不需要设置进来,只需要设置链路的区域:
## mpls traffic-eng area 1指定直连接口地址也是没问题的,也能通
# 配置 Explicit Path 自定义路径:
## 这个地址建议指定mpls ldp那个router-id的接口的地址
ip explicit-path name BR1 enable
next-address loose 100.64.0.1
next-address loose 100.64.1.1
next-address loose 100.64.2.1
next-address loose 100.64.1.2
next-address loose 100.64.1.3 //tunnel 目标地址
## 这里可以定义loose和strict参数,不指定默认按照 strict处理
strict表示指定的IP必须是紧邻的下一跳,中间不能夹杂其他路由器,不论它是不是TE
loose表示下一跳只要能够到的即可,中间可以通过其他TE
## 如果题目不严格,就可以全部 loose# 接口启用:
int g0/0 //公网接口(就是mpls流量出口,去往对端的接口)
mpls ip
mpls traffic-eng tunnels
ip rsvp bandwidth 100000 100000 //这个也必须要配置,在接口上启用 rsvp
# 配置 tunnel 0:
interface tunnel 0
ip unnumbered Loopback1
tunnel mode mpls traffic-eng
tunnel destination 100.64.1.3
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng bandwidth 10000 //配置预留带宽(可选)
tunnel mpls traffic-eng path-option 1 explicit name BR1(2)配置 IR3:
explicit路径要反过来
ip cef //默认就有(排错要注意是否被no 掉)
mpls traffic-eng tunnels# 在OSPF中开启 TE:
router ospf 150
mpls traffic-eng router-id Loopback1
mpls traffic-eng area 0
mpls traffic-eng area 2 //因为链路经过了多个区域,所以要全部写进来# 配置 Explicit Path 自定义路径:
## 这个路径跟上面是反过来的:
## 因为从本地到100.64.4.1,从100.64.4.1到100.64.2.1不是直连TE,因此需要指定 loose
ip explicit-path name IR3 enable
next-address loose 100.64.1.2
next-address loose 100.64.2.1
next-address loose 100.64.1.1
next-address loose 100.64.0.1
next-address loose 100.64.3.1 //tunnel 目标地址int ra g0/2-3
mpls ip
mpls traffic-eng tunnels
ip rsvp bandwidth 100000 100000 //这个也必须要配置,在接口上启用 rsvp
# 配置 tunnel 0:
interface tunnel 0
ip unnumbered Loopback1
tunnel mode mpls traffic-eng
tunnel destination 100.64.3.1
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng bandwidth 10000
tunnel mpls traffic-eng path-option 1 explicit name IR3(3)其他经过的路由器:
流量经过哪个ospf区域,哪个区域就要启用 TE
经过的路由器:IR1、IR2、CR1、CR2、BR2
router ospf 150
mpls traffic-eng router-id Loopback1
mpls traffic-eng area 2
# IR1、IR2:
router ospf 150
mpls traffic-eng router-id Loopback1
mpls traffic-eng area 0
mpls traffic-eng area 2
# ISP:
router ospf 150
mpls traffic-eng router-id Loopback1
mpls traffic-eng area 0# 全局开启:
mpls traffic-eng tunnels
# 并且要在流量经过的链路上开启:
interface g0/0 .... g0/2....
mpls ip
mpls traffic-eng tunnels //必须先全局开启上面的那条参数
ip rsvp bandwidth 100000 100000 //这个也必须要配置,在接口上启用 rsvp·命令总结:
1、全局开启:mpls traffic-eng tunnels
2、所有通信接口开启:
mpls traffic-eng tunnels
ip rsvp bandwidth 100000 100000
3、OSPF进程开启:
mpls traffic-eng router-id Loopback1
mpls traffic-eng area 0·测试:
# 这里在中间路由器 ISP上测试:
show mpls traffic-eng tunnels brief
show ip ospf mpls traffic-eng link
show ip rsvp interface


客户端 traceroute 路径测试:
经过 ISP1 -> IR1 -> CR1 -> IR2
2、配置 MPLS TE(底层使用BGP):
配置与上面一样,只多了一点配置,需要在BGP多配置一条send-label
(1)所有设备BGP上配置:
router bgp 200
neighbor 1.1.1.1 send-label //如果这里配置不了,就进入 add ipv4(记得在ipv4中也要配置 activate和send-community)·命令总结:
1、全局开启:mpls traffic-eng tunnels
2、所有通信接口开启:
mpls traffic-eng tunnels
ip rsvp bandwidth 100000 100000
3、BGP进程开启:
router bgp 200
neighbor 1.1.1.1 send-label //如果这里配置不了,就进入 add ipv4(记得在ipv4中也要配置 activate和send-community)·可选参数:
# 开启 FRR:
int tunn 0
tunnel mpls traffic-eng fast-reroute