【802.3ad LAG学习笔记】select logic,选择逻辑
Select logic的主要功能是什么?
- 使用端口的LAGID(这点是什么意思呢)为端口选择一个合适的Aggregator(注意:不同的Aggregator不会有相同的LAG ID)
- 一旦LAGID发生变化,端口会马上从对应的Aggregator上detach,即使之后又选择了同样的Aggregator,也必须这样,不这样做的话就很有可能将报文发送到错误的地方
aggregation表示什么?
aggregation有两个意思
- 为端口选定一个合适的aggregator
- 将端口attach到该aggregator上
端口如何确认是否属于同一个LAG(聚合组)
当端口的下面几个属性相同时,他们就属于同一个聚合组
- Actor System ID
- Actor key
- Partner System ID
- Partner key
协议规定的选择逻辑正确的行为是怎样的
- 系统必须支持至少一个Aggregator
- 每个端口必须被分配一个operational key,如果多个端口需要支持被聚合到一个Aggregator,那么这些端口需要被分配相同的operational key,如果一个端口不支持与别的端口聚合到一起,那么这个端口需要被分配一个unique的operational key
- 每个Aggregator必须被分配一个operational key
- 系统中每个Aggregator都必须被分配一个operational key
- 端口只能选择operational key 相同的Aggregator attach
- 如果端口属于同一个聚合组(如何判断端口是否属于同一个聚合组,请参见上面的的描述)
- 设备上直连的(环回的)两个端口不能选择到同一个Aggregator
- 一旦一个端口选定了相应的Aggregator,那么该端口的selected变量就要被设置为selected或者standby
- 如果是selected状态,那么mux状态机就开始将这个端口attach到Aggregator
- 如果是standby状态,那么mux状态机就会将这个端口保持在waiting状态(waiting状态表示该端口已经ready,一旦状态变化为selected,就可以马上attach到Aggregator)
- selection logic负责计算READY变量的值(根据一系列ready_N变量的值)
- 当需要重新选择Aggregator的时候,总是先将selected的值修改为unselected,然后再开始重新选择的流程
- 只有当端口状态变为selected,并且已经成功attach到一个Aggregator后才能够将该端口给mac client使用