Appearance
SDN 软件定义网络
考情分析
SDN 是近年新增考点,出现频率不高,偶尔在选择题中考查基本概念。重点是理解控制平面与数据平面分离的思想、SDN 的三层架构、OpenFlow 的基本作用。不涉及复杂计算。
考频:★☆☆
传统网络的问题
在传统网络中,每台路由器/交换机既负责转发数据(数据平面),又负责计算路由(控制平面)。两个功能紧密耦合在同一台设备中。
这带来几个问题:
- 每台设备独立运行路由协议,网络行为是所有设备"分布式决策"的结果,难以全局优化
- 不同厂商的设备使用私有配置方式,网络管理复杂
- 想要部署新的网络策略,需要逐台设备配置,效率低下
SDN 的核心思想
SDN(Software Defined Networking)的核心思想就一句话:把控制平面从网络设备中分离出来,集中到一个独立的控制器上。
网络设备(交换机)只保留数据平面的转发功能,变成"傻瓜"转发设备。控制器拥有全网视图,统一计算转发规则,再下发给各交换机执行。
三层架构
┌─────────────────────────────────────┐
│ 应用层(Application) │
│ 网络管理应用、流量工程、安全策略 │
├──────────── 北向接口(API)───────────┤
│ 控制层(Control) │
│ SDN 控制器(全网视图) │
├──────────── 南向接口(OpenFlow)──────┤
│ 数据层(Data / Infrastructure)│
│ 交换机(只做转发,不做路由决策) │
└─────────────────────────────────────┘三层各自的职责:
| 层次 | 组成 | 职责 |
|---|---|---|
| 应用层 | 各种网络应用程序 | 通过北向接口向控制器提出网络需求(如流量调度、访问控制) |
| 控制层 | SDN 控制器 | 维护全网拓扑和状态信息,计算转发规则,通过南向接口下发给交换机 |
| 数据层 | SDN 交换机 | 根据控制器下发的流表(flow table)做分组转发,不参与路由计算 |
两个接口:
- 北向接口:控制器向上层应用提供的 API,应用通过它编程控制网络行为
- 南向接口:控制器与交换机之间的通信协议,最典型的是 OpenFlow
OpenFlow 协议
OpenFlow 是 SDN 南向接口的代表性协议。它定义了控制器与交换机之间的通信规范。
OpenFlow 交换机内部维护一张或多张流表(flow table)。每条流表项包含:
- 匹配字段:用于匹配到来的分组(如源/目的 IP、源/目的端口、协议类型等)
- 动作:匹配成功后执行的操作(转发到某端口、丢弃、修改字段等)
- 计数器:统计匹配到的分组数量
分组到达交换机后,依次查流表进行匹配。匹配成功则执行对应动作;如果所有流表都不匹配,交换机将分组上报给控制器,由控制器决定处理方式并可能下发新的流表项。
与传统网络的对比
| 对比项 | 传统网络 | SDN |
|---|---|---|
| 控制平面位置 | 分布在每台设备中 | 集中在控制器 |
| 转发决策 | 每台设备独立计算 | 控制器统一计算后下发 |
| 网络视图 | 每台设备只有局部视图 | 控制器拥有全局视图 |
| 可编程性 | 低,依赖厂商实现 | 高,通过北向 API 编程 |
| 设备角色 | 既转发又计算路由 | 只负责转发 |
易错点
1. SDN 控制器不直接转发数据
控制器只负责计算转发规则并下发给交换机,实际的数据转发仍然由交换机完成。控制器处于控制平面,不在数据转发路径上。
2. OpenFlow 是南向接口协议,不是北向接口
OpenFlow 工作在控制器和交换机之间(南向),不是控制器和应用之间(北向)。北向接口通常是 RESTful API 等。
3. SDN 的"软件定义"不是指用软件替代硬件
"软件定义"指的是通过软件(控制器程序)来定义网络行为和转发策略,硬件交换机仍然存在并负责高速转发。
高频考点清单
- SDN 的核心思想:控制平面与数据平面分离
- 三层架构:应用层、控制层、数据层
- 北向接口(控制器↔应用)vs 南向接口(控制器↔交换机)
- OpenFlow 是南向接口的代表协议
- 流表的组成:匹配字段、动作、计数器
- SDN 控制器拥有全网视图,交换机只做转发
- 传统网络 vs SDN 的核心区别:分布式控制 vs 集中式控制