Day 1 学习笔记
如果你学过计算机网络,那你一定听过 SDN(Software-Defined Networking,软件定义网络) 这个词。SDN 到底是什么?它解决了什么问题?它和传统网络有什么不同?
这是一个 SDN 新手入门笔记,我将从初学者的角度,尽量用通俗的方式把这些问题讲清楚。
一、为什么需要 SDN
要理解 SDN,首先要理解传统网络遇到了什么问题。
1.1 传统网络:控制与转发紧耦合
在传统网络中,每台网络设备(路由器、交换机)都是一个独立的黑盒,同时负责两件事:
- 控制平面:运行路由协议(如 OSPF、BGP),计算转发路径,维护路由表
- 数据平面:根据路由表,实际转发数据包
这两个平面紧密耦合在一台设备内部。每台设备各自为政,各自运行路由协议,各自做转发决策。
1.2 这种设计带来了什么问题
| 问题 | 具体表现 |
|---|---|
| 配置复杂 | 每台设备要逐台手动配置 CLI 命令,无法批量管理 |
| 扩展困难 | 新增功能需要更换硬件,无法快速迭代 |
| 缺乏全局视角 | 每台设备只看到局部拓扑,无法做全局最优路由 |
| 厂商锁定 | 不同厂商的设备命令不通用,迁移成本极高 |
| 响应缓慢 | 网络策略变更需要逐个设备修改,耗时数周甚至数月 |
一句话总结:传统网络就像一个没有指挥的乐队,每个乐手各吹各的调。
1.3 业务需求在倒逼变革
随着云计算、大数据、移动互联网的爆发,网络面临前所未有的压力:
- 数据中心需要动态调整流量路径
- 租户需要按需获取网络资源
- 安全策略需要快速部署和更新
传统网络的僵化架构已经无法满足这些需求。正是在这样的背景下,SDN 应运而生。
二、SDN 的核心思想
SDN 的核心思想就一句话:
把网络设备的控制权抽出来,集中到一个地方统一管理,数据设备只负责埋头转发。
打个比方:
- 传统网络 = 每个路口都有一个独立的交警,各自指挥交通
- SDN = 一个中央交通指挥中心 + 遍布路口的信号灯
中央指挥中心掌握全局路况,可以动态调整信号灯,实现全局最优的流量调度。
三、SDN 的三层架构
SDN 采用了清晰的三层架构,这是理解 SDN 最关键的知识点:
┌─────────────────────────────────────────────────┐
│ 应用层 (Application Layer) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 流量工程 │ │ 安全防护 │ │ 负载均衡 │ ... │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └───────────┬┼───────────┘ │
│ ││ 北向接口 (Northbound API) │
├────────────────────┼────────────────────────────┤
│ 控制层 (Control Layer) │
│ ┌──────────────────────────────────────┐ │
│ │ SDN 控制器 (Controller) │ │
│ │ (如 OpenDaylight, ONOS, Ryu...) │ │
│ └────────────────┬─────────────────────┘ │
│ │ 南向接口 (Southbound API) │
├───────────────────┼────────────────────────────┤
│ 数据层 (Data Layer) │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ 交换机│ │ 路由器│ │ 防火墙│ │ 中间盒│ ... │
│ └──────┘ └──────┘ └──────┘ └──────┘ │
└─────────────────────────────────────────────────┘
3.1 数据层
也叫基础设施层,由各种网络设备组成。这些设备不再需要运行复杂的路由协议,只需根据控制器下发的**流表(Flow Table)**来转发数据包。可以说是"无脑转发",但效率极高。
3.2 控制层
这是 SDN 的大脑。SDN 控制器是整个网络的核心,它:
- 拥有网络的全局视图(全网拓扑、链路状态、流量情况)
- 负责计算转发路径、下发流表到数据层设备
- 通过南向接口与数据层通信
- 通过北向接口向上层应用开放能力
常见的 SDN 控制器有:OpenDaylight、ONOS、Ryu、Floodlight 等。
3.3 应用层
各种网络应用运行在这一层,通过北向接口调用控制器的能力,实现:
- 流量工程:动态调整流量路径,避免拥塞
- 网络安全:快速部署访问控制策略,检测异常流量
- 负载均衡:根据实时流量分发请求
- 网络虚拟化:为多租户创建隔离的虚拟网络
应用层让网络变得像软件一样可编程——想加什么功能,写个应用就行了。
3.4 两个关键接口
| 接口 | 方向 | 作用 | 代表协议 |
|---|---|---|---|
| 南向接口 | 控制层 → 数据层 | 控制器向交换机下发流表 | OpenFlow(最主流) |
| 北向接口 | 应用层 → 控制层 | 应用调用控制器能力 | REST API(常见) |
| 东西向接口 | 控制器之间 | 多控制器协同 | 自定义协议 |
四、SDN 的三个核心特征
控制与转发分离
这是 SDN 最根本的特征。控制逻辑从设备中抽离出来,集中到控制器中执行,设备只做简单的转发。
集中控制
控制器拥有全网视角,可以做出全局最优的决策。相比于传统网络每台设备各自为政,集中控制可以:
- 避免路由环路
- 实现全局负载均衡
- 快速响应网络变化
可编程性
网络行为可以通过软件编程来定义和修改。想调整路由策略?写一行代码就行,不用再逐台登录设备敲命令。
五、SDN 的发展脉络
| 时代 | 特点 |
|---|---|
| 传统网络 | 控制与转发紧耦合,每台设备独立决策,手动配置 |
| SDN (OpenFlow) | 控制与转发分离,集中控制,OpenFlow 南向协议 |
| P4 可编程数据面 | 不仅控制面可编程,数据面也可编程,协议无关 |
SDN 是从传统网络到可编程网络的关键一步。而下一代技术 P4 则更进一步,让数据平面本身也变得可编程(这将是第二周学习的内容)。
六、用三句话概括 SDN
- 传统网络:每个路口各有一个交警各自指挥,互不通气,容易堵车。
- SDN:撤掉所有路口的交警,换成一个中央交通指挥中心 + 信号灯。指挥中心看到全局路况,统一调度。
- 好处:堵车时能快速调整信号灯配时,想改交通规则不用换信号灯硬件,写个软件就行。
七、今日学习总结
| 项目 | 内容 |
|---|---|
| 阅读 | 《深度解析SDN》第1~2章 |
| 精读综述 | A Survey of SDN: Past, Present, and Future(Abstract + Section 1-2) |
| 快读综述 | A Survey on Software-Defined Networking(Abstract + Conclusion) |
| 核心收获 | 理解 SDN 诞生的背景、三层架构、控制与转发分离的思想 |
| 待深入 | 明天继续学习 SDN 各层职责的细节和南向/北向接口 |
参考资料
- 《深度解析SDN:利益、战略、技术、实践》—— 第1~2章
- Kreutz, D. et al. “A Survey of Software-Defined Networking: Past, Present, and Future of Programmable Networks.” IEEE Communications Surveys & Tutorials, 2015.
- Akyildiz, I. F. et al. “A Survey on Software-Defined Networking.” IEEE Network, 2014.
- SDNLAB SDN 指南
本文是「SDN 入门学习计划」Day 1 的学习笔记。
学习路线:Day 1 SDN 是什么 → Day 2 SDN 架构深入 → Day 3 OpenFlow 协议详解 → Day 4 Mininet 实验 → …