http://support.huawei.com/enterprise/zh/doc/DOC1100004219?section=k004
1.2 VXLAN部署方案
目前,设备支持通过单机方式和控制器方式来部署VXLAN网络。
- 单机方式:传统网络部署方式,按照网络规划登录到每台设备上进行配置。云计算数据中心中,此方式无法协同云平台实现网络的自动化部署。
-
控制器方式:在大二层网络中,为了方便控制与部署引入了控制器。控制器是统一的网络控制平台,实现网络资源统一协调及管理,协同云平台实现业务和网络的自动化部署。
AC控制器方式
-
AC控制器方式概述
AC控制器方式是指通过AC控制器(Agile Controller-Enterprise)来动态建立VXLAN隧道。此时,AC控制器通过NETCONF协议控制设备VXLAN隧道的建立,通过OpenFlow协议控制报文在隧道中的转发。
如图1-2所示,AC控制器可直接管理用户虚拟网络也可直接通过Neutron获得用户虚拟网络的信息。控制器根据用户虚拟网络信息,进行动态计算生成网络相关配置信息,并自动映射到物理网络。
基于AC控制器+VXLAN解决方案网络框架介绍如表1-1所示。 -
AC控制器与设备之间通信通道的建立与维护
通过云平台,控制器可及时感知终端租户的状态,获得用户虚拟网络的信息。如图1-3所示,终端租户上线后,通过云平台,控制器根据获得的用户虚拟网络信息进行动态计算,生成网络相关配置信息及流表信息,并自动映射到物理网络。
如图1-3所示,网络管理员需要先通过CLI或ZTP在设备上预先配置NETCONF并完成VXLAN的必要配置(如创建NVE接口、配置VTEP的IP地址等)。完成配置后,AC控制器可通过NETCONF自动管理设备。- AC控制器根据控制器集群的负载,自动为网络设备分配控制器节点,配置设备与该节点的OpenFlow。
- AC控制器接收云平台的指令,并自动将其转化为网络设备的配置,完成业务的自动化部署。
- AC控制器包含ARP协议栈,支持ARP的学习及报文处理。网络设备与AC控制器之间通过OpenFlow完成ARP报文的上送和发送。
- AC控制器通过OpenFlow给设备下发ARP流表,指导设备报文转发。如果AC控制器与设备之间的OpenFlow中断,ARP流表不会立即老化,转发不会中断。AC控制器与设备之间的OpenFlow恢复后,AC控制器会与设备重新同步流表,保证表项一致。
MAC地址动态学习
在VXLAN网络中,为了实现终端租户的互通,支持MAC地址动态学习,不需要网络管理员手工维护,大大减少了维护工作量。下面结合图1-13,详细介绍一下同子网主机互通时,MAC地址动态学习的过程:
-
Host3发送源MAC为MAC3、目的MAC为全F、源IP为IP3、目的IP为IP2的ARP请求报文,请求Host2的MAC地址。
-
Leaf1收到该ARP请求后,根据二层子接口上的配置判断该请求报文需进入VXLAN隧道,并确定报文所对应的VNI(20)。同时Leaf1学习到了Host3的MAC地址、BDID(二层广播域标识)和报文入接口(即二层子接口对应的物理接口Port1)的对应关系,并在本地MAC表中生成Host3的MAC表项,其出接口为Port1。
-
Leaf1对该ARP请求报文进行VXLAN封装,如图1-14所示,封装的VNI是绑定当前BD的VNI,封装的外层源IP地址为Leaf1的VTEP IP地址,外层目的IP地址为Leaf2的VTEP IP地址,外层源MAC地址为Leaf1的NVE1接口MAC地址,外层目的MAC地址为去往目的IP的网络下一跳的MAC地址。封装后的报文根据外层MAC和IP信息在IP网络中传输,送达Leaf2。
-
Leaf2收到报文后进行解封装,得到Host3发送的原始ARP请求报文,同时Leaf2学习到Host3的MAC地址、BDID和Leaf1上VTEP IP地址的对应关系,并在本地的MAC表中生成Host3的MAC表项,其出接口需根据下一跳(即Leaf1的VTEP IP地址)进行迭代,最终迭代结果是指向Leaf1的VXLAN隧道。
-
Leaf2在对应的二层域内广播ARP请求。Host2收到ARP请求后,比较报文中的目的IP是否为本机的IP地址,如果是,则将Host3的MAC地址保存到本地的MAC表中,并进行ARP应答。
由于此时Host2已经学习到了Host3的MAC地址,所以ARP应答报文为单播报文,后续的ARP应答报文发送过程与上述过程类似,这里不再赘述。Host3和Host2互相学习到对方的MAC地址之后,双方将采用单播通信。
同子网已知单播报文转发
同子网已知单播报文转发只在VXLAN二层网关之间进行,三层网关无需感知。报文转发流程如图1-15所示。
- Leaf1收到来自Host3的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,并在该二层广播域内查找出接口和封装信息。
- Leaf1上VTEP根据查找到的封装信息对数据报文进行VXLAN封装,然后根据查找到的出接口进行报文转发。
- Leaf2上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层的二层报文。
- Leaf2根据内层二层报文的目的MAC,从本地MAC表找到对应的出接口和封装信息,为报文添加VLAN Tag,转发给对应的主机Host2。
Host2向Host3发送报文的过程类似,这里不再赘述。
同子网BUM报文转发
同子网BUM报文转发只在VXLAN二层网关之间进行,三层网关无需感知。同子网BUM报文转发可以采用头端复制方式、集中复制方式和组播复制方式。
头端复制- Leaf1收到来自终端A的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域。
- Leaf1上VTEP根据对应的二层广播域获取对应VNI的头端复制隧道列表,依据获取的隧道列表进行报文复制,并进行VXLAN封装。然后将封装后的报文从出接口转发出去。
- Leaf2/Leaf3上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层二层报文。
- Leaf2/Leaf3检查内层二层报文的目的MAC,发现是BUM MAC,在对应的二层广播域内的非VXLAN隧道侧进行广播处理,即:Leaf2/Leaf3分别从本地MAC表中找到非VXLAN隧道侧的所有出接口和封装信息,为报文添加VLAN Tag,转发给对应的终端B/C
集中复制
当BUM报文进入VXLAN隧道时,如果接入端VTEP采用头端复制方式进行报文的VXLAN封装。此时接入端VTEP需要往每一个远端VTEP发送一份报文,造成流量泛洪。此时可以配置集中复制。集中复制是指,在接入端VTEP上配置集中复制功能,在集中复制点上配置泛洪代理IP地址,当接入端VTEP封装报文进VXLAN隧道时,只需要发送一份报文到集中复制点,可以减少网络中的泛洪流量,所以集中复制点也可以称为泛洪网关,之后集中复制点进行VXLAN报文的解封装和封装,发送报文到各个出口端VTEP。出口端VTEP对报文再次解封装出VXLAN隧道。BUM报文采用集中复制的转发流程如图1-17所示。
- Leaf1收到来自终端A的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域。
- Leaf1上VTEP根据对应的二层广播域获取对应VNI的对应的集中复制隧道,并进行VXLAN封装。然后将封装后的报文从出接口转发出去。
- Leaf4作为集中复制节点接收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层二层报文,再根据二层广播域对应VNI的头端复制列表进行VXLAN封装,此时外层的源IP地址为leaf1的VTEP地址,不会影响VTEP间的MAC地址学习。
- Leaf2/Leaf3上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层二层报文。
- Leaf2/Leaf3检查内层二层报文的目的MAC,发现是BUM MAC,在对应的二层广播域内的非VXLAN隧道侧进行广播处理,即:Leaf2/Leaf3分别从本地MAC表中找到非VXLAN隧道侧的所有出接口和封装信息,为报文添加VLAN Tag,转发给对应的终端B/C。
- Leaf1收到来自终端A的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域。
- Leaf1上VTEP根据对应的二层广播域获取对应VNI的组播复制地址,并进行VXLAN封装。封装后的VXLAN报文对外表现为一个组播报文,然后根据组播转发表项发送给Leaf4。
- Leaf4接收到组播报文后,直接根据组播转发表项,将报文转发给Leaf2和Leaf3。
说明:
这里Leaf4作为非网关节点,只进行组播报文的转发。Leaf4也可以配置为网关节点,这样Leaf4既要转发组播报文,又要解封装VXLAN报文,并在VLAN网络广播BUM报文,此时Leaf4节点称为BUD节点。
- Leaf2/Leaf3收到组播报文后,根据组播转发表项中的出接口(NVE接口)判断该报文是VXLAN报文,此时Leaf2/Leaf3上的VTEP根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层二层报文。
- Leaf2/Leaf3检查内层二层报文的目的MAC,发现是BUM MAC,在对应的二层广播域内的非VXLAN隧道侧进行广播处理,即:Leaf2/Leaf3分别从本地MAC表中找到非VXLAN隧道侧的所有出接口和封装信息,为报文添加VLAN Tag,转发给对应的终端B/C。
跨子网报文转发
跨子网报文转发需要通过三层网关实现。在集中式网关场景中,跨子网报文转发的流程如图1-19所示。
- Leaf1收到来自Host1的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,在对应的二层广播域内查找出接口和封装信息。
- Leaf1上VTEP根据查找到的出接口和封装信息进行VXLAN封装,向Spine转发报文。
- Spine收到VXLAN报文后进行解封装,发现内层报文中的目的MAC是三层网关接口VBDIF10的MAC地址MAC3,判断需要进行三层转发。
- Spine剥除内层报文的以太封装,解析目的IP。根据目的IP查找路由表,找到目的IP的下一跳地址,再根据下一跳地址查找ARP表项,获取目的MAC、VXLAN隧道出接口及VNI等信息。
- Spine重新封装VXLAN报文,向Leaf2转发。其中内层报文以太头中的源MAC是三层网关接口VBDIF20的MAC地址MAC4。
- Leaf2上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。依据VNI获取对应的二层广播域,然后进行VXLAN解封装,获取内层二层报文,并在对应的二层广播域内查找出接口和封装信息。
- Leaf2根据查找到的出接口和封装信息,为报文添加VLAN Tag,转发给对应的Host2。
Host2向Host1发送报文的过程类似,这里不再赘述。