1.行动集
- 为了在多个表中完成流水线处理,在OpenFlow1.1中新添加了行动集
- 行动集通过在交换机的每个数据包中创建,但交换机初次接收到数据包时为空,在检查多个流表时,通过指令添加行动集。
- 由行动确定指令集的优先顺序。
2.指令
- 在OpenFlow1.1中新添加了指令,也是为了在多个表内进行流水线管理。
- 每个流表项中都有指令,可通过Write-Action这一指令将行动添加到行动集中。
- 能够清除当前的行动集,或立即执行特定的行动。
- 通过Goto-Table跳转到下一个流表的检查,若无Goto-Table指令,执行此前的行动集并退出。
- 与OpenFlow1.0相同,使用Flow-Mod消息将指令注册到流表中。
3.行动列表
- 行动列表由OpenFlow1.1开始定义,但OpenFlow1.0中便存在相同含义的说法。
- 在流水线处理过程中,通过Apply-Action指令进行特定处理或使用Packet-Out消息从控制器发送的通过特殊处理的数据包使用行动列表。
- 与行动集无相互定义关系。
4.组表
- 组表是由OpenFlow1.1新定义,提供了组播、广播,以数据包为单位的轮询ECMP和LAG、高速切换的功能。
- 组表可定义行动,在指定组ID后执行。
- 一个组内能够带有多个组数据包,组数据包由行动集构成。
- 控制器使用Group Table Modification消息注册组表
- 组表是对组的行动集进行管理的项目,与流表无相互定义关系。
5.计量表
- Meter是在OpenFlow1.3中新定义的指令,注册流表项时,使用Meter ID 指定计量带。
- 一个计量中可以拥有多个计量带。
- 通过控制器使用Meter Modification消息注册计量表。
- 计量表是对计量带进行管理的项目,与流表无相互定义。
6.行动
- OpenFlow1.0中的Forward在OpenFlow1.0中变更为Output,从OpenFlow1.2开始,将Output的输出目的地变为OpenFlow端口。
- OpenFlow1.0的Enqueue在OpenFlow1.1中变更为Set-Queue,且Enqueue是通过Queue发送数据包的行动,Set-Queue在数据包中设置Queue ID ,发送数据包要用Output。
- 从OpenFlow1.0开始如果不指定行动,将数据包丢弃。
- 从OpenFlow1.1开始添加Group行动、Push-Tag/Pop-Tag行动。
- 从OpenFlow1.1开始将Modify-Field变更为Set-Field。
- 从OpenFlow1.1开始添加Change-TTL行动。
参考图解OpenFlow