首先在配置前了解一些理论知识
EVPN全称以太网虚拟专用网络
EVPN的典型网络模型中包括如下部分
- 用户终端(Terminal):可以是PC机、无线终端设备、服务器上创建的VM(Virtual Machine,虚拟机)等。不同的用户终端可以属于不同的VXLAN。属于相同VXLAN的用户终端处于同一个逻辑二层网络,彼此之间二层互通;属于不同VXLAN的用户终端之间二层隔离。
- VTEP(VXLAN Tunnel End Point,VXLAN隧道端点):EVPN的边缘设备。EVPN的相关处理都在VTEP上进行。
- VXLAN隧道:两个VTEP之间的点到点逻辑隧道。VTEP为数据帧封装VXLAN头、UDP头和IP头后,通过VXLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。
- 核心设备:IP核心网络中的设备。核心设备不参与EVPN处理,仅需要根据封装后报文的外层目的IP地址对报文进行三层转发。
- VXLAN网络/EVPN实例:用户网络可能包括分布在不同地理位置的多个站点内的用户终端。在骨干网上可以利用VXLAN隧道将这些站点连接起来,为用户提供一个逻辑的二层VPN。这个二层VPN称为一个VXLAN网络,也称为EVPN实例。VXLAN网络通过VXLAN ID来标识,VXLAN ID又称VNI(VXLAN Network Identifier,VXLAN网络标识符),其长度为24比特。不同VXLAN网络中的用户终端不能二层互通。
- VSI(Virtual Switch Instance,虚拟交换实例):VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例。VSI可以看作是VTEP上的一台基于VXLAN进行二层转发的虚拟交换机。VSI与VXLAN一一对应。
- ES(Ethernet Segment,以太网段):用户站点连接到VTEP的链路,通过ESI(Ethernet Segment Identifier,以太网段标识符)唯一标识。目前,一个用户站点只能通过一条链路连接一台VTEP,该ES的ESI为0。
EVPN的控制平面:
最初的VXLAN方案(RFC7348)中没有定义控制平面,是手工配置VXLAN隧道,然后通过流量泛洪的方式学习主机地址。这种方式实现上较为简单,但是会导致网络中存在很多泛洪流量,并且网络扩展起来困难。
为了解决上述问题,VXLAN引入了EVPN(Ethernet VirtualPrivate Network,以太网虚拟专用网)作为VXLAN的控制平面。EVPN参考了BGP/MPLSIP VPN的机制,通过扩展BGP(BorderGateway Protocol,边界网关协议)新定义了几种BGPEVPN路由,通过在网络中发布路由来实现VTEP的自动发现、主机地址学习
采用MP-BGP发布EVPN路由,在BGP中UPdata报文中携带
- IMET路由:
BGP EVPN的TYPE3路由用来自动发现VTEP、建立隧道并关联隧道
- MAC/IP发布路由:
BGP EVPN的TYPE2类路由用来通告主机MAC地址、主机ARP和主机路由信息
- IP前缀路由
BGP EVPN的TYPE5类路由,用于通告引入的外部路由,也可以通告主机路由信息
VXLAN隧道的动态建立
以VTEP2和VTEP3为例,介绍一下通过BGPEVPN方式动态建立VXLAN隧道的过程:
首先在VTEP2和VTEP3之间建立BGPEVPN对等体。然后,在VTEP2和VTEP3上分别创建二层广播域,并在二层广播域下配置关联的VNI。接下来在二层广播域下创建EVPN实例,配置本端EVPN实例的RD、出方向VPN-Target(ERT)、入方向VPN-Target(IRT)。在配置完本端VTEPIP地址后,VTEP2和VTEP3会生成BGP EVPN路由并发送给对端,该路由携带本端EVPN实例的出方向VPN-Target和BGP EVPN协议新定义的Type3路由即InclusiveMulticast路由。
VTEP2和VTEP3在收到对端发来的BGPEVPN路由后,首先检查该路由携带的EVPN实例的出方向VPN-Target,如果与本端EVPN实例的入方向VPN-Target相等,则接收该路由,否则丢弃该路由。在接收该路由后,VTEP2和VTEP3将获取其中携带的对端VTEPIP地址和VNI,如果对端VTEPIP地址是三层路由可达,则建立一条到对端的VXLAN隧道;同时,如果对端VNI与本端相同,则创建一个头端复制表,用于后续BUM报文转发
开始实验
1.配置IP(省略)
2.配置OSPF,环回口可达(省略)
3.EVPN VXLAN相关配置
R4作为反射器,R1-3作为客户端
R1、R2、R3的配置(R3的gi0/1无需关联VSI实例)
l2vpn enable #开启L2二层隧道功能
vxlan tunnel mac-learning disable #关闭远端MAC地址和远端ARP自动学习功能。
vxlan tunnel arp-learning disable
vsi vpna #在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT
arp suppression enable #开启ARP泛洪抑制功能
vxlan 10
evpn encapsulation vxlan #进入evpn实例视图
route-distinguisher auto #开启自动生成RD值
vpn-target auto #开启自动生成RT值
#
vsi vpnb
arp suppression enable
vxlan 20
evpn encapsulation vxlan
route-distinguisher auto
vpn-target auto
#
interface GigabitEthernet0/1
xconnect vsi vpna #接口关联VSI实例vpna
#
interface GigabitEthernet0/2
xconnect vsi vpnb #接口关联VSI实例vpnb
bgp 200 #配置BGP
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LoopBack0
#
address-family l2vpn evpn #在evpn地址簇下建立邻接关系
peer 4.4.4.4 enable
4.R3的VSI虚接口配置
interface Vsi-interface1 #创建VSI虚接口VSI-interface1,该IP地址作为VXLAN 10内虚拟机的网关地址
ip address 10.1.1.1 255.255.255.0
#
interface Vsi-interface2 #创建VSI虚接口VSI-interface2,该IP地址作为VXLAN 20内虚拟机的网关地址
ip address 10.1.2.1 255.255.255.0
vsi vpna #配置VXLAN 10所在的VSI实例和接口VSI-interface1关联
gateway vsi-interface 1
vsi vpnb ##配置VXLAN 20所在的VSI实例和接口VSI-interface1关联
gateway vsi-interface 2
5.R4的BGP配置
bgp 200
group evpn internal
peer evpn connect-interface LoopBack0
peer 1.1.1.1 group evpn
peer 2.2.2.2 group evpn
peer 3.3.3.3 group evpn
#
address-family l2vpn evpn
undo policy vpn-target
peer evpn enable
peer evpn reflect-client
6.实验测试
(1)查看R1的隧道建立情况
在实验并未配置tunnel接口,使用命令dis interface tunnel命令是依靠BGP EVPN扩展的的TYPE3类路由自动生成的隧道
(2)BGP的UPdate报文
可以看到路由中携带的一些关于EVPN的参数,所以可知要想自动建立VXLAN隧道前提是可以交互BGP的UPdate报文
(3)ping抓包
10.1.1.10与10.1.1.20通信,可以看到是VXLAN的报文从上至下依次为物理层-二层帧头部-IP层隧道封装头部-VXLAN头部UDP端口号为4789-原始报文帧头部-原始报文IP头部-数据
到此实验结束