大家好,很高兴能跟大家分享这个主题,我先自我介绍一下,我叫肖宏辉,来自华为,OpenStack是非常出名的开源云平台,在云计算里面主要资源是计算、存储和网络,今天我们这个主题是讲OpenStack网络,也就是SDN。OpenStack不用介绍了,我们先来看看SDN,SDN总结起来可以说有两个特点,一个是网络资源可编程规制,具体来说是把网络设备做成软件可控,因为在传统机房里,如果我们要改动一个网络设备,需要到机房里面插拔一个设备,但是通过SDN我们可以通过软件控制实现这个功能。第二是控制层面和转发层面的分离,通过这样的分离,能够提升网络整体的把控能力。说到SDN,不得不说OpenFlow,它是OpenStack里面具代表性的协议,是斯坦福大学提出的协议,大家有些地方可能会说OpenFlow和SDN是等同的,我个人认为基于OpenFlow的SDN是狭义的SDN。我们现在看一下OpenStack Neutron,Neutron大体上可以分为两部分,API是整个数据模型的进程,也就是说,整个OpenStack环境里所有网络信息,都是从API里面,包括网络可达还有数据运算都是在API进行的。Neutron除了API之外其他的都可以视为是网络实现。需要说一下的是,Neutron除了自身提供一套网络实现之外,还考虑到第三方兼容。
我们看一下Neutron项目,Neutron项目是OpenStack社区最活跃的项目之一,它集中了大量工程师参与开发,在OpenStack场景下它的稳定性和一定规模下的可靠性也是别的SDN所不能比拟的。另一方面,再看看Neutron的定位,Neutron致力于提供2—3层网络服务,4—7层服务由Neutron子项目提供。开源社区开发有一个大的特点,整个开发有一定的碎片性,Neutron的定位首先能够提供核心代码的质量,降低核心代码的管控难度,但是同时增加碎片的程度,很多分离出去的项目大家如果参与的话,会发现它的活跃度会大大降低。总体来说,在OpenStack不像Ceph对于存储来说有压倒一切的网络实现方案,包括Neutron的实现方案也不能施加到SDN。所以在Neutron社区里面可以发现主要活跃的工程师都是来自于HP,HP因为最近的策略,工程师都分流了。传统网络厂商,包括做SDN的厂商,他们热衷于是推自己的SDN,这样反过来又是分散Neutron开发的力量。
接下来说一下OpenDayLight,这是基于SDN Plafform的平台,总的来说OpenDayLight项目功能是完善的,而且现在有商业版的,基于在售商业版,思科的ODL。另外OpenDayLight项目比较庞大,子项目也很多,如果说一个公司想要采用这个项目的话,建议由一个专业团队维护这个项目。
第二是ONOS,这是2014年由ON.Lab发起的,这个组织去年跟ONF合并了,所以以后看ONOS会看到是ONF支持的项目。ONOS定位是SDNsystem。但是ONOS项目在OpenStack里应用不是特别好,它与ODL有很多相似的地方,ONOS更偏向于底层。
第三是OpenContrail,它的前身是2012年创建的Contrail,OpenContrail比较有意思的是开源版本和商业版本同时存在,并且代码是一直的,区别是商业版本支持更好一些,开源版本稍微差一些。OpenContrail定义是支持Cloud networking和NFV场景,OpenContrail这个项目经过这几年发展已经比较成熟了,而且本身架构是参考ODL的VPN,架构上比较可靠。目前新发布的版本里,OpenContrail是作为默认的构成在里面,用户可以选择。但是对于开源用户来说,目前存在商用问题,落地比较困难。
再看Midonet,它是来自于日本创业公司Midokura。它跟OpenContrail类似,也是开源版本和商业版本存在,但是区别是Midonet开源版本和商业版本代码不一样,它在控制和运维方面的工具,商业版更先进一些。Midonet通过entworking+Midonet与OpenStack集成,并且Midonet定位不像ODL,作为大而全的SDN,它主要的定位是云计算网络,整个项目是比较可控的,适合大规模部署。但是Midonet本身在OpenContrail竞争的时候,竞争失败了,所以这个对Midonet本身是有一定冲击的。同样的问题也存在,背后有商业的,开源版落地存在困难。总之,背后有开源商业版的话,本身不是完全开源的,因为这种开源可能是为了更好的商业。
下一个是OVN,OVN是OVS社区2015年1月发起的OVS子项目。OVS社区想在网络设备上多做一层虚拟网络管控,所以提出了OVN项目,他们想做虚拟网络可能,但是又不想做太靠上,所以OVN定义是轻量级的SDN。现在OVN是做networkingovn向OpenStack集成。OEN主要定义是解决厂商重力的开源项目,它有一个专门的项目做上千级别节点的模拟测试,但是现在有一个问题,就是数据库匹配问题,因为OVN用的是OVS的DB,在实际产品当中不支持数据库的话,用起来还是比较让人担心的。
最后说一下Dragonflow,这是在2015年由华为的提出的。Dragonflow是一个源于OpenStack的SDN项目,提供全功能的SDN解决方案,项目较为可控,适合大规模部署。SDN现在提出来都是为了朝大规模部署来迈进,一方面虽然它是全功能SDN,但是现在整个架构还比较轻的,所以适合大规模部署。另一方面,它是一个真正的分布式SDN,Dragonflow在所有计算节点上都跑SDN,这样把所有网络分布式运算都分布到计算节点,去除了网络运算的瓶颈。然后说一下Dragonflow的开源政策,Dragonflow目前主要是华为在推,到目前刚刚结束的一个版本,活跃度还是非常高的,开源政策也是比较开放的。Dragonflow项目设计考虑到应用场景多样性,可插拔的模块化设计,前面说的SDN数据库,可能SDN只支持一种数据库,但是Dragonflow支持五到六种数据库,这样在做迁移的时候,比如之前有TCD的经验,现在用Dragonflow的话,TCD经验可以继续维持下去。
再简单看一下SDN和OpenStack的关系,首先SDN是独立的领域,在OpenStack之外SDN也是能够进行发展的。另一方面,OpenStack的发展与SDN发展又是相互促进的关系,本身这两者发展时间上看是重合的,另外SDN主要应用场景是云计算和网络,OpenStack发展能够带动SDN的发展,另一方面,SDN发展又能够使得OpenStack规模继续能够扩大,能够推动OpenStack发展。前面介绍这么多,他们有一个共同特点,他们都可以通过OpenStackNeutron来提供接口,或者他们都做了与OpenStackNeutron的对接,所以光看SDN和OpenStack,OpenStackNeutron有趋势成为各种SDN统一的接口。这是一个SDN架构,在传统SDN架构里,只有控制层和数据层,最近提出的像ODL提出的SDN还可以在应用层。另外SDN提供的是北项接口,每一种SDN提供的接口也都不一样。中间是SDN的控制层面,这是整个SDN的核心。再往下是SDN的弹性协议,最底层是数据层,数据层实际上就是一个网络设备,网络设备可以包括物理设备和虚拟设备,比较有意思的是,虽然说SDN是用软件定义网络,但是目前SDN市场里,份额大的还是支持SDN的物理设备,最赚钱的还是这块。虚拟设备是一个最有发展前景的,毕竟成本上能够降低不少。
时间原因我就简单介绍这些,各种SDN有更详细的版本,我在知乎上也有专栏,大家有兴趣的话可以看一下。谢谢大家!