原来二层网络可以这么玩 网络工程师你真的理解VxLAN技术吗?( 二 )


  • VXLAN Header
增加VXLAN头(8字节) , 其中包含24比特的VNI字段 , 用来定义VXLAN网络中不同的租户 。此外 , 还包含VXLAN Flags(8比特 , 取值为00001000)和两个保留字段(分别为24比特和8比特) , 增强可扩展性 。
  • UDP Header
VXLAN头和原始以太帧一起作为UDP的数据部分 。UDP头的目的端口号(VXLAN Port)固定为4789(可以修改) , 源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值 。
  • Outer IP Header
封装外层IP头 , 其中的源IP地址(Outer Src. IP)为源VM所属VTEP的IP地址 , 目的IP地址(Outer Dst. IP)为目的VM所属VTEP的IP地址 。
  • Outer MAC Header
封装外层以太帧头 。其中的源MAC地址(Src. MAC Addr)为源VM所属VTEP的MAC地址 , 目的MAC地址(Dst. MAC Addr)为到达目的VTEP的路径上下一跳设备的MAC地址 。
  • 当目的IP为接收端的VTEP的IP时 , 假如不知道这个IP地址 , 则需要执行ARP请求来获取 , 步骤如下:
1.目标IP被替换成与源虚拟机具有相同VNI的多播组IP地址;
2. 所有VTEP端都接收该多播报文 , VTEP查找所在主机上的全部虚拟机来匹配源虚拟机的Inner 目的MAC 。
3. 目标VTEP的虚拟机会回应该多播包 , 从而获得目标VTEP的IP地址 。
4. 发送端VTEP添加VNI-VTEP-虚拟机MAC的映射关系到自己的VXLAN表中 , 以避免再次组播学习 。
VxLAN的部署
  • VxLAN存在underlay及overlay的概念 , 它是在原有的网络架构上再overlay新增了一层网络(不影响原有网络) 。因为是架构在IP层之上 , 两站点只需要IP可达 , 就可以建立VxLAN隧道(部署VxLAN) 。
对于CE系列交换机而言 , BD与VNI是1:1的映射关系 , 这种映射关系是通过在VTEP上配置命令行建立起来的 。配置如下:
#
bridge-domain 20 //表示创建一个“大二层广播域”BD , 其编号为20
vxlan vni 2000 //表示在BD 20下指定与之关联的VNI为2000
#
VTEP会根据以上配置生成BD与VNI的映射关系表 , 该映射表可以通过命令行查看 , 如下所示:
<HUAWEI> display vxlan vni
Number of vxlan vni : 1
VNI BD-ID State
----------------------------------
5000 10 up
有了映射表后 , 进入VTEP的报文就可以根据自己所属的BD来确定报文封装时该添加哪个VNI 。那么 , 报文根据什么来确定自己属于哪个BD呢?
  • 报文根据什么去确定自己属于哪个BD呢?
二层子接口或者物理接口根据配置来检查哪些报文需要进入VXLAN隧道 , 同时对检查通过的报文做怎样的处理 。
以华为的交换机为例:
原来二层网络可以这么玩 网络工程师你真的理解VxLAN技术吗?

文章插图
default类型允许所有报文进入VXLAN隧道 , dot1q和untag类型的只允许某一类报文进入 。
   
  1. 经过同一物理接口的报文既有带VLAN Tag的 , 又有不带VLAN Tag的 , 并且他们各自要进入不同的VXLAN隧道 , 则可以在该物理接口上同时创建dot1q和untag类型的二层子接口 。
  2. default类型(应用于均需要走同一条VXLAN隧道的场景 , 下挂的VM全部属于同一BD)的子接口允许所有报文进入VXLAN隧道 , dot1q和untag类型的子接口只允许某一类报文进入 。也即意味着前者不可与后者在同一子接口 。(不然报文到了接口之后如何判断要进入哪个二层子接口)
  • VxLAN隧道的建立:分手动和自动建立
对于CE系列交换机 , 以上配置是在NVE(Network Virtualization Edge)接口下完成的 。配置过程如下:
#
interface Nve1 //创建逻辑接口NVE 1
source 1.1.1.1 //配置源VTEP的IP地址(推荐使用Loopback接口的IP地址)
vni 5000 head-end peer-list 2.2.2.2
vni 5000 head-end peer-list 2.2.2.3 //表示属于VNI 5000的对端VTEP有两个 , IP地址分别为2.2.2.2和2.2.2.3
<HUAWEI> display vxlan vni 5000 verbose
BD ID : 10
State : up
NVE : 288
Source : 1.1.1.1
UDP Port : 4789
BUM Mode : head-end
Group Address : -
Peer List : 2.2.2.2 2.2.2.3 //同一大二层广播域的范围,属于同一个BD 10域的范围 。
//当VTEP收到BUM(Broadcast&Unknown-unicast&Multicast , 广播&未知单播&组播)报文时 , 会将报文复制并发送给Peer List中所列的所有对端VTEP(这就好比广播报文在VLAN内广播) 。


推荐阅读