采用静态手工指定label的方式配置MPLS的LSP
MPLS中对于LSP(label switching path)有两种方式,手工静态指定、LDP(label distribute protocol),本实验采用前者的方式,详细分析LSP在转发数据报文中是如何查表(RIB、FIB、LIB、LFIB)的
几种表项的区别 RIB:路由转发信息库,根据控制层面的协议计算出来的一个转发信息库 FIB:FIB是根据RIB生成的,区别在于RIB是需要进行递归查找的,FIB则不需要 LIB:label information base根据FIB生成LIB,用于转发标签包 LFIB:FIB和LIB共同构建出LFIB,用于转发标签包
实验拓扑
说明:
- domain内的网段信息为10.1.xy.z/24 xy为两台路由器的编号,z为路由器本身的编号
- 灰色部分书MPLS的domain,R2、R3是作为MPLS-doamin的边界,即LER( label edge router),完全处在domain内部的是LSR(label switching router);灰色部分的地方底层要打通IGP,本实验采用了OSPF 三台router均在area 0中
- 处于边界的LER设备其实即作为ingress,也作为egress
配置思路与过程
IGP–OSPF
MPLS-doamin底层的IGP,此处不多过多赘述,配置如下所示
[R2]dis cu con ospf
[V200R003C00]
ospf 1 router-id 10.1.1.1
area 0.0.0.0
network 10.1.2.2 0.0.0.0
network 10.1.23.2 0.0.0.0
return
[R3]dis cu con ospf 1
[V200R003C00]
ospf 1 router-id 10.1.3.3
area 0.0.0.0
network 10.1.3.3 0.0.0.0
network 10.1.23.3 0.0.0.0
network 10.1.34.3 0.0.0.0
return
[R4]dis cu con ospf
[V200R003C00]
ospf 1 router-id 10.1.4.4
area 0.0.0.0
network 10.1.4.4 0.0.0.0
network 10.1.34.4 0.0.0.0
return
此时,使用R2的lookback ping R4 抓包可以看到这是一个IP包
关于IP包就进行查表转发,注意查询的是FIB,FIB是根据RIB生成的,区别在于RIB是需要进行递归查找的,FIB则不需要
LSP–MPLS
1、首先要使MPLS-domain中的路由器与接口使能MPLS
mpls lsr-id x.x.x.x
mpls
int g0/0/x
mpls
2、静态指定LSP的路径与label R2 --> R4
R2 --> R4
[R2]static-lsp ingress toR4 destination 10.1.4.4 32 nexthop 10.1.23.3 outgoing-i
nterface Serial 4/0/0 out-label 23
[R3]static-lsp transit A incoming-interface Serial 4/0/0 in-label 23 nexthop 10.
1.34.4 outgoing-interface Serial 4/0/1 out-label 34
[R4]static-lsp egress toR4 incoming-interface Serial 4/0/0 in-label 34
这样一来针对于R2上针对10.1.4.4的这条路由就有了MPLS-LSP的路径,此刻在R2上pingR4 抓包查看
可见,R2去R4的数据报文中在2.5层就出现了MPLS的封装信息;而回来的包是没有的,这是因为回来的报文并没有MPLS的LSP
3、静态指定LSP的路径与label R4 --> R2
R4 --> R2
[R4]static-lsp ingress toR2 destination 10.1.2.2 32 nexthop 10.1.34.3 outgoing-i
nterface Serial 4/0/0 out-label 43
[R3]static-lsp transit B incoming-interface Serial 4/0/1 in-label 43 nexthop 10.
1.23.2 outgoing-interface Serial 4/0/0 out-label 32
[R2]static-lsp egress toR2 incoming-interface Serial 4/0/0 in-label 32
此时在R2上pingR4就可以看到去和回都是由label的,去的是23 回的是32
分析LSP与LFIB
R2 -> R4
1、首先R2上查询10.1.4.4的FIB信息,因为入口是一个IP包,以R2的环回口为源头;发现这个路由是由Tunnel ID的(并不是0x0),说明这个数据报文是要进行标签的转发的 2、检查LFIB,重点关注NHLFE(nexthop label forwarding entry);下一跳,出接口,标签,操作类型:加入、压入标签23 3、此时IP包经过R2后就变成了一个标签包,此时R3收到一个label为23的标签包,R3作为一个Transit,收到R2发来的标签包(labeled packet),R3查询LFIB,先看ILM(INCOMING LABEL MAP ) (入接口,入标签,token),关联tunnelID(token) 0X1,指向NHLFE,由于tunnel ID不为0,那么就执行MPLS 转发,交换标签,从23换到34 ,如下是ILM和NHLFE的信息 在R3的两个接口分别抓包,可以看到两个标签,进来的label是23 出去的是34 4、当这个带着34的label包来到R4上后,R4就会查看LSP信息,因为这是一个label包,R4是egress设备,则对于收到label包会将其标签进行弹出操作,这样就成为了一个IP包,然后查询本地的FIB,根据吓一条进行IP的报文转发
R4 -> R2
1、首先在R4上查询10.1.2.2这个IP包的FIB,信息起源为自己的环回,即这个包是一个IP包,查询后发现这个IP包是有Tunnel ID 的,说明此IP包存在LSP信息,需要查询MPLS的LSP,也可以根据tunnel-info查询这个路由的LSP转发信息
2、R4作为一个ingress设备,要对一个进入MPLS-domain的IP包进行push label的操作,可见其对10.1.2.2/32这个FEC压入了一个43的label,重点还是关注NHLFE 3、当这个带着43的label来到R3后,R3作为一个Transit设备,收到的肯定是带label的包,查询自身的LFIB,检索出其中的NHLFE;将43的label swap成32,R3上抓包也可以看出来
4、当这个带着32label的包来到R2后,R2作为一个egress设备,首先收到一个label的包,先查LFIB,检索出其中的NHLFE,会做一个pop的操作,将in-label的32 弹出,使其变成一个IP包;然后查FIB进行转发
总结
LSP的生成过程
第一步:首先运行IGP 控制层面学习路由表项,将路由跑通,生成RIB,根据其生成FIB;
第二部:运行LDP(label distrubetion protal)每个router生成LIB,根据FIB和LIB 生成最优in out label,即LFIB;或手工配置static-lsp 指定路由的in outlabel,即手工生成lsp(label switching path)
几种表的查询方式
RIB:dis ip routing-table
FIB:dis fib
LIB: dis mpls ldp lsp
LFIB:dis mpls lsp
MPLS-domain中的几种角色和处理动作
LER label edge router
- Ingress 进
- Egress 出
LSR label switching router
- transit MPLS域的中间节点。完全处于mpls domain中
处理动作
- ingress:push 进入MPLS域的报文;在ingress上封装标签,由原本的IP包变成label包
- transit:swap 在MPLS域中,transit设备将旧标签剥离,并打上新的标签
- egress :pop 在egress设备上,将标签剥离,由label包变成IP包
LFIB的架构
LFIB架构:
1、ILM in-label mapping 目的:判断收不收
2、tunnel-id/Token
[R2]dis tunnel-info tunnel-id 0x1
3、NHLFE nexthop label forwarding entry 下一跳转发条目 目的:发不发,怎么发
FIB中的Tunnel ID是什么
FIB 的tunnelID是决定此数据包是IP转发还是标签转发的依据;FIB中的tunnelID对应到dis mpls verbose中的token
|