💡低优先级
了解 SDN 控制平面、数据平面、接口以及流表基本概念,可能在选择题中考察一题。
软件定义网络 (SDN) 是一种新颖的 网络架构,它将 网络的控制功能 从 传统的网络硬件 中解耦出来,并允许通过 软件应用程序 来进行 集中式管理。SDN 提供了 更高的网络灵活性,使得 网络配置、优化、管理、调试 都变得更加简单。
SDN 的架构如下图所示:

控制平面和数据平面
在 SDN 中,主要有两个关键的组件:数据平面 (Data Plane) 和 控制平面 (Control Plane)。
-
数据平面 (Data Plane):
- 这是网络中负责处理数据包的部分,通常是在交换机、路由器等设备上。
- 它基于控制平面提供的策略和规则,进行数据包的转发、丢弃或修改。
- 数据平面通常需要高效地执行操作,因为它直接影响网络的性能。
-
控制平面 (Control Plane):
- 控制平面负责整个网络的决策和策略,确定如何处理在网络中流动的数据包。
- 在传统的网络设备中,控制平面直接嵌入在设备上。但在 SDN 中,这个控制平面被抽象为一个集中的软件控制器。
- 控制器与网络设备之间的交互是通过某些标准化的接口进行的,这样可以确保多厂商设备的互操作性。
数据层面中有 有 负载均衡 和 防火墙 两种例子。
接口
SDN 架构中的接口主要分为 南向接口 和 北向接口。
- 南向接口 (Southbound Interface):
- 这是 SDN 控制器与网络设备之间的接口。
- 它允许控制器下发流表到数据平面设备,并从设备获取信息。
- OpenFlow 是最常用的南向接口协议,但还有其他协议也被使用。
- 北向接口 (Northbound Interface):
- 这是 SDN 控制器与网络应用或上层服务之间的接口。
- 通过这个接口,应用程序可以请求网络服务或查询网络状态,并指导控制器进行相应的网络配置。
- 这个接口通常没有严格的标准,但通常提供 RESTful API 供开发者使用。
除此之外,还有 东向接口 (East/West Interface),它用于 SDN 控制器 之间的通信,特别是在 多控制器的环境 中。

流表

在 控制平面 和 数据平面 之间的接口 叫做 OpenFlow 协议 也成为 OpenFlow 流表
流表 基本上是一个 数据库 或 查找表,用于决定如何处理经过 交换机 的数据包。
在 OpenFlow 流表 中,可能有多个流表,并且数据包可能按照顺序经过这些流表。每个流表可能基于不同的 规则、策略 来处理数据包,这为 网络设计 提供了高度的灵活性。
流表 的内容通常由 SDN 控制器 动态管理和更新,这是通过 南向接口(如 OpenFlow 协议)实现的。当 网络的状态 或 策略 发生变化时,控制器 可以修改 流表条目 以适应新的需求。
流表中主要包含如下部分:
-
匹配字段 (Match Fields):
-
这些字段描述了特定的数据包特征。它可以匹配数据包的 源地址、目的地址、端口号、VLAN 标签 等,能对不同层次(链路、网络、传输层)首部中字段匹配。
-
当一个数据包到达交换机时,它的头部字段会与流表中的匹配字段进行比较,以决定哪个条目适用于该数据包。
-
-
优先级 (Priority):
-
当多个流表条目都能匹配到一个数据包时,优先级最高 的条目会被选中。
-
优先级 使得网络管理员可以设计更为精确和特定的流规则。
-
-
计数器 (Counters):
-
这些是用于收集 统计信息 的,如匹配到某个流条目的 数据包数量。
-
计数器 有助于网络监控和分析。
-
-
指令和动作 (Instructions & Actions):
-
当一个数据包与流表条目匹配时,会执行相应的 指令和动作。
-
常见的动作包括:转发数据包 到特定的端口、丢弃数据包、修改数据包头部信息、发送数据包到控制器 等。
-

三种 转发例子 导图中有
对比
| 匹配 | 动作 | |
|---|---|---|
| 传统的路由器 | 查找转发表中网络前缀,进行最长前缀匹配 | 分组从指明接口转发 |
| OpenFlow协议 | 对 链路、网络、传输层 首部中字段匹配 | 从不同接口转发 |
后者设备不能叫做 路由器,而是分组交换机 或者 OpenFlow 交换机,这种交换机不局限在网络层中工作了