背景
GENEVE
GENEVE(Generic Network Virtualization Encapsulation,通用网络虚拟化封装),是一种虚拟化隧道通信技术,定义于RFC 8926
,相比于之前类似的技术,GENEVE的一点重大区别在于:协议的元数据本身是可扩展的。GENEVE提供了可扩展的GENEVE header,让业务更加灵活。
实现
那么,类似的可变长的也可以运用在网络传输中。
报文结构
IPv4的Geneve数据包格式如下:
| Outer Ethernet Header | Outer IPv4 Header | Outer UDP Header | Geneve Header | Inner Ethernet Header (example payload) | Payload | Frame Check Sequence |
|---|
| 字段 | 长度(bit) | 含义 |
|---|---|---|
| Version | 2 | 版本号,目前为0 |
| Opt Len | 6 | 表明Variable Length Options的长度,这里的一位代表Variable Length Options的4字节。因为只有6bit,所以Variable Length Options最多是252(63*4)字节。 |
| O | 1 | 表明这是一个OAM包,包含了控制信息,而非数据。Endpoint可以根据这个bit来优先处理这个包。 |
| C | 1 | 表明在Variable Length Options里面,存在一个或者多个Critical的option。当C被置位时,Variable Length Options必须被解析,如果当前Endpoint不支持GENEVE解析,那么应该丢弃数据包。如果C没有被置位,那么Endpoint可以根据Opt Len直接丢弃所有的Variable Length Options。 |
| Reserved | 6 | 保留字段 |
| Protocol Type | 16 | 被封装的协议类型,如0x6558代表以太网 |
| VNI | 24 | 同VxLan的VNI,虚拟网络标识符 |
| Variable Length Options | 可变长,长度为Opt Len*4 | 可扩展的元数据 |
参考
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219905.html原文链接:https://javaforall.net
