MPLS组网案例 联系客服

发布时间 : 星期一 文章MPLS组网案例更新完毕开始阅读924cb7ef0975f46527d3e1d8

首先RT5查询MPLS的转发表,找到对应路由出标签号为20(下以所涉及的转发表可以看上面),所以再数据包的IP头部前面加入4个字节的MPLS标签,标签号为20,EXP位为0,栈底位为1,同时将IP中的TTL复制到MPLS标签中(这里始发为255),再封装成HDLC的帧发送,RT3从S0/1接口收到后,去掉二层帧头,查看MPLS标签入标签号为20,查找MPLS转发表出标签号为20,出接口为F1/0,同时交换MPLS标签号为20,EXP位为0,栈底位为1,同时TTL-1(转发一次MPLS TTL-1但是IP中的TTL是不变的,它只涉及到二层),再封装成以太网帧发送,RT2从F1/0接收到数据,拆二层封装,查MPLS入标签号为20再查找MPLS转发表,出标签为 Pop tag (特殊标签3倒数第二跳弹出)删除MPLS标签同时将MPLS标签中的TTL复制到IP报文的TTL中,然后查找IP全局路由表,TTL-1=253封装成以太网帧,再转发给下一跳,RT4收到数据直接转发给相应接口,然后再向RT5发送回应数据包,以上过程的逆过程! 补充:在做倒数第二跳弹出时,E-LSR可能会分发的几种标签

标签3 隐式空标签 (上游LSR不添加标签,弹出最外层MPLS标签) 标签0 IPV4显示空标签 (上游LSR会添加标签0,E-LSR收到后,直接弹出标签进行IVP4转发)

标签2 IPV6显示空标签(上游LSR会添加标签0,E-LSR收到后,直接弹出标签进行IVP6转发) 关于MPLS中的MTU问题:

在这我非常感谢hny2000为我解答某些疑问!他的博客为http://361531.blog.51cto.com/ 问题1:

RT5#ping 172.16.4.1 source 172.16.5.1 size 1500 df-bit Type escape sequence to abort.

Sending 5, 1500-byte ICMP Echos to 172.16.4.1, timeout is 2 seconds: Packet sent with a source address of 172.16.5.1 Packet sent with the DF bit set .....

Success rate is 0 percent (0/5)

这里我PING满包1500不分片不能通,再测试,

RT5#ping 172.16.4.1 source 172.16.5.1 size 1496 df-bit Type escape sequence to abort.

Sending 5, 1496-byte ICMP Echos to 172.16.4.1, timeout is 2 seconds: Packet sent with a source address of 172.16.5.1 Packet sent with the DF bit set !!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 40/88/132 ms

RT5#ping 172.16.4.1 source 172.16.5.1 size 1497 df-bit PING包1496不分片却能通 Type escape sequence to abort.

Sending 5, 1497-byte ICMP Echos to 172.16.4.1, timeout is 2 seconds: Packet sent with a source address of 172.16.5.1 Packet sent with the DF bit set

.....

Success rate is 0 percent (0/5) PING包1497不分片却不能通

分析:IP报文在MPLS链路上转发时,由于压入了MPLS标签,故报文长度增加了,原来的1500字节变成了1504(1497+4=1501)都超过了MPLS的默认MTU1500字节,所以不通,然而1496+4=1500不分片刚好通过,所以能通! 问题2:

修改链路上所有接口的MPLS MTU为1600

R5S0/0、RT3S0/1、F1/0、RT2S0/1、F1/0、R4S0/0都做修改配置如下: int s0/0 mpls mtu 1600 其它类似

RT5#ping 172.16.4.1 source 172.16.5.1 size 1500 df-bit Type escape sequence to abort.

Sending 5, 1500-byte ICMP Echos to 172.16.4.1, timeout is 2 seconds: Packet sent with a source address of 172.16.5.1 Packet sent with the DF bit set !!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/104/164 ms

现在能PING了!

RT5#ping 172.16.4.1 source 172.16.5.1 size 1501 df-bit

Type escape sequence to abort.

Sending 5, 1501-byte ICMP Echos to 172.16.4.1, timeout is 2 seconds: Packet sent with a source address of 172.16.5.1 Packet sent with the DF bit set M.M.M

Success rate is 0 percent (0/5) 如果我PING包1501不分片为什么不能通!

分析:照理说1501+4=1505要小于1600啊,应该能通啊!我开始就范了这样的错误,大家注意下这里还有个接口MTU默认是1500字节,也就是在不分片的情况下网络层的包大小为1500字节,1501不分片大于1500,所以它再封装成二层的时候会提示包过大,导致封装失败!如果是1500它刚好能封装,然后再加MPLS标签大于了1500,这里已经跟这个接口MTU没什么关系了,它只管三层的,再多加几个MPLS标签都没关系,只要MPLS MTU大于或等于它就行! 问题3:

如果我不改这条链路上所有接口的MPLS MTU,只修改R5S0/0、RT3S0/1、RT2S0/1、R4S0/0

的接口MTU为1600,修改RT3的F1/0、RT2F1/0的MPLS MTU为1600,ping包500不分片能通吗? 配置如下:

RT4、RT5配置如下: int s0/0 mtu 1600