SDN

了解 SDN 控制平面、数据平面、接口以及流表基本概念,可能在选择题中考察一题。

软件定义网络 (SDN) 是一种新颖的 网络架构,它将 网络的控制功能传统的网络硬件 中解耦出来,并允许通过 软件应用程序 来进行 集中式管理SDN 提供了 更高的网络灵活性,使得 网络配置优化管理调试 都变得更加简单。

SDN 的架构如下图所示:

SDN 网络应用
SDN 控制平面
通用硬件
通用硬件
通用硬件
通用硬件
通用硬件
北向接口
南向接口
SDN
数据平面

控制平面和数据平面

SDN 中,主要有两个关键的组件:数据平面 (Data Plane) 和 控制平面 (Control Plane)。

  1. 数据平面 (Data Plane):
    • 这是网络中负责处理数据包的部分,通常是在交换机、路由器等设备上。
    • 它基于控制平面提供的策略和规则,进行数据包的转发、丢弃或修改。
    • 数据平面通常需要高效地执行操作,因为它直接影响网络的性能。
  2. 控制平面 (Control Plane):
    • 控制平面负责整个网络的决策和策略,确定如何处理在网络中流动的数据包。
    • 在传统的网络设备中,控制平面直接嵌入在设备上。但在 SDN 中,这个控制平面被抽象为一个集中的软件控制器。
    • 控制器与网络设备之间的交互是通过某些标准化的接口进行的,这样可以确保多厂商设备的互操作性。

接口

SDN 架构中的接口主要分为 南向接口北向接口

  1. 南向接口 (Southbound Interface):
    • 这是 SDN 控制器与网络设备之间的接口。
    • 它允许控制器下发流表到数据平面设备,并从设备获取信息。
    • OpenFlow 是最常用的南向接口协议,但还有其他协议也被使用。
  2. 北向接口 (Northbound Interface):
    • 这是 SDN 控制器与网络应用或上层服务之间的接口。
    • 通过这个接口,应用程序可以请求网络服务或查询网络状态,并指导控制器进行相应的网络配置。
    • 这个接口通常没有严格的标准,但通常提供 RESTful API 供开发者使用。

除此之外,还有 东向接口 (East/West Interface),它用于 SDN 控制器 之间的通信,特别是在 多控制器的环境 中。

流表

流表 基本上是一个 数据库查找表,用于决定如何处理经过 交换机 的数据包。

OpenFlow 流表 中,可能有多个流表,并且数据包可能按照顺序经过这些流表。每个流表可能基于不同的 规则策略 来处理数据包,这为 网络设计 提供了高度的灵活性。

流表 的内容通常由 SDN 控制器 动态管理和更新,这是通过 南向接口(如 OpenFlow 协议)实现的。当 网络的状态策略 发生变化时,控制器 可以修改 流表条目 以适应新的需求。

流表中主要包含如下部分:

  1. 匹配字段 (Match Fields):
    • 这些字段描述了特定的数据包特征。例如,它可以匹配数据包的 源地址目的地址端口号VLAN 标签 等。
    • 当一个数据包到达交换机时,它的头部字段会与流表中的匹配字段进行比较,以决定哪个条目适用于该数据包。
  2. 优先级 (Priority):
    • 当多个流表条目都能匹配到一个数据包时,优先级最高 的条目会被选中。
    • 优先级 使得网络管理员可以设计更为精确和特定的流规则。
  3. 计数器 (Counters):
    • 这些是用于收集 统计信息 的,如匹配到某个流条目的 数据包数量
    • 计数器 有助于网络监控和分析。
  4. 指令和动作 (Instructions & Actions):
    • 当一个数据包与流表条目匹配时,会执行相应的 指令和动作
    • 常见的动作包括:转发数据包 到特定的端口、丢弃数据包修改数据包头部信息发送数据包到控制器 等。