文章目录
软件定义网络SDN
- 软件定义网络(SDN)的组成:数据平面和控制平面。
- 数据平面负责分组转发,包括物理交换机和虚拟交换机,提供统一、开放的API OpenFlow。
- 控制平面负责智能设计路由、设置优先级、路由策略参数。控制平面主要包括SDN控制器,通过API控制数据平面的交换机(南向API),同时为网络应用提供开发接口(北向接口)。

SDN数据平面
- SDN数据平面是基础设施层,其功能包括控制支撑功能,支持可编程特性,数据转发功能(按照计算和建立好的转发路径转发,以规则方式决定转发方式)。
- 数据平面协议(解读数据流中的协议数据单元结构)包括IP、TCP、UDP和南向API------OpenFlow。

OpenFlow
- OpenFlow逻辑网络设备能够实际运用的必要条件:网络设备具备通用的逻辑架构、SDN控制器与网络设备之间采用标准的安全协议。

- OpenFlow交换机结构如下:

- OpenFlow信道是控制器与交换机的管理接口。
- OpenFlow端口是分组进入和离开的位置,包括物理端口、逻辑端口和保留端口。物理端口与硬件接口对应,逻辑端口不与硬件接口对应,保留端口用于特殊的OpenFlow规范定义,制定通用的转发行为。
- 表结构分为流表(flow table)、组表(group table)和计量表(meter table)。
- 流表结构如下:

流表流水线
- 流表流水线结构如下:

- 交换机含一个或多个流表,多个流表从0开始依次编号,并组织成流水线。
- 两个处理阶段
- 入口处理一定会发生,从表0开始。涉及一个或多个表;如果只有一个表0时,没有出口处理。
- 出口处理发生在输出端口确定之后,可选;可能涉及一个或多个表。
- 表标识分界:第一个出口表的数字标识决定所有比它小的表用作入口表,所有大于等于该标识的表则不能作为入口表。
- 流水线首先从第一个表入口处理开始,并且分组必须先与表0的流表项进行匹配,并根据匹配的结果来使用其它流表。
- 如果入口处理结果是将分组转发到输出端口,则执行该输出端口场景下的出口处理。
- 入口处理:默认表项Table miss允许三种动作:将分组发送给控制器、将分组引导到流水线下一表、丢弃该分组。
- 出口处理:第一个出口表标识 e e e确定后,如果多个出口表,则其标识大于 e e e。
- 多级流表的使用:实现流的嵌套、将一条流拆分为多条并行的子流,提供细粒度的控制,简化SDN控制器的流操作。

组表
- 组表是用于表示一组端口集合的单独实体,主要用于不同的抽象场景,如多播和广播。每个组表由若干行组表项构成,允许多个组表存在并构成组链。组表项包含组标识符、组类型、计数器和动作桶 。

- 组类型包括:
- 全部:广播或多播
- 选择:均衡负载或者加权均衡负载
- 快速恢复:容错响应
- 间接:多分组项映射到一个组项,便于维护
- 组类型示意图展示了不同类型的分组处理方式,包括全部类型(a)、选择类型(b)、快速恢复类型(c)和间接类型(d)。

OpenFlow协议
-
OpenFlow协议通过TLS提供安全信道,控制器能够对流表中的流表项执行增删改操作。
-
控制器到交换机管理交换机逻辑状态,使用Packet-out指令;交换机向控制器报告状态或使用Packet-in指令(异步通信)。交换机与控制器间的初始连接交互是对称的,通过Echo测量实现。
-
SDN控制器获得三类信息:基于事件的报文、流统计信息和封装的分组。
-
P4是一种开源编程语言,用于编程协议无关的包处理器(P4)。它是一种专门为网络设备设计的领域特定语言,用于指定数据平面设备(如交换机、网卡、路由器、过滤器等)如何处理数据包。
-
P4程序包含包分类器、L3路由和L2转发等功能模块,这些模块协同工作实现ACL(重定向、丢弃或包入)等操作。P4编译器负责分配资源以实现流水线和生成运行时映射,生成prog.p4info文件,该文件与控制平面交互。控制平面包括P4Runtime客户端和服务器,通过p4runtime.proto协议通信,并提供API接口。目标特定的编译器后端生成target_demo.bin文件,该文件被部署到目标数据平面设备上,由目标驱动程序控制。

SDN控制平面

- 控制平面作为服务器或服务器协同集合构成。功能组件包括:最短路径转发、通告管理器、安全性机制、拓扑管理器、统计管理器、口设备管理器。

南北、东西向接口
- 南向接口是SDN控制器与数据平面设备(如交换机)之间的通信接口,使用协议如OpenFlow和ForCES。
- SDN控制器通过这些协议与数据平面设备交互,实现网络流量的转发和控制。
- 北向接口则连接应用平面,提供API接口(如REST)供应用或服务调用。
- 东西向接口用于SDN控制器之间的通信,支持协议如SDNi和ForCES CE-CE,实现控制器间的协同工作。SDN网络操作系统(如OpenDaylight、ONOS)通过这些接口实现网络功能的集中管理和控制。
路由选择
-
路由选择是网络通信中的关键过程,涉及多个重要步骤。首先,收集网络的拓扑信息 ,了解网络中所有节点和连接的布局。其次,要分析网络的流量情况 ,评估当前网络的负载和带宽使用状况。最后,设计通过该网络路径的算法,确定数据包的最佳传输路径。
-
此外,路由选择还涉及链路发现和拓扑管理。链路发现是指识别网络中的可用链路,而拓扑管理则是维护和更新网络拓扑信息,确保路由决策的准确性和有效性。这些步骤共同确保数据能够高效、可靠地在网络中传输。
-
SDN 的高层体系结构 (ITU-T)从上至下分为三层分别为应用层,SDN控制层,资源层。SDN控制层包含应用程序支持,编排,抽象。资源层包括控制支持,数据传输和处理。
bash
+---------------------+ +---------------------+ +---------------------+
| 应用程序 | | 应用程序 | | 应用程序 |
|---------------------| |---------------------| |---------------------|
| | | | | |
+---------------------+ +---------------------+ +---------------------+
| 应用-控制接口
|
+---------------------+
| SDN控制层 |
|---------------------|
| 应用程序支持 |
|---------------------|
| 编排 |
|---------------------|
| 抽象 |
|---------------------|
+---------------------+
| 资源控制接口
|
+---------------------+
| 资源层 |
|---------------------|
| 控制支持 |
|---------------------|
| 数据传输和处理 |
|---------------------|
+---------------------+
OpenDaylight
- OpenDaylight体系结构包括网络应用、编排服务,OpenDaylight API,控制器功能和服务,服务抽象层SAL,南向接口和协议。OpenDaylight的特点是覆盖应用平面与控制平面,SAL支持支持广泛的南向接口标准。

控制器间的合作和协调
- 控制器间的合作和协调涉及多个方面,包括东西向接口,这是控制器之间进行通信的重要机制。在控制器架构方面,存在集中式与分布式控制器的选择,分布式控制器具有更好的可扩展性、可靠性、隐私保护和增量部署能力。为了提高系统的可用性,通常采用高可用性的集群配置,特别是在单一域内实现高可用性(HA)。
- 在更大规模的SDN网络中,联邦的SDN网络架构被采用,这需要边界网关协议(BGP)的支持。BGP不仅用于域间的路由选择和服务质量(QoS)管理,还在IETF SDNi(SDN间)协议中得到应用。OpenDaylight控制器也实现了SDNi功能,进一步增强了控制器间的协作能力。这些技术和协议共同确保了SDN网络中控制器之间的高效协调和无缝合作。

SDN应用平面
- SDN应用平面的作用是对网络资源和行为进行定义、监视和控制。
- 北向和用户接口都分为本地和远端模式。
- 典型的网络应用数据中心网络、移动和无线、信息中心网络、流量工程、测量与监视、安全与可信性。
- 网络服务抽象层:提供网络资源的抽象视图,隐藏数据平面设备具体细节;提供网络虚拟化功能,能够将底层数据平面基础设施逻辑划分。

网络服务抽象层
- SDN可以通过3个基本抽象定义转发、分发和规范 。
- 转发抽象:指定数据平面的转发行为,隐藏硬件细节。
- 分发抽象:涉及分布式控制器背景下的协作,它处理分离的数据集或副本,形成统一的全球网络视图。这种抽象屏蔽了状态分发和采集的复杂性,为控制器提供了全局网络状态的统一视角。
- 规范抽象:面向应用程序屏蔽网络细节,提供全局网络的抽象视图。
简答题预测

软件定义网络(SDN)的架构由应用平面、控制平面、数据平面三个平面组成,分层架构实现网络控制与转发的分离,使网络管理更加灵活和可编程。
- 应用平面(Application Plane)
- 组成:包含各种网络应用,通过"规范抽象"与网络服务抽象层交互
- 功能:实现网络策略和业务逻辑,通过调用网络服务抽象层提供的接口来控制网络行为
- 控制平面(Control Plane)
- 组成:包括SDN控制器,通过北向API(如REST API)与网络服务抽象层通信,通过南向API(如OpenFlow)与数据平面通信
- 功能:作为网络的大脑,集中管理网络状态和路由决策,通过API接口实现与上层应用和下层设备的通信
- 数据平面(Data Plane)
- 组成:包含虚拟交换机和物理交换机,通过"转发抽象"与控制平面通信
- 功能:负责实际的数据包转发工作,执行控制平面下发的指令
- 网络服务抽象层(Network Service Abstraction Layer)位于应用平面和控制平面之间
- 功能:提供统一的网络服务接口,将底层的网络设备细节隐藏起来.
- 作用 :
- 为上层应用提供简化的网络服务视图
- 实现应用与底层网络设备的解耦
- 通过"规范抽象"机制,将应用的需求转换为控制平面可理解的指令
接口说明:
- 北向API:控制平面与应用平面之间的接口(如REST API)
- 南向API:控制平面与数据平面之间的接口(如OpenFlow)
- 东西向API:SDN控制器之间的通信接口