路由汇总对MPLS的影响
我们来详细的解读一下,其实很好理解,这个和LDP的标签捆绑有着密不可分的原因,
因为LDP协议会为本地所产生的路由条止捆绑标签,然后,汇总条目同样是本地产生的,
那么它在往外发的时候,要么是implicit-null 要么是explicit-null,反正就是空。
解:
如上图所示:
控制层面
1 RE有一条更新,发送给RD,而此时标签为POP,弹出,这个没有问题
2 RD收到以后,再传给RC时,会为此条路由捆绑上一条本地的标签,55
3 RC收到以后,再传给RB,同样会捆绑上一条本地标签44
4 RB收到以后,同样会传给RA。
这是一个标签的MPLS的控制层面过程,
但是现在问题来了,
现在在RC上对这个条目进行汇总,看看会发生什么?
1 RC会发送自己的汇总条目,并且压上标签为POP,发送给RB,
2 RB发送这个汇总条目给RA, 压入标签23
数据层面
看看数据是怎么走的吧
RA访问10.1.1.0/24这个目标是这样的,
1 RA查自己的FIB表,一看,需要impose 标签值为23,好,走你
2 RB收到以后,一看是个标签包,那么查自己的LFIB表,23 对应的OUTgoing 动作是POP,
那就直接弹出,变成了IP包,直接发给RC,
3 RC收到这个IP包以后,查看自己的FIB表,一看是去往RE的,但是需要impose 标签,值 为44,,又查看了一下LFIB表,好走你44--55 走你
4 RD查LFIB表,55---POP,好,转出去
5 RE,最终才到达了目标主机RE的相连网段。
由此可以看出一个问题
在整个MPLS域中,数据走的并不是很顺畅, 由于做了路由汇总,导致RC再次进行标签捆绑分发,
所以说,在MPLS的网络环境中,除了在边界设备上做汇总,中间的设备上最好不要做汇总。因为会造成一些意想不到的后果。
我们用一个实例来看一下
全网运行EIGRP,以及MPLS,
在R5上宣告一条路由,10.1.1.0/24
然后在R3上的F0/0接口方向进行路由汇总,
我们来查看一下R3的mpls ldp bindings
可以看到,10.1.1.0/24的条目本地捆绑标签为304,来自于邻居4.4.4.4通行的标签为405
当有数据经过R3时,会查询FLIB表,入站为304,出站为405,直接进行标签转发
机智的你是否发现了一个小细节,
在R3上还有一个路由前缀
10.1.0.0/16,本地捆绑的标签类型为隐含空,什么意思?
这是一条本地所产生的路由,肯定要被这样标记的,无可厚非。
那么既然R3这样标记了,在R2上会是什么样呢?
还可以看到原来的10.1.1.0/24吗?
我猜应该是看不到的,为什么?
这取决于IGP协议进行了汇总,所以你根本就看不到/24的,只能看到/16的
本地207,outgoing 动作为Pop,弹出,有点儿意思,
执行了PHP次末跳弹出,
到底是怎么回事儿呢?
咱们tracert 一下看看,数据包倒底是怎么走的吧
看到在经过R3时,进行了一次拆标签,IP包转发
如果我们把汇总关掉呢?
来看一下
当我把R3上的路由汇总手动关闭后,就出现了这样的现象,直接走的都是MPLS标签交换。
所以说,在MPLS的环境中,在一些中间设备上最好不要进行路由汇总!!!!
如果是这种单纯的环境中没有任何的影响,可以通信,但如果是MPLS VPN 的情况,将会是致命的,因为没有标签将无法在vpnv4的通道中被传输
--------------------------------
CCIE成长之路 --- 梅利