CS 168 · LECTURE 21 · 2026-11-12 · 数据中心

软件定义网络:控制与转发分离

SDN 把分布式协议的低层机制抽成集中逻辑控制:应用表达策略,控制器计算规则,交换机执行 match–action。

版本快照:Fall 2026 官方课表与在线教材,核对日期 2026-09-02;官网仍标注 under construction,日期与政策可能变化。

  1. 互联网地基
  2. 路由
  3. 传输
  4. 应用与端到端
  5. 数据中心
  6. 群体通信
  7. 无线与移动

本章核心问题

“逻辑集中”怎样简化策略,又怎样避免控制器成为新的单点故障与性能瓶颈?

1 · match–action 数据平面

交换机按 header/metadata 匹配表项,执行 forward、drop、modify、encapsulate、meter 或 goto next table。优先级解决范围重叠,counter 提供观测。

OpenFlow 是一种 southbound 接口,不等于 SDN 全部。SDN 的核心是控制与转发分离及可编程抽象,设备接口可以有多种。

2 · 控制器的三层职责

底层 device driver 与设备通信;network operating system 维护拓扑、主机、规则和事件;控制应用实现 routing、ACL、traffic engineering 等策略。抽象让应用不用逐台处理厂商细节。

策略冲突仍需组合语义:routing 允许的路径可能被 ACL 禁止,负载均衡改写可能影响 accounting。规则生成必须验证优先级与覆盖关系。

3 · 一致更新

一次路径变更若逐台随意写规则,包可能在新旧配置混合期间环路或黑洞。two-phase/versioned update 可先安装新规则,再切换入口标记,最后删除旧规则,使每个包完整经历一个版本。

交换机 TCAM 有限、写入慢,控制器不能把每个短流都当作独立规则。聚合与默认规则是可扩展性的关键。

4 · 逻辑集中、物理分布

生产控制器通常多副本部署,必须处理 leader、状态同步、分区与设备连接归属。全局视图可能暂时不一致;应用需明确哪些操作要求强一致,哪些可容忍旧信息。

控制平面失联时,交换机应继续使用已装规则,并有超时/本地保护机制。把计算集中不等于把故障命运集中到一台机器。

纠错:最容易带走的错误模型

闭卷推演

为两租户隔离 + 最短路写三张 match–action 规则表,随后设计一次无黑洞的路径迁移顺序。

检查:为什么直接逐台替换路径规则可能不安全?

机制工作台:before → event → after

Before / local state

controller 收到 topology/policy event,计算 rule 并写入 switch table

Event / after / output

controller 收到 topology/policy event,计算 rule 并写入 switch table;packet arrival 只匹配 rule/action。

检查:判断一个实现分支是否必要,最有力的问题是什么?

检查:若把这一机制移到完全不同的网络位置,首先应重新确认什么?

Explain It Yourself

手推 table-miss → Packet-In → Flow-Mod → subsequent hit。

自检方法

答案必须出现 packet/message、local state/table、触发 event、after state 与 output;只给定义不算完成。

一手资料

正文是 CourseStack 的中文解释与重新绘制的教学例子;官方页面负责课程原始定义,历史仓库只提供你的实现证据。