ANOS数据中心案例文档
1数据中心网络(VxLAN+EVPN)
1.1概述
EVPN是在现有(RFC4761)方案基础上,参考了BGP/MPLS L3 VPN(RFC4364)的架构提出的。在SDN架构中,控制和数据是分离的,应用在控制层之上构建。对于EVPN来说,控制层是MP-BGP,而EVPN可以看成是构建在MP-BGP上的应用。所以EVPN不仅仅是一种技术和架构,它也有应用场景的含义。在EVPN架构中,PE之间的MAC/IP地址学习是基于控制平面的,采用MP-BGP协议通告MAC/IP的可达性,其策略控制非常类似于IP VPN。
ANOS数据中心的EVPN方案是控制层RFC7432协议定义的MP-BGP协议扩展,数据层面是VxLAN封装转发。
EVPN继承了MP-BGP和VxLAN的优势。具有如下特点:
- 简化配置:通过MP-BGP实现VTEP自动发现、VxLAN隧道自动建立、VxLAN隧道与VxLAN自动关联,无需用户手工配置,降低网络部署难度。
- 分离控制平面与数据平面:控制平面负责发布路由信息,数据平面负责转发报文,分工明确,易于管理。
- 支持多归属:当同一个站点通过多台VTEP接入VxLAN网络时,连接该站点的多条路径均可以进行流量转发,以提高网络带宽利用率。
- 支持对称IRB(Integrated Bridging and Routing,集成的桥接和路由):MP-BGP同时发布二层MAC地址和三层路由信息,VTEP既可以进行二层转发,也可以进行三层路由。这样,不仅可以保证流量采用最优路径转发,还可以减少广播流量。
1.1.1网络模型
如上所示,EVPN的典型网络模型中包括如下几部分:
- VTEP(VxLAN Tunnel End Point,VxLAN隧道端点):EVPN的边缘设备。EVPN的相关处理都在VTEP上进行。通常是物理交换机或虚拟交换机。
- VxLAN隧道:两个VTEP之间的点到点逻辑隧道。VTEP为数据帧封装VxLAN头、UDP头和IP头后,通过VxLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。
- 核心设备:IP核心网络中的设备(如图P设备)。核心设备不参与EVPN处理,仅需要根据封装后报文的外层目的IP地址对报文进行三层转发。
1.1.2 VxLAN隧道建立
VxLAN是一种“MAC in UDP”技术,是在物理网络上构建的一种Overlay架构。
VxLAN封装整个占50字节,其基本封装格式为MAC in UDP,即使用UDP封装二层报文,其UDP目的端口为4789;VxLAN头占8字节,包含24bits的VxLAN ID(VNI),这也是VNI支持2^24个ID的原因;外层IP头为隧道两端的VTEP设备地址。
EVPN的二层转发中,通过路由完成VTEP站点的自动发现。每个站点都通告自己的VNI信息,这样每个VTEP设备都有全网的VxLAN信息以及VxLAN和下一跳的关系。VTEP设备会和那些跟自己有相同VNI的下一跳自动建立VxLAN隧道,并将此VxLAN隧道跟这些相同的VNI关联。
在EVPN的三层转发中,当一个网关接收到远端网关通告的路由时,并且此路由在VRF的RT策略中检查通过可以下发时,EVPN也会尝试跟对端建立VxLAN隧道。此隧道用于三层转发时进行外层加封装用。如果某个VTEP跟同一个对端VTEP既建立了二层隧道,又建立了三层隧道,此时隧道可以共用,即两个VTEP之间最多只会建立一条VxLAN隧道。
1.1.3 VxLAN通信流程
1.二层通信流程(VM1->VM2)
1)VM1发送ARP请求给VTEP1。
2)VTEP1为了避免泛洪,ARP代答回应VM2的MAC2。
3)VM1发送二层包到VTEP1,VTEP1组VxLAN包。
4)VTEP1查找MAC table发给VTEP2。
5)VTEP2解包查找MAC table发包给VM2。
2.三层分布式非对称通信流程(VM1->VM3)
1)VTEP1收到VM1发送的报文,根据目的IP3得到VM3的VNI是20,以及VM3的MAC3。
2)VTEP1修改报文的源MAC为VTEP1的MAC,目的MAC为VM3的MAC3,VxLAN报文的VNI为VM3的VNI(20)。
3)VTEP1将报文发送给VTEP2。
4)VTEP2收到报文后,解封装后查到目的MAC3,通过查找MAC表转发到VM3。
3.三层分布式对称通信流程(VM1->VM3)
1)VTEP1收到VM1发送的报文,根据目的VM3的目的IP3,得到VM3的L3的VNI是100。
2)VTEP1修改报文的源MAC为VTEP1的MAC,目的MAC为VTEP2的MAC,报文的VNI为L3VNI(100)。
3)报文发送给VTEP2。
4)VTEP2收到报文后解封装VxLAN包,修改目的MAC为MAC3,并发送给VM3。
1.1.4 MAC/IP通告学习
EVPN在控制层面学习MAC和ARP。在EVPN里面,站点的MAC和ARP信息是通过EVPN的MAC/IP路由通告的。本地MAC和ARP的学习仍然需要靠VTEP在数据层面完成,本地MAC的学习可以靠以太报文的源MAC学习获得,而ARP可以靠ARP或免费ARP等报文学习获得。本地学到MAC和ARP后,EVPN控制面通过BGP邻居分发到其他VTEP设备。
远端VTEP收到路由时,会将MAC下发到二层转发表里,将IP下发到三层转发表里。实际使用中,为了抑制ARP广播请求泛洪,可以让对端VTEP学习到本端VTEP下挂的主机ARP,从而使得远端VTEP可以直接代答回应远端主机发起的ARP请求。
1.1.5 虚拟机迁移
MAC地址迁移是指虚拟机或主机从其接入的VTEP或网关设备迁到数据中心网络的另一台VTEP或网关下。迁移后的VTEP或网关会重新感知到主机/虚拟机上线,继而重新通告该MAC/IP路由,此路由跟迁移前通告的MAC/IP路由的区别在于BGP update消息中携带了一种新的扩展团体——MAC Mobility扩展团体。此扩展团体里面包含一个系列号。每次迁移,迁移序列号将递增,远端在收到一个比自己系列号更大的消息时,更新自己的MAC/IP路由消息,下一跳指向迁移后通告此路由的VTEP或GW。原VTEP在收到此路由更新后,撤销之前通告的路由。
1.1.6 ARP泛洪抑制
广播发送的ARP请求报文占用核心网络带宽,VTEP根据从BGP收到的EVPN 路由在本地建立ARP缓存表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据本地存储的ARP表项进行代答回应。
1.2 案例
1.2.1 二层流量的转发
1. 组网需求
Leaf1和Leaf2(DCS6300-48X6C)为与服务器连接的VTEP设备,Spine1(DCS6700-32C)负责在路由器之间反射BGP路由。虚拟机VM1和VM3属于VxLAN 10,VM2和VM4属于VxLAN 20。相同VxLAN之间可以二层互通。
2. 组网图
1.2.2 三层流量的转发
1. 组网需求
Leaf1和Leaf2(DCS6300-48X6C)为与服务器连接的VTEP设备,Spine1(DCS6700-32C)负责在路由器之间反射BGP路由。虚拟机VM1和VM3属于VxLAN 10,VM2和VM4属于VxLAN 20。让VxLAN 20和VxLAN 10属于同一个三层网关。虚拟机VM1和VM2,VM3,VM4都能互相通信。
2. 组网图
1.2.3 ARP代答
1.组网需求
Leaf1和Leaf2(DCS6300-48X6C)为与服务器连接的VTEP设备,Spine1(DCS6700-32C)负责在路由器之间反射BGP路由。虚拟机VM1和VM3属于VxLAN 10。先让VM1和VM3可以通信(图一)。之后断掉右边Leaf1和Spine2的连线(图二),然后再通过VM1 ping VM3,看是否Leaf1会直接回复VM1 ARP的回复包。
2.组网图
图一
图二
1.2.4 虚拟机迁移
1.组网需求
Leaf1和Leaf2(DCS6300-48X6C)为与服务器连接的VTEP设备,Spine1 (DCS6700-32C)负责在路由器之间反射BGP路由。虚拟机VM1和VM3属于VxLAN 10。先让VM1和VM3可以通行(图一)。之后把VM1移到Leaf2的server3 (图二)看是否VM1可以VM3正常通信。
2.组网图
图一
图二
1.2.5 端口和VNI(1:N)的映射
1.组网需求
Leaf1(DCS6300-48X6C)为与服务器连接的VTEP设备,Spine1 (DCS6700-32C)负责在路由器之间反射BGP路由。虚拟机VM1属于VxLAN 10,虚拟机VM2属于VxLAN 20,让VxLAN 10 和 VxLAN 20属于同一个三层网关。是否VM1和VM2可以通信。
2.组网图
1.2.6 数据中心之间的二三层通信
1.组网需求
Leaf1和Leaf2(DCS6300-48X6C)为与服务器连接的VTEP设备,Spine1,Spine2(DCS6700-32C)负责在路由器之间反射BGP路由。在图一中虚拟机VM1和VM2属于VxLAN 10,是否VM1可以VM2通信。在图二中虚拟机VM1属于VxLAN 10,VM2属于VxLAN 20,VxLAN 10 与 VxLAN 20 属于同一个三层网关,是否VM1可以VM2通信。
2.组网图
图一
图二