前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >华为SDN之VXLAN

华为SDN之VXLAN

作者头像
刘銮奕
发布2019-08-08 16:07:10
2.6K0
发布2019-08-08 16:07:10
举报
文章被收录于专栏:奕知伴解奕知伴解奕知伴解
PC端可以访问
https://www.liuluanyi.cn

VXLAN相关名词

VXLAN逻辑抽象

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

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

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

VXLAN报文格式

官方报文图:

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

抓包分析

VXLAN转发数据封装

隧道和VNI关系

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

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二层转发

1、A到B的ARP request 广播

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

2、B回复A的ARP reply 单播

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

3、A到B的单播数据报文

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

VXLAN 跨子网转发流程

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

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

A到E单播转发流程

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

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

拓扑大意

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

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

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二层网关之间进行,三层网关无需感知。

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。

跨子网报文转发

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

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对报文解封装。

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。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奕知伴解 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PC端可以访问
  • https://www.liuluanyi.cn
  • VXLAN相关名词
  • VXLAN报文格式
  • 抓包分析
  • VXLAN转发数据封装
  • 隧道和VNI关系
  • VXLAN同子网转发流程
    • 同网段查MAC二层转发
    • VXLAN 跨子网转发流程
    • 拓扑大意
    • 同子网已知单播报文转发
    • 跨子网报文转发
    • 同子网BUM报文转发
      • 头端复制
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档