IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络协议学习:通用网络虚拟化封装GENEVE -> 正文阅读

[网络协议]网络协议学习:通用网络虚拟化封装GENEVE

背景

之前介绍过通用路由封装协议GRE虚拟可扩展局域网VxLAN,他们都是隧道协议的一种实现。
这两种协议的初衷和实现形式都是类似的。从初衷上说,这两种协议都是想实现一种对原始网络数据的一种扩展和封装:以一定的格式封装原始网络数据,再辅以一定的元数据(metadata),来实现附加的功能。例如,VxLAN中的网络标识符VNI就是一种元数据,实现的功能是对租户进行区分。
但是,随着网络的扩展以及业务的发展,有时候需要一种符合自己网络情况以及业务逻辑的协议,例如采用自己独特的业务元数据。这时候就需要一种技术来实现一种通用的封装方式,来符合自己的需求。这种封装最好可长可短,来实现自己的逻辑

GENEVE

GENEVE(Generic Network Virtualization Encapsulation,通用网络虚拟化封装),是一种虚拟化隧道通信技术,定义于RFC 8926
,相比于之前类似的技术,GENEVE的一点重大区别在于:协议的元数据本身是可扩展的。GENEVE提供了可扩展的GENEVE header,让业务更加灵活。

实现

其实可变长的字段,在其他的领域是有过类似的产物的。例如在MySQL数据库中,就支持可变长的字段varchar,来实现存储可变长字符串。在MySQL的默认存储引擎InnoDB的实现下,如果采用COMPACT行格式,其记录格式如下:
在这里插入图片描述
图源互联网
为了实现可变长字符串的存储,需要在记录的时候,对要存储的实际内容的长度开一个字段进行记录,当然如果表中的字段不存在可变长的(例如全部为char、int类型这种),这个字段也可以不被使用。
例如如果表a存在两列:varchar(20) col1和varchar(20) col1,当我在执行inset,插入字符串(‘aa’,‘bbb’),实际落盘的数据行需要首先存储这两个字符串的长度2和3(实际存储是倒序的二进制的,此处不深入探究实际机制仅讨论存储方案),然后在右边真实数据里面插入实际字符串’aa’和’bbb’。

那么,类似的可变长的也可以运用在网络传输中。

报文结构

IPv4的Geneve数据包格式如下:

Outer Ethernet HeaderOuter IPv4 HeaderOuter UDP HeaderGeneve HeaderInner Ethernet Header (example payload)PayloadFrame Check Sequence

其中,Geneve Header的内容如下:
在这里插入图片描述
其中各字段含义如下:

字段长度(bit)含义
Version2版本号,目前为0
Opt Len6表明Variable Length Options的长度,这里的一位代表Variable Length Options的4字节。因为只有6bit,所以Variable Length Options最多是252(63*4)字节。
O1表明这是一个OAM包,包含了控制信息,而非数据。Endpoint可以根据这个bit来优先处理这个包。
C1表明在Variable Length Options里面,存在一个或者多个Critical的option。当C被置位时,Variable Length Options必须被解析,如果当前Endpoint不支持GENEVE解析,那么应该丢弃数据包。如果C没有被置位,那么Endpoint可以根据Opt Len直接丢弃所有的Variable Length Options。
Reserved6保留字段
Protocol Type16被封装的协议类型,如0x6558代表以太网
VNI24同VxLan的VNI,虚拟网络标识符
Variable Length Options可变长,长度为Opt Len*4可扩展的元数据

这里的O和C字段是出于性能考虑,GENEVE报文的可扩展性很好,那就意味着其长度可能比较长,处理起来就比较耗资源,加入这两个字段可以使得Endpoint能够更灵活的处理数据。
在兼容性上,如果不考虑Variable Length Options,GENEVE与VxLAN是不冲突的,一些现有的针对VXLAN的优化可以直接应用在GENEVE上。
在考虑ECMP的情况下,ECMP设备看到的不是虚机的IP/MAC,而是Tunnel Endpoint的IP/MAC。也就是说,连接到同一台Tunnel Endpoint的机器的外层报文除了UDP port都是相同的。GENEVE协议认为应该使用source port的整个16bit(而不是常用的50000-65535)做Overlay流区分(RFC 8926 Section 2.3)

参考

RFC 8926
网络虚拟化协议GENEVE
网络虚拟化基础协议之Geneve

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:24:32  更:2022-06-25 18:25:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:38:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码