章节摘要:基础流表只会"匹配—转发",真实的网络还要组播、选路、限速、按业务分级服务。OpenFlow 交给控制器四件更重的武器:组表(一跳多路径)、Meter(限速整形)、端口控制与队列(QoS 分级),以及一套把这一切适配到具体硬件的扩展机制。本章继续逐字段解剖这些高级结构的消息体与执行语义。
阅读完本章,你应当能够:
一句金句:流表决定"包往哪去",组表决定"包有几条命",Meter 决定"包能跑多快"——三张表合起来才是完整的转发策略。
四种组类型的字段结构与执行语义,选路、组播、故障切换都靠它。
Meter 与 band 的两级结构,令牌桶语义与双速率配置。
Port-Mod、Port-Status、端口属性的完整生命周期管理。
SET_QUEUE 动作、队列属性、端口级调度器如何配合。
Table-Features 协商、Experimenter 消息与厂商私有扩展的适配之道。
4.1 与 4.2 是两张新的"表",4.3 与 4.4 是端口维度的控制,4.5 是把前四者落到具体硬件的通道——它们共同扩展了第 2 章的流水线语义。
2章流水线 ──► 4.1 组表(多路径)──► 4.4 队列(分级) └───► 4.2 Meter(限速)──► 4.3 端口(物理管理) └──► 4.5 扩展机制(硬件适配)
本章四张表加一条扩展通道,可检验点如下:能否写出组条目的四字段结构,并分别说明 all、select、indirect、fast failover 的执行语义与适用负载;能否解释 select 组的选桶由实现决定意味着什么、权重字段如何参与;能否描述 Meter 的两级结构与令牌桶参数(rate、burst)对稳态与瞬时行为的影响,并说出 KBPS 与 PKTPS 的区别;能否列举端口 config 三个实用标志的用途及 NO_PACKET_IN 的作用面与代价;能否说清队列三层分工中"配置、映射、调度"各自由谁负责,以及 min_rate 是权重而非硬预留的原因;能否复述三条扩展缝的成本排序并给出"不该扩展"的三种替代。
本章内部,4.1 与 4.2 是"表族"的两员(组表管复制分发、Meter 管计量执法),4.3 与 4.4 落到端口与出口资源,四者共同构成流水线的完整调度能力;4.5 是当以上都不够用时的逃生通道。前置是第 2 章的指令动作语义(GOTO、METER、SET_QUEUE 都在那里定义),后续第 5 章的负载均衡与 QoS 场景将直接调用本章的全部零件。
另附一条研读建议:本章五节里,4.1 与 4.2 的动手实验最值得反复跑——组表的 failover 切换与 Meter 的稳态曲线都是"看一遍描述不如跑一次实验"的典型,且两者的坑(watch_port 语义、单位错配)都藏在输出的细节里。4.5 可以先通读记住结论(成本排序与三条替代),等到真有扩展需求时再回来细读。