最初MPLS多协议标签交换和包交换是竞争关系
随着包交换的快速发展为特快包交换
MPLS最终落败但开展其它业务并且还使用了特快包交换中的FIB表
开展业务为:
控制层面:路由协议工作,生成RIB-FIB,流量的方向即为控制流量;
数据层面:设备基于路由表访问目标,产生数据流量;与控制层面方向相反;
控制层面:RIB --> FIB LIB FIB + LIB = FLIB
注:控制层面生成的表格RIB—》FIB---》LIB---》LFIB 前两张表为路由协议工作后生成,后两张表为MPLS的LDP协议生成;
数据层面:
包交换会将路由记录在RIB表中,运行了CEF的设备会将RIB表转换为FIB表。
MPLS协议由TDP(cisco私有)或者LDP来运行。运行MPLS协议的设备两两建邻,LDP基于FIB表中的路由条目来分配标签号存储在LIB(标签信息数据库)中。将标签表共享给邻居。最后,每个设备上都有所有设备发出的标签号,设备基于LIB和FIB生成为LFIB表来整合出转发规则表(最佳)。
中间蓝色的为背景覆盖为MPLS域,也就是MPLS协议的范围。
旁边的EdgeLSR为边界标签路由器。负责压标签和弹标签。PE设备
中间的LSR为标签路由器负责转发标签。P设备
MPLS的次末跳 倒数第二跳,默认执行
边界LSR将本地的直连网段传递给MPLS域内邻居后,LDP分配标签号为3,告知倒数第二跳设备它的身份;导致倒数第二跳设备在查询LFIB表后,已知转发路径的前提下提前弹出标签,使得最后一跳路由器均只需要查询FIB表; 否则最后一跳路由器在查询LFIB表后,弹出标签还需要查询FIB;
[r2]mpls lsr-id 2.2.2.2 必须先定义mpls的router-id,要为本地设备的真实ip地址,且邻居可达,因为该地址将用于建立TCP会话,建议使用环回地址
[r2]mpls 再开启mpls协议
[r2-mpls]mpls ldp 再激活LDP协议
[r2-mpls-ldp]q
之后需要在所有标签经过的接口上开启协议
[r2]interface GigabitEthernet 0/0/1
[r2-GigabitEthernet0/0/1]mpls 先开启MPLS
[r2-GigabitEthernet0/0/1]mpls ldp 再激活LDP协议
当启动配置完成后,邻居间使用UDP报文组播收发hello包;之后基于hello包中的router-id地址进行TCP会话的建立;
[r3]display tcp status
TCPCB Tid/Soid Local Add:port Foreign Add:port VPNID State
b4cf3d64 167/6 3.3.3.3:646 4.4.4.4:50858 0 Established
b4cf3adc 167/3 3.3.3.3:50806 2.2.2.2:646 0 Established
当tcp会话建立后,邻居间基于TCP会话再建立邻居关系,生成邻居表:
[r3]display mpls ldp peer 查看邻居表
再然后基于本地的FIB表,默认华为仅针对32位的主机路由生成标签号;存储于LIB表中,之后邻居间共享LIB表;
[r3]display fib 查看FIB表
[r4]display mpls ldp lsp 查看LIB表,装载本地和邻居为各条路由分配的标签号
最后路由器将LIB和FIB集合,生成最佳路径的标签转发规则—LFIB
[r4]display mpls lsp 查看LFIB表
注:默认华为仅针对32位主机路由分配标签,mpls域内的路由器都要写
[r3]mpls
[r3-mpls]lsp-trigger all 开启功能,将针对fib表中所有路由进行标签号的分配
[r2]tracert -v -a 2.2.2.2 56.1.1.2
除了用wireshark查看包,也可以使用追踪命令
MPLS协议并不会为通过BGP协议学习的路由条目分配标签号;
而是在访问这些BGP路由目标网段时,在流量中压入到达这些网段的BGP下一跳设备地址的标签号;
例:R2从BGP邻居5.5.5.5 学习到6.6.6.0 网段的路由;R2在访问6.6.6.0 时,将在数据包中压入到达5.5.5.5ip地址的标签号,来穿越中间没有运行BGP协议的设备;实现打破路由黑洞;
注:华为设备默认不为BGP协议执行下一跳标签机制,cisco默认执行;
华为设备需要开启 route recursive-lookup tunnel 路由基于隧道进行递归查找
VPN和真实专线比较缺点:
安全 --- ipsec 系列
带宽稳定
MPLS VPN是运营商帮用户做的虚拟专线,比用户自己做的家庭VPN稳定和安全,价钱比真正的专线低很多
MPLS-VPN实验
私有地址和公有地址的区别