——————————————————————————————————————————————————
——————————————————————————————————————————————————
在静态方式部署集中式网关的场景中,控制平面的流程包括VXLAN隧道建立、MAC地址动态学习;转发平面的流程包括同子网已知单播报文转发、同子网BUM报文转发、跨子网报文转发。
静态方式部署集中式网关,手工配置工作量大,灵活性较差,不适合大规模的组网场景,如果在VXLAN网络中采用集中式网关,推荐使用BGP EVPN方式部署集中式网关。
——————————————————————————————————————————————————
VXLAN隧道由一对VTEP IP地址确定,静态VXLAN隧道的创建完全通过手工配置本端和远端的VNI、VTEP IP地址来完成,只要VXLAN隧道的两端VTEP IP是三层路由可达的,VXLAN隧道就可以建立成功。
如图:VTEP2上部署了Host1和Host3,VTEP3上部署了Host2,VTEP1上部署三层网关。
为了实现Host3和Host2之间的通信,需要分别在VTEP2和VTEP3上配置二层VNI,并在配置头端复制列表时指定对端VTEP IP地址。只要VTEP2和VTEP3上存在到对端VTEP IP地址的三层路由,就可以建立到对端的VXLAN隧道。
为了实现Host1和Host2之间的通信,需要分别在VTEP2和VTEP1、VTEP1和VTEP3上配置二层VNI,并在配置头端复制列表时指定对端VTEP IP地址。只要VTEP2和VTEP1上存在到对端VTEP IP地址的三层路由,就可以建立到对端的VXLAN隧道;同样的,只要VTEP1和VTEP3上存在到对端VTEP IP地址的三层路由,就可以建立到对端的VXLAN隧道。
对于Host1和Host3之间的通信,虽然都属于VTEP2,但由于属于不同子网,需要经过三层网关VTEP1,因此也需要在VTEP2和VTEP1之间创建VXLAN隧道。
——————————————————————————————————————————————————
在VXLAN网络中,为了实现终端租户的互通,支持MAC地址动态学习,不需要网络管理员手工维护,大大减少了维护工作量。下面结合图2,详细介绍一下同子网主机互通时,MAC地址动态学习的过程。
1.Host3发送源MAC为MAC3、目的MAC为全F、源IP为IP3、目的IP为IP2的ARP请求报文,请求Host2的MAC地址。
2.VTEP2收到该ARP请求后,根据报文接入的端口和携带的VLAN信息判断该请求报文需进入VXLAN隧道,并确定报文所对应的VNI(20)。同时VTEP2学习到了Host3的MAC地址、BD ID(二层广播域标识)和报文入接口的对应关系,并在本地MAC表中生成Host3的MAC表项,其出接口为Port1。
3.VTEP2对该ARP请求报文进行VXLAN封装,如图3所示,封装的VNI是绑定当前BD的VNI,封装的外层源IP地址为VTEP2的VTEP IP地址,外层目的IP地址为VTEP3的VTEP IP地址,外层源MAC地址为VTEP2的MAC地址,外层目的MAC地址为去往目的IP的网络下一跳的MAC地址。封装后的报文根据外层MAC和IP信息在IP网络中传输,送达VTEP3。
4.VTEP3收到报文后进行解封装,得到Host3发送的原始ARP请求报文,同时VTEP3学习到Host3的MAC地址、BD ID和VTEP2上VTEP IP地址的对应关系,并在本地的MAC表中生成Host3的MAC表项,其出接口需根据下一跳(即VTEP2的VTEP IP地址)进行迭代,最终迭代结果是指向VTEP2的VXLAN隧道。
5.VTEP3在对应的二层域内广播ARP请求。Host2收到ARP请求后,比较报文中的目的IP是否为本机的IP地址,如果是,则将Host3的MAC地址保存到本地的MAC表中,并进行ARP应答。
由于此时Host2已经学习到了Host3的MAC地址,所以ARP应答报文为单播报文,后续的ARP应答报文发送过程与上述过程类似,这里不再赘述。Host3和Host2互相学习到对方的MAC地址之后,双方将采用单播通信。
在跨子网主机互通时,只需在主机和三层网关之间进行MAC地址动态学习,与上述过程相同。
——————————————————————————————————————————————————
同子网已知单播报文转发只在VXLAN二层网关之间进行,三层网关无需感知。报文转发流程如图4所示。
1.VTEP2收到来自Host3的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,并在该二层广播域内查找出接口和封装信息。
2.VTEP2根据查找到的封装信息对数据报文进行VXLAN封装,然后根据查找到的出接口进行报文转发。
3.VTEP3收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层的二层报文。
4.VTEP3根据内层二层报文的目的MAC,从本地MAC表找到对应的出接口和封装信息,对报文进行VLAN Tag的相应处理,转发给对应的主机Host2。
——————————————————————————————————————————————————
同子网BUM报文转发只在VXLAN二层网关之间进行,三层网关无需感知。同子网BUM报文转发采用头端复制方式。
头端复制是指,当BUM报文进入VXLAN隧道时,接入端VTEP根据头端复制列表进行报文的VXLAN封装,并将报文发送给头端复制列表中的所有出端口VTEP。BUM报文出VXLAN隧道时,出口端VTEP对报文解封装。BUM报文采用头端复制的转发流程如图5所示。
1.VTEP1收到来自终端A的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域。
2.VTEP1根据对应的二层广播域获取对应VNI的头端复制列表,依据获取的列表进行报文复制,并进行VXLAN封装。然后将封装后的报文从出接口转发出去。
3.VTEP2/VTEP3收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层二层报文。
4.VTEP2/VTEP3检查内层二层报文的目的MAC,发现是BUM MAC,在对应的二层广播域内的非VXLAN隧道侧进行广播处理,即:VTEP2/VTEP3分别从本地MAC表中找到非VXLAN隧道侧的所有出接口和封装信息,对报文进行VLAN Tag的相应处理,转发给对应的终端B/C。
——————————————————————————————————————————————————
跨子网报文转发需要通过三层网关实现。在集中式网关场景中,跨子网报文转发的流程如图6所示。
1.VTEP2收到来自Host1的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,在对应的二层广播域内查找出接口和封装信息。
2.VTEP2根据查找到的出接口和封装信息进行VXLAN封装,向VTEP1转发报文。
3.VTEP1收到VXLAN报文后进行解封装,发现内层报文中的目的MAC是三层网关接口VBDIF10的MAC地址MAC3,判断需要进行三层转发。
4.VTEP1剥除内层报文的以太封装,解析目的IP。根据目的IP查找路由表,找到目的IP的下一跳地址,再根据下一跳地址查找ARP表项,获取目的MAC、VXLAN隧道出接口及VNI等信息。
5.VTEP1重新封装VXLAN报文,向VTEP3转发。其中内层报文以太头中的源MAC是三层网关接口VBDIF20的MAC地址MAC4。
6.VTEP3收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。依据VNI获取对应的二层广播域,然后进行VXLAN解封装,获取内层二层报文,并在对应的二层广播域内查找出接口和封装信息。
7.VTEP3根据查找到的出接口和封装信息,对报文进行VLAN Tag的相应处理,转发给对应的Host2。
——————————————————————————————————————————————————
在设备上部署VXLAN网络时,需要对下行接入业务进行选择部署。针对接入业务侧的部署,有两种方式:
基于VLAN方式:将一个或多个VLAN与BD进行关联,实现将指定VLAN内的用户加入BD。该方式控制粒度较粗,但配置简单,适合在现网上直接进行部署。
基于报文流封装类型:根据报文携带VLAN Tag的情况,将不同流封装类型的报文送到不同的二层子接口,并将二层子接口与BD进行绑定,以实现将指定用户加入到BD。该方式控制粒度较细且较为灵活,但配置复杂,适合在新建网上进行部署。
——————————————————————————————————————————————————
企业已经建成比较成熟的园区网络,但是没有专用的数据中心网络,所有的服务器分布在不同的部门,并且不具备集中放置的条件。现在用户希望在已有园区网络上构建一个虚拟网络,需求如下:
1、将散落在不同部门的服务器构建成一个虚拟网络,实现资源整合和业务灵活部署。
2、各服务器上部署着大量的VM,相同业务的服务器之间需要实现二层互通。
3、各VM之间由于业务需求需要在服务器之间进行平滑迁移,且保证业务不中断。
企业在不同的位置都拥有自己的服务器,Server1与Server2都属于VLAN 10,现需要通过VXLAN隧道实现相同业务的服务器之间的二层互通。
采用如下思路配置同网段用户通过VXLAN隧道互通:
1、分别在VTEP1、VTEP2、Switch1上配置路由协议,保证网络三层互通。
2、分别在VTEP1、VTEP2上配置VXLAN隧道。
ENSP用的是交换机大类的CE12800设备。
——————————————————————
一、配置OSPF路由协议,互通。各Ser分别是各部门的服务器,所以OSPF不发布Ser路由,也不需要创建网关。SW4和SW5,分别配置Trunk,和接入Access。
每台交换机都会学习到3条OSPF路由条目。
——————————————————————
二、(CE2、CE3)VTEP1、VTEP2配置业务接入点
VTEP1:
[~CE2]bridge-domain 10 //创建广播域DB 10
[~CE2-GE1/0/1.1]int GE1/0/1
[~CE2-GE1/0/1]port link-type trunk
[*CE2]int GE 1/0/1.1 mode l2 //创建2层子接口
[*CE2-GE1/0/1.1]encapsulation dot1q vid 10 //允许通过的流封装类型。
[*CE2-GE1/0/1.1]bridge-domain 10 //将指定二层子接口与BD相关联,实现数据报文在BD内进行转发。
流封装类型dot1q,默认处理方式:
只允许携带指定的一层VLAN Tag的报文进入VXLAN隧道。只允许携带指定的一层VLAN Tag的报文进入VXLAN隧道。只允许携带指定的一层VLAN Tag的报文进入VXLAN隧道。
VTEP2:
[*CE3]bridge-domain 10
[~CE3-GE1/0/1.1]int GE1/0/1
[~CE3-GE1/0/1]port link-type trunk
[~CE3]int ge1/0/1.1 mode l2
[*CE3-GE1/0/1.1]encapsulation dot1q vid 10
[*CE3-GE1/0/1.1]bridge-domain 10
——————————————————————
三、CE2、CE3)VTEP1、VTEP2配置VXLAN隧道
VTEP1:
[~CE2]bridge-domain 10
[~CE2-bd10]vxlan vni 2000
[*CE2]interface Nve 1
[*CE2-Nve1]source 192.168.254.2
[*CE2-Nve1]vni 2000 head-end peer-list 192.168.254.3
VTEP2:
[~CE3]bridge-domain 10 //进入BD视图
[~CE3-bd10]vxlan vni 2000 //配置BD所对应的Vxlan的VNI
[*CE3]int Nve 1 //创建NVE接口
[*CE3-Nve1]source 192.168.254.3 //配置VXLAN隧道源端VTEP的IP地址
[*CE3-Nve1]vni 2000 head-end peer-list 192.168.254.2 //配置头端赋值列表。
头端是指:VXLAN隧道的入节点,复制是指:当VXLAN隧道的入节点收到一份BUM报文后,需要将其复制多份并发送给列表中的所有VTEP。需要将其复制多份并发送给列表中的所有VTEP。
由于当前只支持头端复制方式进行BUM报文转发,当和其他厂商设备对接创建VXLAN隧道时,必须保证对端设备也配置头端复制方式,否则会导致对接失败。
——————————————————————
四、验证配置
执行display vxlan vni命令可查看到VNI的状态是Up
执行display vxlan tunnel命令可查看到VXLAN隧道的信息。
——————————————————————————————————————————————————
为了实现Ser1和Ser2之间的通信,需要分别在VTEP1和VTEP2上配置二层VNI(区分Vxlan段,不同Vxlan段不能通信),并在配置头端复制列表时指定对端VTEP IP地址。只要VTEP2和VTEP3上存在到对端VTEP IP地址的三层路由,就可以建立到对端的VXLAN隧道。
1、Ser1发送源MAC为:54-89-98-B3-74-A4,目的MAC全F,源IP:192.168.10.1,目的IP为192.168.10.2的ARP报文,请求Ser2的MAC地址。
2、VTEP1收到该ARP请求后,根据报文接入的端口和携带的VLAN信息判断该请求报文需进入VXLAN隧道,并确定报文所对应的VNI(2000)。同时VTEP1学习到了Ser1的MAC地址、BD ID(二层广播域标识)和报文入接口的对应关系,并在本地MAC表中生成Ser1的MAC表项,其出接口为GE1/0/1。
在CE2的G1/0/0抓包
使用的UDP协议封装,UD源端口号4789,目的端口号4789,原始报文在封装过程中先被添加一个VXLAN帧头,再被封装到UDP报头中。
3.VTEP1对该ARP请求报文进行VXLAN封装,如下图所示(图例),封装的VNI是绑定当前BD的VNI,封装的外层源IP地址为VTEP1的VTEP IP地址,外层目的IP地址为VTEP2的VTEP IP地址,外层源MAC地址为VTEP1的MAC地址,外层目的MAC地址为去往目的IP的网络下一跳的MAC地址。封装后的报文根据外层MAC和IP信息在IP网络中传输,送达VTEP2。
目的:对端CE1的GE1/0/0接口MAC
4.VTEP2收到报文后进行解封装,得到Ser1发送的原始ARP请求报文,同时VTEP2学习到Ser2的MAC地址、BD ID和VTEP1上VTEP IP地址的对应关系,并在本地的MAC表中生成Ser2的MAC表项,其出接口需根据下一跳(即VTEP1的VTEP IP地址)进行迭代,最终迭代结果是指向VTEP1的VXLAN隧道。
5.VTEP2在对应的二层域内广播ARP请求。Ser2收到ARP请求后,比较报文中的目的IP是否为本机的IP地址,如果是,则将Ser1的MAC地址保存到本地的MAC表中,并进行ARP应答。
CE3的G1/0/1抓包
使用dot1q流封装类型,只允许携带指定的一层VLAN Tag的报文进入VXLAN隧道。进行VXLAN封装时,会剥离原始报文的VLAN Tag。进行VXLAN解封装后,会根据子接口上dot1q终结配置的vid为报文添加VLAN Tag,再转发。
——————————————————————————————————————————————————
企业已经建成比较成熟的园区网络,但是没有专用的数据中心网络,所有的服务器分布在不同的部门,并且不具备集中放置的条件。现在用户希望在已有园区网络上构建一个虚拟网络,需求如下:
将散落在不同部门的服务器构建成一个虚拟网络,实现资源整合和业务灵活部署。
各服务器上部署着大量的VM,不同业务的服务器之间需要实现三层互通。
需求如图:各服务器上部署着大量的VM,不同业务的服务器之间需要实现三层互通。
采用如下思路配置不同网段用户通过VXLAN网关互通:
1.分别在VTEP1、VTEP2、VTEP3上配置路由协议,保证网络三层互通。
2.分别在VTEP2、VTEP3上配置VXLAN接入业务部署方式。
3.分别在VTEP1、VTEP2、VTEP3上配置VXLAN隧道。
4.在VTEP1上配置VXLAN三层网关。
———————————————————————
配置OSPF路由协议,互通。
CE1:
[~HUAWEI]sysname CE1
[*HUAWEI-GE1/0/0]undo portswitch
[*HUAWEI-GE1/0/0]ip add 192.168.100.1 30
[*HUAWEI-GE1/0/0]undo shut
[*HUAWEI]int GE 1/0/1
[*HUAWEI-GE1/0/1]undo portswitch
[*HUAWEI-GE1/0/1]ip add 192.168.100.5 30
[*HUAWEI-GE1/0/1]undo shut
[*CE1]int lo 0
[*CE1-LoopBack0]ip add 192.168.254.1 32
[*HUAWEI]commit
[~CE1]router id 192.168.254.1
[*CE1]ospf 100
[*CE1-ospf-100]area 0
[*CE1-ospf-100-area-0.0.0.0]net 192.168.254.1 0.0.0.0
[*CE1-ospf-100-area-0.0.0.0]net 192.168.100.0 0.0.0.3
[*CE1-ospf-100-area-0.0.0.0]net 192.168.100.4 0.0.0.3
[*CE1]commit
CE2:
[~HUAWEI]sysname CE2
[*HUAWEI]int GE 1/0/0
[*HUAWEI-GE1/0/0]undo portsw
[*HUAWEI-GE1/0/0]ip add 192.168.100.2 30
[*HUAWEI-GE1/0/0]undo shut
[*HUAWEI]int lo 0
[*HUAWEI-LoopBack0]ip add 192.168.254.2 32
[*HUAWEI]commit
[*CE2]router id 192.168.254.2
[~CE2]ospf 100
[*CE2-ospf-100]area 0
[*CE2-ospf-100-area-0.0.0.0]net 192.168.254.2 0.0.0.0
[*CE2-ospf-100-area-0.0.0.0]net 192.168.100.0 0.0.0.3
[*CE2]commit
CE3:
[~HUAWEI]sysname CE3
[*HUAWEI]int GE 1/0/0
[*HUAWEI-GE1/0/0]undo portsw
[*HUAWEI-GE1/0/0]ip add 192.168.100.6 30
[*HUAWEI-GE1/0/0]undo shut
[*HUAWEI]int lo 0
[*HUAWEI-LoopBack0]ip add 192.168.254.3 32
[*HUAWEI]commit
[*CE3]ospf 100
[*CE3-ospf-100]area 0
[*CE3-ospf-100-area-0.0.0.0]net 192.168.254.3 0.0.0.0
[*CE3-ospf-100-area-0.0.0.0]net 192.168.100.4 0.0.0.3
[*CE3]commit
———————————————————————
分别在VTEP2、VTEP3上配置VXLAN接入业务部署方式。
CE2:
[~CE2]bridge-domain 10
[*CE2]int GE1/0/1
[*CE2-GE1/0/1]undo shut
[~CE2]int GE1/0/1.1 mode l2
[*CE2-GE1/0/1.1]encapsulation untag
[*CE2-GE1/0/1.1]bridge-domain 10
[*CE2]commit
CE3:
[~CE3]bridge-domain 20
[*CE3]int GE1/0/1
[*CE3-GE1/0/1]undo shut
[*CE3]int GE1/0/1.1 mode l2
[*CE3-GE1/0/1.1]encapsulation untag
[*CE3-GE1/0/1.1]bridge-domain 20
[*CE3]commit
———————————————————————
分别在VTEP2、VTEP1、VTEP3上配置VXLAN隧道。
CE2:
[~CE2]bridge-domain 10
[~CE2-bd10]vxlan vni 10
[*CE2]int nve 1
[*CE2-Nve1]source 192.168.254.2
[*CE2-Nve1]vni 10 head-end peer-list 192.168.254.1
[*CE2]commit
CE3:
[~CE3]bridge-domain 20
[~CE3-bd20]vxlan vni 20
[*CE3]int nve 1
[*CE3-Nve1]sour 192.168.254.3
[*CE3-Nve1]vni 20 he pe 192.168.254.1
[*CE3]commit
CE1:
[~CE1]bridge-domain 10
[*CE1-bd10]vxlan vni 10
[*CE1]bridge-domain 20
[*CE1-bd20]vxlan vni 20
[*CE1]int nve 1
[*CE1-Nve1]sou 192.168.254.1
[*CE1-Nve1]vni 10 he pe 192.168.254.2
[*CE1-Nve1]vni 20 he pe 192.168.254.3
[*CE1]commit
———————————————————————
VTEP1上配置VXLAN三层网关
[~CE1]int Vbdif 10
[*CE1-Vbdif10]ip add 192.168.10.254 24
[*CE1]int Vbdif 20
[*CE1-Vbdif20]ip add 192.168.20.254 24
———————————————————————
验证结果
执行命令display vxlan vni可查看到VNI的状态是Up
执行命令display vxlan tunnel可查看到VXLAN隧道的信息。
实验这里注意的点
在CE1上配置了VBDIF接口,类似传统网络的VLANIF解决不同广播域互通的方法,在VXLAN中引用了VBDIF的概念。
VBDIF接口在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。可实现不同网段的VXLAN间,及VXLAN和非VXLAN的通信。
在CE2和CE3上没有做关于VLAN10和VLAN20的创建。G1/0/1的接口是空配置。在子接口中封装了untag,只允许不携带VLAN Tag的报文进入VXLAN隧道。进行VXLAN封装时,不对原始报文做处理,即不添加任何VLAN Tag。进行VXLAN解封装后,不对报文做处理,包括VLAN Tag的添加、替换或剥离。
现实中还是根据实际情况,选择封装类型,如果没有特别的要求,封装default,允许所有报文进入VXLAN隧道,不论报文是否携带VLAN Tag。进行VXLAN封装时,不对原始报文做处理,包括添加、替换或剥离。进行VXLAN解封装后,不对报文做处理,包括VLAN Tag的添加、替换或剥离。
———————————————————————
跨子网报文转发需要通过三层网关实现。
1、VTEP2收到来自Ser1的报文,根据报文中接入的端口获取对应的二层广播域,在对应的二层广播域内查找出接口和封装信息。
CE2的G1/0/1收到的终端发送的报文,无VLAN信息。目的MAC指向VBDIF10接口,如果是初次通信,目的全F。
2、VTEP2根据查找到的出接口和封装信息进行VXLAN封装,向VTEP1转发报文。
这步和上例一致。封装了VXLAN的源MAC和目的MAC和源IP目的IP的包头。
3、VTEP1收到VXLAN报文后进行解封装,发现内层报文中的目的MAC是三层网关接口VBDIF10的MAC地址,判断需要进行三层转发。
封装了untag后,不对原始报文做处理,即不添加任何VLAN Tag。
源MAC为:CE2的G1/0/0接口,目的MAC为:CE1的G1/0/0
4、VTEP1剥除内层报文的以太封装,解析目的IP。根据目的IP查找路由表,找到目的IP的下一跳地址,再根据下一跳地址查找ARP表项,获取目的MAC、VXLAN隧道出接口及VNI等信息。
5、VTEP1重新封装VXLAN报文,向VTEP3转发。其中内层报文以太头中的源MAC是三层网关接口VBDIF20的MAC地址。
进行VXLAN解封装后,不对报文做处理,包括VLAN Tag的添加、替换或剥离。
和路由转发原理一回事,源IP和目的IP,源MAC和目的MAC都发生了变化。
6.VTEP3收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。依据VNI获取对应的二层广播域,然后进行VXLAN解封装,获取内层二层报文,并在对应的二层广播域内查找出接口和封装信息。
7.VTEP3根据查找到的出接口和封装信息,对报文进行VLAN Tag的相应处理(不处理),转发给对应的Ser2。