注:本文基于模型知识整理,建议结合权威教材与 RFC 原文核对细节。
一句话定义
SDN(Software Defined Networking,软件定义网络)把网络设备的控制面(算路与决策)与数据面(查表转发)解耦,用逻辑集中的控制器经开放协议(如 OpenFlow)下发流表,使全网行为变成可编程的对象——云厂商的 VPC 正是这一思想最大规模的落地。
为什么重要
传统路由器、交换机是软硬一体的盒子:控制面与数据面封在同一设备里,配置靠各厂商私有命令行,全网协同只能依赖 kp-014 那类分布式路由协议慢慢收敛,跨域策略(如「租户 A 不得访问租户 B」)难以全局表达。数据中心动辄上万台设备、租户隔离需求层出不穷,逐台配置不可维护。SDN 用「集中控制 + 可编程」换来全局视图与自动化,是理解云网络(VPC、安全组、负载均衡)设计动机的钥匙。
前置知识
建议先读 kp-014《RIP/OSPF》,理解分布式算路、链路状态泛洪与收敛的含义及其局限;域间策略的分布式表达见 kp-015《BGP》;大规模私有地址复用与隔离的背景见 kp-016《NAT 与 IPv6》。
核心概念
SDN 四要素:转发与控制分离(盒子只管查表转发,算路上收到控制器);逻辑集中控制(控制器软件掌握全网拓扑);开放可编程接口(南向标准协议下发、北向 API 供应用编程);网络即应用(ACL、负载均衡等变成跑在控制器上的程序)。
OpenFlow 流表的 match-action(匹配—动作)模型:每条流表项是「匹配字段→动作」。匹配字段可含入端口、以太网类型、IP 五元组等;动作可以是转发到某端口、丢弃、改写字段。交换机收到包查流表:命中即执行动作;未命中可把包上送控制器(packet-in),控制器计算后下发新流表项(flow-mod)。
Overlay 与 VXLAN(Virtual eXtensible LAN):在现有 IP 网上再封装一层隧道——VXLAN 把二层以太网帧装进 UDP 报文——实现跨物理机房的大二层网络与租户隔离,物理网只看外层 IP,不必感知租户结构。
VPC(Virtual Private Cloud,虚拟私有云):云上一张软件定义的隔离私网,虚拟交换机、虚拟路由器、安全组(分布式 ACL)都由宿主机上的软件实现;正是这层虚拟化让 kp-016 的私有地址段能在每个租户内重复使用、互不冲突。
图示
传统网络 SDN
+--------+ +--------+ +--------+ +---------------------------------+
| 控制面 | | 控制面 | | 控制面 | | 应用层: ACL/LB/监控 (北向 API) |
+--------+ +--------+ +--------+ +----------------+----------------+
| 数据面 | | 数据面 | | 数据面 | | 控制器: 全网拓扑+算路(逻辑集中) |
+--------+ +--------+ +--------+ +----------------+----------------+
各自为政, 私有 CLI | 南向协议(OpenFlow): 下发流表 |
+------+---------+---------+-----+
v v v
+------+ +------+ +------+
| 数据面| | 数据面| | 数据面|
+------+ +------+ +------+
一条 OpenFlow 流表项示例
match : in_port=1, dst_ip=10.1.2.3, dst_port=443
action: output=2 (未命中则 packet-in 上送控制器)原理与机制
分离之后,转发设备退化成「流表 + 快速转发」,智能集中到控制器:控制器通过链路发现掌握全网拓扑,用全局视图算路,再经南向协议把结果写成流表项下发。于是路由策略第一次可以用一段程序表达——「凡是从租户 A 虚拟机来的流量不得访问租户 B 的 3306 端口」,分布式路由协议表达这类跨域策略极其笨拙,在控制器上只是几行规则。
数据中心的流量结构变化推动了拓扑革命:云计算时代服务器互访的东西向流量远超进出机房的南北向流量,传统「接入—汇聚—核心」三层树形拓扑在上层收窄、横向带宽不足。Spine-Leaf(脊叶)两层架构让每台 Leaf 都连接每台 Spine:任意两台服务器之间等距两跳,等价路径数量等于 Spine 台数,天然适合 ECMP(Equal-Cost Multi-Path,等价多路径)哈希分流,东西向带宽与可扩展性大幅提升。
云网络本质上就是 SDN 思想的产品化:在 VPC 里创建子网、路由表、安全组,实际是控制器在成千上万台宿主机的虚拟交换机上批量下发规则,再用 VXLAN 隧道把散落各物理机的虚拟机织成一张租户专属的网。
实例分析
VPC 内两台云主机:Web 机与数据库机分属两个子网,安全组规则「仅允许 Web 机访问 3306」。你在控制台保存后,云平台把它翻译成虚拟交换机/宿主防火墙上的匹配规则——match:源 IP 为 Web 机私网地址、目的端口 3306;action:丢弃——全网秒级生效,这就是 match-action 与集中控制的直观体现。若两台机分属不同可用区,它们之间通信走 VXLAN 隧道:用 kp-034 的方法在宿主机网卡上抓包,看到的会是 UDP 外壳包着二层帧,租户私网地址藏在内层。
常见误区
- 把 SDN 等同于 OpenFlow:OpenFlow 只是早期南向协议之一,其持久影响是「集中控制 + 可编程」的思想;如今数据中心多用各类演进方案,但模型不变。
- 认为控制器是单点瓶颈:工程上是「逻辑集中、物理分布」,控制器以集群多实例部署,故障域与扩展性都有专门设计。
- 以为 VPC 是一台买来的虚拟路由器:它是分布在海量宿主机上的软件转发面加集中控制面的组合,看不到也摸不到「那台路由器」。
- 混淆两个「南北向」:数据中心语境指进出机房的流量方向,与控制器架构的南向/北向接口是两码事。
自测题
- 控制面与数据面分离后,交换机与控制器各自负责什么?
答案要点: 交换机只保留流表与快速转发,执行 match-action,未匹配的包上送控制器;控制器掌握全网拓扑、负责算路与策略,经南向协议把流表项下发给设备。
- 数据中心为什么从三层树形拓扑转向 Spine-Leaf?
答案要点: 东西向流量占主导后,树形拓扑的上行链路收窄成瓶颈;Spine-Leaf 使任意两台服务器等距两跳、等价路径数等于 Spine 台数,配合 ECMP 分流,东西向带宽与扩展性都更好。
- 用 match-action 写一条「禁止 10.0.0.5 访问 3306 端口」的流表项。
答案要点: match:src_ip=10.0.0.5、dst_port=3306(可加 proto=tcp 更精确);action:drop。其余流量按默认表项或后续条目处理。
- VXLAN 解决了哪些问题?
答案要点: 在 IP 网上再封一层以太网帧实现大二层:跨物理网段或机房维持二层连通、突破 VLAN 4096 的规模上限、按租户标识隔离,且物理网络无需感知租户结构。
- 为什么说 VPC 是 SDN 的落地?
答案要点: VPC 的子网、路由表、安全组都是软件定义的转发与控制组件,由云平台集中控制、按租户隔离批量下发,租户间地址可重复使用且互不干扰——转发与控制分离、逻辑集中、可编程三要素齐备。
延伸阅读
- Open Networking Foundation《OpenFlow Switch Specification》v1.0(即 OpenFlow 白皮书 v1.0)
- James F. Kurose、Keith W. Ross《计算机网络:自顶向下方法》SDN 与控制面章节
- RFC 7348:VXLAN 规范
- 各公有云官方文档中 VPC 产品说明章节