OpenFlow你该懂的小知识

OpenFlow你该懂的小知识


前言

作为SDN(Software Defined Network 软件定义 网络)的主要实现方式,OpenFlow发展史就是SDN的发展史,对整个SDN的发展起着功不可没的作用


一、OpenFlow起源

OpenFlow起源于斯坦福大学的Clean Slate项目组,Clean Slate项目的最终目的非常大胆,是要“重新发明因特网(Reinvent the Internet)”,改变被认为已经略显不合时宜且难以进化发展的现有网络基础架构。在OpenFlow发展的初期,为了达到更好利用现有硬件的目的,需要网络设备中内置一种稀有且昂贵的特殊内存TCAM(Ternary Content-Addressable Memory)来保存流表。

在OpenFlow发展的初期,为了达到更好利用现有硬件的目的,需要网络设备中内置一种稀有且昂贵的特殊内存TCAM(Ternary Content-Addressable Memory)来保存流表。设计OpenFlow的初衷是无须更改已搭载TCAM的网络设备硬件,仅通过软件升级即可实现网络行为变更,能够一边考虑应用现有架构,一边构建虚拟网络,也是OpenFlow广受业界关注的原因所在。

设计OpenFlow的初衷是无须更改已搭载TCAM的网络设备硬件,仅通过软件升级即可实现网络行为变更,能够一边考虑应用现有架构,一边构建虚拟网络,也是OpenFlow广受业界关注的原因所在。

二、OpenFlow 设计思路

OpenFlow协议的思路是网络设备维护一个FlowTable,并且只通过FlowTable对报文进行处理,FlowTable本身的生成、维护和下发完全由外置的控制器实现。此外,OpenFlow交换机把传统网络中完全由交换机或路由器控制的报文转发,转换为由交换机和控制器共同完成,从而实现报文转发与路由控制的分离。控制器则通过事先规定好的接口操作OpenFlow交换机中的流表,达到数据转发的目的。

在OpenFlow交换机中,包含了安全通道、多级流表和组表。通过安全通道,OpenFlow交换机可以和控制器建立基于OpenFlow协议的连接;而流表则用来匹配OpenFlow交换机收到的报文;组表用来定义流表需要执行的动作。

三、FlowTable

OpenFlow通过用户定义的或预设的规则匹配和处理网络包。一条OpenFlow的规则由匹配域、优先级、处理指令和统计数据等字段组成。

在一条规则中,可以根据网络包在L2、L3或者L4等网络报文头的任意字段进行匹配,比如以太网帧的源MAC地址、IP包的协议类型和IP地址或者TCP/UDP的端口号等。目前Open-Flow的规范中还规定了Switch设备厂商可以有选择性地支持通配符进行匹配。OpenFlow未来还计划支持对整个数据包的任意字段进行匹配。

所有OpenFlow的规则都被组织在不同的FlowTable中,而在同一个FlowTable中,按规则的优先级进行先后匹配。一个OpenFlow Switch可以包含一个或者多个FlowTable,从0开始依次编号排列。

OpenFlow规范中定义了流水线式的处理流程。当网络数据包进入Switch后,必须从table 0开始依次匹配,table可以按从小到大的次序越级跳转,但不能从某一table向前跳转至编号更小的table。当数据包成功匹配一条规则后,将首先更新该规则对应的统计数据(如成功匹配数据包总数目和总字节数等),然后根据规则中的指令进行相应操作,比如跳转至后续某一table继续处理,修改或立即执行该数据包对应的Action Set等。当数据包已经处于最后一个table时,其对应的Action Set中的所有Action将被执行,包括转发至某一端口、修改数据包的某一字段、丢弃数据包等。OpenFlow规范对目前所支持的In-structions和Actions进行了完整详细的说明和定义。

在这里插入图片描述

四、OpenFlow通信通道

OpenFlow协议主要通过对不同类型消息的处理来实现控制器与交换机之间的路由控制。目前,OpenFlow主要支持三种消息类型,分别是Controller-to-Switch、Asynchronous(异步消息)及Symmetric(对称消息)

  • Controller-to-Switch:指由Controller发起,Switch接收并处理的消息,主要包括Features、Configuration、Modify-State、Read-Stats和Barrier等消息。这些消息主要由Controller对Switch进行状态查询和修改配置等操作。
  • Asynchronous:由Switch发送给Controller,用来通知Switch上发生的某些异步事件的消息,主要包括Packet-in、Flow-Removed、Port-Status和Error等。例如,当某一条规则因为超时而被删除时,Switch将自动发送一条Flow-Removed消息通知Controller,以方便Controller进行相应的操作,比如重新设置相关规则。
  • Symmetric:主要用来建立连接,检测对方是否在线等,都是些双向对称的消息,包括Hello、Echo与厂商自定义消息。

Hello、Features、Echo又分别包含了Request与Reply消息,每一对Request与Reply的Transaction ID相同,交换机通过ID进行识别对应事件端口。图1-4所示即为在通常的交换机事件发生时,主要经过的几个交互步骤。

在这里插入图片描述

五、OpenFlow 应用

随着OpenFlow以及SDN的发展和推广,其研究和应用领域也得到了不断拓展,比如网络虚拟化、安全和访问控制、负载均衡、绿色节能,以及与传统网络设备交互和整合等。下面重点介绍网络虚拟化和负载均衡。

网络虚拟化 --FlowVisor

网络虚拟化的本质是对底层网络的物理拓扑进行抽象,在逻辑上对网络资源进行分片或整合,从而满足各种应用对于网络的不同需求。为了达到这个目的,FlowVisor实现了一个特殊的OpenFlow Controller,可以看作其他不同用户或应用的Con-troller与网络设备之间的一层代理,如xia图所示。因此,不同用户或应用可以使用自己的Controller来定义不同的网络拓扑,同时FlowVisor又可以保证这些Controller之间能够互相隔离且互不影响。

在这里插入图片描述

FlowVisorFlowVisor不仅是一个典型的OpenFlow应用案例,同时还是一个很好的研究平台,目前已经有很多基于FlowVisor的研究和应用。

负载均衡–Aster*x

传统的负载均衡方案一般需要在服务器集群的入口处,通过一个gateway监测、统计服务器的工作负载,并据此将用户请求动态地分配到负载相对较轻的服务器上。既然网络中的所有网络设备都可以通过OpenFlow进行集中式的控制和管理,同时服务器的负载又可以及时地反馈给OpenFlow Controller,那么OpenFlow就非常适合做负载均衡的工作。

基于OpenFlow的负载均衡模型Aster*x通过Host Manager和Net Manager来分别监测服务器和网络的工作负载,然后将这些信息反馈给FlowManager,这样FlowManager就可以根据这些实时的负载信息,重新定义网络设备上的OpenFlow规则,从而将用户请求(即网络包)按照服务器的能力进行调整和分发。

在这里插入图片描述

总结

提示:这里对文章进行总结:以上就是今天要讲的内容,本文仅仅简单介绍了OpenFlow的使用

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值