VPLS和EVPN初了解
EVPN基本概念
MP-BGP
产生背景
为什么要有MP-BGP?
MP-BGP:多协议扩展BGP。传统的BGP兼容性并不好,仅支持IPV4的单播报文,那对于MPLS的支持、IPV6的支持都是不足,所以有了MP-BGP,在传统VPN的基础上扩展了它的兼容性,让它更好的支持MPLS、IPV6,还有用于SD-WAN的EVPN、L3VPN等。
为什么传统的BGP-4无法传递IPV6的信息?
传统BGP,即BGP-4当中有三个信息:
- NEXT_HOP
- AGGREGATOR
- NLRI
以上三个字段都是关于IPV4的,IPV6的地址的与IPV4并不一样的,比如NEXT_HOP在BGP-4的报文当中体现出来就是一个32位的IPV4地址,而IPV6的IP地址是128位,IPV6的地址不能直接就写在IPV4地址原来的位置上,同样的AGGREGATOR是与IPV4网段聚合相关的,聚合之后也是一个IPV4的网段,与IPV6也具有很大的不同;NLRI(network layer reachability information)网络层可达信息,其实里面传递的就是一个IPV4的路由信息,如下图所示,这三个字段全都是与IPV4强关联,强绑定的, 所以在其它的网络类型当中这三个字段并不能直接使用。
相关字段
MP-BGP扩展后的新字段:MP_REACH_NLRI和MP_UNREACH_NLRI:
REACH:可达
MP_REACH_NLRI | 多协议可达NLRI |
---|---|
MP_UNREACH_NLRI | 多协议不可达NLRI |
MP-BGP新增一个大的字段MP_REACH_NLRI,网络可达信息信息,为什么说此字段是大字段,因为此字段下还有其它的字段,比如将传统BGP-4当中的NEXT-HOP和NLRI都移动了此字段之下,通过MP_REACH_NLRI此字段其实就相当于已经抹去了BGP-4的特殊性,通过MP_REACH_NLRI字段使得MP-BGP可以兼容更多的网络类型,如下所示:
整体报文结构发生了变化,如下所示:
# BGP-4
## NEXT-HOP
## NLRI
# MP-BGP
## MP_REACH_NLRI
### NEXT_HOP
### NLRI
在路由撤销时BGP-4与MP-BGP使用字段不同:
撤销使用字段 | 所处报文类型 | |
---|---|---|
BGP-4 | withdrawn routes | Update |
MP-BGP | MP_UNREACH_NLRI | Update |
总结
从BGP-4到MP-BGP其实就是调整了报文结构,让BGP的报文结构有更强大的兼容性,扩展性。为了方便理解我们可以类比成一个新很简单的例子,小明第一学期学习了windows server相关的技术,在小明的笔记目录当中都是这样的:
- windows server 2022—NAT
- windows server 2022—Firewall
- windows server 2022—VPN
- ……
到了第二学期,小明又学习LINUX系统的相关技术,发现在LINUX系统当中也有NAT、Firewall、VPN这些技术,如果想把第一学期和第二学期学习的内容放到一起,我们就可心重新安装笔记目录结构变成这样:
- NAT
- windows server 2022
- centos
- Firewall
- windows server 2022
- centos
- VPN
- windows server 2022
- centos
相比于第一种目录结构,无疑第二种目录结构的兼容性更强,小明以后学习UNIX的时候,完全可以继续使用第二种目录结构,如下所示:
- NAT
- windows server 2022
- centos
- UNIX
- Firewall
- windows server 2022
- centos
- UNIX
- VPN
- windows server 2022
- centos
- UNIX
VPLS
VPLS(virtual private LAN service)虚拟专用局域网服务,其实就是VPN,而且是二层VPN,如下所示:
如上图所示, 这是一个二层的VPN网络。VPLS技术它将中间的路由设备整体看做是一个二层交换机,不同地区的相同vlan可以实现二层直接通信,如下图所示:
我们知道同网段通信要进行广播,而同网段同地域情况下通常带宽资源充足,这么做没什么大问题,但在VPLS当中,跨地域马上进行通信时,MAC地址学习依然是是通过广播报文在广域网当中转发,这样太浪费带宽和时间,我们能不能提供把MAC地址提前准备好呢?其实完全可以在数据通信之前提前把MAC地址表在控制层准备好(EVPN),这样的话,就不会在马上要通信的时候还要在广域网上进行广播,EVPN就是这个思路。
- VPLS总结
- VPLS技术主要的局限性在于要求站点间必须是MPLS网络。它的配置较为复杂,维护工作量较大。
- VPLS的控制平面是通过泛洪建立的,效率较低,浪费广域网带宽。
EVPN
基本概念
EVPN全称是Ethernet Virtual Private Network,由RFC7432(BGP MPLS-Based Ethernet VPN)定义。从名字上看,这是一个基于BGP和MPLS的L2 VPN。虽然这是一个2015年才有编号的RFC,但当它还是草案时,很多厂商已经开始实现并使用EVPN。
在EVPN架构中,PE之间的MAC/IP地址学习是基于控制平面的,采用MP-BGP协议通告MAC/IP的可达性,其策略控制非常类似于IP VPN。这种基于控制平面的学习能够对MAC/IP的学习过程提供更强的控制能力,因此具有较好的扩展性,并能维护主机或虚拟机群彼此间的隔离性,解决了设备多归属或网络多归属接入时的负载分担问题,改善了网络出现故障时的收敛时间。EVPN定义了一套通用的控制层面,随着EVPN技术的扩展,EVPN也被用来传递IP路由信息、作为VXLAN等Overlay网络技术的控制层、作为数据中心互联的控制层等作用。但数据层面可以使用不同的封装技术,他们的关系如下图所示:
EVPN并不是一种协议,而是与IPSEC类似是一种框架,EVPN的产生的时间比较晚,使用比较先进设计,借鉴了SDN的思路理念,实现了转控分离,也就是说是EVPN分为转发层面和数据层面:
- 控制层面:MP-BGP
- 转发层面:MPLS、VXLAN、GRE等
EVPN的数据层面可以使用不同的封装技术,这一点类似于SSL,位于应用层与传输层之间,可以为众多的应用层协议提供加密支持。EVPN的控制层面不仅仅可以传递路由信息,还有MPLS当中的LDP、ARP广播等,无论二层还是三层统统能提供支持,拥有极强的兼容性,我们会在后续的MPLS、VXLAN课程当中再次看到EVPN技术。
我们之前在谈VPLS的时候说传递ARP二层信息非常消耗资源,那EVPN是怎么解决的?其实很简单,EVPN通过控制层面提前把转发数据需要的二层的MAC地址或IP信息加载完毕再进行数据的转发,就像MPLS VPN一样,先运行LDP把数据转发需要的标签信息提前加载完成,这样在数据交互的时候就不再再临时发送ARP广播如下所示:
应用场景
- 在园区网和数据中心当中的应用,在不同的底层网络当中使用VXLAN与控制平面EVPN相结合,EVPN负责为VXLA提供关于ARP广播、MAC地址的支持,如下图所示:
- 在SD-WAN当中的使用,EVPN的转控分离与SD-WAN简直是绝配,SD-WAN也是转控分离,SD-WAN直接利用EVPN的控制层面传递三层路由信息,为接下来建立GRE OVER IPSEC提供支持,如下所示: