产生背景
mpls(多协议标签交换)产生原因:
传统ip报文依赖路由表转发,当时的硬件设备性能差,路由器查表成了网络数据转发的瓶颈。
mpls网络和ip网络相比只要处理网络边缘的ip报文,而在mpls内部采用标签转发,节约了时间。
随着设备性能提升,mpls提升转发速度的优势弱化,但标签和设备内转控分离的特点,使它在vpn和qos中应用广泛。
mpls的基本网络结构
LER(标签边缘路由器)在mpls网络中负责标签的压入和弹出,如上图的RTB和RTD.
LSR(标签交换路由器)用于标签的交换,上图的RTC。
根据数据流的方向,LDP存在入节点(ingress),中间节点(transit)和出节点(egress)。
根据数据流的方向可以分为上线游,上下游是相对而言的。
LSP是一个单向的从起点到终点的路径,如果需要来回都有标签得做双向。
FEC的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或VPN等为划分依据的任意组合。
FEC和LDP的联系:
同一个FEC的报文走同一条LDP。
相同特征报文的打上标签,放在一条路上转发
LDP的标签类型:
入标签:自己产生给别人用。
出标签:别人产生给自己用(动态mpls下)
标签本地有效,可以传输到下一跳
MPLS标签的分配与路由的转发
标签转发体系
设备分为控制面板和转发面板
控制平面
IP协议
RIB路由表不多赘述
LDP 动态分发协议
LIB(标签信息表):由LDP产生,每个LSR都会根据FEC的映射关系建立LIB表象
转发平面
FIB:从RIB提取,包含必要的路由信息,指导ip报文的转发。
LFIB:用于指导MPLS报文转发,从LIB提取必要的信息生成。
华为将LFIB再细化为ILM表、NHLFE表
标签的报文格式
label:标签值 20bit,
EXP:用于拓展 3bit 。
s:1bit 栈底标识 为1标识最底层
TTL:8bit,和IP报文中的TTL(Time To Live)意义相同。
标签的取值范围:
0~15:特殊标签。如标签3,称为隐式空标签,0显式空标签(qos情况下使用),用于倒数第二跳弹出,
16~1023:静态LSP和静态CR-LSP(Constraint-based Routed Label Switched Path)共享的标签空间
1024及以上:LDP、RSVP-TE(Resource Reservation Protocol-Traffic Engineering)、MP-BGP(MultiProtocol Border Gateway Protocol)等动态信令协议的标签空间
LSR对标签的处理方式
静态mpls实验
先看拓扑图
配好基础的网络配置
配置相关的配置,使全网互通。
以下为配置脚本
AR1
undo terminal monitor
sys
sysname R1
ospf 1 rou 1.1.1.1
ar 0
q
q
int loopback 0
ip add 1.1.1.1 32
ospf e 1 ar 0
int g0/0/0
ip add 10.1.12.1 24
ospf e 1 ar 0
AR2
undo terminal monitor
sys
sysname R2
ospf 1 rou 2.2.2.2
ar 0
q
q
int loopback 0
ip add 2.2.2.2 32
ospf e 1 ar 0
int g0/0/0
ip add 10.1.12.2 24
ospf e 1 ar 0
int g0/0/1
ip add 10.1.23.1 24
ospf e 1 ar 0
AR3
undo terminal monitor
sys
sysname R3
ospf 1 rou 3.3.3.3
ar 0
q
q
int loopback 0
ip add 3.3.3.3 32
ospf e 1 ar 0
int g0/0/0
ip add 10.1.23.2 24
ospf e 1 ar 0
int g0/0/1
ip add 10.1.34.1 24
ospf e 1 ar 0
AR4
undo terminal monitor
sys
sysname R4
ospf 1 rou 4.4.4.4
ar 0
q
q
int loopback 0
ip add 4.4.4.4 32
ospf e 1 ar 0
int g0/0/0
ip add 10.1.34.2 24
ospf e 1 ar 0
静态mpls的配置
[R1]mpls lsr-id 1.1.1.1 配置lsr id 一般使用loopback 地址
[R1]mpls 全局启用mpls
[R1-mpls]q
[R1-mpls]int g0/0/0 路径的所有端口都要配置
[R1-GigabitEthernet0/0/0]mpls 接口下启用mpls
[R2]mpls lsr-id 2.2.2.2
[R2]mpls
Info: Mpls starting, please wait... OK!
[R2-mpls]int g0/0/0
[R2-GigabitEthernet0/0/0]mpls
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]mpls
[R3]mpls lsr-id 3.3.3.3
[R3]mpls
Info: Mpls starting, please wait... OK!
[R3-mpls]int g0/0/0
[R3-GigabitEthernet0/0/0]mpls
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]mpls
[R4]mpls lsr-id 4.4.4.4
[R4]mpls
Info: Mpls starting, please wait... OK!
[R4-mpls]int g0/0/0
[R4-GigabitEthernet0/0/0]mpls
[R4-GigabitEthernet0/0/0]int g0/0/1
[R4-GigabitEthernet0/0/1]mpls
手动配置标签
[R1]static-lsp ingress 1234 destination 4.4.4.4 32 nexthop 10.1.12.2 out-label 101
[R2]static-lsp transit 234 incoming-interface g0/0/0 in-label 101 nexthop 10.1.23.2 out-label 102
[R3]static-lsp transit 34 incoming-interface g0/0/0 in-label 102 nexthop 10.1.34.2 out-label 103
[R3]static-lsp egress 4 incoming-interface g0/0/0 in-label 103
注意:
ingress 路由一定要可达 且掩码下一跳一定要与路由表一样
一定要有下一条ip地址,不然路由器默认以出接口ip作为下一跳导致目标不可达。
此时已经做好了单向的mpls,使用1.1.1.1 ping 4.4.4.4可达
此时静态mpls已经配置完成。
抓包
发出去的包
回来的包
发出去的包走的是mpls协议,而回报走的是ip协议
R4先查LIB表剥离标签再查路由表进行转发(此时是环回口)。
mpls路由器处理报文的流程
查看fib的tunnel id是否为0
- Tunnel ID为0:
- 路由器根据FIB中的下一跳信息,查找相应的标签并进行转发。如果是非特殊标签则进行mpls转发,如果是特殊标签(0 3 )则弹出标签进行路由转发
- Tunnel ID不为0:
- 路由器将数据包封装在指定的隧道中,通常涉及到在数据包外层添加MPLS标签,并找到与Tunnel ID匹配的LSP(标签交换路径),然后将数据包送往下一跳。
mpls转发映射概念
tunnel id:在路由器本地有效
NHLFE(Next Hop Label Forwarding Entry):(需要在诊断视图查询)
将出接口 tunnel id 下一跳地址 出标签 绑定在一起,
ILM(Incoming Label Map):入标签映射
包含Tunnel ID、入标签、入接口、标签操作类型等信息
主要用于接收带标签的报文并对其进行转发。
三种LSR对报文的处理方式
拿上面的实验分析:R1到4.4.4.4的标签封装
查R1的转发表
[R1]dis fib
FIB Table:
Total number of Routes : 10
Destination/Mask Nexthop Flag TimeStamp Interface TunnelID
4.4.4.4/32 10.1.12.2 DGHUT t[96] GE0/0/0 0x1
tunnel不为0,因此查询nhlfe
[R1-diagnose]dis mpls nhlfe
OUTINTERFACE TUNNELID OPER NEXTHOP DEEP STACK
------------------------------------------------------------------------
GE0/0/0 0x1 PUSH 10.1.12.2 1 101
1 Record(s) Found
打上标签 101 下一跳是 10.1.12.2
再到R2中查ilm(入标签映射)
[R2-diagnose]dis mpls ilm
INLABEL IN-INTERFACE TUNNELID VRFINDEX OPER LSPTYPE ACKFLAG
--------------------------------------------------------------------------
101 GE0/0/0 0x1 0 NULL STATIC 0
1 Record(s) Found
可以看到tunnel id 是 0x1
再查nhlfe
[R2-diagnose]dis mpls nhlfe
OUTINTERFACE TUNNELID OPER NEXTHOP DEEP STACK
------------------------------------------------------------------------
GE0/0/1 0x1 SWAP 10.1.23.2 1 102
1 Record(s) Found
R3同理跳过现在直接查R4
R4-diagnose]dis mpls ilm
INLABEL IN-INTERFACE TUNNELID VRFINDEX OPER LSPTYPE ACKFLAG
--------------------------------------------------------------------------
103 GE0/0/0 0 POP STATIC 0
1 Record(s) Found
103 标签R4的处理是剥离,再查询路由器进行转发
[R4]dis ip routing-table 4.4.4.4 32
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
4.4.4.4/32 Direct 0 0 D 127.0.0.1 LoopBack0
位于本地环回口直接转发