MPLS基础配置方法

Intro

MPLS,Multi-Protocol Label Switching,全称多协议标记交换,是一种标记机制的包交换技术,通过简单的2层交换来集成IP Routing的控制。
MPLS究竟是不是路由协议,究竟工作在第几层,在这里,不做探讨,以下内容只介绍其基础的配置,并衔接ISIS基础配置这篇文章。

以下配置命还是以博科设备为例

Network Information

贴出R1和R2的部分配置信息协助构建ISIS + MPLS

R1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
!
interface ve 921
ip router isis
ip address 10.0.254.10/30
!
interface ve 922
ip router isis
ip address 10.0.254.14/30
!
!
interface loopback 1
ip router isis
ip address 169.254.254.1/32
!
ip router-id 169.254.254.1
!
router isis
net 49.0001.0000.0000.1000.00
log adjacency
log invalid-lsp-packets
address-family ipv4 unicast
maximum-paths 8
exit-address-family

address-family ipv6 unicast
exit-address-family
!

R2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
!
interface ve 921
ip router isis
ip address 10.0.254.9/30
!
interface ve 922
ip router isis
ip address 10.0.254.13/30
!
!
interface loopback 1
ip router isis
ip address 169.254.254.2/32
!
ip router-id 169.254.254.2
!
router isis
net 49.0002.0000.0000.2000.00
log adjacency
log invalid-lsp-packets
address-family ipv4 unicast
maximum-paths 8
exit-address-family

address-family ipv6 unicast
exit-address-family
!

MPLS Brief Description

简要说明一下MPLS中的某些组成部分,其余的部分不在赘述了😴。

Network Components

就像BGP对等体一样,MPLS内也包含一些概念,依次如下:

  1. P网络:提供商网络
  2. P路由器:部署MPLS/IP网络环境的路由器
  3. PE路由器:提供商网络的边界路由器,提供VPN终端客户连接和服务
  4. CE路由器:客户的路由器,用做客户网络和提供商网络之间的网关
  5. C网络:客户的网络

MPLS-Interface

用于建立path的三层接口,注意,是三层接口。

LSP

LSP, Label Switched Path,标签交换路径,即到达同一目的地址的报文在MPLS网络中经过的路径。这玩意,就是流量的“方向”了。

LDP

LDP, Label Distribution Protocol,标签分发协议,这玩意是路由器在构建MPLS标签转发表时遵守的规则,MPLS的标签转发表的建立就是靠这玩意。

VPLS

VPLSVirtual Private Lan Service,这玩意其实并只是MPLS所有的东西,按照不同的信令协议,也有不同的应用方法(BGP-l2vpn),这里所介绍的VPLS本质上是基于IP/MPLSL2VPN技术(其实是现在用的最多的也就是MPLS下的VPLS了😂)。
不过,这玩意还有个更加通俗的理解方式,那就是运营商给客户的“业务网”。

MPLS Config

想要MPLS能正常使用,需要做的路由器配置其实并不是很多,大体上就包括:mpls-interfacepathlsp这些。
以下的配置步骤可作为参考:

R1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
R1#configure terminal
R1(config)#router mpls //启用mpls
R1(config-mpls)#ldp //进入ldp协议
R1(config-mpls-ldp)#load-sharing 8 //设置lsp的能支持的最大路径条数为8
R1(config-mpls-ldp)#exit
R1(config-mpls)#path To-R2-1 //创建path
R1(config-mpls-path-To-R2-1)#strict 10.0.254.9 //指定这条路径的下一个节点是10.0.254.9
R1(config-mpls-path-To-R2-1)#exit
R1(config-mpls)#path To-R2-2
R1(config-mpls-path-To-R2-2)#strict 10.0.254.13
R1(config-mpls-path-To-R2-2)#exit
R1(config-mpls)#mpls-interface ve921 //将ve 921这个三层接口启用到mpls中
R1(config-mpls-if-ve-921)#ldp-enable //开启此接口ldp功能
R1(config-mpls-if-ve-921)#exit
R1(config-mpls)#mpls-interface ve922
R1(config-mpls-if-ve-922)#ldp-enable
R1(config-mpls-if-ve-922)#exit
R1(config-mpls)#lsp To-R2-1 //创建标签转发路径
R1(config-mpls-lsp-To-R2-1)#to 169.254.254.2 //设置标签转发路径的出口路由器地址
R1(config-mpls-lsp-To-R2-1)#primary-path To-R2-1 //设置主路径
R1(config-mpls-lsp-To-R2-1)#secondary-path To-R2-2
R1(config-mpls-lsp-To-R2-1)#enable
R1(config-mpls-lsp-To-R2-1)#lsp To-R2-2
R1(config-mpls-lsp-To-R2-2)#to 169.254.254.2
R1(config-mpls-lsp-To-R2-2)#primary-path To-R2-2
R1(config-mpls-lsp-To-R2-2)#secondary-path To-R2-1
R1(config-mpls-lsp-To-R2-2)#enable
R1(config-mpls-lsp-To-R2-2)#exit
R1(config-mpls)#write memory

R2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
R2#configure terminal
R2(config)#router mpls
R2(config-mpls)#path To-R1-1
R2(config-mpls-path-To-R1-1)#strict 10.0.254.10
R2(config-mpls-path-To-R1-1)#path To-R1-2
R2(config-mpls-path-To-R1-2)#strict 10.0.254.14
R2(config-mpls-path-To-R1-2)#exit
R2(config-mpls)#lsp To-R1-1
R2(config-mpls-lsp-To-R1-1)#to 169.254.254.1
R2(config-mpls-lsp-To-R1-1)#primary-path To-R1-1
R2(config-mpls-lsp-To-R1-1)#secondary-path To-R1-1
R2(config-mpls-lsp-To-R1-1)#enable
R2(config-mpls-lsp-To-R1-1)#lsp To-R1-2
R2(config-mpls-lsp-To-R1-2)#to 169.254.254.1
R2(config-mpls-lsp-To-R1-2)#primary-path To-R1-2
R2(config-mpls-lsp-To-R1-2)#secondary-path To-R1-1
R2(config-mpls-lsp-To-R1-2)#enable
R2(config-mpls-lsp-To-R1-2)#exit
R2(config-mpls)#exit
R2(config)#write memory

上面贴出的是完整的配置过程,但是实际上两台设备的配置顺序是人为自定的,不过需要说明的是,一旦创建了path,使用show mpls routes命令时,就可以看到mpls的标签转发表了。其次,创建lsp时可以不指定primary-pathsecondary-path,此时lsp会默认使用mpls内存在且uppath(已连接的路径),并且lsp一旦创建后设备会自动生成一个tunnel用于传输数据,这个可以不用管;之所以创建primary-pathsecondary-path,实质上是为了手动调度流量比较方便。另外,在修改lsp时,必须要先disable这条lsp(先关闭这条路径)才可以进行修改(博科的设备是这样)。还有,使用router-id来作为出口PE路由器的地址,十分方便。
当然了,不同厂商设所支持的MPLS扩展功能可能不一样的(厂商特色,23333),但是基本上都是一样的。

VPLS

MPLS网络构建好了之后,创建VPLS就很简单啦。
可以按照下面的脚本进行执行。

R1
1
2
3
4
5
6
7
8
9
10
R1#configure terminal
R1(config)#router mpls //进入mpls协议
R1(config)#vpls Test911 911 //创建vpls
R1(config-mpls-vpls-Test911)#vpls-peer 169.254.254.2 load-balance //添加vpls peer
R1(config-mpls-vpls-Test911)#vlan 911 //创建vpls vlan
R1(config-mpls-vpls-Test911-vlan-911)#tagged ethernet x/x //透传到汇聚端口
R1(config-mpls-vpls-Test911-vlan-911)#exit
R1(config-mpls-vpls-Test911)#exit
R1(config-mpls)#exit
R1(config)#write memory //保存配置

R2
1
2
3
4
5
6
7
8
9
10
R2#configure terminal
R2(config)#router mpls
R2(config)#vpls Test911 911
R2(config-mpls-vpls-Test911)#vpls-peer 169.254.254.1
R2(config-mpls-vpls-Test911)#vlan 911
R2(config-mpls-vpls-Test911-vlan-911)#tagged ethernet x/x
R2(config-mpls-vpls-Test911-vlan-911)#exit
R2(config-mpls-vpls-Test911)#exit
R2(config-mpls)#exit
R2(config)#write memory

创建好了之后,可以使用show mpls vpls来查看vpls peer是否up,如果up,则创建成功,反之,则不成功,需要检查配置。

Summary

总的来说,MPLSVPLS的创建还是十分简单的,难点在于,骨干网节点过多的网络环境中,实现MPLS的流量调度工程,做这个事情一定要思路清晰才行。

Buy me a coffee ? :)
0%