Intro
MPLS,Multi-Protocol Label Switching,全称多协议标记交换,是一种标记机制的包交换技术,通过简单的2层交换来集成IP Routing的控制。
MPLS究竟是不是路由协议,究竟工作在第几层,在这里,不做探讨,以下内容只介绍其基础的配置,并衔接ISIS基础配置这篇文章。
以下配置命还是以博科设备为例
Network Information
贴出R1和R2的部分配置信息协助构建ISIS + MPLS
。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
!
1 | ! |
MPLS Brief Description
简要说明一下MPLS
中的某些组成部分,其余的部分不在赘述了😴。
Network Components
就像BGP对等体
一样,MPLS
内也包含一些概念,依次如下:
- P网络:提供商网络
- P路由器:部署MPLS/IP网络环境的路由器
- PE路由器:提供商网络的边界路由器,提供VPN终端客户连接和服务
- CE路由器:客户的路由器,用做客户网络和提供商网络之间的网关
- C网络:客户的网络
MPLS-Interface
用于建立path
的三层接口,注意,是三层
接口。
LSP
LSP, Label Switched Path
,标签交换路径,即到达同一目的地址的报文在MPLS
网络中经过的路径。这玩意,就是流量的“方向”了。
LDP
LDP, Label Distribution Protocol
,标签分发协议,这玩意是路由器在构建MPLS
标签转发表时遵守的规则,MPLS的标签转发表的建立就是靠这玩意。
VPLS
VPLS,Virtual Private Lan Service
,这玩意其实并只是MPLS
所有的东西,按照不同的信令协议,也有不同的应用方法(BGP-l2vpn),这里所介绍的VPLS
本质上是基于IP/MPLS
的L2VPN
技术(其实是现在用的最多的也就是MPLS
下的VPLS
了😂)。
不过,这玩意还有个更加通俗的理解方式,那就是运营商给客户的“业务网”。
MPLS Config
想要MPLS
能正常使用,需要做的路由器配置其实并不是很多,大体上就包括:mpls-interface
、path
和lsp
这些。
以下的配置步骤可作为参考: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
29R1#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
1 | R2#configure terminal |
上面贴出的是完整的配置过程,但是实际上两台设备的配置顺序是人为自定的,不过需要说明的是,一旦创建了path
,使用show mpls routes
命令时,就可以看到mpls
的标签转发表了。其次,创建lsp
时可以不指定primary-path
和secondary-path
,此时lsp
会默认使用mpls
内存在且up
的path
(已连接的路径),并且lsp
一旦创建后设备会自动生成一个tunnel
用于传输数据,这个可以不用管;之所以创建primary-path
和secondary-path
,实质上是为了手动调度流量比较方便。另外,在修改lsp
时,必须要先disable
这条lsp
(先关闭这条路径)才可以进行修改(博科的设备是这样)。还有,使用router-id
来作为出口PE
路由器的地址,十分方便。
当然了,不同厂商设所支持的MPLS
扩展功能可能不一样的(厂商特色,23333),但是基本上都是一样的。
VPLS
MPLS
网络构建好了之后,创建VPLS
就很简单啦。
可以按照下面的脚本进行执行。1
2
3
4
5
6
7
8
9
10R1#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 //保存配置
1 | R2#configure terminal |
创建好了之后,可以使用show mpls vpls
来查看vpls peer
是否up
,如果up
,则创建成功,反之,则不成功,需要检查配置。
Summary
总的来说,MPLS
和VPLS
的创建还是十分简单的,难点在于,骨干网节点过多的网络环境中,实现MPLS
的流量调度工程,做这个事情一定要思路清晰才行。