《零入门kubernetes网络实战》视频专栏地址
https://www.ixigua.com/7193641905282875942
本篇文章视频地址(稍后上传)
本篇文章开始介绍vxlan虚拟设备。
主要介绍vxlan的协议报文结构,
1、总结 |
主要涉及到以下方面:
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 ?
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网络时,对原网络(现有网络)的要求? |
5.2、如何通过vxlan设备进行组网? |
5.3、vxlan设备的作用? |
负责VXLAN协议报文的封包和解包,
注意,不负责UDP报文的创建。
物理网络上可以创建多个VXLAN网络,可将这些VXLAN网络看作一个隧道,不同节点上的虚拟机/容器能够通过隧道直连。
通过VNI标识不同的VXLAN网络,使不同的VXLAN可以互相隔离。
5.4、VETP、VNI、TUNNEL概念简介 |
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设备的身影
<<零入门kubernetes网络实战>>技术专栏之文章目录