GRE¶
- class os_ken.lib.packet.gre.gre(version=0, protocol=2048, checksum=None, key=None, vsid=None, flow_id=None, seq_number=None)¶
GRE (RFC2784,RFC2890) 头部编码/解码类。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
版本
版本。
协议
协议类型字段。协议类型定义为“以太类型”。
checksum
校验和字段(可选)。当您设置一个非 None 的值时,此字段将自动计算。
key
密钥字段(可选)此字段旨在用于标识隧道内的单个流量。
vsid
虚拟子网 ID 字段(可选)此字段是一个 24 位值,用于标识基于 NVGRE 的虚拟二层网络。
flow_id
FlowID 字段(可选)此字段是一个 8 位值,用于为相同 VSID 中的流量提供每流熵。
seq_number
序列号字段(可选)
- 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。
- os_ken.lib.packet.gre.nvgre(version=0, vsid=0, flow_id=0)¶
生成包含 NVGRE (RFC7637) 信息的 GRE 类实例。
- 参数:
version -- 版本。
vsid -- 虚拟子网 ID。
flow_id -- FlowID。
- 返回值:
包含 NVGRE 信息的 GRE 类实例。