在MPLS TE的流量工程中,分为下面几个方面:
1,信息的发布
2,路径的计算和建立
3, 隧道中的流量转发。
那么这里要了解路径的计算和建立,首先要了解SPF是如何工作的,然后再看什么是CSPF(constrained SPF).才能对路径的建立计算有一个很好的认识。再说详细一点,为什么要学SPF计算路径的原理?
因为对于MPLS TE流量工程来说,路径的选择和计算,是很重要的。
那么协议依据什么来进行路径的计算呢?是根据CSPF--constrained SPF来进行路径的自动计算的。
但是如果要学习CSPF,SPF计算原理是基础。
所以该文档主要阐述了SPF计算的工作原理,为后续CSPF奠定一定的基础。
在OSPF中,SPF最短路径算法是核心算法。以链路的耗费cost为优先准则.就以TE支持的IGP协议来说,只有OSPF和ISIS两种IGP协议,而OSPF应该范围又比ISIS广太多了,懂OSPF的同学们和会用OSPF的人数远远大于ISIS,所以这里更有必要好好复习一下 SPF--shorest path tree的选路原理了。
这里再复习一下SPF的算法,理解了SPF以后,CSPF就是在SPF的基础上进化而来的。那么对于理解MPLS的CSPF是又很大帮助的。
路由器 |
(邻居,代价)对 |
A |
(B,5) (C,10) |
B |
(A,5) (C,3) (D,8) |
C |
(A,10) (B,3) (D,4) |
D |
(B,8) (C,4) |
上面的表格就是根据SPF算法得出的最短路径。
实际上这就是一个拓扑对于路由器A来说
对于每个路由器来说,都是由三元组表形成的拓扑。
{路由器,距离,下一跳}
{router,distance,nexthop}
什么是PATH列表和TENT列表:
PATH list:
一个在通往目的的最短路径上得节点列表。对于路径列表很重要的一点就是列表记录了到目的最短路径。
TENT list:
可能在也可能不在目的地址的最短路径上得下一跳列表。这个列表称为TENT list.
每个路由器都运行下面的算法:(SPF)---原理
对于路由器A来说:
第一步:
把自己列入PATH列表,并且距离为0,下一跳也是自己。路由器上面运行SPF时,把自己当做self或者根节点,因为这个节点是最短路径树(shortest-path tree)的跟节点.
第二步:
从path列表中取出刚放入的节点。这个节点称为路径节点path node.
查找路径节点的邻居列表,把列表中的每一个邻居加入TENT列表,下一跳都设置为PATH节点。
第三步:
在TENT表项中找到代价最低的邻居,把邻居加入Path列表中,重复第二步,直到TENT表项为空。
根据上面的步骤,我整理了一下,得出了下面的结论,和资料上的结论一样:
最后所有的TENT表项全部清空,到此,对于路由器A的所有最短路径已经得出,结果会从PATH list里面进行提取。
最后得到的结论是:
注意:
这里我的个人理解,凡是从tent表中删除的表项,如果以后还有其他的邻居需要用到该下一跳一律作废。
这就是为什么{D,14,C}这个表项没有出现过的原因,因为前面{A,10,C}已经删除过了。
最后,完成SPF计算后路由器A眼中的网络为:
有了SPF的路径计算原理,对于接下来的CSPF原理学习会有很大的帮助.基本上差不多,CSPF实际上是在SPF的基础上开发而成。
本文转自 hny2000 51CTO博客,原文链接:http://blog.51cto.com/361531/655934