最初MPLS多协议标签交换和包交换是竞争关系
随着包交换的快速发展为特快包交换
MPLS最终落败但开展其它业务并且还使用了特快包交换中的FIB表
开展业务为:
- 解决BGP路由黑洞的最佳方案
- MPLS VPN
- MPLS TE 流量工程
MPLS多协议标签交换
工作过程
控制层面:路由协议工作,生成RIB-FIB,流量的方向即为控制流量;
数据层面:设备基于路由表访问目标,产生数据流量;与控制层面方向相反;
工作原理
控制层面:RIB --> FIB LIB FIB + LIB = FLIB
- 在没有MPLS时控制层面仅生成RIB(路由表)和FIB(转发信息数据库);FIB是基于RIB生成;
- MPLS协议会启动TDP(cisco私有)或LDP(公有),直连设备间将建立邻居关系;
- MPLS在建立邻居关系后,生成邻居表;LDP协议再基于FIB表中学习到的路由条目生成标签号;
- 标签号生成后,将存储于本地的LIB表-标签信息数据库;LIB表将在邻居间共享; LIB表中装载本地及邻居为每条路由分发的标签号;
- 运行MPLS协议的设备,将LIB和FIB进行结合,将标签号和最佳路径的关系映射生成LFIB表(标签转发信息数据库)
注:控制层面生成的表格RIB—》FIB---》LIB---》LFIB 前两张表为路由协议工作后生成,后两张表为MPLS的LDP协议生成;
数据层面:
- 第一跳压入标签号pe边界LSR
- 中间的路由器 p LSR基于标签号,查询本地LFIB表转发
- 最后一跳弹出标签 pe设备 边界LSR
包交换会将路由记录在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;
MPLS的配置
- IP可达,使用路由协议全网可达
- 配置MPLS-LDP
[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查看包,也可以使用追踪命令
BGP路由黑洞
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 路由基于隧道进行递归查找
MPLS-VPN
VPN和真实专线比较缺点:
安全 --- ipsec 系列vpn
带宽稳定
MPLS VPN是运营商帮用户做的虚拟专线,比用户自己做的家庭VPN稳定和安全,价钱比真正的专线低很多
MPLS-VPN实验
私有地址和公有地址的区别