Slow

class os_ken.lib.packet.slow.lacp(version=1, actor_system_priority=0, actor_system='00:00:00:00:00:00', actor_key=0, actor_port_priority=0, actor_port=0, actor_state_activity=0, actor_state_timeout=0, actor_state_aggregation=0, actor_state_synchronization=0, actor_state_collecting=0, actor_state_distributing=0, actor_state_defaulted=0, actor_state_expired=0, partner_system_priority=0, partner_system='00:00:00:00:00:00', partner_key=0, partner_port_priority=0, partner_port=0, partner_state_activity=0, partner_state_timeout=0, partner_state_aggregation=0, partner_state_synchronization=0, partner_state_collecting=0, partner_state_distributing=0, partner_state_defaulted=0, partner_state_expired=0, collector_max_delay=0)

链路聚合控制协议(LACP, IEEE 802.1AX)头部编码/解码类。

http://standards.ieee.org/getieee802/download/802.1AX-2008.pdf

LACPDU 格式

LACPDU 结构

字节

子类型 = LACP

1

版本号

1

TLV Actor

TLV_type = Actor 信息

1

Actor_Information_Length = 20

1

Actor_System_Priority

2

Actor_System

6

Actor_Key

2

Actor_Port_Priority

2

Actor_Port

2

Actor_State

1

保留

3

TLV Partner

TLV_type = Partner 信息

1

Partner_Information_Length = 20

1

Partner_System_Priority

2

Partner_System

6

Partner_Key

2

Partner_Port_Priority

2

Partner_Port

2

Partner_State

1

保留

3

TLV Collector

TLV_type = Collector 信息

1

Collector_Information_Length = 16

1

Collector_Max_Delay

2

保留

12

TLV Terminator

TLV_type = Terminator

1

Terminator_Length = 0

1

保留

50

Terminator 信息使用长度值为 0 (0x00)。

注意--使用 Terminator_Length 为 0 是故意的。

在 TLV 编码方案中,通常的做法是终止编码的类型和长度都为 0。

Actor_State 和 Partner_State 编码为单个字节内的单独位,如下所示

7

6

5

4

3

2

1

0

EXPR

DFLT

DIST

CLCT

SYNC

AGGR

TMO

ACT

ACT

位 0。关于此链路的活动控制值。

TMO

位 1。关于此链路的超时控制值。

AGGR

位 2。关于系统从聚合的角度来看待此链路的方式。

SYNC

位 3。关于系统从同步的角度来看待此链路的方式。

CLCT

位 4。关于收集传入帧。

DIST

位 5。关于分发传出帧。

DFLT

位 6。关于系统使用的相反系统信息。

EXPR

位 7。关于系统的过期状态。

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

属性

描述

版本

LACP 版本。此参数必须设置为 LACP_VERSION_NUMBER(即 1)。

actor_system_priority

分配给此系统的优先级。

actor_system

Actor 的系统 ID,编码为 MAC 地址。

actor_key

Actor 分配给端口的运行密钥值。

actor_port_priority

分配给此端口的优先级。

actor_port

Actor 分配给端口的端口号。

actor_state_activity

关于此链路的活动控制值。

LACP_STATE_ACTIVE(1)

LACP_STATE_PASSIVE(0)

actor_state_timeout

关于此链路的超时控制值。

LACP_STATE_SHORT_TIMEOUT(1)

LACP_STATE_LONG_TIMEOUT(0)

actor_state_aggregation

关于系统从聚合的角度来看待此链路的方式。

LACP_STATE_AGGREGATEABLE(1)

LACP_STATE_INDIVIDUAL(0)

actor_state_synchronization

关于系统从同步的角度来看待此链路的方式。

LACP_STATE_IN_SYNC(1)

LACP_STATE_OUT_OF_SYNC(0)

actor_state_collecting

关于收集传入帧。

LACP_STATE_COLLECTING_ENABLED(1)

LACP_STATE_COLLECTING_DISABLED(0)

actor_state_distributing

关于分发传出帧。

LACP_STATE_DISTRIBUTING_ENABLED(1)

LACP_STATE_DISTRIBUTING_DISABLED(0)

actor_state_defaulted

关于 Actor 使用的 Partner 信息。

LACP_STATE_DEFAULTED_PARTNER(1)

LACP_STATE_OPERATIONAL_PARTNER(0)

actor_state_expired

关于 Actor 的状态。

LACP_STATE_EXPIRED(1)

LACP_STATE_NOT_EXPIRED(0)

partner_system_priority

分配给 Partner 系统的优先级。

partner_system

Partner 的系统 ID,编码为 MAC 地址。

partner_key

Partner 分配给端口的运行密钥值。

partner_port_priority

Partner 分配给此端口的优先级。

partner_port

Partner 分配给端口的端口号。

partner_state_activity

请参阅 actor_state_activity

partner_state_timeout

请参阅 actor_state_timeout

partner_state_aggregation

请参阅 actor_state_aggregation

partner_state_synchronization

请参阅 actor_state_synchronization

partner_state_collecting

请参阅 actor_state_collecting

partner_state_distributing

请参阅 actor_state_distributing

partner_state_defaulted

请参阅 actor_state_defaulted

partner_state_expired

请参阅 actor_state_expired

collector_max_delay

帧收集器可能延迟的最大时间。

classmethod parser(buf)

解码协议头。

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

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

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

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

  • 数据包的其余部分。

serialize(payload, prev)

编码协议头。

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

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

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

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

class os_ken.lib.packet.slow.slow

Slow 协议头部解码器类。此类只有 parser 方法。

http://standards.ieee.org/getieee802/download/802.3-2012_section5.pdf

Slow 协议子类型

子类型值

协议名称

0

未使用 - 非法值

1

链路聚合控制协议(LACP)

2

链路聚合 - 标记协议

3

操作、管理和维护(OAM)

4 - 9

保留供将来使用

10

组织特定 Slow 协议(OSSP)

11 - 255

未使用 - 非法值

classmethod parser(buf)

解码协议头。

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

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

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

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

  • 数据包的其余部分。