SDN软件定义 络 学习笔记(2)–南向协议
- 1. 简介
- 2. 常见协议与特点
- 3. OpenFlow协议
-
- 3.1 简介
- 3.2 流的概念
- 3.3 OpenFlow v1.0 流表
- 3.4 OpenFlow 通信过程
- 3.4 OpenFlow 协议的演进
1. 简介
南向接口协议完成控制平面与数据平面间的交互及部分管理配置功能。
SDN南向协议尝试为 络数据平面提供统一的、开放的和具有更多编程能力的接口,使得控制器可以基于这些接口对数据平面设备进行编程控制,指导 络流量的转发等行为。
2. 常见协议与特点
下表列出了常用的SDN南向协议,以及他们的特点。
协议 | 特点 |
---|---|
OpenFlow | 通过下发流表项对数据平面设备的 络数据处理逻辑进行编程,从而实现可编程定义的 络。但是此协议并没有规定如何去管理和配置 OpenFlow 交换机。 |
OF-Config | 只对 络设备的资源进行配置,无法指导数据交换。可以作为OpenFlow的伴侣协议使用,规定如何去管理和配置这些 OpenFlow交换机。 |
OVSDB | 与OF-Config类似,区别就是OVSDB仅用于Open vSwich交换机的配置与管理,而OF-Config可以用于所有支持OpenFlow的软硬件交换机。 |
OpFlex | 应用于ACI架构,ACI架构数据平面依然保留了很多控制逻辑,OpFlex下发策略,并不规定实现策略的具体方式,具体方式由底层设备实现。OpFlex只具有比较弱的编程能力。 |
PCEP | PCEP 原本是用于 PCE(路径计算单元) 与 PCC(路径计算客户端)/PCE 之间通信的协议,由于其特性,后常被用于SDN领域中。 |
XMPP | 可被应用于 络聊天等场景,被应用于SDN只是因为其功能适合携带南向数据。 OpenFlow 相比,XMPP 所提供的流粒度较粗,无法实现OpenFlow 协议那么细粒度的灵活控制。 |
I2RS | 最大程度地保留传统路由技术的优势,同时引入SDN 可编程的新思想。 |
POF | 不仅可以实现软件定义的 络数据处理,而且还可以实现软件定义的 络协议解析。具有数据平面可编程能力,还支持协议无关的转发。 |
P4 | 不仅是南向协议,还是一种编程语言。P4也是一个对数据解析逻辑和数据处理逻辑编程的语言或者框架。P4和POF同时支持数据平面和控制平面的软件定义。 |
3. OpenFlow协议
3.1 简介
OpenFlow是基于 络中流的概念设计的一种 SDN 南向接口协议。
控制器可以根据某次通信中流的第一个数据分组的特征,使用 OpenFlow 协议提供的接口对OpenFlow 交换机部署策略——OpenFlow 称之为流表,而这次通信的后续流量则按照相应流表在硬件层次上进行匹配、转发。
3.2 流的概念
IP 络是一种基于数据分组转发的分组交换 络,一次 络通信会产生大量的数据分组,虽然前后数据分组之间它们有千丝万缕的联系,但是传统 络设备对它们的处理却是独立的(每个分组都需要独立的进行查表、匹配然后动作),这大大降低了处理的效率。
因此,如果能通过提取出这次通信产生的数据分组的共同特征(如 MAC 地址、IP 地址等),把它们抽象成一个流,使 络设备统一看待这些数据分组,将能很好地解决上面提到的问题。
3.3 OpenFlow v1.0 流表
OpenFlow 流表是一些针对特定流的策略表项的集合,负责数据分组的查询和转发,主要包含数据分组匹配特征和数据分组处理方法。
以OpenFlow v1.0为例,流表项的基本结构如下图所示:
OpenFlow v1.0 中每台 OF 交换机只有一张流表,这张流表中存储着许多的表项,每一个表项都表征了一个流及其对应的处理方法——动作表,一个数据分组进入 OF 交换机后需要先与流表中的分组头域进行匹配,若符合其中某条表项的特征,则按照相应的动作进行转发, 否则封装为 Packet-in 消息通过安全通道交给控制器,再由控制器决定如何处理。另外,每条流表项都存在一个有效期,过期之后流表会自动删除。
3.4 OpenFlow 通信过程
如下左图所示是OpenFlow v1.0的架构原理图,右图是OpenFlow通信流程。
当交换机和控制器建立完Socket通信后,相互发送Hello 文,用于协商协议版本。完成协商后,控制器会向交换机下发Features Request 文,交换机则需回复Feature Reply 文。控制器根据交换机支持的特性,完成对交换机的配置。配置完成后,进入正常通信状态。如果OpenFlow版本支持多级流表,控制器还需要下发Table-Miss流表项到交换机。
当数据包匹配流表项失败或者匹配到Table-Miss时,交换机将其Packet-in到控制器,控制器根据控制逻辑可选择回复Packet-out或者下发Flow-mod指导交换机处理数据流。如果配置了Flow-Removed标志位,则当流表项过期时,交换机将向控制器回复Flow-Removed 文。
3.4 OpenFlow 协议的演进
-
多级流表的协议架构
OpenFlow后续版本设计了“流水线+组表”的结构,多张串联起来的流表就形成了流水线,数据分组在多张流表间跳转以完成匹配。架构如下左图所示,流水线对数据分组的处理流程如下右图所示。
-
流表项结构
如下图所示,是与多级流表匹配的流表项结构。从 OpenFlow v1.3.0 开始,用户可以按需自定义匹配域字段。
-
其他变化
OpenFlow后续版本中还对Flow-mod 机制、匹配域、虚拟端口、流表等等众多方面进行了改进。
参考资料:
《软件定义 络核心原理与应用实践》
《重构 络:SDN架构与实现》
文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树跨区域 络的通信学习 络层的作用22675 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!