本文档关键知识点:
CSPF选路原理
对CSPF路径选择有影响的参数
MPLS TE显示路径如何建立?
CSPF--constrained SPF(shorest path tree).是MPLS TE路径选择的核心,前面我们已经知道,MPLS TE的功能是:
1,信息的发布 2,路径的计算和建立 3, 隧道中的流量转发。
在了解了CSPF的工作原理以后,其实就是对路径的计算和建立有了原理性的认识,对于以后MPLS TE的网络规划和故障排查都有一定的帮助.
在已经了解了SPF的路径选举方法以后,该文档会慢慢阐述CSPF的工作原理。
我们已经了解到SPF的三元组,{目的,耗费,下一跳}.
在CSPF中(constrained SPF)中,还增加了三个元素。
■带宽---bandwidth
■链路属性---attribute-falgs
■管理权重---administrative-weight.
在CSPF中,和SPF类似,也有PATH list表,和TENT列表,不过这里还需要加上可用带宽。
最后列出的属性格式为:
{链路,代价,下一跳,可用带宽}
{link,cost,next hop,availbable bandwidth}
下面来一个拓扑图,和SPF的拓扑一样,不过加上了TE的预留带宽。
其实,计算方法和SPF差不多,只不过把预留带宽加进来了,下面就是路由器A的CSPF计算结果。
最后在A上面会得出一张到每个路由器的TE的最短路径。
在上面这个例子里面,全部都是最简配置。只把预留带宽加进来了。实际的CSPF路径计算远比现在要复杂得多,还有属性标示,隧道优先级,以及更多的仲裁方式。
在理解了上面的计算原理以后,下面会加入一些新的元素和复习一些以前已经学习过的零散的理论,然后最后汇总成本文档的主题:CSPF路径计算和选择原理。
在SPF中(OSPF和ISIS),到同一目的地可以有很多跳代价相同的路径,这里被称为Equal-cost multiPath. ECMP.
但是,在CSPF中,一定要理解清楚的概念是,CSPF并不是要计算到所有可能的目的地的所有最佳路径,对于一个目的地只有一条路径。
但是如果遇到了有相同耗费的等价路径,CSPF是如何进行仲裁的呢?
下面是CSPF遇到了等价路径以后的仲裁方法:
1,选择拥有最大的预留带宽的路径。
2,如果二者仍然相同,选择具有最小跳数的路径。(路径中三层设备的个数)
3, 如果仍然相同,随机选择一条.
PS:这里随机也不会是真正的随机选择,是指的如果都一样,那么选择PATH列表置顶的路径。
下面来一个实际的例子,来真正说明CSPF的工作:
要求:需要建立一条从RTA到RTZ带宽为10MBits的隧道.
这里可以看到图中,每一条路径的预留带宽都满足需求,100M/80M/90M/90M/90M.需求只需要10MB的带宽就被满足。
下面一个列表把RTA到RTZ所有的路径的属性都罗列出来:
在这里,Path-1不会选,因为路径代价比其他路径要高。
Path-2也不会选,Path-2的最小预留带宽是80M,比其他路径的预留带宽要小。
Path-3也不会选,Path-3跳数比4和5要多出一跳。
最后,路由器A会根据TENT列表的选项,会选出Path-4或者是path-5的一条链路作为隧道的链路,至于会选哪条,选择的依据是哪条在TENT列表的顶部就选哪条。
其他还有哪些因素会影响隧道的选择呢?
前面的日志中已经解释了一些隧道的属性。例如,属性标示,attribute-flags,如果属性标示和亲和/掩码不匹配,那么隧道是不会选择该路径来建立MPLS TE的。
管理权重,administrative-weight,weight小的优先。使用命令:mpls traffic-eng administrative-weight 0-4294967295.
隧道优先级,通过调整隧道优先级来确保重要TE对带宽的抢占优先权。
说了那么原理,现在是时候把理论结合实践的时候了。
CSPF只是一个选录的概念,一个原理,如何在TE隧道中调节呢?
CSPF的调节:
■在首段进行path-option的调节。
■各种CSPF的定时器.
■CSPF的各种ping命令。
在TE隧道建立好以后,可以看到IOS自动在tunnel0下面添加了图中高亮部分的命令。
tunnel mpls traffic-eng path-option 1 dynamic.
实际上path-option就是在首段影响MPLS 隧道的,使用path-option,可以按顺序指定隧道建立时可以尝试选择的一条或者多条路径。
因为命令tunnel mpls traffic-eng path-option 1 dynamic是以dynamic结尾的,其实对于庞大复杂的网络是一个不错的选择,但是,因为TE的建立目的就是选择更好的路径,所以显示路径在一些复杂庞大的网络中也是很有必要的,如果你想指定一条路径。
下面会解释到如何创建一条显示路径,如何用命令进行故障排查:
以前我们创建隧道都是通过dynamic的方式来建立隧道的,对隧道的可控性不好,因为隧道自动建立以后,我们要想,为什么是这条路径?如果想找到原因,那么就要进行比较很多参数。
但是现在,在R2上面建立了一个TE隧道要到R6,在这个简单的拓扑中只有两条路径,假设红色的路径隧道跳数和耗费要大些,但是实际带宽要大很多,符合我网络设计的首选链路。那么我就收工指定红色链路为主链路,当红色链路失效以后,再用绿色链路作为备用。
在R2上面的实际配置为:
最后,在R2上面,对原有的隧道进行一次重优化,得出的首选路径一定是path-option 2的Hank路径。
当然这里还可以对知识点进行引申的是,在一个隧道配置下面可以有多重路径的选择,优先级就是path-option后面的数值,从0-1000都可以进行配置。
tunnel mpls traffic-eng path-option 30 explicit name path3
tunnel mpls traffic-eng path-option 40 explicit name path4
tunnel mpls traffic-eng path-option 50 explicit name path5
tunnel mpls traffic-eng path-option 60 explicit name path6
tunnel mpls traffic-eng path-option 70 explicit name path7
tunnel mpls traffic-eng path-option 80 explicit name path8
到这里,就完成了今天CSPF相关原理和实验了。
最后总结一下,本文档解释了:
1, CSPF选路原理
2, 对CSPF路径选择有影响的参数
3, MPLS TE显示路径如何建立?
本文转自 hny2000 51CTO博客,原文链接:http://blog.51cto.com/361531/657115