@H_
404_0@Technorati
标签:
MPLS,
CCIE,
聚合,
agg,
LDP
@H_
404_0@一个FEC,只会为同一个路由分配
标签.
@H_
404_0@同一个路由的含义:相同的前缀,相同的掩码.
@H_
404_0@那么有一个比较典型的情况会破坏这个规则:汇总。
@H_
404_0@过来的时候是明细,分发出去是汇总.虽然符合路由查找的规律,大网段包含小网段,可是对于FEC来说,是破坏了FEC的模型。
@H_
404_0@
路由汇总在MPLS域内:
@H_
404_0@在下面这个汇总的图中来说.C是汇总点.
@H_
404_0@

@H_
404_0@
路由汇总,会破坏MPLS域内不是同一条路由(前缀/掩码绝对相同)
@H_
404_0@
汇总以后,以汇总点为中心,一条FEC会被分割成两端.
@H_
404_0@
在上面的图中,从Router E传回来一个路由. 10.1.1.0/24,24位的掩码,传到D,最后传到C,这个时候C做一个汇总,汇总成/16位的掩码从C通告给B,B再给A.前提是C只发送汇总路由,抑制明细路由.
@H_
404_0@
这样,这个LSP已经被破坏成了两段.
@H_
404_0@最终,数据流在MPLS域中转发,由一条LSP变成了两条LSP.以router C为分界点.
@H_
404_0@
非链路聚合,一条完整FEC路径的情况:
@H_
404_0@下面这个拓扑图,R4 有一个环回口.44.1.1.1/32
@H_
404_0@R5也有一个环回口:55.1.1.1/32
@H_
404_0@
期间,R4,R1,R2,R3,R5,所有设备对该两条路由的认识都是一样的(掩码相同,前缀相同)
@H_
404_0@
这样才能形成一个完成FEC链路的先决条件.
@H_
404_0@

@H_
404_0@从R4到R5是一条路径,可以通过traceroute来进行查看:
@H_
404_0@

@H_
404_0@从traceroute的结果来说,对于R4上面的55.1.1.1,R1分配的
标签是102.
@H_
404_0@R2为55.1.1.1分配的
标签是202.
@H_
404_0@R3为55.1.1.1分配的
标签是302.
@H_
404_0@R5上面,因为55.1.1.1/32是直连,分配的
标签是implict-null(3),一个空
标签.
@H_
404_0@所以traceroute的路径是:
@H_
404_0@label: 102-->202-->302-->(3)implict-null
@H_
404_0@这里整条路径是一条路径.没有做链路聚合.
@H_
404_0@
链路聚合,一条不完整FEC路径的情况:
@H_
404_0@下面这个拓扑图,R4 有一个环回口.44.1.1.1/32
@H_
404_0@R5也有一个环回口:55.1.1.1/32
@H_
404_0@现在,R1,2,3,4,5,中间我们做一个路由聚合,让大家5台设备对这个前缀的认识不统一,看看会有什么样的情况发生.
@H_
404_0@
最终选定R2做一个路由汇总.把/32位的路由汇总成/24位.
@H_
404_0@OSPF在同一个区域是不能做汇总的,所以环境需要稍微改造一下,R2--R3--R5属于区域1中.
@H_
404_0@

@H_
404_0@在R2上面的ospf进程中,对area1进行一个55.1.1.1/32--->55.1.1.0/24的路由汇总.
@H_
404_0@最终通告给R1和R4,意思是R1和R4上面学习到的路由针对于55.1.1.0/24是24位的掩码,而不是32位的。
@H_
404_0@最终,R4 traceroute 55.1.1.1的结果是:
@H_
404_0@

@H_
404_0@这里可以看到R4的数据包到了R1,R1对55.1.1.0/24分配的
标签是100.
@H_
404_0@当数据包到了R1以后,R2因为55.1.1.0/24是直连,所以分配的是空
标签给R1.R1将100
标签移除.将IP报文送给R2.
@H_
404_0@R2拿到这个IP报文,经过
查询,目的是55.1.1.1,他上面有55.1.1.1/32的路由,R3会为这个前缀分配一个
标签30x给R2.
@H_
404_0@这个时候R2再将这个IP报文压入
标签30x,然后进入MPLS转发流程.
@H_
404_0@R2压入30x的
标签进入该报文,送到R3,因为R5上面55.1.1.1/32是直连路由,R5会分配空
标签(3)给该前缀,并且将(3)分发给R3.
@H_
404_0@所以该MPLS包送到R3的时候,R3会移除之前的30x,然后剥离
标签,直接发送IP报文给R5.
@H_
404_0@所以本身一段完整的LSP,最后被分割成了两断。
@H_
404_0@以R2为分界点.
@H_
404_0@下面是整个
标签准发的整个流程:
@H_
404_0@

@H_
404_0@最后,再来整理一下
标签分发的过程:
@H_
404_0@
1,R4始发该报文:
@H_
404_0@R4上面,路由表中对于55.1.1.x/24是24位的,因为R2做了area1的汇总,不会有明细32位的路由:
@H_
404_0@

@H_
404_0@在R4上面,outgoing的
标签应该是R1针对55.1.1.0/24分配过来的:
@H_
404_0@

@H_
404_0@这样,IP包进入R4,然后R4 PUSH进一个100的
标签.将该MPLS报文转发给R1.
@H_
404_0@
2,R1转发MPLS报文.
@H_
404_0@R1上面对于55.1.1.0/24的路由前缀,是由R2分配的
标签.
@H_
404_0@因为55.1.1.0/24是由R2产生的,也可以认为是R2的直连路由,所以R2会分配一个空
标签给R1.
@H_
404_0@R1现在收到
标签为100的MPLS报文,会做的动作是pop弹出该
标签.
@H_
404_0@

@H_
404_0@因为R1为55.1.1.0/24分配的是一个(3),隐式空
标签.
@H_
404_0@所以R1收到了相关的100
标签的报文,直接弹出,然后通过接口eth0/0发送给R2.
@H_
404_0@==============至此,第一个LSP已经完毕了===========================
@H_
404_0@==============下面是第二条LSP====================================
@H_
404_0@
3,R2收到IP报文,继续PUSH然后转发MPLS报文给R3.
@H_
404_0@R2这个时候收到一个报文,目的地址是55.1.1.1.
@H_
404_0@IP进,MPLS出,应该
查询cef表:
@H_
404_0@

@H_
404_0@R3为55.1.1.1/32路由前缀分配的
标签是302.R2会将302作为出口PUSH进入那个IP包.然后通过e1/0转发给R3.
@H_
404_0@
4,R3收到MPLS报文,pop掉标签,纯IP转发给R5.
@H_
404_0@因为55.1.1.1/32是R5的直连路由,所以R5会分配空
标签(3)给LDP邻居R3.
@H_
404_0@MPLS进,mpls出,查看R3的
标签转发表:
@H_
404_0@

@H_
404_0@当R3收到
标签是302的MPLS报文,会pop掉
标签,然后通过Et0/0发送纯IP报文给R5.
@H_
404_0@最终R5收到了相关IP报文,本地直连路由。单向通讯搞定。
@H_
404_0@所以最终的测试结果是:
@H_
404_0@
