章节摘要:这是全教程的主刀章节。从 8 字节的 OpenFlow 报文头开始,逐类拆解控制器与交换机之间的全部消息;再深入流表条目的字段布局、指令与动作的执行语义,最后以一条真实的会话时间线把所有碎片串起来。读完你能拿着 Wireshark 的任何一帧 OpenFlow 报文,说出每个字段的含义与来龙去脉。
阅读完本章,你应当能够:
一句金句:看懂了 8 字节报文头,OpenFlow 的任何消息你都有一半在手——剩下的一半去消息体里按字段找。
通道、版本、字节序,以及那 8 个字节的一字不差的解剖。
三大类消息的家族图谱,重点拆 Packet-In / Flow-Mod / Packet-Out 三员干将。
流条目六要素逐个过,多级流水线的匹配算法。
APPLY 与 WRITE 的区别、GOTO_TABLE 的跳转规则、动作集的结算时机。
从 1.0 的 12 元组到 1.3 的 OXM,匹配结构怎么变灵活。
从 TCP 握手到 h1 ping h2 全程,逐帧标注。
2.1 与 2.2 是"骨架与词汇",2.3 与 2.4 是"语法"(规则怎么写怎么执行),2.5 补版本坐标,2.6 用一条真实时间线把前五节全部召回。
2.1 报文头 ──► 2.2 消息家族 ──► 2.6 会话实录(综合演练) │ ▼ 2.3 流表 ──► 2.4 指令动作 ▲ 2.5 版本演化(贯穿参照)
本章是全册的技术核心,检验标准也最具体:能否默写 8 字节头的四字段与字节序,并手工解析一段十六进制;能否列出三大消息类各举三例并说明 Packet-In 的 reason 两种取值的语义差别;能否写出流条目六要素,并解释 OXM TLV 的头部结构(类、字段、掩码位、长度);能否说清 APPLY_ACTIONS 与 WRITE_ACTIONS 在后续表匹配视图上的差别;能否描述 Hello 版本位图与协商失败时的 Error 类型;能否独立用 tshark 复盘一次完整会话并指出健康时间线的形状。
本章内部的依赖关系是严格线性的:2.1 的报文头是所有消息的公共前缀;2.2 在其上展开消息家族;2.3 与 2.4 分别深入"写什么"(流条目)与"怎么执行"(指令动作),这两节互为表里,先读 2.3 再读 2.4 会顺很多;2.5 把版本变量引入,解释跨版本差异;2.6 是全章的综合验收。向前依赖第 1 章的实验台与 1.3 节的"概念对报文"方法论;向后为第 3 章两侧角色的内部结构提供消息层面的词汇表。