VXLAN在本质上是一种VPN技术,能够在任意路由可达的物理网络(Underlay网络)上叠加二层虚拟网络(Overlay网络),采用MAC in UDP封装来延伸二层网络,将以太报文封装在IP报文之上,通过路由在网络中传输,无需关注虚拟机的MAC地址。且三层网络无网络结构限制,具备大规模扩展能力。通过路由网络,虚拟机迁移不受网络架构限制
VXLAN相关的一些概念:Virtual eXtensible Local Area Network,虚拟扩展局域网
NVE:Network Virtualization Edge 网络虚拟边缘(实现网络虚拟化功能的网络实体)
VTEP:VXLAN Tunnel Endpoints vxlan的隧道端点(NVE内,用于vxlan报文的封装和解封装)
VNI:VXLAN Network Identifier 网络标识,类似VLAN ID 用于区分VXLAN段
BD:Bridge Domain 桥域 类似vlan的广播域
VBDIF:类似vlanif 实现不同广播域互通
VAP:Virtual Access Point 虚拟接入点,实现vxlan的业务接入
Edge:vxlan网络的边缘接入设备(连接内部网络和终端)
Border:vxlan网络和外部网络通信的节点(连接内部网络和外部网络)
EVPN: Ethernet Virtual Private Network 一种用于二层网络互联的VPN技术
Vxlan隧道:由一对VTEP确定,报文在VTEB设备封装后在VXLAN隧道中依靠路由进行传输,只要vxlan隧道两端VTEB是三层路由可达的,vxlan隧道就可以建立成功。
创建vxlan隧道方式分两种:
静态隧道:通过手工配置本端和远端VNI、VTEB IP地址和头端复制列表来完成
<CE2>sy immediately //进入不许反悔模式配置
[CE2]bridge-domain 300 //创建BD
[CE2-bd300]vxlan vni 5020 //分配VNI
[CE2-bd300]int g1/0/1
[CE2-GE1/0/1]undo shutdown //进入接口视图开启接口
[CE2]int g1/0/1.30 mode l2 //进入L2类型子接口
[CE2-GE1/0/1.30]encapsulation dot1q vid 30 //配置vid
[CE2-GE1/0/1.30]bridge-domain 300 //子接口将vlan接入BD
[CE2]int Vbdif 300 //创建vbdif接口
[CE2-Vbdif300]ip address 192.168.20.254 24 //类似于vlanif,作为BD的网关
[CE2]int Nve 1 //创建NVE
[CE2-Nve1]source 2.2.2.2 //配置nve接口
[CE2-Nve1]vni 5020 head-end peer-list 1.1.1.1 //配置头部复制列表,建立vxlan隧道
动态隧道 :通过BGP EVPN(以太网虚拟私有网络)方式建立vxlan隧道,在VTEB之间建立BGP EVPN对等体,对等体之间利用BGP EVPN路由来互相传递VNI和VTEP IP地址信息,从而实现动态地建立VXLAN隧道。
BGP EVPN通过扩展BGP协议新定义了几种BGP EVPN路由,这些路由可以用于传递VTEP地址和主机信息,因此BGP EVPN应用于VXLAN网络中,可以使VTEP发现和主机信息学习从数据平面转移到控制平面。
Type 2路由(MAC/IP路由):用于主机MAC地址/ARP/IP路由通告。
Type 3路由(Inclusive Multicast路由):用于传递二层VNI和VTEP IP地址信息,实现VTEP的自动发现和VXLAN隧道的动态建立,实现BUM报文转发。
Type 5路由(IP前缀路由):用于主机IP路由通告,外部网络路由通告。
BGP EVPN与MPLS VPN类似,为了控制路由的发送、接收,BGP EVPN同样存在VPN实例的概念(EVPN实例),与传统的IP VPN实例相同,EVPN实例存在RD和RT值,传递路由时使用扩展团体属性携带EVPN实例RT值。
EVPN实例与BD进行绑定,BD下的MAC地址表项会通过BGP EVPN路由进行传递,在传递时会携带BD绑定的EVPN实例ERT值,对端收到之后对比本地EVPN实例的IRT值,将EVPN路由放入对应的EVPN实例路由表,同时解析EVPN路由表获取MAC地址表项,放入本端与该EVPN实例绑定的BD的MAC地址表中。
[NE1]
evpn vpn-instance 1 bd-mode
route-distinguisher 1:1
vpn-target 1:1 export-extcommunity
vpn-target 1:1 import-extcommunity
#
bridge-domain 100
vxlan vni 2000 split-horizon-mode
evpn binding vpn-instance 1
#
interface Ethernet1/0/1.10 mode l2
encapsulation dot1q vid 10
rewrite pop single
bridge-domain 100
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
interface Nve1
source 1.1.1.1
vni 2000 head-end peer-list protocol bgp
#
bgp 100
router-id 1.1.1.1
undo default ipv4-unicast
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
#
l2vpn-family evpn
undo policy vpn-target
peer 2.2.2.2 enable
peer 2.2.2.2 advertise encap-type vxlan
NE2也如上配置,两终端可以互通。