Intro MPLS ,Multi-Protocol Label Switching,全称多协议标记交换,是一种标记机制的包交换技术 ,通过简单的2层交换来集成IP Routing的控制。 MPLS究竟是不是路由协议,究竟工作在第几层,在这里,不做探讨,以下内容只介绍其基础的配置,并衔接ISIS基础配置 这篇文章。
以下配置命还是以博科设备为例
贴出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内也包含一些概念,依次如下:
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这些。 以下的配置步骤可作为参考:
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-path和secondary-path,此时lsp会默认使用mpls内存在且up的path(已连接的路径) ,并且lsp一旦创建后设备会自动生成一个tunnel用于传输数据,这个可以不用管;之所以创建primary-path和secondary-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 总的来说,MPLS和VPLS的创建还是十分简单的,难点在于,骨干网节点过多的网络环境中,实现MPLS的流量调度工程,做这个事情一定要思路清晰才行。