OpenFlow原理描述

OpenFlow原理描述
体系结构
OpenFlow的思想:分离控制平面和数据平面,二者之间使用标准的协议通信,数据平面采用基于流的方式进行转发。如图1所示,OpenFlow的体系结构由控制器、OpenFlow设备及OpenFlow协议三部分组成。
图1 OpenFlow的体系结构

图片.png

控制器
OpenFlow协议的控制平面服务器,完成表项的创建与维护。

OpenFlow设备
OpenFlow设备有两种:
OpenFlow专用设备:一个标准的OpenFlow设备,仅支持OpenFlow转发。
OpenFlow兼容型设备:支持OpenFlow转发,也支持正常二三层转发。CE系列交换机即为OpenFlow兼容型交换机。

OpenFlow Agent
OpenFlow设备上负责OpenFlow协议管理的部件,与控制器建立OpenFlow连接,上报OpenFlow设备的端口信息。

工作原理
控制器对设备的控制和管理可以通过OpenFlow协议实现。首先控制器和设备之间通过建立OpenFlow通道,实现控制器与设备之间的信息交互。如果设备与多个控制器建立OpenFlow多连接,那么此时控制器会将自己的角色通过OpenFlow通道告知设备。

通道建立与维护
实现控制器和设备之间的信息交互之前,需要建立OpenFlow通道,OpenFlow通道建立之后需要进行维护,保证OpenFlow通道的稳定性。OpenFlow通道建立与维护过程如下:
(1)用户在控制器和设备上配置完OpenFlow连接参数后,控制器和设备会建立TCP连接。
(2)TCP连接建立成功后,控制器和设备会相互发送携带OpenFlow协议版本号等信息的HELLO报文,进行通道协商。  (3)通道协商成功后,控制器发送FEATURES_REQUEST报文查询设备的属性信息,设备将自己的属性信息通过FEATURES_REPLY报文上报到控制器。至此,OpenFlow通道建立成功。
(4)通道建立成功后,控制器和设备之间会相互发送ECHO报文对连接的对端设备进行检测。ECHO报文包括ECHO_REQUEST报文和ECHO_REPLY报文,发起检测的一端会定期发送ECHO_REQUEST报文,对端收到后会回应ECHO_REPLY报文。

如果发起端连续5次发送ECHO_REQUEST报文,都没有收到ECHO_REPLY报文,则判定对端故障,断开OpenFlow连接,如果期间收到其他报文,则重新计时。

图2 OpenFlow通道建立与维护
图片.png

控制器角色通知
设备可以与单个控制器建立OpenFlow连接,也可以和多个控制器建立OpenFlow多连接。建立多控制器OpenFlow连接具有高可靠性、也可以进行负载分担。当一个控制器故障或者一个OpenFlow连接失败,设备仍然可以和其他控制器维持OpenFlow连接,进行工作。
在建立OpenFlow通道期间,设备需要与其配置的所有控制器建立连接,并且要保证每个OpenFlow连接的连通性。在OpenFlow通道建立成功后,控制器会主动发送ROLE_REQUEST报文,该报文中携带了控制器角色等信息。控制器角色分为EQUAL、MASTER和SLAVE,具体内容如下:
当ROLE_REQUEST报文中携带的控制器角色为:OFPCR_ROLE_EQUAL时,表示控制器角色为EQUAL。在这种情况下,控制器对设备具有最大的权限,可以接收设备发送的同步信息;控制器可以发送转发信息数据库、Packet-out等报文到设备。缺省情况下,在设备和控制器建立连接后,控制器的角色为EQUAL。
当ROLE_REQUEST报文中携带的控制器角色为:OFPCR_ROLE_MASTER时,表示控制器角色为MASTER,MASTER的权利和EQUAL的权利相同。在这种情况下,其余的控制器角色必须为EQUAL或者SLAVE。
当ROLE_REQUEST报文中携带的控制器角色为:OFPCR_ROLE_SLAVE时,表示控制器角色为SLAVE。在这种情况下,控制器只具有读的权限。设备不会发送同步信息给控制器,也不会接收SLAVE发送转发信息数据库、Packet-out报文,如果设备收到SLAVE发送的这些信息将直接丢弃并会回复OFPT_ERROR消息。
控制器角色是由控制器本身决定的。控制器主备的竞选也是由控制器本身进行的,设备不会干涉控制器主备的选举和EQUAL角色的确定。设备根据ROLE_REQUEST报文得知控制器的角色。控制器角色通知流程如下:
通道建立成功后,控制器会主动发送ROLE_REQUEST报文到设备,设备收到后返回ROLE_REPLY报文到对应的控制器。
如果有其他SLAVE控制器竞选为MASTER,此时该控制器将发送ROLE_REQUEST(MASTER)报文通知设备其角色的改变。设备收到该报文后,记录新的控制器并返回ROLE_REPLY报文,同时也会发送ROLE_STATUS报文给原主控制器,通知其角色改变为SLAVE。
图3 控制器角色通知流程

图片.png

报文透传
控制器与设备之间通过标准的Packet-in和Packet-out报文进行报文的透传。
Packet-in:设备将获得的信息通过Packet-in报文上送到控制器。
Packet-out:控制器将信息通过Packet-out报文下发到设备。

1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » OpenFlow原理描述

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!