Technorati 标签: MPLS TE, SPF

在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是又很大帮助的。

MPLS TE SPF 路径选择和建立 原理_第1张图片

              路由器

                  (邻居,代价)对

         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表项为空。

根据上面的步骤,我整理了一下,得出了下面的结论,和资料上的结论一样:

MPLS TE SPF 路径选择和建立 原理_第2张图片

最后所有的TENT表项全部清空,到此,对于路由器A的所有最短路径已经得出,结果会从PATH list里面进行提取。

最后得到的结论是:

MPLS TE SPF 路径选择和建立 原理_第3张图片

注意:

这里我的个人理解,凡是从tent表中删除的表项,如果以后还有其他的邻居需要用到该下一跳一律作废。

这就是为什么{D,14,C}这个表项没有出现过的原因,因为前面{A,10,C}已经删除过了。

最后,完成SPF计算后路由器A眼中的网络为:

MPLS TE SPF 路径选择和建立 原理_第4张图片

有了SPF的路径计算原理,对于接下来的CSPF原理学习会有很大的帮助.基本上差不多,CSPF实际上是在SPF的基础上开发而成。