SDN的特点之一就是控制平面与数据平面分离,其主张通过集中式的控制器平台实现网络的控制。在SDN架构中,控制平面是逻辑集中的,通过某种协议将控制信息下发至底层的数据平面去执行。所以,控制平台被称为SDN的大脑,指挥整个数据网络的运行。
得益于集中控制的优势,控制平面的存在使得网络的部署和配置更加智能和简化。支持编程的SDN控制平面使得网络更加智能,更加灵活和易于拓展。控制器通过SDN的南向协议的API可以对数据层面的网元设备下发指令,完成控制平面与数据平面的控制传输。目前,在SDN领域中,OpenFlow协议是***的南向协议之一。2008年,SDN和OpenFlow一起诞生于斯坦福大学。
SDN出现初期,控制平面的表现形式更多的是以单实例的控制器出现。实现SDN的协议也是以OpenFlow为主,所以在SDN发展初期,SDN控制器更多指的是OpenFlow控制器。SDN出现之后,ONF成立。ONF(Open Network Foundation),中文名为“开放网络基金会” ,是致力于推进SDN标准化的一个用户驱动的组织。在ONF的白皮书中,提出了SDN的架构标准,SDN架构1.0版本和1.1版本分别如图1和 图2所示。
图1 SDN网络架构1.0版本
图2 SDN网络架构1.1版本
***款SDN控制器是NOX,目前NOX的社区状态已经不再活跃。在早期的SDN论文中,NOX作为唯一的控制器,发挥了重要的作用。NOX给后来的控制器开发提供了很好的范例,高层级的编程架构。然而,由于其使用C语言编写,给开发SDN应用带来了许多困难,逐渐在控制器竞争中失去优势。在NOX出现不久之后,其兄弟版本POX面世。POX的内部机制和NOX一样,但是采用Python语言开发。在SDN发展初期,POX也扮演了相当重要的角色,许多SDN学习者都接触过POX。POX因其简单,易入门而得到广泛的关注和使用,成为SDN入门,学习SDN控制器的很好选择。然而,随着技术的发展,更多优秀的控制器,如2012年采用Python语言开发的控制器代表Ryu,2013年采用Java语言开发的控制器代表FloodLight等纷纷涌现。他们具有更加成熟的架构,更加优秀的性能,相比之下,POX不具有优势,慢慢在控制器的竞争中处于下风。目前POX的开源社区还是活跃状态,由Murphy McCauley继续运营社区。
Ryu是日本NTT公司开发的模块化的控制器。Ryu因其架构清晰,支持OpenFlow全部版本,有社区的Plug-in集成到OpenStack,性能良好和文档齐全等优点获得了许多SDN研究者的关注。同样,在Beacon上改进而来的FloodLight,以其企业级别的优秀性能,开发效率更高的Java语言,模块化的设计等优点得到了喜欢Java语言的SDN研究者的青睐。此时的SDN控制器侧重于提升单例性能,支持的南向协议也是以OpenFlow为主。笔者认为可以称之为OpenFlow式SDN的控制器发展中期。然而这个时期非常短。
SDN经过几年的发展,成为趋势的势头逐渐浮出水面。SDN控制器的发展也因一个重要的SDN“控制器”而展开新的篇章。2013年,由Linux Foundation和多家网络巨头如Cisco、Juniper和Broadcom等公司一起创立的开源项目OpenDaylight。其赞助商、发起者多为设备厂商而非运营商等消费者,其目的在于推出一个通用的SDN控制平台。OpenDaylight不仅仅是一个SDN控制器,它更是一个庞大的开源项目,其中包含许多子项目,而Controller只是其中的一个子项目。OpenDaylight支持多种南向协议,包括OpenFlow(支持1.0和1.3版本)、Netconf和OVSDB等,是一个广义的SDN控制平台,而不是OpenFlow系的狭义SDN控制器。
OpenDaylight的诞生意味着SDN进入一个崭新的时期。此时SDN的概念发生了改变。SDN控制器应支持多南向协议,而不仅仅局限于OpenFlow,当然这给我们带来了很多想象空间,会被巨头引导走向不够开放的另一端吗?SDN控制器应该支持分布式集群,即单实例的控制器变成了分布式的控制平台。分布式的控制平台不仅可以管理更大的网络,性能更好,还可以相互容灾备份,提升系统的可靠性。在分布式系统盛行的今天,SDN控制器虽逻辑集中但也需要架构上分布。OpenDaylight的社区的会员很多,早期的会员多为设备商。各个厂商均竭尽所能得把自己的思想,产品放到OpenDaylight项目中,如Cisco的OpFlex。虽然多家厂商参与社区的维护和OpenDaylight的开发,但是大多数项目还是Cisco在主导开发。在角力的过程中,有的企业就会有其他的打算,如Big Switch Networks推出OpenDaylight, Juniper将经历转向了自己的Open Contrial。 OpenContrial是Juniper的商业控制器Contrial的开源版本,其使用C++语言编写,支持OpenFlow协议和Netconf等南向协议。不过相比之下也有跟进的企业,如HP,就增加了对OpenDaylight的投入,将自己升级到了铂金会员。Huawei则兵分多路,一部分人开OpenDaylight,另一部分人则参与了新生代的控制平台ONOS的开发,还有其他很大一部分人在进行华为敏捷智能网络控制器SNC的开发。虽然OpenDaylight社区势力众多,但是这并不影响OpenDaylight的性能和在SDN研究者心目中的地位,OpenDaylight依然凭借自己社区强大的技术,在SDN控制器的竞争中成为***有影响力的控制器之一。许多企业在自己的产品中或者网络中使用到了OpenDaylight, 比如Brocade一直推基于OpenDaylight的商业控制器Vyatta。腾讯也在***的技术分享中提到使用了OpenDaylight管理自己的数据中心网络。
从2013年底到2014年底这段时间内,OpenDaylight可谓风光***,提到SDN几乎都会提到OpenDaylight,仿佛OpenDaylight就是SDN控制器的最终形态和最终归属。这一局面,在2014年12月5日被打破了。由On.Lab开发的ONOS面世了。ONOS(Open Network Operating System)是一款同样采用Java语言编写,采用OSGi架构,同样分布式的控制平台产品。其目标是打造一个开放的SDN网络操作系统,市场定位在运行商级别网络市场。ONOS底层模块直接借用FloodLight优秀的模块如Switch模块,不使用YANG语言建模,***版本使用Raft作为分布式框架。突然之间,OpenDaylight遇到了竞争对手。虽然截至2015年之前,并没有使用ONOS的案例,但是在未来,凭借自身的优秀性能,ONOS可以取得一部分市场。
SDN开源控制器除了这些比较出名的之外,也有其他用户比较少的控制器,如Trame,FlowER, LOOM等。笔者参考SDxCentral***的SDN控制器的数据,将目前SDN开源控制器是否活跃情况列举如下表,先后顺序无关。
然而目前最神秘,最出名的控制应该不是以上提到的任何一个控制器,而是Google的分布式控制器ONIX,ONIX目前没有开源,相关资料非常少。目前由Nicira、NTT和Google共同开发。2013年,Google在SIGCOMM上发表了论文《B4:ExperiencewithaGlobally-DeployedSoftwareDefinedWAN》,论文介绍了Google的WAN加速SDN方案,其中使用的控制器就是ONIX。论文发布时,B4已经运行了3年,除了发生过Datapath_id相同导致的错误意外,基本正常运行。该方案将带宽利用率提升到了接近100%的恐怖利用率。也即2010年Google已经开发出了整套方案,然后上线运行,很明显,Google和整个技术发展不在一个时期,这个案例也是SDN支持者心中的最有力的论据。
除了ONIX之外,还有许多闭源的商业控制器,如HP的VAN(VirtualApplicationsNetworks)控制器,武汉绿网的GNflush等,更多商业控制器的内容可参考SDxCentral的SDN-Controller-Report2015B。
影响SDN控制器发展的因素除了技术因素以外,还有重要的非技术因素,如行业企业对技术的态度等。企业在制定SDN战略时都是从自身的利益出发的,这些战略很大程度上影响着SDN的发展。在一项技术的发展过程中,行业巨头等企业的战略等非技术因素会对技术的发展曲线,发展方向产生非常大的影响。
自SDN发展以来,业界声音不一。支持者声称这将改变传统网络,打破目前固化的网络架构,带来更灵活,更智能的网络;而反对者则认为这并没有良好的发展前途,因为分布式的优点足以支撑目前的网络运行,而SDN所提倡的集中式虽有优点,但劣势多于优势。这些声音代表了不同利益阵营,所以处于不同利益阵营的企业对SDN的态度也不一而足。如传统巨头Cisco,态度就很微妙。对于Cisco而言,如果不支持SDN,那么万一SDN真成为下一个潮流,那么市场损失过大,影响行业地位。如果完全支持,那么在SDN这个崭新的战场,市场重新布局,门槛降低,更多竞争者进入,且追赶者Huawei等企业也会趁机大力发展SDN,最终SDN格局还无法明朗。所以Cisco一方面投入研发精力研究SDN,另一方面,剑走偏锋,推出自己的ACI(ApplicationCentricInfrustructure),企图另辟蹊径占领SDN市场。ACI也是一种广义上的SDN。其控制器为APIC(ApplicationPolicyInfrastructureController),但他区别于我们所理解的之前提到的控制器,他并不负责指挥数据层面如何转发流量,所以在ACI中,底层设备Nexus9000才是重点,而非控制器。其使用的南向协议也避开了OpenFlow,而使用了私有协议OpFlex。如此一来,成功避开了SDN白牌交换机的冲击,成功将战场引到了拥有技术壁垒的数据层面产品上。
对于传统网络行业巨头而言,目前稳定市场布局对自己有利,自然不希望新技术打破这一平衡,所以他们对于SDN的态度往往是不够积极。但是为了防止新技术的冲击,他们一定会跟进,也一定会想办法推出兼容产品或者竞争产品,力图在新技术市场上占据有利地位。除了投入研发精力跟进外,还会对有希望的创业公司进行技术收购。若创业公司成长壮大,那么收购是成功的,如果创业公司失败,那也没有太大关系,这笔投资对于巨头而言并不是大事。技术收购的策略在技术发展过程经常被使用,所以近些年关于SDN创业公司被收购的新闻屡见不鲜,相信在SDN发展的道路上,技术收购还会继续发生。
对于第二阵营或者新技术公司而言,必然大力支持SDN的发展。如Huawei大力投入研发精力研发SDN相关产品。不仅在开源项目方面参与OpenDaylight项目,还参与ONOS项目,一方面,跟进OpenDaylight项目不落后,另一方面,企图通过ONOS项目来争取更多的市场。此外,Huawei也大力发展SNC控制器等SDN产品。和Huawei类似的,HP也在投入经历发展SDN,不仅推出了自己的SDN控制器产品,也推出了SDN交换机等数据平面产品。新技术公司方面,国内的盛科,国外的PICA8等交换机厂家已经抓住SDN发展的机会,推出了许多数据平面产品,占据了一定的SDN市场。配套的数据平面产品的推出必将推动SDN控制平面的发展及落地。
SDN的发展也给更多的其他领域的竞争者入足的机会,虚拟化产品巨头VMware就是一个很好的例子。瞄准SDN的市场之后,VMware收购了创业公司Nicira,在其NetworkVirtualizationPlatform(NVP)的基础之上,结合自己的vCloudNetworkingandSecurity(vCNS)推出了NSX,从而占据了数据中心网络虚拟化的一部分市场,加入了SDN市场的竞争。新的SDN产品的推出,也给业界推动SDN发展的信心,从而促进SDN控制平台的发展。
笔者认为,随着技术的发展,网络规模的扩大,SDN控制器将出现分级分域的概念,多控制器之间将出现协同工作的功能。即管理不同网络的控制器运行对应的应用,而不同控制器之间通过东西向接口进行信息同步,从而完成全网的管理。目前在OpenDaylight中实现的SDNi协议即是一种SDN东西向协议的实现方法。未来的SDN控制平面应该是局域集群,全局分级的架构。此外,未来的SDN控制平台会成为网络操作系统形式的存在,目前ONOS就是网络操作系统的示范。除此之外,SDN控制平台将和OpenStack等云管理平台整合运作,这也是当下控制器的一个趋势之一。虽然开发者可以在SDN控制平面上开发部署很多应用,但是未来的SDN控制器将面对特定的网络运行特定的应用,而不会运行全部的应用,甚至于根据不同场景,出现不同的版本的控制平台。
SDN控制器的竞争最终会优胜劣汰,剩下几款经典的控制器分别占领不同的市场,正如当下的计算机操作系统一般。即不会有任何一款控制器垄断整个市场,不同的控制器将会相互竞争相互促进。此外,短期之内OpenFlow不会失去竞争力,但最终同样会存在多种南向协议相互竞争,竞争是常态,是技术发展的源泉。