预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.sdnlab.com"www.sdnlab.com 转载文章请注明,转载自:SDN技术社区|SDN/Openflow社区|专注软件定义网络 基于OpenFlow实现网络虚拟化 虚拟化技术一直是云计算发展的重要推动因素。作为云计算的基础构架,桌面、存储和服务器的虚拟化都已经发展的如火如荼,而OpenFlow和SDN(SoftwareDefinedNetwork)的提出,使得同为基础架构的网络交换设备支持网络虚拟化多租户架构,将物理网络和逻辑网络有效分离,满足了云计算的服务特性,同时提升了网络资源的利用率。 什么是OpenFlow OpenFlow是SoftwareDefindedNetwork的一种,由斯坦福大学的NickMcKeown教授在2008年4月ACMCommunicationsReview上发表的一篇论文OpenFlow:enablinginnovationincampusnetworks里首先提出来的。它最初的出发点是用于网络研究人员实验其创新网络架构、协议,考虑到实际的网络创新思想需要在实际网络上才能更好地验证,而研究人员又无法修改在网的网络设备,故而提出了OpenFlow的控制转发分离架构,将控制逻辑从网络设备盒子中引出来,研究者可以通过一组定义明确的接口对网络设备进行任意的编程从而实现新型的网络协议、拓扑架构而无需改动网络设备本身。 图1.基于OpenFlow的网络交换设备 网络交换设备,无论是交换机还是路由器,其核心信息都保存在FlowTable里面,这些FlowTable被用来实现诸如转发、防火墙、Qos、统计分析等各种功能。不同生产厂家的FlowTable有着不同的格式,OpenFlow定义了一套对这些FlowTable进行操作的可扩展的通用标准。如图1所示,一个OpenFlow的交换设备至少由下面三个部分组成: FlowTable:FlowTable里面的每个条目都会与一个动作相关联,来告诉网络交换设备来如何处理与这个条目相关联的dataFlow; SecureChannel:用于连接网络交换设备和远程网络控制器,在控制器和网络交换设备之间互相发送命令和数据包; OpenFlowProtocol:提供一个开放标准统一的接口,使得控制器和网络交换设备之间可以相互通信。 这样通过OpenFlow协议,网络交换设备以外的控制器就可以对网络交换设备的FlowTable进行编程和管理。FlowTable对远程访问控制的支持,将FlowTable的配置与管理从网络交换设备本身中剥离出来,也使得对整个网络中FlowTable进行集中控制与管理成为可能,从而将物理网络和逻辑网络的定义有效分离,如图2所示。而出于性能角度考虑和为了解决单点失效问题,OpenFlow协议还允许多个控制器同时对同一个OpenFlow交换设备进行配置与管理。 图2.对整个网络的FlowTable进行集中控制 多个控制器通过修改FlowTable定义不同的规则,对于不同的Flow采取不同的操作,将物理网络有效地分割成互相独立的逻辑网络,从而实现网络的虚拟化。如图3所示,在同一个物理网络中,ControllerA定义FlowTable1用于租户A的网络应用,ControllerB定义FlowTable2用于租户B的网络应用,ControllerC定义FlowTable3用于租户C的网络应用,而红线所标明的部分代表交换设备对网络流量现有的正常处理。 图3.物理网络被分割成不同的逻辑网络 FlowTable和Pipeline匹配过程 FlowTable 要弄清楚什么是FlowTable,得先明白什么是Flow,某种特定的网络流量都可以认为是一个Flow,譬如从某个特定的Mac地址或IP地址发出的TCP连接可以认为是一个Flow,譬如所有的UDP数据包,或者像Tunnels、VLANs都可以认为是一个Flow。通过将网络流量根据FlowTable划分为不同的数据流,这些数据流能被归于不同的组且相互隔离,从而能够分别按照需要 来处理和控制。 FlowTable中的每个条目由匹配字段、计数器和指令集组成(表1): ●匹配字段:报文匹配的输入关键字; ●计数器:用于对匹配报文的流量统计; ●指令:当有报文匹配时,指令会修改匹配报文的Action集合,或者修改Pipeline的处理流程,来决定报文如何转发; Pipeline匹配过程 OpenFlowPipeline定义了报文的匹配过程。每个Pipeline都包含1个或多个FlowTable,匹配从Pipeline中的第一个FlowTable开始,然后按照Pipeline中FlowTable的序列依次进行,如图4所示。如果一个报文在当前FlowT