零入门kubernetes网络实战-35->vxlan简介以及原理介绍(vxlan报文结构介绍)

《零入门kubernetes网络实战》视频专栏地址

https://www.ixigua.com/7193641905282875942

本篇文章视频地址(稍后上传)



本篇文章开始介绍vxlan虚拟设备。

主要介绍vxlan的协议报文结构,

1、总结

主要涉及到以下方面:

  • overlay跟vxlan的关系
  • 如何理解vxlan设备是一对一,一对多模型?
  • 创建vxlan网络对底层网络的要求?
  • vxlan设备的主要作用?
  • vtep,vni, tunnel概念介绍
  • 通过三层网络搭建虚拟的二层网络
  • vxlan报文结构分析
  • 解析vxlan报文结构中MTU为什么是1450?

2、Overlay? 与Vxlan的关系?

在介绍vxlan之前,先介绍一下Overlay。

Overlay,简单的说,就是在原网络的基础上重新产生一个逻辑上的网络。

类似于官方用语:
在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于 IP 的基础网络技术为主。

IETF 在 Overlay 技术领域提出 VXLAN、NVGRE、STT 三大技术方案。

Overlay跟Vxlan到底什么关系呢?

类似于Overlay代表的是容器,vxlan代表的是Docker。

Docker只是容器的一种实现方案而已。还有其他方案,如Podman。

vxlan也只是Overlay的一种实现方案而已,还有NVGRE,STT等。

Overlay 不再详细的列举了,感兴趣的同学可以自信百度。

总体比较,VLXAN 技术具有更大优势,而且当前 VLXAN 也得到了更多厂家和客户的支持,已经成为 Overlay 技术的主流标准。

3、vxlan简介?

VXLAN ?

  • 可以组建虚拟可扩展的局域网,
  • 一种虚拟化隧道通信技术,
  • 属于隧道网络
  • 一种overlay(覆盖网络技术),
  • 通过三层网络搭建虚拟的二层网络(稍后介绍)
  • 支持一对一形式的通信(后续有案例介绍)
    • 就是说在创建本地的vxlan设备时,已经明确的指明了通信目的的vxlan设备的信息。
    • 比方说,用一根电话线链接的两端话筒,只能这两个话筒进行通信。
    • 是一种专用网络
  • 支持一对多形式的通信
    • 就是说在创建本地的vxlan设备时,并没有明确的指明通信的目的vxlan设备的信息。
    • 只有在真正通信的时候,通过某种方式,可以获取通信目的vxlan设备的信息,获取到对方的信息后,才能通信。
    • 方式一:(后续有案例介绍)
      • 比方说,在创建每一个vxlan设备的时候,将自己的vxlan设备信息,如IP,MAC,VNI以及所在宿主机节点的IP注册到存储里,如etcd里
      • 当某一个vxlan想跟目的vxlan进行通信的时候,就可以去etcd里进行查询,查询到目的信息后,就可以建立通信了。
      • flannel中的vxlan模式就是类似的原理
    • 方式二:(后续有案例介绍)
      • 比方说,在创建vxlan设备时,设置一个D类地址,如239.1.1.1
      • 当本地vxlan设备想跟目的vxlan设备进行通信时,第一次通信时,需要向239.1.1.1发送数据包,此数据包的目的就是获取目的vxlan设备的具体信息,
      • 239.1.1.1接收到数据包后,会通过多播的形式,发送数据包。
      • 感觉有点像,通过喇叭的形式,对外喊,寻找目的vxlan设备,目的vxlan设备接收到数据包后,发现是寻找自己的,就进行反馈数据包,将自己的IP,MAC,以及所占用的宿主机的IP信息反馈过去。

VXLAN是在底层物理网络(underlay)之上使用隧道技术,依托UDP层构建的overlay的逻辑网络,使逻辑网络与物理网络解耦。

其实,vxlan设备有点像网桥一样,可以以学习的方式学习到其他对端的IP地址,也可以直接配置静态转发。

4、vxlan解决了什么问题?为什么会出现vxlan?

VLAN技术的缺陷是VLAN header预留的长度只有12bit,故最多只能支持4096个子网的划分,无法满足云计算场景下主机数量。

VXLAN的报文头部有一个VXLAN标识(即VNI,VXLAN Network Identifier)有24bit,可以支持2的24次方个子网,

故可支持1600万个VXLAN的同时存在,远多于VLAN的4094个,因此可适应大规模租户的部署。

在创建vxlan时,会指定vni,一个vni可以认为是一个子网。

以VNI(virtual network identifier)区分不同子网,相当于VLAN ID;

也就是说,vxlan主要解决了vlan不能划分更多子网的问题。

5、VXLAN 协议原理简介

比方说,有一个新的业务,需要一个单独的网络进行测试,如果当前存在的网络满足要求的话,可以使用

但是,如果不满足呢?或者说,需要迁移当前服务器,迁移后的服务器是否还满足测试要求呢?

那么,怎么解决这个问题呢?

能不能在当前网络的基础上,在创建一个逻辑上的网络,无论底层原网络如何迁移变化,都不影响逻辑上的网络,最好了。

有点类似于容器,容器内部的变化一般情况下不会影响到宿主机的变化。

5.1、创建vxlan网络时,对原网络(现有网络)的要求?

  • 只要是三层网络可达(能够通过IP互相通信)的网络就能部署VXLAN。
    • 因为需要将vxlan产生的数据包封装到UDP数据包里,
    • UDP数据包,依赖原网络进行传输的
    • 创建UDP数据包时,需要设置网络层,即需要设置目的IP,源IP,因此,需要IP之间能够通信
  • 创建VXLAN隧道网络相比改造传统的二层或三层网络,对原有的网络架构影响较小。

5.2、如何通过vxlan设备进行组网?

  • vxlan网络是依赖当前环境中的网络的
  • 当前网络三层可达
  • 在当前网络所在的服务器节点上安装VTEP设备,安装了vtep设备的服务器之间就可以组建成vxlan网络
    • 没有安装vtep设备的服务器就不算vxlan网络
  • 在同一个服务器上可以创建多个vxlan设备
  • 同一个vxlan网络的vxlan设备的vni号是相同的
  • 不同的vni号,代表不同的vxlan网络,网络隔离。
  • 创建vxlan设备时,
    • 需要设置vni号
    • 静态方式获取目的vxlan设备的信息
      • 可以直接指定目的vxlan设备的信息
    • 动态方式获取目的vxlan设备的信息
      • 方式一:可以设置D类地址,通过D类地址来获取目的vxlan设备的信息
      • 方式二:每个vxlan设备创建时,将vxlan设备信息等注册到集中缓存,如etcd里,需要获取目的vxlan设备信息时,可以去etcd里查询

5.3、vxlan设备的作用?

负责VXLAN协议报文的封包和解包,

注意,不负责UDP报文的创建。

物理网络上可以创建多个VXLAN网络,可将这些VXLAN网络看作一个隧道,不同节点上的虚拟机/容器能够通过隧道直连。

通过VNI标识不同的VXLAN网络,使不同的VXLAN可以互相隔离。

5.4、VETP、VNI、TUNNEL概念简介

  • VTEP(VXLAN tunnel endpoints):
    • VXLAN网络的边缘设备,用来进行VXLAN报文的封包与解包
    • VTEP可以是网络设备(例如交换机),也可以是一台机器(例如虚拟化集群中的宿主机)。
  • VNI(VXLAN network identifier):
    • VNI是VXLAN的标识,是个24位整数,因此最大值是2的24次方,即16777216。
    • 如果一个VNI对应一个租户,那么理论上VXLAN可以支持千万级别的租户。
  • tunnel:
    • 隧道是一个逻辑上的概念,
    • 在VXLAN模型中并没有具体的物理实体相对应。
    • 隧道可以看作一个虚拟通道,VXLAN通信双方都认为自己在直接通信,并不知道底层网络的存在。
    • 从整体上看,每个VXLAN网络像是为通信的设备搭建了一个单独的通信通道,也就是隧道。

5.5、为什么说vxlan是隧道网络?或者 通过三层网络搭建虚拟的二层网络

在这里插入图片描述

vxlan设备之间通信时,他们以为自己都是在同一个局域网内部通信呢,

其实,他们产生的数据包被Linux内核封装到UDP数据包里,通过本地的对外网卡eth0发送。

Vxlan设备产生的数据包的最外层是MAC层,即,二层。

这些数据包被作为原始数据,封装到了UDP里,即,二层数据包依赖的是三层网络进行通信的。

那么,vxlan设备之间的通信,其实就是一种建立在原网络之上的逻辑网络;

在原网络之上,专门建立的一种逻辑网络。

这种逻辑网络,没有具体实体的线路,完全是每次通信时,才建立起亮点之间的逻辑通道。

6、vxlan报文结构介绍?

6.1、vxlan的整体报文结构,如下

在这里插入图片描述

6.2、假设网络拓扑如下:

在这里插入图片描述

V1_IP,表示Master节点上vxlan设备的的IP。

NS1_IP,表示ns1命名空间里veth1a设备的IP。

其他标识含义类似。

根据上面的网络拓扑,我们逐步解析vxlan的报文结构

6.3、vxlan报文结构,创建的先后顺序

在这里插入图片描述

如果你用代码进行解析时,

获取字节流后,先读取到的就是上图中最左侧的Ethernet头部,
即,

Ethernet头部—>读取IP头部—>读取UDP头部—>vxlan头部—>Ethernet头部—>读取IP头部—>原始数据

即,从左往右 依次解析。

6.4、vxlan报文结构,每一部分都是由谁产生的?

在这里插入图片描述

6.5、解析vxlan设备产生的数据包结构

在这里插入图片描述

注意,上面的IP头部,仅列出了主要属性。

实际IP头部占用的是20字节。

6.6、解析vxlan头部结构

在这里插入图片描述

6.7、解析外层结构

在这里插入图片描述

注意,上面的IP头部,仅列出了主要属性。
实际IP头部占用的是20字节。

7、解析一下vxlan报文结构中MTU为什么是1450?

通过命令创建vxlan设备时,如果没有显示的设置MTU的话,

默认MTU的值就是1450。

MTU就是在传输数据报文时,原始数据能够占用的最大字节数。

7.1、首先,看一下在vxlan数据报文中,MTU具体指的是那一部分

首先,看一下在vxlan数据报文中,MTU具体指的是那一部分。

在这里插入图片描述

并且,看一下左侧的MAC层,IP层,UDP层,VXLAN头部占用的字节数

7.2、计算一下vxlan设备的MTU值?

在这里插入图片描述

看一下,通过命令行方式创建的vxlan设备的MTU值?

在这里插入图片描述

7.3、可以计算一下,实际用户能够发送的原始数据最大字节数(仅供参考)

在这里插入图片描述

8、vxlan设备,当前的使用场景?

可以在以下网络模型中,找到vxlan设备的身影

  • flannel
  • calico
  • opensstack
    等等



<<零入门kubernetes网络实战>>技术专栏之文章目录


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值