LLDP¶
链路层发现协议(LLDP, IEEE 802.1AB) http://standards.ieee.org/getieee802/download/802.1AB-2009.pdf
基本 TLV 格式
octets | 1 | 2 | 3 ... n + 2 |
--------------------------------------------------------
| TLV type | TLV information | TLV information string |
| (7bits) | string length | (0-507 octets) |
| | (9bits) | |
--------------------------------------------------------
bits |8 2|1|8 1|
组织特定 TLV 格式
octets | 1 | 2 | 3 ... 5 | 6 | 7 ... n + 6 |
---------------------------------------------------------------
| TLV type | Length | OUI | Subtype | Infomation |
| (7bits) | (9bits) | (24bits) | (8bits) | (0-507 octets) |
---------------------------------------------------------------
bits |8 2|1|8 1|
LLDPDU 格式
------------------------------------------------------------------------
| Chassis ID | Port ID | TTL | optional TLV | ... | optional TLV | End |
------------------------------------------------------------------------
Chasis ID、Port ID、TTL、End 是强制性的,可选的 TLV 可以按任意顺序插入
- class os_ken.lib.packet.lldp.ChassisID(buf=None, *args, **kwargs)¶
Chassis ID TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
subtype
子类型。
chassis_id
与子类型对应的 Chassis id。
- class os_ken.lib.packet.lldp.End(buf=None, *args, **kwargs)¶
End TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
- class os_ken.lib.packet.lldp.ManagementAddress(buf=None, *args, **kwargs)¶
Management Address TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
addr_subtype
地址类型。
addr
设备地址。
intf_subtype
接口类型。
intf_num
接口编号。
oid
对象 ID。
- class os_ken.lib.packet.lldp.OrganizationallySpecific(buf=None, *args, **kwargs)¶
Organizationally Specific TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
oui
组织唯一 ID。
subtype
组织定义的子类型。
info
组织定义的信息字符串。
- class os_ken.lib.packet.lldp.PortDescription(buf=None, *args, **kwargs)¶
Port description TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
port_description
端口描述。
- class os_ken.lib.packet.lldp.PortID(buf=None, *args, **kwargs)¶
Port ID TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
subtype
子类型。
port_id
与子类型对应的 Port ID。
- class os_ken.lib.packet.lldp.SystemCapabilities(buf=None, *args, **kwargs)¶
System Capabilities TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
system_cap
System Capabilities。
enabled_cap
已启用 Capabilities。
- class os_ken.lib.packet.lldp.SystemDescription(buf=None, *args, **kwargs)¶
System description TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
system_description
系统描述。
- class os_ken.lib.packet.lldp.SystemName(buf=None, *args, **kwargs)¶
System name TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
system_name
系统名称。
- class os_ken.lib.packet.lldp.TTL(buf=None, *args, **kwargs)¶
Time To Live TLV 编码器/解码器类
属性
描述
buf
要解析的二进制数据。
ttl
Time To Live。
- class os_ken.lib.packet.lldp.lldp(tlvs)¶
LLDPDU 编码器/解码器类。
一个实例至少具有以下属性。
属性
描述
tlvs
TLV 实例列表。
- classmethod parser(buf)¶
解码协议头。
此方法仅在解码数据包时使用。
在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:
一个描述解码后的头对象。
一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。
数据包的其余部分。
- serialize(payload, prev)¶
编码协议头。
此方法仅在编码数据包时使用。
编码协议头。返回一个包含头的字节数组。
payload 是将立即跟随此头的其余数据包。
prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。