华为SDN之VXLAN

  • A+
所属分类:SDN 华为技术 网络

VXLAN相关名词

华为SDN之VXLAN

VXLAN逻辑抽象

华为SDN之VXLAN

VXLAN的简化理解—---两次虚拟化

1、第一次虚拟化:利用隧道技术将边缘设备互连透传二层报文;整网抽象理解成一台端口数目扩展的超大LAN switch。

2、第二次虚拟化利用VNI将这台超大的交换机虚拟出多个二层的广播域,和VLAN本质是一样的, VNI类比VLANID. 并通过定义VXLAN header中的VNI字段,将子网范围由4K扩展至16M。

VXLAN报文格式

华为SDN之VXLAN

官方报文图:

华为SDN之VXLAN

其中VNI的24字节就是将子网范围4K扩展至2的24次方(16M)的原因。

VXLAN转发数据封装

华为SDN之VXLAN

隧道和VNI关系

华为SDN之VXLAN

两个VTEP可以确定一条VXLAN隧道,VTEP间的这条VXLAN隧道将被两个NVE间的所有VNI所公用。

VXLAN同子网转发流程

华为SDN之VXLAN

假设A、B、C、D都属于同一VNI ID的VNI 1。

  • HOST A发送ARP Request报文到HOST B
  • HOST B回应ARP Reply报文到HOST A。
  • HOST A发送单播数据报文到HOST B。

同网段查MAC二层转发

A到B的ARP request 广播

华为SDN之VXLAN
  • NVE1发现是广播报文,在VNI1内广播ARP request报文;报文做隧道封装; 中间节点,IP透传overlay报文
  • NVE2/3/4/5 接收报文,解隧道封装,原始报文本地VNI1内广播;学习到服务器A mac;

B回复A的ARP reply 单播

华为SDN之VXLAN
  • NVE2查找服务器A mac转发表,命中出接口为 隧道(NVE2至NVE1隧道);报文封装后三层转发
  • 中间节点,IP透传overlay报文
  • NVE1接收报文并解封装,在本地转发;NVE1学习到服务器B的MAC地址

A到B的单播数据报文

华为SDN之VXLAN
  • NVE1 和 NVE2都学习到了服务器A和B的MAC地址;后续查找MAC则命中;单播流程,和VLAN一样的;
  • 唯一不同的是外层封装了隧道;underlay 是IP转发;

VXLAN 跨子网转发流程

华为SDN之VXLAN

假设NVE5作为三层网关,HOST A属于VNI 1,HOST E属于VNI 2,默认主机与网关都互相学习到ARP表, 各个节点MAC都已学习。

  • HOST A发送单播数据报文给HOST E。

A到E单播转发流程

华为SDN之VXLAN
  • NVE1查找网关mac转发表,封装隧道;使用VNI1
  • 网关解封装报文,根据内层IP头查路由,替换内层以太头,封装VXLAN头部,使用VNI2;
  • NVE6 接收报文并解封装,内层报文根据目的MAC转发

上面的看完还是没有了解的话,可以再继续看看数据包层面的详细分析。部署在集中式网关场景中,此篇集中式还是分布式不是重点,后续文章会解释,在这里就先知道这个名词就好了。

拓扑大意

Leaf1上部署了Server1和Server3,Leaf2上部署了Server2,Spine上部署三层网关。

华为SDN之VXLAN

配置如下(此篇不是重点不做解释,后续文章后有相应解释):

sysname Leaf1
#
bridge-domain 10
 vxlan vni 5010
#
bridge-domain 20
 vxlan vni 5020
#
interface 10GE1/0/2.1 mode l2
 encapsulation dot1q vid 10
 bridge-domain 10
#
interface 10GE1/0/3.1 mode l2
 encapsulation dot1q vid 30
 bridge-domain 20
#
interface Nve1
 source 2.2.2.2
 vni 5010 head-end peer-list 3.3.3.3
 vni 5020 head-end peer-list 3.3.3.3
 vni 5020 head-end peer-list 4.4.4.4
#
return

同子网已知单播报文转发

同子网已知单播报文转发只在VXLAN二层网关之间进行,三层网关无需感知。

华为SDN之VXLAN

1.Leaf1收到来自Host3的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,并在该二层广播域内查找出接口和封装信息。

2.Leaf1上VTEP根据查找到的封装信息对数据报文进行VXLAN封装,然后根据查找到的出接口进行报文转发。

3.Leaf2上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层的二层报文。

4.Leaf2根据内层二层报文的目的MAC,从本地MAC表找到对应的出接口和封装信息,为报文添加VLAN Tag,转发给对应的主机Host2。

跨子网报文转发

跨子网报文转发需要通过三层网关实现。

华为SDN之VXLAN

1.Leaf1收到来自Host1的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,在对应的二层广播域内查找出接口和封装信息。

2.Leaf1上VTEP根据查找到的出接口和封装信息进行VXLAN封装,向Spine转发报文。

3.Spine收到VXLAN报文后进行解封装,发现内层报文中的目的MAC是三层网关接口VBDIF10的MAC地址MAC3,判断需要进行三层转发。

4.Spine剥除内层报文的以太封装,解析目的IP。根据目的IP查找路由表,找到目的IP的下一跳地址,再根据下一跳地址查找ARP表项,获取目的MAC、VXLAN隧道出接口及VNI等信息。

5.Spine重新封装VXLAN报文,向Leaf2转发。其中内层报文以太头中的源MAC是三层网关接口VBDIF20的MAC地址MAC4。

6.Leaf2上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。依据VNI获取对应的二层广播域,然后进行VXLAN解封装,获取内层二层报文,并在对应的二层广播域内查找出接口和封装信息。

7.Leaf2根据查找到的出接口和封装信息,为报文添加VLAN Tag,转发给对应的Host2。 上面都是在MAC已知的情况下,下面看看在未知条件下如何解决:

同子网BUM报文转发

同子网BUM报文转发只在VXLAN二层网关之间进行,三层网关无需感知。同子网BUM报文转发可以采用头端复制方式和集中复制方式。

头端复制

头端复制是指,当BUM报文进入VXLAN隧道时,接入端VTEP根据头端复制列表进行报文的VXLAN封装,并将报文发送给头端复制列表中的所有出端口VTEP。BUM报文出VXLAN隧道时,出口端VTEP对报文解封装。

华为SDN之VXLAN

1.Leaf1收到来自终端A的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域。

2.Leaf1上VTEP根据对应的二层广播域获取对应VNI的头端复制隧道列表,依据获取的隧道列表进行报文复制,并进行VXLAN封装。然后将封装后的报文从出接口转发出去。

3.Leaf2/Leaf3上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层二层报文。

4.Leaf2/Leaf3检查内层二层报文的目的MAC,发现是BUM MAC,在对应的二层广播域内的非VXLAN隧道侧进行广播处理,即:Leaf2/Leaf3分别从本地MAC表中找到非VXLAN隧道侧的所有出接口和封装信息,为报文添加VLAN Tag,转发给对应的终端B/C。

  • 我的微信
  • 欢迎大家,与我交流,非诚勿扰谢谢
  • weinxin
  • 奕知伴解 微信公众号
  • 扫一扫关注,从此不迷路。
  • weinxin
刘銮奕

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: