为什么需要部署vxlan :
当今网络是由业务驱动网络。在数据中心和园区网络中,往往会部署大量的虚拟机来实现简化管理、降低成本等需求。一台物理设备可能存在很多租户的虚拟系统,那么相同租户就有以下的需求:
1、相同租户的虚拟设备希望实现二层互通,但往往相同租户的物理设备属于不同的二层网络;
2、不同的租户之间需要实现租户间的隔离;
3、相同租户的虚拟设备需要实现跨三层的迁移。
因此需要使用vxlan来组件一个跨越三层的大二层网络!
Vxlan的基本概念:
VXLAN的报文格式:
NVE(Network Virtualization Edge,网络虚拟边缘):即部署了vxlan的交换机。
VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点):vtep是vxlan的隧道端点,用于封装和解封装vxlan报文,一般在配置了vxlan设备的NVE接口配置VTEP地址。(即vxlan报文外层头部的IP地址)
VNI(VXLAN Network Identifier,VXLAN网络标识):类似vlan ID,长度有24bit,可以支持更多的用户。VNI又分为2层VNI和3层VNI;
2层VNI:与BD做1:1的绑定,具有全局意义,实现vxlan的相同子网的二层通信。
3层VNI:与IP的VPN实例进行关联,实现vxlan报文的跨子网通信。
BD(Bridge Domain,桥域):具有本地意义,类似传统网络中采用VLAN划分广播域,在VXLAN网络中一个BD就标识一个大二层广播域。
二层网关和三层网关:
VBDIF接口:类似于传统网络的vlanif接口,实现不同的网段之间的用户通过vxlan进行通信,以及vxlan和非vxlan网络的通信。
集中式网关和分布式网关:
集中式网关:三层网关都部署在同一台设备上面,所有跨子网通信的流量都经过此设备转发,优点是可以实现流量的集中管理,缺点是可能存在次优路径,并且此网关需要维护大量的arp信息。
分布式网关:VTEP设备既是L2网关,又是L3网关。非网关节点对VXLAN隧道不感知,仅作为VXLAN报文的转发节点。优点是网关节点只需要学习本节点下的arp信息,并且不存在次优路径,缺点是配置量大。(当前网络基本才有分布式网关)
vxlan隧道建立方式:
1、静态建立:通过用户手工配置本端和远端的VNI、VTEP IP地址和头端复制列表(head-end peer-list)来完成。
配置步骤:
①创建BD域,绑定二层VNI(BD域为本地的概念,在vxlan数据传递的时候需要通过vni来体现。)
bridge-domain 10
vxlan vni 10
②将子接口或vlan绑定到BD域(示例为子接口绑定BD的配置,当前网络常用方式就是使用子接口进行绑定)
interface GE1/0/1.10 mode l2 //配置子接口为2层子接口
encapsulation dot1q vid 10 //配置子接口能够处理vlan10的数据
bridge-domain 10//将子接口绑定BD域
③配置NVE、指定vxlan的头尾复制功能,指定静态的vxlan隧道。(头端是指VXLAN隧道的入节点,复制是指当VXLAN隧道的入节点收到一份BUM报文后,需要将其复制多份并发送给列表中的所有VTEP。头端复制列表就是用于指导VXLAN隧道的入节点进行BUM报文复制和发送的远端VTEP的IP地址列表。)
interface Nve1 //创建nve接口
source 1.1.1.1 //指定vtep地址为1.1.1.1
vni 10 head-end peer-list 2.2.2.2 //配置头端复制列表
查看vxlan隧道建立情况
2、通过bgp e动态建立:在VTEP之间建立BGP EVPN对等体,然后对等体之间利用BGP EVPN路由来互相传递VNI和VTEP IP地址信息,从而实现动态地建立VXLAN隧道。
配置步骤:
前两个步骤与静态配置相同,
①创建BD域,绑定二层VNI
②将子接口或vlan绑定到BD域
③开启e功能,并且配置bgp的mp-bgp邻居关系
e-overlay enable //开启e功能,部分设备无需开启
bgp 100
router-id 1.1.1.1
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
l2-family e
peer 2.2.2.2 enable
④在NVE中指定使用bgp协议完成vxlan的隧道建立
interface Nve1
source 1.1.1.1
vni 10 head-end peer-list protocol bgp
数据转发流程:
1、MAC地址的学习过程
2、相同子网已知目的mac的单播报文转发
3、BUM流量转发,BUM流量即(未知单播、组播、广播)
BGP EVPN与vxlan
Vxlan可以看为一个数据平面的协议。因此vxlan的隧道自动建立需要依托BGP EVPN,BGP EVPN除了可以自动建立vxlan 隧道还可以完成vxlan控制平面的相关工作。
Type 2路由(MAC/IP路由):用于主机MAC地址/ARP/IP路由通告。
不同场景下,type2的路由携带的内容不一致,如下图所示:
主机mac地址通告:
同子网主机MAC地址通告:
主机arp通告:
MAC/IP路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在VTEP之间传递主机ARP表项,实现主机ARP通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IP地址。此时的MAC/IP路由也称为ARP类型路由。主机ARP通告主要用于以下两种场景:
主机ARP通告主要在VXLAN集中式网关+BGP EVPN场景下使用,在BGP EVPN中向对等体通告ARP路由或者IRB路由为互斥选项,只能配置其中一种路由对外发布,一般在VXLAN集中式网关+BGP EVPN场景下选择发布ARP路由,而且VXLAN分布式网关+BGP EVPN场景下选择发布IRB路由。
主机IP路由通告:
分布式网关组网中VTEP设备既是L2网关,又是L3网关。在该组网下跨子网通信的实现方式并不唯一,根据接收报文的VTEP(Ingress VTEP)处理方式不同,可以划分为:非对称IRB转发(Asymmetric Integrated Routing and Bridging)、对称IRB转发(Symmetric Integrated Routing and Bridging)。
非对称IRB转发:Ingress VTEP同时执行L3、L2查表转发,Egress VTEP只需要进行L2查表、转发,因为Ingress、Egress所执行操作不一致,被称为非对称转发。
对称IRB转发:Ingress VTEP、Egress VTEP都执行L3查表转发。
相比较于非对称IRB转发,新增了一个IP VPN实例以及其所绑定的L3 VNI概念(非对称IRB转发时VTEP之间传输的报文其VXLAN头部中VNI值为L2 VNI),VBDIF接口需要绑定IP VPN实例,此时该VBDIF接口的路由学习、数据转发都被限制在该IP VPN实例中,与MPLS VPN类似。
IRB路由的通告过程:
注:在配置对称IRB转发时,需要在edge设备配置IP 实例和 EVPN实例。如下所示,本端设备的BD域中e实例配置了一个出方向RT为11:1 ,需要与对端设备的IP 实例的如方向RT匹配,用于生成主机路由。
bridge-domain 10
vxlan vni 10 //二层VNI
e
route-distinguisher 10:10
-target 10:10 export-extcommunity //RT 10:10用于两端mac route(type2路由的发布和接收)
-target 11:1 export-extcommunity //RT11:1与三层实例的入方向RT对应,主要用于生成实例的全局主机路由
-target 10:10 import-extcommunity
ip -instance 1
ipv4-family
route-distinguisher 10:10
-target 11:1 e //与BD域的e实例出方向RT一致,当设备收到type 2的路由时,如果RT与ip 实例的入方向RT一致,则收集其中的arp信息,生成主机路由,并且放在实例路由表中
vxlan vni 1000// 配置三层VNI,用于指定设备收到流量后将数据发往哪一个实例,然后查表转发,主要用于业务隔离
对称IRB转发通信过程:
Type 3路由(Inclusive Multicast路由):用于传递二层VNI和VTEP IP地址信息,实现VTEP的自动发现和VXLAN隧道的动态建立,实现BUM报文转发。
VTEP通过Type 3路由互相传递二层VNI和VTEP IP地址信息。如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制列表,用于后续BUM报文转发。
Type 5路由(IP前缀路由):用于主机MAC地址/ARP/IP路由通告,外部网络路由通告。