前面我们学习了MPLS和标签的基础概念,但是单看概念肯定是不容易理解的,现在通过静态的标签分配深入学习下MPLS的转发原理。
一、网络拓扑
需要先完成相应的基础配置:
- IP地址正确配置
- R1、R2、R3、R4部署OSPF区域,确保192.168.1.0/24和172.16.1.0/24已经能够互访。
- 通过配置MPLS静态标签分配使用MPLS标签进行转发。
二、配置
2.1 基础配置
AR1:
interface GigabitEthernet0/0/0
ip address 10.0.12.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
interface LoopBack1
ip address 192.168.1.1 255.255.255.255
# 配置OSPF
ospf 1
area 0.0.0.0
network 10.0.12.0 0.0.0.255
network 192.168.1.1 0.0.0.0
AR2:
interface GigabitEthernet0/0/0
ip address 10.0.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.0.23.2 255.255.255.0
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
ospf 1
area 0.0.0.0
network 10.0.12.0 0.0.0.255
network 10.0.23.0 0.0.0.255
AR3:
interface GigabitEthernet0/0/1
ip address 10.0.23.3 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 10.0.34.3 255.255.255.0
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
ospf 1
area 0.0.0.0
network 10.0.23.0 0.0.0.255
network 10.0.34.0 0.0.0.255
AR4:
interface GigabitEthernet0/0/2
ip address 10.0.34.4 255.255.255.0
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
interface LoopBack1
ip address 172.16.1.1 255.255.255.255
#
ospf 1
area 0.0.0.0
network 10.0.34.0 0.0.0.255
network 172.16.1.1 0.0.0.0
完成基础的接口配置和OSPF的路由通告。
2.2 MPLS配置
前面基础概念我们知道FEC和LSP是单向的,如果是手工定义LSP需要双向配置LSP路径和标签,从拓扑图也能够看到。下面先配置从AR1到达AR4的标签路径。
AR1:
# 全局配置MPLS lsr-id,在MPLS域内标识该LSR路由器,类似router id
mpls lsr-id 1.1.1.1
# 全局使能mpls功能
mpls
# 在接口使能mpls
interface GigabitEthernet0/0/0
ip address 10.0.12.1 255.255.255.0
mpls
# 手工配置一天LSP,AR1类型为ingress ,LSP的名字为192->172,可以自定义,然后目的地址为172.16.1.1 32 ,出标签为100
static-lsp ingress 192->172 destination 172.16.1.1 32 nexthop 10.0.12.2 out-labe
l 100
AR2:
# 配置mpls lsr-id
mpls lsr-id 2.2.2.2
# 全局使能mpls功能
mpls
# 接口使能mpls功能
interface GigabitEthernet0/0/0
ip address 10.0.12.2 255.255.255.0
mpls
#
interface GigabitEthernet0/0/1
ip address 10.0.23.2 255.255.255.0
mpls
# AR2作为中间转发路由器transit,需要定义标签入接口和入标签、下一跳和出标签,表示从哪个接口进来,下一跳和出标签
static-lsp transit 192->172 incoming-interface GigabitEthernet0/0/0 in-label 100
nexthop 10.0.23.3 out-label 200
AR3:
# 配置mpls lsr-id
mpls lsr-id 3.3.3.3
# 全局使能mpls功能
mpls
# 接口使能mpls功能
interface GigabitEthernet0/0/1
ip address 10.0.23.3 255.255.255.0
mpls
#
interface GigabitEthernet0/0/2
ip address 10.0.34.3 255.255.255.0
mpls
# AR3也是作为中间标签转发路由器配置为transit,和AR2一样定义入接口、入标签,下一跳和出标签
static-lsp transit 192->172 incoming-interface GigabitEthernet0/0/1 in-label 200
nexthop 10.0.34.4 out-label 300
AR4:
# 配置mpls lsr-id
mpls lsr-id 4.4.4.4
# 全局使能mpls功能
mpls
# 接口使能mpls功能
interface GigabitEthernet0/0/2
ip address 10.0.34.4 255.255.255.0
mpls
# AR4作为出节点egress,只需要定义入接口和入标签即可
static-lsp egress 192->172 incoming-interface GigabitEthernet0/0/2 in-label 300
现在从AR1->AR4的单向LSP已经建立了,可以通过display mpls lsp
查看LSP信息。这里能够看到入标签和出标签以及接口信息等。
那怎样可以看到标签信息呢?通过tracert -v 172.16.1.1
命令可以查看MPLS标签。
在AR1上查看到达172.16.1.1的标签信息。
也可以通过tracert lsp ip 172.16.1.1 32
查看LSP定义的标签信息。
也可以通过抓包查看MPLS 标签,因为MPLS的一个倒数第二跳弹出因此需要在AR3之前进行抓包。
然后通过查看FIB转发表可以看到tunnel ID不为0x0的信息。
最后我们再来配置反向LSP来实现标签转发,注意LSR的角色是相反的。
AR1:
static-lsp ingress 192->172 destination 172.16.1.1 32 nexthop 10.0.12.2 out-labe
l 100
static-lsp egress 172->192 incoming-interface GigabitEthernet0/0/0 in-label 600
AR2:
static-lsp transit 192->172 incoming-interface GigabitEthernet0/0/0 in-label 100
nexthop 10.0.23.3 out-label 200
static-lsp transit 172->192 incoming-interface GigabitEthernet0/0/1 in-label 500
nexthop 10.0.12.1 out-label 600
AR3:
static-lsp transit 192->172 incoming-interface GigabitEthernet0/0/1 in-label 200
nexthop 10.0.34.4 out-label 300
static-lsp transit 172->192 incoming-interface GigabitEthernet0/0/2 in-label 400
nexthop 10.0.23.2 out-label 500
AR4:
static-lsp egress 192->172 incoming-interface GigabitEthernet0/0/2 in-label 300
static-lsp ingress 172->192 destination 192.168.1.1 32 nexthop 10.0.34.3 out-lab
el 400
tunnel id不为0表示隧道转发,其它的都是正常的IP路由转发,然后在转包上也能看到对应的标签。整个过程就差不多是这样了,不过这里有几个点需要注意:
- mpls lsr-id命令用来配置LSR的ID。LSR ID用来在网络中唯一标识一个LSR。LSR没有缺省的LSR ID,必须手工配置。
- in-label占用的是当前LSR的标签空间,采用静态LSP时,标签空间为16~1023。
-** out-label** 占用的是下游LSR的标签空间,而下游空间采用的标签分发方式不确定,所以out-label的标签空间为16~1048575。 - LSP如果想要实现正常通信需要双向进行配置。
- 缺省情况下MPLS有一个倒数第二跳弹出也就是在AR3的G2口或者AR2的G0口就会进行弹出,可能无法观察到现象
三、MPLS配置命令
基础配置命令:
# 配置LSR ID
[Huawei] mpls lsr-id lsr-id
# 使能MPLS
[Huawei] mpls
# 在接口视图下,使能当前接口的MPLS功能。需先使能全局MPLS能力后才能执行接口下的MPLS使能命令。
[Huawei-GigabitEthernet0/0/0] mpls
# Ingress LSR配置
[Huawei] static-lsp ingress lsp-name destination ip-address { mask-length | mask } { nexthop next-hop-address | outgoing-interface interface-type interface-number } * out-label out-label
static-lsp ingress命令用来为入口节点配置静态LSP。
推荐采用指定next-hop的方式配置静态LSP,确保本地路由表中存在与指定目的IP地址精确匹配的路由项,包括目的IP地址和下一跳IP地址。
# Transit LSR配置,static-lsp transit命令用来为中间转发节点配置静态LSP。
[Huawei] static-lsp transit lsp-name [ incoming-interface interface-type interface-number ] in-label in-label { nexthop next-hop-address | outgoing-interface interface-type interface-number }* out-label out-label
# Egress LSR配置
[Huawei] static-lsp egress lsp-name [ incoming-interface interface-type interface-number ] in-label in-label
static-lsp egress命令用来在出口节点配置静态LSP。
# 查看静态LSP配置
[Huawei] display mpls static-lsp [ lsp-name ] [ { include | exclude } ip-address mask-length ] [ verbose ]
# 追踪MPLS标签路径
tracert -v 192.168.1.1
# 查看转发表项
dis fib
总结:通过静态配置LSP的方式观察标签的转发现象,但是总体来说手工配置LSP是比较繁琐的。