当前位置: 首页 > 工具软件 > OpenFlow > 使用案例 >

openflow一般概念

史同化
2023-12-01
很多主张重新设计计算机网络体系结构的人士认为:网络可以复制计算机领域的成功经验来解决现在网络所遇到的所有问题。
在这种思想的指导下,将来的网络必将是这样的:底层的数据通路(交换机、路由器)是“哑的、简单的、最小的”,并定义一个对外开放的关于流表的公用的API,同时采用控制器来控制整个网络。
未来的研究人员就可以在控制器上自由的调用底层的API来编程,从而实现网络的创新。
OpenFlow正是这种网络创新思想的强有力的推动者。OpenFlow交换机将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow交换机(OpenFlow Switch)和控制服务器(Controller)来共同完成,
从而实现了数据转发和路由控制的分离。控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的。
因此,OpenFlow开启了一条网络创新的道路。如果OpenFlow得到广泛的应用和推广,则未来的网络将如曾经的计算机一样取得日新月异的发展。




基于OpenFlow实现SDN(Software Defined Network)。在SDN中,交换设备的数据转发层和控制层是分离的,因此网络协议和交换策略的升级只需要改动控制层。
OpenFlow在OpenFlow交换机上实现数据转发,而在控制器上实现数据的转发控制,从而实现了数据转发层和控制层的分离。
基于OpenFlow实现SDN,则在网络中实现了软硬件的分离以及底层硬件的虚拟化,从而为网络的发展提供了一个良好的发展平台。


OpenFlow网络由OpenFlowswitch(OpenFlow交换机)、FlowVisor(网络虚拟化层)和Controller(控制器)三部分组成。
OpenFlow交换机进行数据层的转发;
FlowVisor对网络进行虚拟化;
Controller对网络进行集中控制,实现控制层的功能。


1、OpenFlow交换机
OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。OpenFlowSwitch拥有一个FlowTable(流表),它只按照流表进行转发,FlowTable的生成、维护和下发由外置的Controller来实现。
这里的FlowTable并非是指IP五元组(IP源地址、IP目的地址、协议号、源端口、目的端口),
OpenFlow1.0规范定义了包括输入端口、MAC源地址、MAC目的地址、以太网类型、VLANID、IP源地址、IP目的地址、IP端口、TCP源端口、TCP目的端口在内的10个关键字(十元组)。
FlowTable中的每个关键字都可以通配,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的IP进行路由,那么FlowTable中就可以只有IP目的地址字段是有效的,其它全为通配。
传统网络中数据包的流向是人为指定的,虽然交换机、路由器拥有控制权,却没有数据流的概念,只进行数据包级别的交换;而在OpenFlow网络中,统一的Controller取代路由,决定了所有数据包在网络中传输路径。
OpenFlow采用控制和转发分离的架构,意味着MAC地址的学习由Controller来实现,VLAN和基本的路由配置也由Controller下发给OpenFlowSwitch。
对于三层网络设备,各类路由器运行在Controller之上,Controller根据需要下发给相应的路由器。当一个Controller同时控制多个OpenFlowSwitch时,
它们看起来就像一个大的逻辑交换机。FlowTable的下发可以是主动的,也可以是被动的。
主动模式:Controller将自己收集的FlowTable信息主动下发给OpenFlowSwitch,随后OpenFlowSwitch可以直接根据FlowTable进行转发。
被动模式:OpenFlowSwitch收到数据包后,首先在本地的FlowTable上查找转发目标端口,如果没有匹配,则把数据包转发给Controller,由控制层决定转发端口,
并下发相应的FlowTable。被动模式的好处是网络设备无需维护全部的FlowTable,只有当实际的流量产生时才向Controller获取FlowTable记录并存储,当记录老化时可以删除相应的FlowTable,故可以大大节省存储器空间。
OpenFlow交换机框架
OpenFlow交换机框架
OpenFlow交换机的组成
OpenFlow交换机由FlowTable(流表)、SecureChannel(安全通道)和OpenFlowProtocol(协议)三部分组成。
FlowTable流表:由很多个流表项组成,每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口。流表项由头域、计数器和操作组成;
其中头域是个十元组,是流表项的标识;计数器用来计算流表项的统计数据;操作标明了与该流表项匹配的数据包应该执行的操作。
Secure Channel:安全通道是连接OpenFlow交换机到控制器的接口。控制器通过这个接口控制和管理交换机,同时控制器接收来自交换机的事件并向交换机发送数据包。
交换机和控制器通过安全通道进行通信,而且所有的信息必须按照OpenFlow协议规定的格式来执行。
OpenFlow协议:用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。
OpenFlow协议支持三种信息类型:Controller-to-Switch,Asynchronous和Symmetric,每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态。
Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态。Symmetric信息可以在没有请求的情况下由控制器或交换机发起。
OpenFlow交换机的分类
按照对OpenFlow的支持程度,OpenFlow交换机可以分为两类:专用的OpenFlow交换机和支持OpenFlow的交换机。
专用的OpenFlow交换机是专门为支持OpenFlow而设计的。它不支持现有的商用交换机上的正常处理流程,所有经过该交换机的数据都按照OpenFlow的模式进行转发。专用的OpenFlow交换机中不再具有控制逻辑,
因此专用的OpenFlow交换机是用来在端口间转发数据包的一个简单的路径部件。
支持OpenFlow的交换机是在商业交换机的基础上添加流表、安全通道和OpenFlow协议来获得了OpenFlow特性的交换机。其既具有常用的商业交换机的转发模块,又具有OpenFlow的转发逻辑,
因此支持OpenFlow的交换机可以采用两种不同的方式处理接收到的数据包。
按照OpenFlow交换机的发展程度来分,OpenFlow交换机也可以分为两类:“Type0”交换机和“Type1”交换机。
“Type0”交换机仅仅支持十元组以及以下四个操作:转发这个流的数据包给一个给定的端口(或者几个端口);压缩并转发这个流的数据包给控制器;丢弃这个流的数据包;通过交换机的正常处理流程来转发这个流的数据包。
显然“Type0”交换机的这些功能是不能满足复杂试验要求的,因此我们将要定义“Type1”交换机来支持更多的功能,从而支持复杂的网络试验。“Type1”交换机将具有一个新的功能集合。


2、支持网络虚拟化的FlowVisor
类比计算机的虚拟化,FlowVisor就是位于硬件结构元件和软件之间的网络虚拟层。FlowVisor允许多个控制器同时控制一台OpenFlow交换机,但是每个控制器仅仅可以控制经过这个OpenFlow交换机的某一个虚拟网络(即slice)。
因此通过FlowVisor建立的试验平台可以在不影响商业流的转发速度的情况下,允许多个网络试验在不同的虚拟网络上同时进行。FlowVisor与一般的商用交换机是兼容的,而不需要使用FPGA和网络处理器等可编程硬件。


3、Controller控制器
OpenFlow实现了数据层和控制层的分离,其中OpenFlow交换机进行数据层的转发,而Controller实现了控制层的功能。Controller通过OpenFlow协议这个标准接口对OpenFlow交换机中的流表进行控制,
从而实现对整个网络进行集中控制。Controller的这一切功能都要通过运行NOX来实现,因此NOX就像是OpenFlow网络的操作系统。此外,在NOX上还可以运行Plug-n-serve、OpenRoads以及OpenPipes等应用程序。
Plug-n-Serve通过规定数据传输路径来控制网络以及服务器上的负载,从而使得负载均衡并降低响应时间。OpenRoads是支持OpenFlow无线网络移动性研究的框架。OpenPipes可以在网络系统中通过移动每个子模块来测试每个子模块,
并可以决定如何划分设计单元。
 类似资料: