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