搜档网
当前位置:搜档网 › 初探OpenFlow

初探OpenFlow

初探OpenFlow
初探OpenFlow

OpenFlow/SDN本质论

软件定义网络(Software Defined Network, SDN ),是由美国斯坦福大学clean slate研究组提出的一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。

从路由器的设计上看,它由软件控制和硬件数据通道组成。软件控制包括管理(CLI,SNMP)以及路由协议(OSPF,ISIS,BGP)等。数据通道包括针对每个包的查询、交换和缓存。如果将网络中所有的网络设备视为被管理的资源,那么参考操作系统的原理,可以抽象出一个网络操作系统(Network OS)的概念—这个网络操作系统一方面抽象了底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。这样,基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。

SDN提出控制层面的抽象,目前的MAC层和IP层能做到很好的抽象但是对于控制接口来说并没有作用,我们以处理高复杂度(因为有太多的复杂功能加入到了体系结构当中,比如OSPF,BGP,组播,区分服务,流量工程,NAT,防火墙,MPLS,冗余层等等)的网络拓扑、协议、算法和控制来让网络工作,我们完全可以对控制层进行简单、正确的抽象。SDN给网络设计规划与管理提供了极大的灵活性,我们可以选择集中式或是分布式的控制,对微量流(如校园网的流)或是聚合流(如主干网的流)进行转发时的流表项匹配,可以选择虚拟实现或是物理实现。

软件定义网络(Software Defined Network, SDN ),是一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。

SDN诞生于美国GENI项目资助的斯坦福大学Clean Slate课题,斯坦福大学Nick McKeown 教授为首的研究团队提出了Openflow的概念用于校园网络的试验创新,后续基于Openflow 给网络带来可编程的特性,SDN的概念应运而生。

2006年,SDN诞生于美国GENI项目资助的斯坦福大学Clean Slate课题。Clean Slate项目的最终目的是要重新发明英特网,旨在改变设计已略显不合时宜,且难以进化发展的现有网络基础架构。

2007年,斯坦福大学的学生Martin Casado 领导了一个关于网络安全与管理的项目Ethane,该项目试图通过一个集中式的控制器,让网络管理员可以方便地定义基于网络流的安全控制策略,并将这些安全策略应用到各种网络设备中,从而实现对整个网络通讯的安全控制。2008年,基于Ethane 及其前续项目Sane的启发,Nick McKeown 教授等人提出了OpenFlow 的概念,并于当年在ACM SIGCOMM 发表了题为《OpenFlow: Enabling Innovation in Campus Networks》的论文,首次详细地介绍了OpenFlow 的概念。该篇论文除了阐述OpenFlow 的工作原理外,还列举了OpenFlow 几大应用场景。

基于OpenFlow 为网络带来的可编程的特性,Nick McKeown教授和他的团队进一步提出了SDN(Software Defined Network,软件定义网络)的概念。2009年,SDN 概念入围Technology Review年度十大前沿技术,自此获得了学术界和工业界的广泛认可和大力支持。

2009年12月,OpenFlow规范发布了具有里程碑意义的可用于商业化产品的1.0版本。如OpenFlow在Wireshark抓包分析工具上的支持插件、OpenFlow的调试工具(liboftrace )、OpenFlow虚拟计算机仿真(OpenFlowVMS)等也已日趋成熟。目前,OpenFlow规范已经经历了1.1、1.2以及最近刚发布的1.3等版本。OpenFlow 1.4标准目前已经在ONF内部审阅,

预计2013年8月初将获得批准发布。

2011年3月,在Nick Mckeown教授等人的推动下,开放网络基金会ONF成立,主要致力于推动SDN架构、技术的规范和发展工作。ONF目前成员96家,其中创建该组织的核心会员有7家,分别是Google、Facebook、NTT、、Verizon、德国电信、微软、雅虎。

2011年4月,美国印第安纳大学、Internet2联盟与斯坦福大学Clean Slate项目宣布联手开展网络开发与部署行动计划(NDDI),旨在共同创建一个新的网络平台与配套软件,以革命性的新方式支持全球科学研究。NDDI利用了OpenFlow技术提供的“软件定义网络(SDN)”功能,并将提供一个可创建多个虚拟网络的通用基础设施,允许网络研究人员应用新的因特网协议与架构进行测试与实验,同时帮助领域科学家通过全球合作促进研究。

2011年12月,第一届开放网络峰会(Open Networking Summit)在北京召开,此次峰会邀请了国内外在SDN方面先行的企业介绍其在SDN方面的成功案例;同时世界顶级互联网、通信网络与IT设备集成商公司探讨了如何实现在全球数据中心部署基于SDN的硬件和软件,为OpenFlow和SDN在学术界和工业界做了很好的介绍和推广。

2012年4月,ONF发布了SDN白皮书(Software Defined Networking:The New Norm for Networks),其中的SDN三层模型获得了业界广泛认同。

2012年SDN完成了从实验技术向网络部署的重大跨越:覆盖美国上百所高校的INTERNET2部署SDN;德国电信等运营商开始开发和部署SDN;成功推出SDN商用产品新兴的创业公司在资本市场上备受瞩目,BIG switch两轮融资超过3800万元。

2012年4月,谷歌宣布其主干网络已经全面运行在OpenFlow上,并且通过10G网络链接分布在全球各地的12个数据中心,使广域线路的利用率从30%提升到接近饱和。从而证明了OpenFlow不再仅仅是停留在学术界的一个研究模型,而是已经完全具备了可以在产品环境中应用的技术成熟度。

2012年7月,软件定义网络(SDN)先驱者、开源政策网络虚拟化私人控股企业Nicira以12.6亿被VMware收购。Nicira是一家颠覆数据中心的创业公司,它基于开源技术OpenFlow创建了网络虚拟平台(NVP)。OpenFlow是Nicira联合创始人Martin Casado在斯坦福攻读博士学位期间创建的开源项目,Martin Casado的两位斯坦福大学教授Nick McKeown和Scott Shenker同时也成为了Nicira的创始人。VMware的收购将Casado十几年来所从事的技术研发全部变成了现实——把网络软件从硬件服务器中剥离出来,也是SDN走向市场的第一步。2012年,国家“863”项目“未来网络体系结构和创新环境” 获得科技部批准。它是一个符合SDN思想的项目主要由清华大学牵头负责,清华大学、中科院计算所、北邮、东南大学、北京大学等分别负责各课题,项目提出了未来网络体系结构创新环境FINE(Future Internet innovation Environment)。基于FINE体系结构,将支撑各种新型网络体系结构和IPv6新协议的研究试验。

2012年底,AT&T、英国电信(BT)、德国电信、Orange、意大利电信、西班牙电信公司和Verizon 联合发起成立了网络功能虚拟化产业联盟(Network Functions Virtualisation,NFV),旨在将SDN 的理念引入电信业。目前由52家网络运营商、电信设备供应商、IT设备供应商以及技术供应商组建。

2013年4月,思科和IBM联合微软、Big Switch、博科、思杰、戴尔、爱立信、富士通、英特尔、瞻博网络、微软、NEC、惠普、红帽和VMware等发起成立了Open Daylight,与LINUX 基金会合作,开发SDN控制器、南向/北向API等软件,旨在打破大厂商对网络硬件的垄断,驱动网络技术创新力,使网络管理更容易、更廉价。这个组织中只有SDN的供应商,没有SDN的用户——互联网或者运营商。目前,Open Daylight项目的范围包括SDN控制器,API 专有扩展等,并宣布要推出工业级的开源SDN控制器

2013年4月底,中国首个大型SDN会议——中国SDN大会在京召开,三大运营商唱起主角。

中国电信主导提出在现有网络(NGN)中引入SDN的需求和架构研究,已于今年2月成功立项S-NICE标准,“S-NICE”是在目前的智能管道中使用SDN技术的一种智能管道应用的特定形式。中国移动则提出了“SDN在WLAN网络上的应用”等课题。[1]

1 SDN的需求及驱动力

很多做网络的同仁在初次了解SDN(Software Defined Networking)的架构后都会产生一系列的疑问:1)SDN真正的客户需求在哪里,它到底能解决什么问题?2)集中控制和集中网管的本质区别是什么?3)它是不是和软交换差不多?这些疑问也不无道理,简单地将控制和转发分离之后难道就能产生诸多神奇的效果?我想说的是SDN一点也不神奇,它是来自于IT领域的一种必然需求,是过去60多年来IT越来越去硬件化,以软件获得功能灵活性的一种必然趋势。SDN不能化腐朽为神奇,而仅仅是能够为IT产业增加一个更加灵活的网络部件,在局部来看,它似乎是个颠覆性的实现技术,但是从总体来看它不改变现有网络的体系结构,它只是提供了一个设备供应商之外的企业、运营商能够控制网络自行创新的平台,使得网络创新的周期由数年降低到数周,换句话说,企业、运营商创新是为了满足最终内外部用户的需求,网络创新周期缩短了、简化了,也就意味他们的竞争力更强、他们的客户更加满意。SDN从最早的Ethane系统算起,至今已经4年多了,正是来自于不同群体的需求推动了其蓬勃的发展。

n 斯坦福SANE/Ethane项目

n 需求:提升企业网网络安全性,降低网络管理的复杂度

n 解决方案:用于企业网的集中控制管理,每个端点必须和网络进行认证,安全策略可以在单点进行控制,由网络设备负责执行策略。

n 校园网

n 需求:高校研究者的网络创新可以在校园网上实验而不必求助于设备提供商

n 解决方案:将网络设备的转发行为原语化,全部交由外部的计算机控制,研究者可以在基于通用操作系统的计算机上编程实现新的网络协议和转发行为,而不必修改转发面设备本身。OpenFlow由此而诞生。

n google、Facebook、Yahoo!等大型网络服务提供商

n 需求:1)大型数据中心(10K交换机)复杂的网络管理问题。2)云计算技术革新带来的对网络特性新的需求很难在短时间内满足,比如TRILL协议标准化用了7年,用户希望能网络特性增加能和自己修改软件特性一样快捷。3)IaaS服务所要求的资源调度包括对网络资源的动态按需调度,现有技术不能很好的满足。4)降低网络设备的成本。

n 解决方案:1)集中管理,网络设备即插即用、自动故障发现及流量切换、自动故障恢复处理。2)将网络的转发行为控制交由外部控制实体控制,并且这个外部实体是开放系统,Google、Facebook的工程师可以自己编程实现任何想要的网络特性,而不必去走提需求、标准化、测试、入网的冗长流程。3)网络资源池化,网络控制实体提供接口给应用,应用可以根据需要控制网络的转发行为。4)转发面设备标准化、同质化,将创新、差异化交给控制器软件,转发面成本如同PC一样可以大幅降低。

n 电信运营商

n 需求:1)缩短网络新功能的面市周期,希望CT创新也像互联网一样快捷、多样化。2)降低网络的管理成本。

n 解决方案:网络进一步软件化、通用化、集中化。

那么为什么不是网管来做到这一切。首先,目前没有一种网管是参与网络运行时的状态和策

略控制的,比如说你根据报文在线决策其转发策略。参与运行时在线控制的需要和运行系统同样的可靠性及合理的性能、时延保证,在电信系统中,可靠性要求是≥99.999%。其次,参与系统运行时流程的”网管”不是网管,它是某种形式的控制面。第三,有人说那有什么本质区别,我仍然认为那是网管,那么好吧,那是在线网管服务器,未来的网管。

2 SDN本质

说到SDN,必然提到OpenFlow,但是SDN不等于OpenFlow,就如同互联网不等于IP协议,PSTN不等于7号信令,IMS不等于SIP,WEB体系不等于HTTP协议一样。OpenFlow仅仅是SDN中控制器控制转发面设备的协议而已,控制器本身的架构、网络拓扑算法、运行环境、编程工具,以及和上层应用的集成技术都是SDN的一部分,并且是架构上更为核心的部分。打个比方,存储程序控制是冯.诺依曼计算机体系的核心理念,至于你采用何种CPU指令集倒是其次,你可以采用古老的ENIAC、IBM system360指令集,也可以用现代的IBM Power、x86、MIPS、ARM指令集,每一种计算机系统都是冯.诺依曼体系架构的一个实例。

当然,对于SDN而言,不能仅仅只有抽象的架构,一定要有具体的实现实例,因此业界选择了OpenFlow协议作为指令集,并围绕其来建立一系列的操作系统、软件、编译器、外设框架和实现。那么,业界为什么没有选择IETF定义的控制转发分离协议FORCES(Forwarding and Control Element Separation)而是选择了OpenFlow?我理解主要原因有两点1)forces设计初衷在于设备的转发控制分离,侧重于现有功能的建模,而不是用来创造新的网络特性。2)推进者的力量不同,forces由Intel发起,但是随后其卖出了NP,再无推进的决心,而OpenFlow 由硅谷的摇篮-斯坦福大学提出,由GENI项目通过试验床合同推进,进而吸引了Google、Facebook、微软这样多金的IT/互联网企业参与,最终形成了强大的产业联盟。理论上,我们也可以扩展forces实现类似的SDN功能,或者我们再定义其它的控制协议和转发模型来实现SDN,但是OpenFlow已经占住先机。

那么到底SDN的本质是什么?如前所述,SDN的本质就是让用户/应用可以通过软件编程充分控制网络的行为,让网络软件化,进而敏捷化。那么为什么网络需要软件化、敏捷化?当然是为了更加快速地满足最终客户的需求,附带地,降低Capex和Opex。也许有人会疑问,我的设备已经是可以软件编程,SDN有什么不同?当然不同。

Step 1:从设备提供商可编程转变为用户可编程

SDN通过将控制面从封闭的厂商设备中独立出来,并且可以完全控制转发面行为,使得新的网络协议的实现可以完全在控制面编程实现,而控制面是一个开放的、基于通用操作系统的可编程环境,目前的实现支持C++和Python脚本,不排除未来像Web编程一样支持多种脚本语言。故而有实力的IT/电信运营商/大型企业可以不求助于厂商和标准组织就自行实现新的功能。

Step2:从设备可编程转变为网络可编程

SDN的可编程不仅是针对单个网络节点而言的,而且是可以对整个网络进行编程,如下的图很好地阐述了这个理念。控制器具有全局的拓扑,可以计算任意端点之间的路由,并控制转发路径。同样其也可以控制每个端点的接入权限,无论你从那个节点接入,例如你可以将VLAN绑定、802.1x认证交由控制器实现,转发面设备完全不感知。

Step 3:网络和IT应用的无缝集成

如下的图中,通过虚拟数据中心管理器的协调,VDC业务开通、虚拟机的迁移、加载以及负载均衡和网络策略的迁移、生成可以实时联动,从而使IT服务响应速度、服务质量进一步提升。

更进一步的是,应用可以通过SDN Controller提供的接口为特定用户流量设置安全策略、QoS,比如屏蔽某个恶意攻击的用户MAC地址、为特定用户/应用预留带宽。

此外,SDN控制下的网络不再受制于OSPF/ISIS/TRILL/SPB这些标准协议本身的能力,如果需要,管理员可以在任何两个机架之间设置直达链路并立刻投入使用,不必受制于STP的限制,也不必受限于最新的ECMP(等价多路径)能力限制。

很多人争论OpenFlow的价值到底是Open还是Flow,其实Open是有一点,Flow完全是错误的起名,和大多数网络设备一样,你可以通过ACL管理到五元组的流,但是绝大部分的流量都是L2/L3的查表转发,对流量管理到何种颗粒度完全取决于应用的需求而不是技术本身。OpenFlow/SDN提供了从完全通配的缺省路由到十数元组的最细粒度流的查表转发,如何选择取决于应用场景。如果有一种设备必须按细粒度的流进行管理,那么那是安全设备,比如防火墙。

从SDN的形态来说,Open并产生价值的并不是转发设备和控制器之间OpenFlow接口,而是控制器和应用之间的接口,那是IT创新所需要的,当然OpenFlow协议是实现其价值的载体。

3 SDN博弈

SDN是来自于IT的力量推动了网络的变革,它是一种网络实现技术,和IPV6之于IPv4完全不同,SDN不改变主机可以看得见的转发面封装,它是现有网络协议/架构和未来网络的一种支持平台。它可能更像一种高级语言+编译器,可以用来实现你想要的应用软件,而不是另外一种新的功能性软件。

SDN带来了一种潜在的,令领先厂商害怕的可能性:标准化的转发面,由此带来的同质化竞争将使得网络硬件利润急剧下降。这种风险是存在的,而且是大概率的,但是必然有一部分利润要转移到芯片和控制器软件上,就如同PC的Intel和Microsoft一样,虽然这两个领域并不是100%相同。有人也许会想到控制器软件市场可能受到开源社区的侵蚀,我个人认为SDN控制器是网络的核心,其可靠性要求非常之高,除了极少数如同Google、Facebook、微软、Amazon这样的有能力进行网络软件开发维护的IT巨头外,大部分企业不可能基于开源软件构建商用的网络。

正是由于PC化的前景存在,Broadcom这样的芯片厂商以及SDN软件创业公司、网络供应商的后进者看到的是机会,而Cisco看到的可能是威胁,当然以Cisco的实力,拥抱这个转变将使得威胁微不足道。我个人非常希望Cisco彻底拒绝SDN,那将是其它公司的福音- 数百亿美元的市场将重新洗牌,我们也有机会,尤其是在企业网/数据中心市场。

过去的十年,我们见证了开放的Google的崛起,也见证了封闭的Apple的二次焕发青春,当然我们应该理解封闭并不是苹果的成功因素,聚焦并将事情做到极致才是其关键成功要素,模仿其软硬件+AppStore一体化的封闭商业模式无异于逆潮流而动,我们如果同时注意到DEC、SUN的衰落就不会模仿不可复制的苹果。同样我们也见证了VMware从一个名不见经传的小公司变为IT领域站在价值链顶端的巨人,云计算使得当年玩具一样的虚拟化技术成了IT的核心。另一方面我们也见证了固步自封,自取其辱的两个例子,一个是Nokia,另外一个是柯达,无视来自于消费者的市场力量,忽视或对抗大趋势,无论你曾经多么辉煌,都会被消费者所背弃。

SDN带来的变革不会太令人惊讶,虽然很多人将其和PC产业之于大型机/小型机相比,但是其面临的市场空间和目标客户均注定了其没有PC那样伟大,当然它的参与门槛也要高得多。如果强要和历史上曾经发生的某次变革相比较,我更倾向于将其类比于将虚拟化技术的兴起,有了服务器虚拟化,你不必关注你的计算/存储实体到底在何处,IT的整合和资源利用率提升成为可能;同样,有了SDN,你不必关注到底是什么样的黑盒子在转发流量,你只需

告诉SDN控制器我需要什么样的网络服务。

openflow协议1.3.0中文版

OpenFlow 交换机规范(概要) Version 1.3.0 (June 25, 2012) 1 介绍 本文档介绍的OpenFlow 交换机的要求。规范包括交换机的组件和基本功能,和OpenFlow 的协议,通过一个远程控制器来管理一个OpenFlow 的交换机。 2 交换机组成 OpenFlow 的交换机包括一个或多个流表和一组表,执行分组查找和转发,和到一个外部控制器OpenFlow 的信道(图1)。该交换机与控制器进行通信,并通过OpenFlow 的协议控制器管理的交换机。 控制器使用OpenFlow 的协议,它可以添加、更新和删除流流表中的表项,既主动或者被动响应数据包。 在交换机中的每个流表中包含的一组流 表项;每个流表项包含匹配字段,计数器和一组指令,用来匹配数据包(见5.2)。 匹配开始于第一个流程表,并可能会继续额外的流表 (见 5.1)。 流表项匹配数据包按照优先级的顺序,从每个表的第一个匹配表项开始(见5.3)。如果找到匹配的项,那么具体流表项按照指令去执行。 如果在流表中未找到 匹配项 ,结果取决于漏表的流表项配置:(例如, 数据包可被转发到OpenFlow 的信道控制器、丢弃、或者可以继续到下一个的流表,见5.4)。 指令与每个包含行动或修改流水线处理的流表项相联系(见 5.9)。 行动描述了数据包转发,数据包的修改和组表 处理。 流水线处理的指令允许数据包被发送到后面的表进行进一步的 处理 , 并允许信息以元数据的形式在表之间进行通信。当与一个匹配的流表项相 N.J.C.H

关联的指令集没有指向下一个表的时候,表流水线处理停止,这时该数据包通常被修改和 转发(见5.10)。 流表项可能包含数据包转发到某个端口。这通常是一个物理端口,但它也可能是由交换机 定义的一个逻辑端口或通过本规范中定义的一个保留的端口(见 4.1)。保留端口可以指 定通用的转发行为,如发送到控制器、泛洪、或使用非OpenFlow的方法转发。如 “ 普通” 交换机转发处理(见4.5);而交换机定义的逻辑端口,可以指定链路汇聚组,隧道或环回 接口(见4.4)。 流表项相关的行动,也可直接把数据包发送到组,进行额外的处理(见 5.6)。组表示一 组泛洪的指令集,以及更复杂的转发(如多路径,快速重路由,链路聚合)。作为间接的通 用层,组也使多个流表项转发到一个单一的标识符(例如一个共同的下一跳的IP转发)。 这种抽象的行为使相同的输出行动非常有效。 组表包含组表项,每个组表项包含了一系列依赖于组类型的特定规范的行动存储段(见5.6.1)。一个或多个操作的行动用来使数据包发送到该组。 假如将正确的匹配和指令规范保护起来,交换机设计者可以任意的实现内部结构。例如, 如果需要使用一个流表项将所有的组转发到多个端口,交换机设计师可以在硬件转发表中 用一个单一的位掩码去实现。另一个例子是匹配; 如果OpenFlow交换机使用用不同数量 的硬件表物理实现,那么流水线就会被暴露出来。 3 名词解释 本节介绍了关键OpenFlow的规范条款: ?字节:一个8位字节。 ?数据包:以太网帧,包括报头和有效载荷。 ?端口:数据包进入和退出OpenFlow的流水线地方(见4.1)。可以是一个物理端口,由 交换机定义一个逻辑端口,或由OpenFlow的协议定义一个保留端口。 ?流水线:在一个openflow交换机中提供匹配、转发和数据包修改功能的流表连接集合。 ?流表:流水线的一个阶段,包含若干流表项。 ?流表项:在流表中用于匹配和处理数据包的一个元素。它包含用于匹配数据包的匹配字段、匹配次序的优先级,跟踪数据包的计数器,以及对应的的指令集。 ?匹配字段:用来匹配数据包的字段,包括包头,进入端口,元数据值。匹配字段可能会 进行通配符匹配(匹配任何值)或者在某些情况下通过位掩码进行匹配。 ?元数据:一个可屏蔽寄存器的值,用于携带信息从一个表到下一个。 ?指令:指令存在于流表项中,描述报文匹配流表项时OpenFlow的处理方式。指令可以修 改流水线处理,如指导包匹配另一个流表,也可以包含一系列添加到行动集的行动,还可

Openflow 消息处理流程笔记

何腾飞2017.04.25更新 Openflow 消息处理 源码:sptn_code中ofp/dpa/tne模块。 简介:ofp模块接收sck的flow_mod消息,处理后发送给DPA, DPA处理后在发送给TNE。 以下消息处理过程均以flow_mod消息为例,*部分为group_mod消息的处理。*、Sck处理流程 sck_create_proc() sck_receive_proc() 一、Ofp处理流程 简介:接收SCK消息,发送给DPA。 File:ofpmain.c 1.ofp_create_proc() File:ofprecv.c 一系列初始化操作; 设置接收函数ofp_receive_proc() ; ... 2.ofp_receive_proc() in: ips消息,queue_id队列id 判断queue_id: Sck : 调用ofp_rcv_sck_ips(); ... 3.ofp_rcv_sck_ips() In: ips消息 判断ips_type消息类型: Sck_register; Sck_unregister; Sck_rsp; Sck_error; Sck_data; Openflow协议数据: ofp_message_reassemble() ; ofp_check_of_msg_list();

Netconf协议数据: ... Sck_close; 4.ofp_message_reassemble() 收到ofp消息后,首先需要存入ofp消息队列,此时先要判断是否需要新建一个ofp消息块节点or使用现有的LQE队列对应的ofp消息块节点, Ofp消息队列如下: 1---2---3---4---5---...---N 该消息队列为一个双向循环链表; N为全局变量v_ofp_shared->ofp_msgs始终不变;初始化时N.next和N.prev均指向N自身,N自身是没有数据域的(N.self==null); 有数据节点时,N.next始终指向第1个结点,N.prev始终指向最后1个结点; 故只有满足以下条件才不需要新建LQE节点: 1.队列为空(N.next == N时); 2.队列不为空但尾结点为NULL 代码实现如下, 解释:A --- B---N (N为当前的全局ofp消息的LQE )

openflow流表转发研究

openflow转发和流表分析 本文基于Openflow 1.3.1版本分析报文转发过程和流表设计。 1.Hub 这是Openflow Tutorial中的示例,用Openflow实现Hub功能:把一个端口接收到的报文广播到所有其他端口。 在Openflow tutorial的示例中,Switch把所有报文都发送给Controller,Switch本身没有流表项。Controller负责广播报文。 改进:Controller可以下发(Match *, Output ALL)的流表项,这样Hub流量就不必送Controller 了。 问题:在FlowVisor的环境下,为了实现网络Slice的隔离,Output ALL流表项是否需要修改?

2.Learning Switch 这是Openflow Tutorial中的示例,用Openflow实现Learning Switch功能。Learning Switch是经典的交换机二层转发。经典交换机二层转发的机制包含两部分,第一部分是源地址学习,第二部分是目的地址转发。 示例中,Controller实现了MAC Learning和MAC Forwarding,交换机则没有流表项,所有报文送Controller转发。 讨论:Controller是否可以把MAC表项下发到Switch(Match DMAC,Output PORT),让流量直接在Switch转发,而不用通过Controller? 分析:假设Controller把MAC转发表下发到Switch(Match DMAC,Output PORT),那么我们可以分析一下h2与h4之间的通信过程,以及交换机的流表变化: 1)h2发送ARP请求,DMAC为广播,SMAC为h2。 2)Switch接收到ARP请求,没有匹配的流表项,把报文转发给Controller 3)Controller通过ARP请求报文学习到h2的MAC地址,并把MAC表项下发给Switch。 4)Controller把ARP报文广播出去(Output ALL),ARP报文到达h4 5)h4发送ARP应答报文,SMAC为h4,DMAC为h2 6)Switch收到ARP应答报文,由于DMAC h2可以匹配到流表项,因此ARP应答被直接转 发到h2 7)此后,h2和h4之间的通信,仍然与上述ARP交互类似,即h2→h4通过Controller转发, h4→h2通过交换机直接转发 由上面的分析可以看到,当h2 ping h4时,h4→h2的反向流量能够直接在Switch转发,而h2→h4的正向流量则需要由Controller转发。原因在于h4→h2的反向流量没有机会被转发到Controller,使得Learning Switch学习不到h4的MAC。只有在其他情形下,使得h4的MAC能够被Controller学习到的时候,才能完全卸载Controller的流量。 结论:简单的把MAC table下发到Switch的做法不能有效的卸载Controller的流量处理压力。

Openflow协议通信流程解读

Openflow协议通信流程解读 前言 接触了这么久的SDN,Openflow协议前前后后也读过好多遍,但是一直没有时间总结一下自己的一些见解。现在有时间了,就写一写自己对Openflow协议通信流程的一些理解。 SDN中Switch和controller 在SDN中很重要的两个实体是Switch跟Controller。Controller在网络中相当于上帝,可以知道网络中所有的消息,可以给交换机下发指令。Switch就是一个实现Controller 指令的实体,只不过这个交换机跟传统的交换机不一样,他的转发规则由流表指定,而流表由控制器发送。

switch组成与传统交换机的差异 switch组成 switch由一个Secure Channel和一个flow table组成,of1.3之后table变成多级流表,有256级。而of1.0中table只在table0中。 ?Secure Channel是与控制器通信的模块,switch和controller之间的连接时通过socket连接实现。 ?Flow table里面存放这数据的转发规则,是switch的交换转发模块。数据进入switch之后,在table中寻找对应的flow进行匹配,并执行相应的action,若无匹配的flow则产生packet_in(后面有讲) of中sw与传统交换机的差异 ?匹配层次高达4层,可以匹配到端口,而传统交换机只是2层的设备。 ?运行of协议,实现许多路由器的功能,比如组播。 ?求补充!!(如果你知道,请告诉我,非常感谢!) openflow的switch可以从以下方式获得 ?实体of交换机,目前市场上有一些厂商已经制造出of交换机,但是普遍反映价格较贵!性能最好。 ?在实体机上安装OVS,OVS可以使计算机变成一个openflow交换机。性能相对稳定。

openflow协议以及协议的代码实现

openflow openflow协议

openflow协议 ?of 协议支持三种消息类型:controller-to-switch,asynchronous(异步)和symmetric(对称),每一类消息又有多个子消息类型。 ?controller-to-switch 消息由控制器发起,用来管理或获取switch 状态;?asynchronous 消息由switch 发起,用来将网络事件或交换机状态变化更新到控制器;?symmetric 消息可由交换机或控制器发起。

controller-to-switch ?Features ?在建立传输层安全会话(Transport Layer Security Session)的时候,控制器发送feature请求消息给交换机,交换机需要应答自身支持的功能。 ?Configuration ?控制器设置或查询交换机上的配置信息。交换机仅需要应答查询消息。?Modify-state ?控制器管理交换机流表项和端口状态等。 ?Read-state ?控制器向交换机请求一些诸如流、网包等统计信息。 ?Send-packet ?控制器通过交换机指定端口发出网包。 ?Barrier ?控制器确保消息依赖满足,或接收完成操作的通知

asynchronous ?Packet-in ?交换机收到一个网包,在流表中没有匹配项,则发送Packet-in 消息给控制器。如果交换机缓存足够多,网包被临时放在缓存中,网包的部分内容(默认128 字节)和在交换机缓存中的的序号也一同发给控制器;如果交换机缓存不足以存储网包,则将整个网包作为消息的附带内容发给控制器。 ?Flow-removed ?交换机中的流表项因为超时或修改等原因被删除掉,会触发Flow-removed 消息。 ?Port-status ?交换机端口状态发生变化时(例如down 掉),触发Port-status 消息。

Openflow Switch 测试方法学

Contents 1. Test case 1:测试Openflow 交换机的流表容量 (1) 2. Test case 2:测试Openflow 交换机的流表学习速率 (5) 3. Test case 3:测试Openflow 交换机的吞吐量,时延,抖动和丢包率 (12) 4. Test case 4:测试Openflow 交换机的流表震荡 (14) 1.Test case 1:测试Openflow交换机的流表容量 ?测试目的:测试Openflow交换机最多能支持的流表数量 ?测试拓扑: ?预配置(请注意,预配置部分是写本文需要,在OpenvSwitch上所做的配置。读者在用OVS做实验时候可参考此配置,实际测试则不需要进行此部分) 设置br1 的flow table 0 表项容量为100 Step 1:在OVS 的ovsdb中,在Bridge 表中,把br1 条目的flow_tables列中关联br1 的 flow_table 0, 并且在Flow_Table表中创建一行。 ovs-vsctl set Bridge br1 flow_tables:0=@table0 -- --id=@table0 create Flow_Table name=table0 查看Bridge表和Flow_Table表: [root@localhostmrzhao]# ovs-vsctl list bridge _uuid : c5601237-6574-465b-843f-ac52c61d5bad

Controller : [bca3710d-1280-44eb-8436-20bbe5c8161c] datapath_id : "0000000c2992086a" datapath_type : "" external_ids : {} fail_mode : [] flood_vlans : [] flow_tables : {0=bebe5b02-6216-4a8a-af5d-27f1dde2bf48} ipfix : [] mirrors : [] name : "br1" netflow : [] other_config : {} ports : [358480c2-0709-476d-8446-3020584454d0, 4f1a7238-d611-4345-8b06-83a62d414952, 5dd30471-07c4-4eac-90a1-0cf7d96e7b07, a4c3be4c-bda5-4686-af08-4e59d51040bd, eaf6eb05-0d95-4775-9abb-1b139469a9b9] protocols : [] sflow : [] status : {} stp_enable : false [root@localhostmrzhao]# ovs-vsctl list Flow_table _uuid : bebe5b02-6216-4a8a-af5d-27f1dde2bf48 external_ids : {} flow_limit : [] groups : [] name : "table0" overflow_policy : [] prefixes : [] Step 2:设置br1 的table0 的流表大小是100条流表项 ovs-vsctl set Flow_Table table0 flow_limit=100 查看流表项设置:

OpenFlow白皮书翻译

OpenFlow携手校园网创新 译者:北邮-李呈 Homepage: https://www.sodocs.net/doc/593121373.html, 摘要 本白皮书提出OpenFlow:一种为研究人员提供的可以在日常网络中运行协议的方式。OpenFlow基于拥有内部流表,并能通过标准接口添加和删除流表项的以太网交换机。我们的目标是鼓励网络厂商将OpenFlow部署在大学校园骨干网和配线间的交换机产品上。我们认为,OpenFlow的是一个有意义的折衷:一方面,它使研究人员能够以统一的方式在线速和高端口密度的交换机进行实验。而另一方面,厂商不必暴露自己的交换机内部工作细节。除了允许研究者在真实流量环境中评价他们的想法,在提出像GENI那样的大型测试平台的过程中OpenFlow还能是一个有用的校园组件。不久的将来斯坦福的两栋大楼会在商用以太网交换机和路由器上部署OpenFlow。我们会鼓励其他学校也部署OpenFlow,而且我们也会鼓励你考虑将OpenFlow部署到你的学校。 分类和主题描述 C.2[互联网络]:路由器 普通术语 实验,设计 关键词 以太网交换机,虚拟化,流 1、可编程网络的需求分析 网络已经成为公司,家庭,学校的重要的基础设施。这个成功对于网路研究者来说以一个福音也是一个诅咒。他们的工作将更有相关性,但是做出影响的机会也越来越遥远。在任何给定的网络中对现实世界的影响在减少的原因在于我们安装了大规模的设备和协议,而不愿对产生的流量做实验,这已经给创新设立了一个过高的门槛。今天,在足够逼真的设置下(例如,大规模引入真实流量),几乎没有实用的方法去做网络新协议的实验(比如新的路由协议,或IP的替代 协议),以获得将其广泛部署所需要的信心。所以导致网络研究界的大部分想法都是没有尝试和测试过的,因此人们普遍认为当今的网络基础设施已经僵化。

Openflow协议通信流程解读

Openflow协议通信流程解读 分类:openflow协议分析 2013-12-30 19:01887人阅读评论(1)收藏举报 目录(?)[-] 1前言 2SDN中Switch和controller 2switch组成与传统交换机的差异 2switch组成 2of中sw与传统交换机的差异 2openflow的switch可以从以下方式获得 2controller组成 3Openflow通信流程 3建立连接 3OFPT_HELLO 3OFPT_ERROR 3OFPT_ECHO 3OFPT_FEATURES 3OFPT_FEATURES_REQUEST 3OFPT_FEATURES_REPLY 3OFPT_PACKET_IN 3OFPT_PACKET_OUT 3OFPT_FLOW_MOD 3OFP_HEADER 3WILDCARDS 3MATCH

3FLOW_MOD 3command里面的类型决定了flow_mod的操作是添加 修改还是删除等类型如下 3两个时间参数idle_timeout idle_timeout 3priority 3buffer_id 3out_port 3flags 3ACTION 3OFPT_BARRIER_REQUEST REPLY 3OFPT_FLOW_REMOVED 3OFPT_STATS_REQUEST REPLY 3OFPT_STATS_REQUEST 3OFPT_STATS_REPLY 4后续 4ERROR 4Type 4Code 前言 接触了这么久的SDN,Openflow协议前前后后也读过好多遍,但是一直没有时间总结一下自己的一些见解。现在有时间了,就写一写自己对Openflow协议通信流程的一些理解。 SDN中Switch和controller 在SDN中很重要的两个实体是Switch跟Controller。Controller在网络中相当

openflow协议1.3.0中文版 - 完整版

OpenFlow交换机规范(概要) Version1.3.0(June25,2012) 1介绍 本文档描述了对OpenFlow交换机的要求。此规范内容包括交换机的组件和基本功能,和一个远程控制器管理一个OpenFlow交换机的协议:OpenFlow。 2交换机部件 OpenFlow的交换机包括一个或多个流表和一个组表,执行分组查找和转发,和到一个外部控制器OpenFlow的信道(图1)。该交换机与控制器进行通信,控制器通过OpenFlow协议来管理交换机。 控制器使用OpenFlow协议,可以添加、更新和删除流流表中的表项,主动或者被动响应数据包。在交换机中的每个流表中包含的一组流表项;每个流表项包含匹配字段,计数器和一组指令,用来匹配数据包(见5.2)。 匹配从第一个流表开始,并可能会继续匹配其它流表(见5.1)。流表项匹配数据包是按照优先级的顺序,从每个表的第一个匹配项开始(见5.3)。如果找到一个匹配项,那么与流表项相关的指令就会去执行。如果在流表中未找到匹配项,结果取决于漏表的流表项配置:(例如,数据包可能通过OpenFlow信道被转发到控制器、丢弃、或者可以继续到下一个的流表,见5.4)。 与流表项相关联的指令包含行动或修改流水线处理(见5.9)。行动指令描述了数据包转发,数据包的修改和组表处理。流水线处理指令允许数据包被发送到后面的表进行进一步的处理,并允许信息以元数据的形式在表之间进行通信。当与一个匹配的流表项相关联的指令集没有指向下一个表的时候,表流水线停止处理,这时该数据包通常会被修改和转发(见5.10)。 流表项可能把数据包转发到某个端口。这通常是一个物理端口,但它也可能是由交换机定义的一个逻辑端口或通过本规范中定义的一个保留的端口(见4.1)。保留端口可以指定通用的转发行为,如发送到控制器、泛洪、或使用非OpenFlow的方法转发,如“普通”交换机转发处理(见4.5);而交换机定义的逻辑端口,可以是指定的链路汇聚组、隧道或环回接口(见4.4)。 与流表项相关的行动,也可直接把数据包发送到组,进行额外的处理(见5.6)。组表示一组泛洪的指令集,以及更复杂的转发(如多路径,快速重路由,链路聚合)。作为间接的通用层,组也使多个流表项转发到同一个标识者(例如IP转发到一个共同的下一跳)。这种抽象的行为使相同的输出行动非常有效。 组表包含若干组表项,每个组表项包含一系列依赖于组类型的特定含义行动存储段(见

OpenFlow 交换机规范

OpenFlow 交换机规范(概要) 1 介绍 本文档介绍的OpenFlow交换机的要求。规范包括交换机的组件和基本功能,和OpenFlow的协议,通过一个远程控制器来管理一个OpenFlow的交换机。 2 交换机组成 OpenFlow 的交换机包括一个或多个流表和一组表,执行分组查找和转发,和到一个外部控制器 OpenFlow 的信道(图 1)。该交换机与控制器进行通信,并通过 OpenFlow 的协议控制器管理的交换机。 控制器使用 OpenFlow 的协议,它可以添加、更新和删除流流表中的表项,既主动或者被动响应数据包。在交换机中的每个流表中包含的一组流表项;每个流表项包含匹配字段,计数器和一组指令,用来匹配数据包(见 5.2)。 匹配开始于第一个流程表,并可能会继续额外的流表 (见 5.1)。流表项匹配数据包按照优先级的顺序,从每个表的第一个匹配表项开始(见 5.3)。如果找到匹配的项,那么具体流表项按照指令去执行。如果在流表中未找到匹配项,结果取决于漏表的流表项配置:(例如,数据包可被转发到 OpenFlow 的信道控制器、丢弃、或者可以继续到下一个的流表,见 5.4)。 指令与每个包含行动或修改流水线处理的流表项相联系(见 5.9)。行动描述了数据包转发,数据包的修改和组表处理。流水线处理的指令允许数据包被发送到后面的表进行进一步的处理,并允许信息以元数据的形式在表之间进行通信。当与一个匹配的流表项相 N.J.C.H 关联的指令集没有指向下一个表的时候,表流水线处理停止,这时该数据包通常被修改和转发(见 5.10)。 流表项可能包含数据包转发到某个端口。这通常是一个物理端口,但它也可能是由交换机定义的一个逻辑端口或通过本规范中定义的一个保留的端口(见4.1)。保留端口可以指定通用的转发行为,如发送到控制器、泛洪、或使用非 OpenFlow 的方法转发。如“ 普通” 交换机转发处理(见 4.5);而交换机定义的逻辑端口,可以指定链路汇聚组,隧道或环回接口(见 4.4)。 流表项相关的行动,也可直接把数据包发送到组,进行额外的处理(见 5.6)。组表示一组泛洪的指令集,以及更复杂的转发(如多路径,快速重路由,链路聚合)。作为间接的通用层,组也使多个流表项转发到一个单一的标识符(例如一个共同的下一跳的 IP 转发)。这种抽象的行为使相同的输出行动非常有效。 组表包含组表项,每个组表项包含了一系列依赖于组类型的特定规范的行动存储段(见 5.6.1)。一个或多个操作的行动用来使数据包发送到该组。 假如将正确的匹配和指令规范保护起来,交换机设计者可以任意的实现内部结构。例如,如果需要使用一个流表项将所有的组转发到多个端口,交换机设计师可以在硬件转发表中用一个单一的位掩码去实现。另一个例子是匹配; 如果OpenFlow 交换机使用用不同数量的硬件表物理实现,那么流水线就会被暴露出来。 3 名词解释 本节介绍了关键 OpenFlow 的规范条款: ? 字节:一个 8 位字节。 ? 数据包:以太网帧,包括报头和有效载荷。 ? 端口:数据包进入和退出 OpenFlow 的流水线地方(见 4.1)。可以是一个物理端口,由交换机定义一个逻辑端口,或由 OpenFlow 的协议定义一个保留端

OpenFlow技术白皮书-V1.0

OpenFlow技术白皮书-V1.0 神州数码网络有限公司

目录 1.概述 (1) 2.缩写和术语 (2) 3.技术介绍 (2) 3.1O PEN F LOW交换机架构 (2) 3.2O PEN F LOW连接维护 (3) 3.3O PEN F LOW控制VLAN (3) 3.4规则处理 (3) 3.4.1规则匹配字段 (3) 3.4.2规则动作 (4) 3.4.3规则维护 (4) 3.4.4规则老化 (4) 3.5报文转发 (4) 3.6二层GRE隧道(L2OVERGRE) (4) 3.7Q O S (5) 3.8交换机信息收集 (5) 3.8.1端口信息 (5) 3.8.2统计信息 (5) 4.主要特性 (5) 5.技术特色与优势 (5) 6.典型应用指南 (6) 6.1OPENFLOW交换机基本配置举例 (6) 6.1.1组网需求 (6) 6.1.2配置思路 (6) 6.1.3配置步骤 .............................................................................................................. 错误!未定义书签。 6.2OPENFLOW IP V4L2OVERGRE隧道配置举例 (7) 6.2.1组网需求 (7) 6.2.2配置思路 (8) 6.2.3配置步骤 .............................................................................................................. 错误!未定义书签。

openflow协议通信流程

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 openflow协议通信流程 甲方:___________________ 乙方:___________________ 日期:___________________

openflow协议通信流程 篇一:openflow协议通信流程解读 openflow协议通信流程解读 前言 接触了这么久的sdn , openflow协议前前后后也读过好多遍,但是一直没有时间总结一下自己的一些见解。现在有时间了,就写一写自己对openflow协议通信流程的一些理解。 sdn 中switch 和controller 在sdn中很重要的两个实体是switch 跟controller 。 controller 在网络中相当于上帝,可以知道网络中所有的消 息,可以给交换机下发指令。switch就是一个实现 controller 指令的实体,只不过这个交换机跟传统的交换机不一样,他的转发规则由流表指定,而流表由控制器发送。 switch组成与传统交换机的差异 switch 组成 switch 由一个securechannel 和一个flowtable 组成, of1.3之后table变成多级流表,有256级。而of1.0中table 只在table0 中。securechannel是与控制器通信的模块, switch和controller 之间的连接时通过socket连接实现。

Flowtable里面存放这数据的转发规则,是switch的交 换转发模块。数据进入switch之后,在table中寻找对应 的flow 进行匹配,并执行相应的action,若无匹配的flow 则产生packet_in (后面有讲) of中sw与传统交换机的差异 匹配层次高达4层,可以匹配到端口,而传统交换机只 是2层的设备。 运行of协议,实现许多路由器的功能,比如组播。 求补充!!(如果你知道,请告诉我,非常感谢!) openflow 的switch可以从以下方式获得 实体of交换机,目前市场上有一些厂商已经制造出of 交换机,但是普遍反映价格较贵!性能最好。 在实体机上安装oVs, oVs可以使计算机变成一个openflow交换机。性能相对稳定。 使用mininet模拟环境。可以搭建许多交换机,任意拓 扑,搭建拓扑具体教程本 博客有一篇。性能依赖虚拟机的性能。 controller 组成 控制器有许多种,不同的语言,如python写的pox,ryu , 如java写的floodlight 等等。从功能层面controller 分 为以下几个模块:底层通信模块:openflow中目前

OpenFlow关键技术的介绍

OpenFlow关键技术的介绍 Openflow简介 OpenFlow标准的名称是OpenFlow Switch Specification,因此它本身是一份设备规范,其中规定了作为SDN基础设施层转发设备的OpenFlow交换机的基本组件和功能要求,以及用于由远程控制器对交换机进行控制的OpenFlow协议。 图1-1 SDN (OpenFlow) Architecture OpenFlow交换机利用基于安全连接的OpenFlow协议与远程控制器相通信。其中,流表(Flow Table)是OpenFlow交换机的关键组件,负责数据包的高速查询和转发。 流表概念 在OpenFlow v1.1和v1.2中,交换机中的流表项虽然还是由三部分组成,但是相应的名称已经发生了变化。其中,v1.0中定义的包头域(Header Fields)和动作(Actions)被分别更名为匹配域(Match Fields)和指令(Instructions)。之所以对包头域进行改名,是因为流表项中的入端口等元组信息并不是属于数据包头的内容,因此将其改为匹配域将更为确切。而使用指令一词替代动作,则主要是因为OpenFlow交换机中多流表的引入。在多流表场景中,虽然数据包在前一流表中出现了匹配,但是交换机后续的操作仍旧可能是将其转到下一流表中继续进行匹配,而并非像v1.0一样马上依照流表动作对数据包做具体操作。因此,新版本的OpenFlow将相关的动作统一更名为指令。OpenFlow v1.1和v1.2中定义的流表结构如图1-2所示。

图1-2 OpenFlow v1.1和v1.2的流表结构 而在OpenFlow v1.3之后,流表结构的内容又一次发生了变化,增加了优先级(Priority)、超时定时器(Timeouts)和Cookie等内容,从而将原来流表结构中的三部分扩展至六部分,如图1-3所示。 图1-3 OpenFlow v1.3的流表结构 如图1-3所示,OpenFlow v1.3的流表结构的各个域的说明如下。 匹配域:对数据包匹配。包括入端口和数据包报头,以及由前一个表指定的可选的元数据。 优先级:流表项的匹配次序。 计数器:更新匹配数据包的计数。 指令:修改动作集或流水线处理。 超时定时器:一个流的最长有效时间或最大空闲时间。 Cookie:由控制器选择的不透明数据值。控制器用来过滤流统计数据、流改变和流删除。但处理数据包时不能使用。 Openflow关键技术 OpenFlow提供了一个开放的协议,用户可以通过该协议对不同的交换机中的流表进行控制。研究者可以通过选择数据转发通路以及它们需要怎样的处理来轻松地控制数据流的走向。通过这种方式,研宄人员可以在网络中尝试创新型的路由协议、安全网络模型、新型网络服务、甚至可以用其替换现有的TCP/IP协议。一个完整的OpenFlow网络是由一个OpenFlow 控制器和一个或者多个OpenFlow交换机组成。 OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。OpenFlow 交换机接收到数据包后,首先会在本地的流表上查找转发端口,如果没有匹配,则把数据包转发给控制器,由控制层决定转发端口。OpenFlow交换机主要由三个部分组成:交换机中的流表、与远程控制器连接的安全通道、连接交换机与控制器之间通信使用的标准OpenFlow协议: (1)交换机流表表中的每一个表项包含一个动作,Flow按表项匹配后执行相应的动作。 (2)安全通道连接交换机和控制器的接口,实现控制器和交换机之间网络数据包以及交互指令的传输。 (3)OpenFlow协议描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机接口标准。 OpenFlow交换机具体工作原理如下: (1)开启OpenFlow控制器,通过安全通道与OpenFlow交换机进行信息交互并完成连接。 (2) OpenFlow交换机中的流表中可以保存若干流表项,每个流表项由匹配域,计数器和动作组成。 (3)数据流进入OpenFlow交换机后根据流表项中的匹配域进行匹配,找到流表项的数据流修改计数值,然后OpenFlow交换机根据查询的动作对数据包进行处理。

OpenFlow无线

OpenFlow无线 目录 1 OPenRoads架构 2 设置和安装 2.1 物理设备 2.2 网络切片 2.3 控制器| API 3 工具 4 示范应用程序 5 人 6 刊物 OpenRoads(或OpenFlow无线)是一个创新和现实部署服务的平台。建立在OpenFlow 上,OpenRoads可以被分析为以下方面。 1.OpenFlow提供了一个软件定义的网络机制。但是,在一个拥有创新平台的机制上会出现障碍,OpenRoads通过为他人提供一个完整的平台去部署和创新降低了这种障碍。 2.虽然通过移动通信服务的大量调查,但是很难核查。无线信道是难以仿真的,并且现实用户的流量/运动对于可靠地确认一个想法的可行性是很重要的, 但是现实的用户流量却是很难被效仿。通过允许在我们创造的网络中进行研究,OpenRoads可以使上述亮点在网络中完成。 3.不同无线技术之间的切换在今天来说还是很难完成的,这是由于它们每一个都是围绕一个单一的无线技术建立的,因此他们拥有不同的回程网络。通过将这些网络“扁平化”,我们表明,不同的无线网络之间的切换可以用一个简单的方法在OpenRoads上实现。OpenRoads架构 OpenRoads的体系结构包括了很多层,即物理层,网络虚拟化/切片层和控制器层。虽然对底层的理解是很重要的,但是许多的研究可以被一个建立在控制器(controller)上的单一程序完成。这一点可以由下图看出。

更多有关此平台的描述可以从其他出版物中了解到。我们主要关注提供指导和不同组件间相互关联的信息。 设置和安装 物理设备 下述的设备已经被用于OpenRoads 1.来自NEC和惠普的OpenFlow以太交换机 2.带有PC引擎的OpenFlow无线网络接入点(AP) 硬件:大部分部件是从Mini-box和/或Netgate购买的,主要如下: ?Motherboard (PCEngine Alix3d2) : netgate minibox ?Outdoor Enclosure : netgate minibox ?Mini PCI WiFi card (802.11b/g): netgate minibox o At the time of our purchase, linux 802.11n driver was not ready. This card uses the same chip as ours but has higher transmission power. ?Power Adaptor : netgate minibox ?Passive POE injector : netgate minibox ?Antenna : I-com ?Pigtail : streakwave ?Serial DB9(F) to RJ45 Adapter : sfcable ?CF card (We used 2GB CF card) 设置和安装 1)我们提供了磁盘影像(disk image)。 2)SNMP Installation

openflow协议标准

OpenFlow Switch Speci?cation Version0.8.9(Wire Protocol0x97) December2,2008 Current Maintainer:Brandon Heller(brandonh@https://www.sodocs.net/doc/593121373.html,) 1Introduction This document describes the requirements of an OpenFlow Switch.We rec-ommend that you read the latest version of the OpenFlow whitepaper before reading this speci?cation.The whitepaper is available on the OpenFlow Con-sortium website(https://www.sodocs.net/doc/593121373.html,).This speci?cation covers the components and the basic functions of the switch,and the OpenFlow protocol to manage an OpenFlow switch from a remote controller. OpenFlow Switches will be of“Type0”or“Type1”,depending on their ca-pabilities.Type0represents the minimum requirements for any conforming OpenFlow Switch.Type1requirements will be a superset of Type0,and re-main to be de?ned.It is expected that commercial OpenFlow Switches will initially be of Type0,evolving to Type1;and that vendors will support addi-tional features over time.However,all switches are expected to use the same OpenFlow Protocol for communication between switch and controller.For the remainder of this version of the document,unless otherwise speci?ed,all refer-ences to an OpenFlow Switch refer to Type0. Version1.0of this document will be the?rst to specify a Type0switch suit-able for implementation.Versions before Version1.0will be marked“Draft”, and will include the header:“Do not build a switch from this speci?cation!”We hope to generate feedback from versions prior to Version1.0from switch designers and network researchers. 2Switch Components An OpenFlow Switch consists of a?ow table,which performs packet lookup and forwarding,and a secure channel to an external controller(Figure1).The con-troller manages the switch over the secure channel using the OpenFlow protocol. 1

OpenFlow1.3协议总结

OpenFlow1.3协议总结 OpenFlow1.3协议总结 (1) 1介绍 (4) 2交换机组成 (4) 3名称解释 (4) 4端口 (4) 5OpenFlow表 (5) 5.1Pipeline处理 (5) 5.2Flow Table (6) 5.3Match (6) 5.4Table-miss (6) 5.5流表项删除 (6) 5.6组表 (7) 5.7Meter Table (7) 5.8Counters (8) 5.9Instructions (8) 6OpenFlow1.3版本协议新增消息 (10) 7OpenFlow Protocol (10) 7.1OpenFlow Header (10) ofp_header (10) 7.2Common Structures (11) 7.2.1端口 (11) ofp_port (12) 7.2.2队列 (14) ofp_packet_queue (14) 7.2.3匹配域 (15) struct ofp_match (15) ofp_oxm_experimenter_header (17) 7.2.4Flow Instruction Structures (17) ofp_instruction (17) ofp_instruction_goto_table (17) ofp_instruction_write_metadata (17) ofp_instruction_actions (17) ofp_instruction_meter (18) ofp_instruction_experimenter (18) 7.2.5Action Structures (18) ofp_action_header (18) ofp_action_output (18) ofp_action_group (19) ofp_action_set_queue (19) ofp_action_mpls_ttl (19)

相关主题