影响 CBR 为 TE 选择 tunnel 建立路径的因素
1、接口预留带宽
按 Priority 的可用带宽(优先级越小越优,低的可以抢占高的带宽)
sub-pool 对 DS-TE 的支持
MPLS Traffic Engineering - DiffServ Aware (DS-TE)
默认情况下:tunnel 3将会处于 down 状态,并且 TE tunnel 只是占据了预留带宽的 800K(默认 tunnle 的优先级均为 7)
r1#show mpls tra topology
My_System_id: 1.1.1.1 (ospf 100 area 0)
Signalling error holddown: 10 sec Global Link Generation 71
IGP Id: 1.1.1.1, MPLS TE Id:1.1.1.1 Router Node (ospf 100 area 0)
link[0]: Broadcast, DR: 12.1.1.2, nbr_node_id:2, gen:63
frag_id 12, Intf Address:12.1.1.1
TE metric:10, IGP metric:10, attribute flags:0x0
SRLGs: None
physical_bw: 10000 (kbps), max_reservable_bw_global: 1000 (kbps)
max_reservable_bw_sub: 0 (kbps)
Global Pool Sub Pool
Total Allocated Reservable Reservable
BW (kbps) BW (kbps) BW (kbps)
--------------- ----------- ----------
bw[0]: 0 1000 0
bw[1]: 0 1000 0
bw[2]: 0 1000 0
bw[3]: 0 1000 0
bw[4]: 0 1000 0
bw[5]: 0 1000 0
bw[6]: 0 1000 0
bw[7]: 800 200 0
--More--
当设置的 tunnel 比处于 up 状态的 tunnle 的优先级更小,则更优的 tunnel 会抢占适合本 tunnel 数据转发的最小带宽的 tunnel 方,也就是默认只是修改 tunnel 3 会抢占 tunnel 2,而不会抢占 tunnel 14(因为:500K > 300K)
interface Tunnel2
tunnel mpls traffic-eng priority 6 6
!
interface Tunnel3
tunnel mpls traffic-eng priority 6 6
r1#show mpls traffic-eng topology
My_System_id: 1.1.1.1 (ospf 100 area 0)
Signalling error holddown: 10 sec Global Link Generation 85
IGP Id: 1.1.1.1, MPLS TE Id:1.1.1.1 Router Node (ospf 100 area 0)
link[0]: Broadcast, DR: 12.1.1.2, nbr_node_id:2, gen:84
frag_id 12, Intf Address:12.1.1.1
TE metric:10, IGP metric:10, attribute flags:0x0
SRLGs: None
physical_bw: 10000 (kbps), max_reservable_bw_global: 1000 (kbps)
max_reservable_bw_sub: 0 (kbps)
Global Pool Sub Pool
Total Allocated Reservable Reservable
BW (kbps) BW (kbps) BW (kbps)
--------------- ----------- ----------
bw[0]: 0 1000 0
bw[1]: 0 1000 0
bw[2]: 0 1000 0
bw[3]: 0 1000 0
bw[4]: 0 1000 0
bw[5]: 0 1000 0
bw[6]: 500 500 0
bw[7]: 0 500 0
--More--
设置优先级的时候应该注意,r1(config-if)#tunnel mpls traffic-eng priority { setup priority } { hold priority },如果两者的setup priority 不等于 hold priority,就会出现翻滚现象。因为两个 tunnel 的优先级比较是“交叉比较”的
例如:
interface Tunnel2
tunnel mpls traffic-eng priority 6 7
!
interface Tunnel3
tunnel mpls traffic-eng priority 6 7
那么 tunnel 2 会先使用 6 和 tunnel 3 的 7 进行比较然后 tunnel 2 就会处于 up 状态,紧接着 tunnel 3 同理也会使用自身的 6 和 tunnel 2 的 7 比较使得 tunnel 3 抢占 tunnle 2,从而出现翻滚现象(不过Cisco IOS 12.2以上版本已经不能设置不相等的 setup priority,hold priority)
■隧道的优先级
产生的背景:
有些隧道比其他的隧道更为重要,所以无论出于什么目的,都需要让一些隧道优于其他隧道.
MPLS TE是可以实现这样的机制的。每一个隧道都有它的优先级,重要的隧道优先级会更高.次重要的隧道会退出现有路径,然后重新计算路径,而把资源让给更加重要的隧道(优先级更高的隧道).
隧道的优先级是0-7.数值越小,优先级越高。
既然有了优先级这个概念,那么一定会涉及到隧道抢占这个东西。既然有隧道的优先级比当前隧道优先级高,那么重要的隧道在想保留带宽的时候,就可以随意把其他的隧道挤出他们的路径,这样的机制就叫隧道抢占.tunnel preemption.
这里来做2个实验来验证隧道优先级这个概念。
这里在R2上面,建立两个隧道。
这里有两个隧道,tunnel 0和tunnel 1.
但是两个隧道的优先级是完全不同的。tunnel 0,优先级是7.后面的保持优先级先不管。然后tunel1的优先级是5.
前提情况是:
R2的接口2/0 ,设置的ip rsvp bw是默认的750M.是大于两个隧道的rsvp bw总和的。
在R3上面,interface G3/0.
配置为:
实际上带宽为2049.那么只能让一个隧道走这条路径,隧道0和隧道1,优先级分别是7和5.所以tunnel 1应该是走绿色的路径,tunnel 0 走红色的路径,因为隧道优先级的不同在这里。
我们也可以在路由器R2-PE-1上面看看:
现在在R3上面:
总结:所以,当总的链路承诺带宽小于所有隧道总和带宽需求的时候,那么这个时候优先级高的隧道就会优先选路。
关于优先级,还有一个概念,优先级第一个参数是建立优先级,第二个参数是保持优先级。
为什么会有两个优先级?
其实就是RFC2751中的抢占和防守优先级为原型的。
目的是,当一条隧道开始建立的时候,使用他得建立优先级来决定是否承认这条隧道,当另外一个隧道要和先前建立的隧道竞争链路的时候,就用新隧道的建立优先级和第一条隧道的保持优先级进行比较。
如果根据原则进行比较会产生一个问题,如果建立优先级比保持优先级小的话,会造成程序的死循环。
假设现在有两个tunnel,0和1.而两个tunnel的建立优先级都为1,两个隧道的保持优先级都是7.当tunnel0 up的时候,建立tunnel 1,那么tunnel1 会用建立优先级1去比较tunnel 0 的保持优先级7,结果tunnel1,抢占成功。
tunnel1 up,tunnel 0被挤出预留带宽。
然后tunnel 0这个时候又用相同的方法和tunnel1进行比较,结果tunnel1又up起来,
剩下的事情就是反复的循环,造成接口震荡.
为了解决这个问题,cisco IOS不允许建立优先级比保持优先级小。
在配置的时候也进行了规定,如果硬要配是配置不进去的。
最后资料的建议是:保持优先级和建立优先级通常都是设置为相同的数值。除非你有特别的理由。