VPLS
了解EVPN前先了解一下VPLS技术
VPLS称为虚拟专用局域网业务 (Virtual Private LAN Service),是公用网络中提供的一种点到多点的L2VPN业务。
VPLS存在无法实现负载分担、网络部署困难等缺点,无法满足L2VPN灵活部署和CE多归属场景下提升链路利用率等需求,EVPN (Ethernet Virtual Private Network,以太网虚拟私有网络)解决了以上问题。
EVPN在RFC7432中被定义,它引入控制平面用于控制MAC地址的学习。随着EVPN的不断扩展,EVPN不仅支持L2VPN,同时支持L3VPN。EVPN被广泛用于不同的场景,如广域网、数据中心和园区网。
Vpls:全称为VirtualPrivateLanService,也就是虚拟专用局域网业务。比较热门的一种MPLS二层VPN技术。业界有两个标准,一个标准以LDP作为信令协议,由Alcatel发起,得到业界大部分厂家的支持(包括Cisco);另一个标准由Juniper发起,以BGP作为信令协议,只有Juniper和华为支持。
一种基于以太网的二层VPN技术,公用网络,点到多点的L2VPN业务
实现VPLS:创建隧道和PW,创建VSI,绑定PW和AC到VSI
1 VPLS 概念
AC:接入电路,描述CE与PE之间物理链路。对应的接口只能是以太网接口。
PW :伪链接/伪线,用于描述在公网中利用MPLS标签转发技术实现隧道转发的双向虚拟链路,称之为PW。两个本地和远端VC标签定义一条PW
VC(Virtual Circuit):虚电路。在两个节点之间的一种单向逻辑连接。一个PW由一对反向VC组成。在一些应用中一个VC也可作为单向PW使用
VSI :虚拟交换实例,是AC与PW的桥梁,AC接入PE后,由VSI互相映射,让AC产生的流量进入对应的PW隧道中进行传输与访问。
PW Signaling:信令协议,有mpls ldp和bgp组成
Tunnel:隧道,说白了就是转发所有VSI业务的通道,可以是mpls隧道,也可以说gre隧道。
Forwarder:代表了PW的转发表,一个映射关系,PE收到AC上送的数据帧,由转发器选定转发报文使用的PW
2 VPLS的LDP信令
VPLS的LDP会话是通过MPLS LDP远端会话建立的。
远端LDP会话建立依靠单播发送HELLO包进行通信。在VPLS中,用于建立PW。
Vpls的LDP建立过程:
在两个PE的场景中,PE1和PE2都具备了CE传递来的AC与VSI。
两台PE在本地绑定了自己的AC和VSI信息。
此时,PE1与PE2之间建立的远端LDP会话信息。
PE1会采用DU(下游自主)的方式主动向PE2发送标签映射消息。此消息中携带了最关键的PW ID(即VSI ID)信息和VC标签,还有一些接口信息。
PE2收到这个消息后,会检测自身是否有AC与VSI关联的信息,如果有,且与发送来的包内容相同和封装参数相同,如果VSI ID相同,则认为这个vsi与自己的vsi处于同一个vpn内,PE2接收此消息,并将自己的相同信息发送给PE1.
PE1收到同样的消息后完成配置。
3 VPLS的LDP配置过程
注意,VPLS只能实现二层互访
在公网环境中创建IGP协议,打通路由。
在公网环境中创建BGP协议,为MPLS做准备。
配置MPLS基本功能,开启LDP协议。
配置LDP远端对等体
[AR1]mpls ldp remote-peer x
X代表对端PE的地址,用于建立远端对等体的命令。此命令是个名称,目的是开启远端对等体功能。
[AR1-mpls-ldp-remote-3.3.3.3]remote-ip3.3.3.3
配置LDP远端对等体。
对端也需要如此配置。
在PE设备上开启L2VPN功能, P设备不需要开启
[~AR1] mpls 12vpn
[*AR1-12vpn] commit
配置vsi
[AR1]vsi X
系统视图下创建vsi,X为名称,同一设备下vsi名称不能相同。
[AR1-vsi-x]Pwsignalldp
配置VSI信令由LDP创建。
[AR1-vsi-x-ldp] vsi-idX
PW两端的VSIID的值必须一致,否则VSI无法建立成功。如果两端VSIID不一致,需要在执行命令peer配置对等体时使用参数negotiation-vc-id vc-id,设置用于PW协商的VCID。
VSI只存在于PE上,一个PE上可以有多个VSI,但VSIID必须本地唯一。
[AR1-vsi-x-ldp]peerXXX
XXX代表对端VSI id,如果要协商需要增加negotiation参数。
对端也是这么配置
接口绑定
[*AR1-GigabitEthernet0/1/]ip binding vsi x
绑定接口给X的vsi,这个配置是给pe连接私网的接口配置的。
对端也是如此配置。
4 VPLS的BGP信令
1.当PE1配置本地标签块后,此时如果PE1和PE2之间的BGP Session已经建立,PE1则向PE2发送携带MP-REACH属性的Update消息,包括SitelD和标签块信息。
2.PE2收到该Update消息后,根据自己的Site lD和报文中的标签块,计算出唯一的一个标签值,作为VC标签,此时单向VC1建立成功。同时,PE2根据报文中Site D和本地标签块,也可以得到PE1的VC标签值,并向PE1发送Update消息,PE1收到PE2的Update消息后作同样的检查和处理,最终也成功建立VC2。
通过BGP建立VPLS信令的核心:
1.是在vsi中建立rt和rd属性。
2.标签块的配置需要设定标签块ID,两个ID在一个网络内不能重复。哪怕这是一条VC,也是两个不同的标签块ID。
3.标签块配置需要遵循两个原则,一是标签块ID大于对端标签块偏移值(只有0,1取值),同时标签块ID要小于对端(标签块偏移值+range)的和。
[*PE2-vsi-bgp1-bgp]site 2 range 5 default-offset 0
[*PE1-vsi-bgp1-bgp]site 1 range 5 default-offset 0
如上两个PE之间配置标签块的例子我们得知,PE1的标签块ID为1,满足大于标签块偏移值,同时满足小于对端5+0的和
PE2的配置也是遵循这个原理。
抓包查看BGP的UPdate信息:
5 VPLS的 BGP 配置过程
注意,VPLS只能实现二层互访
在公网环境中创建IGP协议,打通路由。
在公网环境中创建BGP协议,为MPLS做准备。
配置MPLS基本功能,开启LDP协议。
配置BGP的L2VPN邻居
bgp 1
peer 2.2.2.2 as-number 1
peer2.2.2.2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 2.2.2.2 reflect-client
#
l2vpn-ad-family
Undo policyvpn-target
peer 2.2.2.2 enable
peer 2.2.2.2 reflect-client
peer 2.2.2.2 signaling vpls
//正常建立的IPV4单播邻居不用管,主要是建立L2VPN邻居,同时关闭vpn-target功能。
//在l2vpn下开启signaling vpls的信令功能。
//上述为P设备,也是骨干网络中RR设备的配置过程,PE设备没RR无需添加路由反射器,仅仅与路由反射器建立l2vpn邻居即可。
配置VSI
vsi a
Pwsignal bgp
route-distinguisher 1:1
vpn-target 1:1import-extcommunity
vpn-target 1:1 export-extcommunity
site 4 range5default-offset 0
//vsi采用bgp的方式建立vpls功能
//创建rd和rt值
//配置标签块
接口绑定
[*AR1-GigabitEthernet0/1/]ip binding vsi x
绑定接口给X的vsi,这个配置是给pe连接私网的接口配置的。
对端也是如此配置。
所有的PE设备都需要配置类似的vsi,同一个VC和PW下,都需要配置相同的RT值,跟MPLS VPN类似。
查看配置命令:dis vsi pw out-interface,dis vpls
6 vpls的工作原理
1)转发原理:
192.168.1.1 开始访问192.168.1.2时:
发送ARP包到达PE1,PE1通过vsi记录192.168.1.1的mac地址信息,并记录此mac地址对应的接口是谁。
并进行ARP泛洪,通过AC接口收到的得知属于哪个vsi,然后根据该ASI绑定的PE进行泛洪,私网标签即PW的标签,公网标签根据PW隧道目的地址然后迭代到公网的LSP中
如果获取到后,得知192.168.1.1属于某一个pw,所以直接将此mac地址信息通过PW复制到PE2中。
PE2通过PW学习到这个mac地址表项,通过PE2中的VSI信息查询对应端口,从而实现二层互访。
本质上实现PW传递信息是通过mpls ldp协议进行传递的。公网标签。
2)MAC地址学习过程:
- PE1从连接CE1的端口Port1(Port1属于VLAN10)收到来自PC1的ARP广播报文,PE1把PC1的MAC地址添加到在自己的MAC表项中(PE1的MAC表项中蓝色字体内容)。
- PE1向其它端口(PW1和PW2此时可以看成端口)广播该ARP报文(PE1上的蓝色虚线)。
- PE2从PW1上收到PE1转发来的PC1的ARP报文,把PC1的MAC地址添加到自己的MAC表项中(PE2的MAC表中蓝色字体内容)。
- PE2只向连接CE2的端口转发该ARP报文(PE2上的蓝色虚线),而不向PW上转发,所以该ARP只发送给PC2。这就是VPLS的水平分割特点,即从公网侧PW收到的报文不再转发到其他PW上,而只能转发到私网侧。
- PC2收到PE2转发来的PC1的ARP报文,发现目的地址是自己,就发送一个ARP Reply报文给PC1(PC2上的绿色虚线)。
- PE2从Port2端口收到PC2给PC1的ARP回应报文。PE2添加PC2的MAC地址到自己的MAC表项中(PE2的MAC表中绿色字体内容)。ARP Reply报文的目的地MAC是PC1(MAC A),PE2查询自己的MAC表后,往PW1发送ARP Reply报文。
- PE1收到PE2转发来的PC2的ARP Reply报文,也一样添加PC2的MAC地址到自己的表项中(PE2的MAC表中绿色字体内容),并查找MAC表,转发该ARP Reply报文到PC1。
- PC1收到PC2的ARP Reply报文,完成MAC地址的学习。
- PE1向PW1广播该ARP报文的同时,PE1也通过PW2向PE3发送ARP报文。PE3收到来自PE1的ARP广播报文,添加PC1的MAC地址到自己的MAC表项中(PE3的MAC表中蓝色字体内容),根据水平分割的特性,PE3也只向PC3发送该ARP报文,因为PC3不是该ARP的目的地址,所以PC3不回应ARP Reply报文。
3)MAC地址学习方式::
1,PE即学习AC的MAC地址也学习对应的VLAN
2,PE只学习到AC的MAC地址和接口关系,所有用户都属于同一个广播域
7 VPLS拓展
我们已知VPLS是可以建立通过公网实现而层互访的需求的。
如果在不同位置的CE中配置路由协议,实际上通过vpls也是可以建立邻居关系的。
1)AC的封装方式:
Tag帧格式:
总结:
vlan接入则为LSP为用户分配的标签,为了区分不同的用户,即为P-Tag,骨干网tag,默认
以太网接入:CE发给PE的数据帧不携带LSPf分配的Tag,只携带用户自身侧的 VLAN Tag对于PE来说是没什么意义的
2)PW的封装方式:
PW由PW ID和PW封装唯一标识,两端PW封装类型必须相同,默认情况下,PW的封装方式分为Tagged模式
8 VPLS的弊端
1.VPLS在CE双归接入PE存在环形拓扑的时候,同交换机的破环技术(STP)思路一样,采用阻塞一个端口方式形成无环的转发路径。因此VPLS接入形成了一种主备的模式。
2.由于CE和PE之间只有一条链路转发数据,且PE与PE之间的链路无法形成多路径,可能造成部分链路拥塞。
3.收敛速度慢:PE3在感知到链路故障后会向对端E发送MAC-Withdraw报文,通知删除PE3相关MAC地址。同时PE4将备份链路升级为Active。对端PE1接收到撤销报文后将清除MAC地址,重新学习MAC地址。故障收敛时间与MAC地址数量强相关。
VPWS:
点到点的L2VPN业务
VPWS的基本架构可以分为AC,PW,Tunnel三个部分
- AC(Attachment Circuit):接入电路。AC是一条连接CE和PE的独立的链路或电路。AC接口可以是物理接口或逻辑接口。AC属性包括封装类型、最大传输单元MTU、以及特定链路类型的接口参数。
- PW(Pseudo wire):虚链路。这里指在两个PE节点之间的一种逻辑连接。
- Tunnel(Network Tunnel):隧道。用于透明传送业务数据。
- PW Signal:PW信令协议,用于协商PW。
- L2 PDU(Protocol Data Unit)表示链路层报文。
- T表示Tunnel标签。
- V表示虚电路VC(Virtual Circuit)标签。
- T’表示转发过程中外层标签被替换。
CCC方式建立VPWS,需要手工配置CR-LSP,即静态私网标签,就是唯一标识一台CE设备
LDP方式建立VPWS,使用LDP来传递VC信息,两台CE之间使用VC-Type和VC-ID来唯一标识一个VC,两台PE通过LDP交换VC标签