文章目录
OpenFlow协议
是基于网络中流的概念设计的一种SDN南向接口协议。
流的概念:IP网络是一种基于数据分组转发的分组交换网络,一次网络通信会产生大量的数据分组,对于传统网络设备来说对它们的处理是独立的(每个分组都需要独立的进行查表、匹配、action),处理效率很低。如果能够提取出这次通信产生的数据分组的共同特征,抽象成一个流,使网络设备统一看待这些数据分组。
SDN的核心思想是数据与控制分离,openflow引入流的概念后,控制器可以根据某次通信中流的第一个数据分组的特征,使用openflow协议提供的接口对接数据平面设备部署策略——流表,通信的后续流量则按照相应流表在硬件层次上匹配、转发。实现了网络转发平面策略,软硬件解耦。
OpenFlow v1.0协议
流表是一些针对特定流的策略表项的集合,负责数据分组的查询和转
发。OF 交换机通过安全通道与控制器相连,安全通道上传输的就是 OpenFlow 协议消息,负责控制器与交换机间的交互。
OF流表
结构:分组头域-计数器(保存与条目相关统计信息)-action表(匹配后需要对数据分组执行的动作表)
为了避免交换机互连可能导致的广播风暴,一些OF交换机会选择生成树协议。
流表是OF交换机上对数据转发逻辑的抽象,是交换机进行焕发策略可能固执的核心数据结构。
OF安全通道
承载着OF协议的消息,这部分流量属于OF网络的控制下年龄,不需要经过交换机流表的检查
- 认证通过后,两边发送握手消息给对方,二者拥有共同支持的协议版本则建立安全通道
- 建立后,交换机与控制器通过消息协商一些参数,并定时keepalive交换消息。
OF协议消息
-
Controller-Switch 消息
这类消息由控制器发起,包括 Features、Configuration、Modify-State、Read-State、Send-Packet、Barrier 等几类消息,用于对 OF 交换机的管理。控制器通过其中各种请求(Request)消息来查询 OF 交换机的状态,OF 交换机收到后需回复相应的响应(Reply)消息。 -
Asynchronous 消息
这类消息用来将网络事件或交换机状态的变化更新到控制器。Asynchronous是异步的意思,也就是说,这类消息的触发不是由于控制器的请求,而是由交换机主动发起的,控制器也不知道交换机什么时候会发送这类消息。因为 SDN 是集中式管控的架构,当交换机不知道该怎样处理流量,或者它的状态发生了改变又或者发生了一些异常的时候,OF 交换机就会通过这类消息将相应情况上报控制器,由控制器完成决策。
包括,packet-in,flow-removed,port-status,error -
Symmetric 消息 Hello,Echo,Vendor
OF协议面临的问题
- 协议消息类型尚不完善。为了在SDN中实现传统网络的功能,要求控制器南向接口协议包含完备的消息类型。
- 控制平面的安全性和扩展性问题。SDN是集中式控制思想的产物,受到网络规模的限制。
- 数据平面的设备性能问题。 传统交换机参照 MAC 地址转发,路由器参照 IP 地址转发,通过定制 ASIC芯片可以实现高速工作。而 OpenFlow 将网络协议栈扁平化,协议栈各层次对于转发设备而言不再具有明确的界限,各个网络字段都可作为流表中的匹配域,通过通配符掩码实现任意字段的组合。相比于传统网络,这种做法无疑大大提高了网络灵活性,但付出的代价是硬件设备为了适应这种通配的匹配方式,一般来说需要采用 TCAM 来设计流表,但是 TCAM 的成本要高出很多,这就极大地限制了流表的规模,也就限制了 SDN 的规模。【POF、P4】
OF-CONFIG协议
提供个一个开放接口用于管理和配置OF交换机
南向接口协议
配置点,是指通过发送OF-CONFIG消息来配置OF交换机的一个节点,既可以是控制器上的一个软件进程,也可以是传统的网管设备。
设计需求
- OF交换机与控制器连接之前,有3个参数需要提前设置,控制器IP地址、控制器端口、传输协议;
- OF-CONFIG协议提供交换机同时与多控制器连接的参数配置
- OF-CONFIG协议支持OF交换机对资源的配置
- 连接中断的预设值
- OF交换机与控制器第一次建立连接时,双份均进行身份认证,以TLS建立连接的身份认证方式。
数据模型
OF-CONFIG协议的数据模型由XML定义,主要由类和类属性构成,核心是由OF配置点对OF交换机的资源进行配置。
其他SDN南向接口协议
XMPP 可扩展消息处理现场协议
以XML为基础的开放式实时通信协议,用于即时消息IM以及在线现场探测,前身是一个开源组织产生的网络既时通信协议——Jabber
目前只能提供单域的路由信息,无法实现异构互联。
PCEP 路径计算单元
专门进行路径计算的网络单元,是在现存控制机制的缺陷和多层多域网络需求上提出的改进网络架构。
技术上实施复杂
完善的东西接口,使得多个PCE间可以更好的协同,分散集中控制的单点控制压力。
I2RS interface to routing system
传统的路由体系里,OSPF IS-IS BGP都是分布式路由计算的架构,SDN强调包括路由协议在内的上层逻辑都要运行在集中式的控制器上,可见,传统的分布式路由协议与SDN集中式控制存在着一定的矛盾。
IEFT在跟进SDN过程中,提出了I2RS这种南向接口协议,其目的是在SDN中最大程度地保留传统路由技术的优势,同时引入SDN可编程的新思想。
底层设备间通过传统的分布式路由协议计算得到路由信息,并通过I2RS协议传递给控制平面,控制平面通过I2RS协议对底层设备进行状态的读写,并综合底层网络信息和上层应用以指导底层设备工作。
设计结构中,底层转发设备仍然具有相当的智能性,路由计算以分布式的形式在每台转发设备上进行,而只是把路由协议中的策略配置、流量统计放到集中式的控制器上,I2RS中控制器的功能被削弱了很多,可编程灵活性比起OF也会差。
OpFlex
cisco公司提出的ACI,以应用为中心的基础设置。ACI致力于将网络业务能力开发,围绕上层应用需求智能打造底层网络基础设施。应用策略基础架构控制器通过北向API向上层应用开放网络策略,并通过南翔接口协议将应用制定的网络策略分发给底层的交换设备。
OpFlex 的一个显著优势在于,利用分布式协议实现网络功能时,网络的可扩展性很强,控制器只负责全局业务逻辑的分发,而不用关心如何集中式地实现网络协议,不会存在前面小节中所述的由 OpenFlow 集中控制引发的种种问题。但是在开放网络业务逻辑的同时,OpFlex 将交换设备的模型隐藏在协议之外,这无疑削弱了网络的开放性,并在一定程度上限制了上层应用的灵活性。
OVSDB Mgnmt
与OF-CONFIG类似,是OF伴侣协议。Nicira开发。
POF protocol oblivious forwarding 协议无关转发
华为提出的SDN南向技术,实现了转发设备对报文协议类型的无感知处理与转发,所有的报文处理与转发策略完全由控制器控制,同时软件设备摆脱了特定协议的以来,通过控制器软件编程可以实现新协议的快速部署。
基本框架
操作者通过UI等接口在协议数据库中配置协议内容与元数据。应用向底层设备安装流表项时,依然需要通过OpenFlow通道进行传输实现。
POF数据层,是底层网络设备,不需要感知报文的协议类型,之u需要根据流表、元数据区和指令集实现控制器的流控制策略。
POF控制器是基于FLoodlight控制器改进的,增添了GUI,POF交换机采用C语言实现。
基本原理
OF是基于语义的实现方式,数据平面交换机必须理解数据分组的协议类型。POF协议通过更面向底层的流表设计,实现了可编程的协议分析能力,让交换机转发与协议无关。
根本原理,基于域{type,offset,length}的操作。让匹配字段对于协议无关,而且对流表指令、动作的定义也是协议无关。
POF提出FIS flow instruction set 流指令集,基本可以满足所有转发设备对数据分组的处理需求。
处理流程
POF采用多级流表的匹配转发方式,
流表跳转主要会指定3项参数:table_id【跳转表的全局编号】,packet_offset【跳转至第一张表时默认设置为包头位置】,type
POF流表匹配不局限于数据分组本身,可以通过元数据区进行流表匹配与处理。
P4
基本框架
P4定义的转发行为是基于流的。
转发模型
P4的编程模型,分为:配置阶段和下发表项阶段。
配置:定义了转发应用的协议解析过程,配置了转发芯片前端报文解析器。
下发表项:运行时的刘表控制阶段。
P4机制中,到达的数据分组首先被解析,数据分组的数据部分分别被缓存,在匹配过程中不会使用到这些被缓存的数据。
SDN北向接口
提供了SDN中开发者和控制器间的交互能力。
控制器本质上是SDN的操作系统,通过南向接口和转发设备通信,对用户屏蔽底层实现细节;通过北向接口与上层应用交互,提供更高层次的业务逻辑抽象。SDN最终价值在于根据丰富的上层应用需求更加灵活的部署和控制网络,而北向接口是否友好、完备,直接决定着控制器的生命力。
SDN东西向接口
允许控制器通过标准化插件的形式对其进行集成,从而实现异构SDN控制器间标准化的东西向通信。
东西向接口协议的设计是增强控制平面可扩展性的核心技术。