MPLS MTU Aggregation
MPLS-domain的MTU问题
默认情况下,以太网接口下的二层MTU,三层MTU和MPLS MTU都是1500
以太帧的Type字段的作用:
一方面表示上层应用的类型
另一方面是告诉本地设备如何处理当前到达的数据帧
以太帧包结构:
1500以下是标准的以太帧处理
1500~2000字节之间是按小巨型帧处理
2000以上按巨型帧处理
R2(config-subif)#mtu (二层MTU)
R2(config-subif)#ip mtu ?
<68-1500> MTU (bytes)
R2(config-subif)#mpls mtu 1504
The jumbo frames are not supported by all LAN switches
使用上述命令的主要原因是一些防火墙会删除ICMP无法到达消息,就几乎破坏了MTU发现机制
可以配置在同一个接口配置物理MTU,IP MTU;同时也不是所有LAN switches都支持小巨型帧的
一个标签的大小为4 byte(32位)
以太网字段中Type是用来标识的数据类型(例如是TAG还是IP,其中dot1Q和MPLS都是小巨型帧)
r5#ping
Protocol [ip]:
Target IP address: 1.1.1.1
Repeat count [5]:
Datagram size [100]: 1500
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 5.5.5.5
Type of service [0]:
Set DF bit in IP header? [no]: yes
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 1500-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 5.5.5.5
Packet sent with the DF bit set
M.M.M
Success rate is 0 percent (0/5)
MPLS Domain的安全性问题
traceroute工作机制:使用逐次增加跳数超时回包机制来查看回包路径
r4(config)#no mpls ip propagate-ttl forwarded (此时再次traceroute将不会看到中间路径)
关闭默认的TTL值拷贝行为,直接将Label中的TTL设为255。所以数据包到达R4的时候不会超时发给R5回包,而是继续发送
r5#traceroute 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
1 45.1.1.4 4 msec 0 msec 0 msec
2 12.1.1.1 4 msec * 0 msec
Label Switching Path
MPLS仅仅是一个转发机制,而不能具有计算转发路径的功能
LFIB = FIB + binding Table
R1#show mpls forwarding-table
如果不使用倒数第二跳机制,则目的前缀的路由器需要进行两次路径查找,先查找LFIB,再查找RIB所以开销较大
路由器为自己的直连网段分配隐含空标签,既是在倒数第二跳pop,避免边界路由器做二次查找行为,减轻路由器硬件开销
任何路由器看到隐含空就将Label移除
所有直连网段本地都会给分配一个隐含空标签(imp-null),只是弹出一层标签
untag则是一次性移除所有标签
Aggregation on LSP Tunnels
假如在R3做汇总,则汇总路由10.1.0.0/16相当于本地发起,则R3会为其分配一个隐含空(imp-null标签),通告给邻居R4后,R4在一旦到达R4就会置为imp-null,发给R3的时候pop label;这时R3就会查找FIB(而不是LFIB)从而使用路由表发送,目的前缀给R2后就相应的压制标签,使得一次标签交换变成两次标签交换,浪费硬件资源
同时也会使得数据黑洞的严重后果,具体例子见下面Lab
MPLS域中的汇总行为是不建议配置的
LDP Paths in BGP Networks
Labels are assigned to Forwarding Equivalence Classes(FEC).
FEC in unicast IP routing is equal to a destination prefix found in FIB.
This is true only for Internal Gateway Protocol (IGP)-derived prefixes.(单播FEC是基于每个目的前缀的,但是前提条件就是该前缀是由IGP学习的)
BGP-derived prefixes are assigned the label that is used for the BGP next-hop address.
MPLS单播应用中
如果数据包的目的地址在本地路由表中由IGP学习过来的,它的FEC的分类方式为FIB的每一个目的前缀
如果数据包的目的地址在本地路由表中由BGP学习过来的,它的FEC的分类方式是BGP条目的下一跳地址
进入MPLS-domain的数据包,如果其目的地址在进入的路由器上以BGP形式出现,那么该数据包的转发将借用目的地址的下一跳标签(即:本地路由器去往下一跳所用的标签,将被借用来发送该数据包)