Skip to content

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 集中式控制