1.VXLAN简介VXLAN是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,采用L2 over L4(MAC-in-UDP)的报文封装模式,将二层报文用三层协议进行封装,可实现二层网络在三层范围内进行扩展,同时满足数据中心大二层虚拟迁移和多租户的需求。
VXLAN是一种无控制平面,利用底层IP网络实现二层通信的隧道技术。底层的IP网络被称为Underlay网络,VXLAN则被称为Overlay网络。
1.1 VXLAN结构示意图
图一
1.2 基本概念
Underlay网络和Overlay网络:VXLAN技术将已有的物理网络作为Underlay网络,在其上构建出虚拟的二层或三层网络,即Overlay网络。Overlay网络通过封装技术、利用Underlay网络提供的三层转发路径,实现租户报文在不同站点间传递。对于租户来说,Underlay网络是透明的,只能感知到Overlay网络。
NVE(Network Virtualization Edge):网络虚拟边缘节点NVE,实现网络虚拟化功能的网络实体。报文经过NVE封装转换后,NVE间就可基于三层基础网络建立二层虚拟化网络。按照NVE部署位置的不同,可以分为以下三种模式:硬件模式:所有的NVE都部署在支持NVE的设备上,所有的VXLAN报文封装与解封装都在设备上进行。软件模式:所有的NVE都部署在vSwitch上,所有的VXLAN报文封装与解封装都在vSwitch上进行。混合模式:部分NVE部署在vSwitch上,部分NVE部署在支持NVE的设备上,在vSwitch和设备上都有可能会进行VXLAN报文封装与解封装。
VTEP(VXLAN Tunnel Endpoints):VTEP是VXLAN隧道端点,封装在NVE中,用于VXLAN报文的封装和解封装。VTEP与物理网络相连,分配有物理网络的IP地址,该地址与虚拟网络无关。VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个VXLAN隧道。
VNI(VXLAN Network Identifier):VXLAN网络标识VNI类似VLAN ID,用于区分VXLAN段,不同VXLAN段的虚拟机不能直接二层相互通信。一个VNI表示一个租户,即使多个终端用户属于同一个VNI,也表示一个租户。VNI由24比特组成,支持多达16M的租户。在分布式网关部署场景下,VNI分为二层VNI和三层VNI。二层VNI是普通的VNI,以1:1方式映射到广播域BD,实现VXLAN报文同子网的转发。三层VNI和VPN实例进行关联,用于VXLAN报文跨子网的转发。
BD(Bridge Domain):BD是VXLAN网络中转发数据报文的二层广播域。在VXLAN网络中,将VNI以1:1方式映射到广播域BD,BD成为VXLAN网络转发数据报文的实体。
VBDIF接口(Virtual Bridge Domain Interface):基于BD创建的三层逻辑接口。通过VBDIF接口配置IP地址可实现不同网段的VXLAN间,及VXLAN和非VXLAN的通信,也可实现二层网络接入三层网络。
VAP(Virtual Access Point):虚拟接入点VAP,即VXLAN业务接入点,可以是二层子接口或VLAN:当接入节点是二层子接口时,通过在二层子接口上配置流封装类型实现不同的接口接入不同的数据报文,将二层子接口关联广播域BD后,可实现数据报文通过BD转发。当业务接入点是VLAN时,需要将VLAN绑定到广播域BD,也可以实现数据报文通过BD转发。
网关(Gateway):和VLAN类似,不同VNI之间的VXLAN,及VXLAN和非VXLAN之间不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,VXLAN引入了VXLAN网关。VXLAN网关分为:二层网关:用于解决租户接入VXLAN虚拟网络的问题,也可用于同一VXLAN虚拟网络的子网通信。三层网关:用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。
硬件模式:所有的NVE都部署在支持NVE的设备上,所有的VXLAN报文封装与解封装都在设备上进行。软件模式:所有的NVE都部署在vSwitch上,所有的VXLAN报文封装与解封装都在vSwitch上进行。混合模式:部分NVE部署在vSwitch上,部分NVE部署在支持NVE的设备上,在vSwitch和设备上都有可能会进行VXLAN报文封装与解封装。VTEP(VXLAN Tunnel Endpoints):
VTEP是VXLAN隧道端点,封装在NVE中,用于VXLAN报文的封装和解封装。
VTEP与物理网络相连,分配有物理网络的IP地址,该地址与虚拟网络无关。
VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个VXLAN隧道。VNI(VXLAN Network Identifier):
VXLAN网络标识VNI类似VLAN ID,用于区分VXLAN段,不同VXLAN段的虚拟机不能直接二层相互通信。
一个VNI表示一个租户,即使多个终端用户属于同一个VNI,也表示一个租户。VNI由24比特组成,支持多达16M的租户。
在分布式网关部署场景下,VNI分为二层VNI和三层VNI。
二层VNI是普通的VNI,以1:1方式映射到广播域BD,实现VXLAN报文同子网的转发。三层VNI和VPN实例进行关联,用于VXLAN报文跨子网的转发。BD(Bridge Domain):
BD是VXLAN网络中转发数据报文的二层广播域。
在VXLAN网络中,将VNI以1:1方式映射到广播域BD,BD成为VXLAN网络转发数据报文的实体。VBDIF接口(Virtual Bridge Domain Interface):
基于BD创建的三层逻辑接口。通过VBDIF接口配置IP地址可实现不同网段的VXLAN间,及VXLAN和非VXLAN的通信,也可实现二层网络接入三层网络。VAP(Virtual Access Point):
虚拟接入点VAP,即VXLAN业务接入点,可以是二层子接口或VLAN:
当接入节点是二层子接口时,通过在二层子接口上配置流封装类型实现不同的接口接入不同的数据报文,将二层子接口关联广播域BD后,可实现数据报文通过BD转发。当业务接入点是VLAN时,需要将VLAN绑定到广播域BD,也可以实现数据报文通过BD转发。网关(Gateway):
和VLAN类似,不同VNI之间的VXLAN,及VXLAN和非VXLAN之间不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,VXLAN引入了VXLAN网关。
VXLAN网关分为:
二层网关:用于解决租户接入VXLAN虚拟网络的问题,也可用于同一VXLAN虚拟网络的子网通信。三层网关:用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。1.3 报文流封装类型
dot1q:对于带有一层VLAN Tag的报文,该类型接口只接收与指定VLAN Tag匹配的报文;对于带有两层VLAN Tag的报文,该类型接口只接收外层VLAN Tag与指定VLAN Tag匹配的报文。该类型接口在对原始报文进行VXLAN封装时,会剥离最外层的VLAN Tag;在解封装VXLAN报文时,会添加指定的VLAN Tag后再转发。配置流封装类型为dot1q时,存在如下限制:二层子接口封装的vid,不能与对应二层主接口允许通过的VLAN相同,也不能与MUX VLAN中的VLAN相同。二层子接口和三层子接口封装的VLAN ID不能相同。同一主接口下的Dot1q的二层子接口VLAN ID不能重叠
untag:该类型接口只接收不带VLAN Tag的报文。该类型接口在对原始报文进行VXLAN封装时,不会为其添加任何VLAN Tag;对于CE6870EI、CE6875EI,在解封装VXLAN报文时,如果其内层报文带有VLAN Tag,则将其VLAN Tag剥离(对于QinQ报文,只剥离其外层VLAN Tag)后再转发。对于除CE6870EI、CE6875EI之外的款型,在解封装VXLAN报文时,不会对内层报文进行任何VLAN Tag处理。配置流封装类型为untag时,存在如下限制:请确保该二层子接口对应的物理接口上没有任何配置,且对应的物理接口已退出默认VLAN。仅支持为二层物理接口(包括Eth-Trunk接口)创建untag类型二层子接口。一个主接口下仅允许创建一个untag类型的二层子接口。
qinq:该类型接口只接收带有指定两层VLAN Tag的报文。该类型接口在对原始报文进行VXLAN封装时,如果配置的二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则将报文的所有VLAN Tag全部剥离,如果不配置二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则将报文的VLAN Tag全部保留;在解封装VXLAN报文时,如果配置的二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则添加指定的两层VLAN Tag后再转发,如果不配置二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则保持报文的VLAN Tag不变直接转发。当有流封装类型为Default类型、Dot1q透传(配置了rewrite no-action命令)类型或QinQ透传(没有配置rewrite pop double命令)类型的二层子接口绑定BD后,该BD不支持配置IGMP Snooping、不支持配置DHCP Snooping、不支持创建VBDIF,不支持配置ARP广播报文抑制。QinQ二层子接口上封装的外层VLAN不能和对应二层主接口配置的缺省VLAN以及允许通过的VLAN相同。
default:允许接口接收所有报文,不区分报文中是否带VLAN Tag。不论是对原始报文进行VXLAN封装,还是解封装VXLAN报文,该类型接口都不会对原始报文进行任何VLAN Tag处理,包括添加、替换或剥离。配置流封装类型为default时,存在如下限制:必须确保对应的主接口没有加入VLAN。仅支持为二层物理接口(包括Eth-Trunk接口)创建default类型二层子接口。一个主接口下仅允许创建一个default类型的二层子接口,创建后不允许再创建其他类型二层子接口。
该类型接口在对原始报文进行VXLAN封装时,会剥离最外层的VLAN Tag;在解封装VXLAN报文时,会添加指定的VLAN Tag后再转发。
配置流封装类型为dot1q时,存在如下限制:
二层子接口封装的vid,不能与对应二层主接口允许通过的VLAN相同,也不能与MUX VLAN中的VLAN相同。二层子接口和三层子接口封装的VLAN ID不能相同。同一主接口下的Dot1q的二层子接口VLAN ID不能重叠untag:
该类型接口只接收不带VLAN Tag的报文。
该类型接口在对原始报文进行VXLAN封装时,不会为其添加任何VLAN Tag;对于CE6870EI、CE6875EI,在解封装VXLAN报文时,如果其内层报文带有VLAN Tag,则将其VLAN Tag剥离(对于QinQ报文,只剥离其外层VLAN Tag)后再转发。对于除CE6870EI、CE6875EI之外的款型,在解封装VXLAN报文时,不会对内层报文进行任何VLAN Tag处理。
配置流封装类型为untag时,存在如下限制:
请确保该二层子接口对应的物理接口上没有任何配置,且对应的物理接口已退出默认VLAN。仅支持为二层物理接口(包括Eth-Trunk接口)创建untag类型二层子接口。一个主接口下仅允许创建一个untag类型的二层子接口。qinq:
该类型接口只接收带有指定两层VLAN Tag的报文。
该类型接口在对原始报文进行VXLAN封装时,如果配置的二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则将报文的所有VLAN Tag全部剥离,如果不配置二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则将报文的VLAN Tag全部保留;在解封装VXLAN报文时,如果配置的二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则添加指定的两层VLAN Tag后再转发,如果不配置二层子接口的VLAN Tag操作为剥除两层VLAN Tag操作,则保持报文的VLAN Tag不变直接转发。
当有流封装类型为Default类型、Dot1q透传(配置了rewrite no-action命令)类型或QinQ透传(没有配置rewrite pop double命令)类型的二层子接口绑定BD后,该BD不支持配置IGMP Snooping、不支持配置DHCP Snooping、不支持创建VBDIF,不支持配置ARP广播报文抑制。
QinQ二层子接口上封装的外层VLAN不能和对应二层主接口配置的缺省VLAN以及允许通过的VLAN相同。default:
允许接口接收所有报文,不区分报文中是否带VLAN Tag。
不论是对原始报文进行VXLAN封装,还是解封装VXLAN报文,该类型接口都不会对原始报文进行任何VLAN Tag处理,包括添加、替换或剥离。
配置流封装类型为default时,存在如下限制:
必须确保对应的主接口没有加入VLAN。仅支持为二层物理接口(包括Eth-Trunk接口)创建default类型二层子接口。一个主接口下仅允许创建一个default类型的二层子接口,创建后不允许再创建其他类型二层子接口。1.4 VXLAN报文格式
图二
字段
描述
VXLAN header
VXLAN Flags:8比特,取值为00001000。VNI:VXLAN网络标识,24比特,用于区分VXLAN段。Reserved:24比特和8比特,必须设置为0。
Outer UDP header
DestPort:目的UDP端口号是4789。Source Port:源端口号是内层报文通过哈希算法计算后的值。
Outer IP header
IP SA:源IP地址是VXLAN隧道本端VTEP的IP地址。IP DA:目的IP地址是VXLAN隧道远端VTEP的IP地址。如果Underlay网络为IPv4网络,VTEP IP为IPv4类型;如果Underlay网络为IPv6网络,VTEP IP为IPv6类型
Outer Ethernet header
MAC DA:在发送报文的虚拟机所属VTEP上根据目的VTEP地址查找路由表,路由表中下一跳IP地址对应的MAC地址。MAC SA:发送报文的虚拟机所属VTEP的MAC地址。802.1Q Tag:可选字段,该字段为报文中携带的VLAN Tag。Ethernet Type:以太报文类型。
VXLAN Flags:8比特,取值为00001000。VNI:VXLAN网络标识,24比特,用于区分VXLAN段。Reserved:24比特和8比特,必须设置为0。
Outer UDP header
DestPort:目的UDP端口号是4789。Source Port:源端口号是内层报文通过哈希算法计算后的值。Outer IP header
IP SA:源IP地址是VXLAN隧道本端VTEP的IP地址。IP DA:目的IP地址是VXLAN隧道远端VTEP的IP地址。如果Underlay网络为IPv4网络,VTEP IP为IPv4类型;如果Underlay网络为IPv6网络,VTEP IP为IPv6类型Outer Ethernet header
MAC DA:在发送报文的虚拟机所属VTEP上根据目的VTEP地址查找路由表,路由表中下一跳IP地址对应的MAC地址。MAC SA:发送报文的虚拟机所属VTEP的MAC地址。802.1Q Tag:可选字段,该字段为报文中携带的VLAN Tag。Ethernet Type:以太报文类型。2.实验操作2.1 网络拓扑图
2.2 IP地址规划
CE1 GE 1/1/0
10.1.1.1
CE1 lo0
1.1.1.1
R1 Ethernet 0/0/0
10.1.1.2
R1 Ethernet 0/0/1
10.2.1.1
R1 lo0
2.2.2.2
CE2 GE 1/0/0
10.2.1.2
CE2 lo0
3.3.3.3
PC1
192.168.10.1
PC2
192.168.20.2
PC3
192.168.10.3
PC4
192.168.20.4
2.3 设备配置
CE1:
代码语言:javascript代码运行次数:0运行复制
[~Huawei]sysname CE1
[*Huawei]commit
[~CE1]bridge-domain 10
[*CE1-bd10]vxlan vni 10
[*CE1-bd10]bridge-domain 20
[*CE1-bd20]vxlan vni 20
[*CE1-bd20]commit
[~CE1-bd20]interface GE1/0/1.10 mode l2
[*CE1-GE1/0/1.10]encapsulation dot1q vid 10
[*CE1-GE1/0/1.10]bridge-domain 10
[*CE1-GE1/0/1.10]int g1/0/1.20 mode l2
[*CE1-GE1/0/1.20]encapsulation dot1q vid 20
[*CE1-GE1/0/1.20]bridge-domain 20
[*CE1-GE1/0/1.20]interface LoopBack0
[*CE1-LoopBack0]ip address 1.1.1.1 32
[*CE1-LoopBack0]interface GE1/0/0
[*CE1-GE1/0/0]undo portswitch
[*CE1-GE1/0/0]undo shutdown
[*CE1-GE1/0/0]ip address 10.1.1.1 255.255.255.252
[*CE1-GE1/0/0]interface GE1/0/1
[*CE1-GE1/0/1]undo shutdown
[*CE1-GE1/0/1]quit
[*CE1]commit
[~CE1]interface Nve1
[*CE1-Nve1]source 1.1.1.1
[*CE1-Nve1]vni 10 head-end peer-list 3.3.3.3
[*CE1-Nve1]vni 20 head-end peer-list 3.3.3.3
[*CE1-Nve1]quit
[*CE1]commit
[~CE1]ospf 100 router-id 1.1.1.1
[*CE1-ospf-100]area 0.0.0.0
[*CE1-ospf-100-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[*CE1-ospf-100-area-0.0.0.0]network 10.1.1.0 0.0.0.3
[*CE1-ospf-100-area-0.0.0.0]commit
[~CE1-ospf-100-area-0.0.0.0]R1:
代码语言:javascript代码运行次数:0运行复制
[Huawei]sysname R1
[R1]interface Ethernet0/0/0
[R1-Ethernet0/0/0]ip address 10.1.1.2 255.255.255.252
[R1-Ethernet0/0/0]interface Ethernet0/0/1
[R1-Ethernet0/0/1]ip address 10.2.1.1 255.255.255.252
[R1-Ethernet0/0/1]interface LoopBack0
[R1-LoopBack0]ip address 2.2.2.2 32
[R1-LoopBack0]quit
[R1]ospf 100 router-id 2.2.2.2
[R1-ospf-100]area 0.0.0.0
[R1-ospf-100-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[R1-ospf-100-area-0.0.0.0]network 10.1.1.0 0.0.0.3
[R1-ospf-100-area-0.0.0.0]network 10.2.1.0 0.0.0.3CE2:
代码语言:javascript代码运行次数:0运行复制
[~Huawei]sysname CE2
[*Huawei]commit
[~CE2]bridge-domain 10
[*CE2-bd10]vxlan vni 10
[*CE2-bd10]bridge-domain 20
[*CE2-bd20]vxlan vni 20
[*CE2-bd20]commit
[~CE2-bd20]interface GE1/0/1.10 mode l2
[*CE2-GE1/0/1.10]encapsulation dot1q vid 30
[*CE2-GE1/0/1.10]bridge-domain 10
[*CE2-GE1/0/1.10]int g1/0/1.20 mode l2
[*CE2-GE1/0/1.20]encapsulation dot1q vid 40
[*CE2-GE1/0/1.20]bridge-domain 20
[*CE2-GE1/0/1.20]interface LoopBack0
[*CE2-LoopBack0]ip address 3.3.3.3 32
[*CE2-LoopBack0]interface GE1/0/0
[*CE2-GE1/0/0]undo portswitch
[*CE2-GE1/0/0]undo shutdown
[*CE2-GE1/0/0]ip address 10.2.1.2 255.255.255.252
[*CE2-GE1/0/0]interface GE1/0/1
[*CE2-GE1/0/1]undo shutdown
[*CE2-GE1/0/1]quit
[*CE2]commit
[~CE2]interface Nve1
[*CE2-Nve1]source 3.3.3.3
[*CE2-Nve1]vni 10 head-end peer-list 1.1.1.1
[*CE2-Nve1]vni 20 head-end peer-list 1.1.1.1
[*CE2-Nve1]quit
[*CE2]commit
[~CE2]ospf 100 router-id 1.1.1.1
[*CE2-ospf-100]area 0.0.0.0
[*CE2-ospf-100-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[*CE2-ospf-100-area-0.0.0.0]network 10.2.1.0 0.0.0.3
[*CE2-ospf-100-area-0.0.0.0]commit
[~CE2-ospf-100-area-0.0.0.0]SW1:
代码语言:javascript代码运行次数:0运行复制
[Huawei]sysname SW1
[SW1]vlan batch 10 20
[SW1]interface Ethernet0/0/1
[SW1-Ethernet0/0/1]port link-type trunk
[SW1-Ethernet0/0/1]port trunk allow-pass vlan 2 to 4094
[SW1-Ethernet0/0/1]interface Ethernet0/0/2
[SW1-Ethernet0/0/2]port link-type access
[SW1-Ethernet0/0/2]port default vlan 10
[SW1-Ethernet0/0/2]interface Ethernet0/0/3
[SW1-Ethernet0/0/3]port link-type access
[SW1-Ethernet0/0/3]port default vlan 20
SW2:
代码语言:javascript代码运行次数:0运行复制
[Huawei]sysname SW2
[SW2]vlan batch 30 40
[SW2]interface Ethernet0/0/1
[SW2-Ethernet0/0/1]port link-type trunk
[SW2-Ethernet0/0/1]port trunk allow-pass vlan 2 to 4094
[SW2-Ethernet0/0/1]interface Ethernet0/0/2
[SW2-Ethernet0/0/2]port link-type access
[SW2-Ethernet0/0/2]port default vlan 30
[SW2-Ethernet0/0/2]interface Ethernet0/0/3
[SW2-Ethernet0/0/3]port link-type access
[SW2-Ethernet0/0/3]port default vlan 40PC1:
PC2:
PC3:
PC4:
2.3 实验结果
PC1-->PC3
PC2-->PC4
3.总结以上通过静态VXLAN隧道配置实现相同网段IP主机(无网关)之间相互访问,Underlay网络对用户来说完全透明,用户只能感知Overlay网络的存在,此时NVE设备在逻辑上就形似一台二层交换机,组成了一个大的二层网络。