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

news/2025/1/7 21:50:48/

《零入门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网络实战>>技术专栏之文章目录



http://www.ppmy.cn/news/397046.html

相关文章

前端Vue中import和require的用法分析

前端Vue中import和require的用法分析 在前端开发中&#xff0c;使用Vue框架进行项目开发是非常常见的。在Vue项目中&#xff0c;我们经常需要引入外部的模块或文件&#xff0c;这时候就会用到import和require这两个关键字。本文将详细分析它们的用法&#xff0c;并提供具体的代…

用 Linux 办公和开发到底靠谱吗?

昨天分享了“政府机构 5000 万台电脑将替换为国产 Linux”一文&#xff0c;有读者质疑Linux系统是否可以胜任办公需求。因此这里转载一篇不错的文章&#xff0c;介绍Linux下对于我们程序员来说&#xff0c;日常工作需求是否可以满足。 以下内容转载自&#xff1a;https://www.c…

linux哪个版本好

微信设置水滴昵称&#xff0c;个性中带点萌 今天我决定写一篇关于如何选择Linux发行版的博客文章&#xff0c;以便于大家借鉴。 正文共&#xff1a;3680 字 预计阅读时间&#xff1a;10 分钟 很多人经常会问我这样一个问题&#xff1a;“嘿&#xff0c;你是用Linux的&…

好用好看的Linux系统嵌入式操作系统

操作系统 微星MSI笔记本 ubuntu系统安装 1、系统盘插入安装是&#xff0c;一直停留在启动界面&#xff0c;无法安装&#xff0c; 并且有错误ACPI : EC: Fail in evaluating the _REG object of EC device. Broken bios is suspected 解决办法&#xff0c;试了两种&#xff0c;…

为什么要用Linux系统?

目录 一、Windows与Linux的根本区别:自由1. Windows设计思想2. Linux设计思想 二、Linux系统的其他优点1. 开源2. 多用户、多任务、多线程3. 稳定性和高效性4. 安全性和SELinux5. 性能优势 一、Windows与Linux的根本区别:自由 Windows与Linux的设计理念有根本性的区别。 1. Wi…

linux服务器用centos还是ubuntu系统_Linux

摘要&#xff1a; 本文讲的是linux服务器用centos还是ubuntu系统_Linux&#xff0c; linux服务器系统多使用CentOS、uBuntu、Gentoo、FreeBSD、Debian。服务器操作系统应该选择 Debian/Ubuntu 还是 CentOS &#xff0c;CENTOS现在市场占有率第一了 【小议】centos与ubunt linux…

如何选择最合适自己的linux系统

转载注明&#xff1a;http://blog.csdn.net/qq_36322296/article/details/78205426 选择一个正 确的Linux版本比选择一辆汽车要复杂得多。现在你可以找到数百种——如果不是上千种的——Linux版本&#xff0c;它们全都运行良好并定期更新&#xff0c;这其中有许多是为了满足特…

Linux有多重要?到底该如何学习Linux?

你知道操作系统都有些什么吗&#xff1f;Windows啊。这是我在上大学之前的问答&#xff0c;我当时认为只一种叫做Windows的操作系统&#xff0c;可是我错了&#xff0c;当我上大学以后&#xff0c;作为计算机专业的一名学生的时候我第一次接触到了除Windows以外的操作系统&…