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):
    • 当一个数据包与流表条目匹配时,会执行相应的指令和动作。
    • 常见的动作包括:转发数据包到特定的端口、丢弃数据包、修改数据包头部信息、发送数据包到控制器等。