Geneve

Geneve 数据包解析器/序列化器

class os_ken.lib.packet.geneve.Option(option_class=None, type_=None, length=0)

隧道选项

class os_ken.lib.packet.geneve.OptionDataUnknown(buf, option_class=None, type_=None, length=0)

未知选项类和类型特定的选项

class os_ken.lib.packet.geneve.geneve(version=0, opt_len=0, flags=0, protocol=25944, vni=None, options=None)

Geneve (RFC draft-ietf-nvo3-geneve-03) 头部编码器/解码器类。

一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。

属性

描述

版本

版本。

opt_len

选项字段的长度。

flags

OAM 数据包和存在关键选项的标志字段。

协议

协议类型字段。协议类型定义为“以太类型”。

VNI

虚拟网络的唯一标识符。

选项

Option* 实例列表。

classmethod parser(buf)

解码协议头。

此方法仅在解码数据包时使用。

在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:

  • 一个描述解码后的头对象。

  • 一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。

  • 数据包的其余部分。

serialize(payload=None, prev=None)

编码协议头。

此方法仅在编码数据包时使用。

编码协议头。返回一个包含头的字节数组。

payload 是将立即跟随此头的其余数据包。

prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。