您的位置: 网界网 > 网络通信 > 正文

为什么说Neutron不是SDN

2015年01月29日 14:23:27 | 作者:佚名 | 来源:SDN联合播报 | 查看本文手机版

摘要:@盛科张卫峰卫峰总新作《SDN及云计算平台中的网络性能优化》这篇文章写的很有深度,其中将Neutron中的部分组件来用硬件实现,以提高性能和稳定性,相信将Neutron结合SDN的架构来提高这两点指标将是我下年工作的重点。对于Neutr...

标签
SDNAP原创
openstack与SDN

@盛科张卫峰卫峰总新作《SDN[注]云计算[注]平台中的网络性能优化》这篇文章写的很有深度,其中将Neutron中的部分组件来用硬件实现,以提高性能和稳定性,相信将Neutron结合SDN的架构来提高这两点指标将是我下年工作的重点。对于Neutron是否是SDN的观点曾经和卫峰总有过一次微博的讨论,被SDNAP也收集成文放到了SDNAP的一篇记录上《IAAS[注]提供的网络服务是否是SDN大讨论》。看到卫峰总的文章,以及很多人对Neutron是否是SDN的观点有过探讨,今天特地写一个自己的认识,核心观点是现在的Neutron不是SDN架构,请各位读者注意我的措辞,我的意思是说,Neutron本身来讲还不是SDN,但是不妨碍它经过改造或结合SDN控制器成为SDN的架构。

首先说下我对Neutron的这个Openstack组件的认识,我也曾经很久前在SDNAP上发表过两篇Neutron的文章:《Openstack之Neutron简介》和《Neutron亟需断骨换筋》;总体来讲,我接触Neutron的第一印象是Neutron的整体架构和传统网络产品中的一个比较像,就是框式交换机(也称之为机架交换机),就是一个机架,上面插着主控卡和业务卡(也称之为线卡),主控卡起到全局的控制作用(当然,也有的机架交换机的主控卡兼做业务卡),业务卡来跑业务流量,并且做到了“控制和转发相分离”,当然这个分离和SDN的控制转发分离有着很大的不同,如@杨泽卫 的文章《SDN瞎子摸象-杨泽卫谈SDN》所说,SDN的分离是指解耦合,而不是单纯的功能模块的逻辑分离或承载运行服务设备的物理分离。机架交换机和Neutron有什么类似之处哪?下面用一个表来对下二者偏近于SDN几个特性的方面:

机架交换机 Neutron
整体架构 转发控制分离清晰, 主控卡接收CLI等命令配置,下发到相应线卡上,实现相应网络功能;线卡最终的硬件配置通常是相应交换芯片商家的SDK API,主控卡的命令需要翻译成SDK API可以接收的参数。 转发控制分离清晰,Nertron Server接收配置,下发配置到对应的Neutron-*-agent,然后对应Agent再做翻译成下发到相应Plugin的配置上(包括Core Plugin和Service Plugin),所以Neutron Server相当于控制层。
控制层面 主控卡通常主备使用实现HA,机架式交换机的主控卡和业务卡都在同一个机架内,基本没有“分布式”的概念,其他的功能比如Juniper的MLAG(Multi-Chassis Link Aggregation)和思科的VPC(virtual port channel)有点分布式的意思。 Nertron Server可以实现multi-l3-agent,不同的网络节点可以采用Pacemaker或Haproxy及其他技术实现主备或主主的HA方式,这样不同的虚拟路由、FWaas、LBaas和VPNaas在不同的网络节点实现分布,但是这些点本身还不算高可用。
通信接口 主控卡和业务卡之间通信大多靠RPC实现,API接口通常是私有;对于主控卡的配置方式,提供了通常交换机的三种配置方式:CLI/WEB/MIB,其中的MIB就是通过SNMP协议来实现的,而且是标准的实现方式。 Neutron Server对各个Neutron-*-agent通过队列消息发布配置,各个Neutron-*-agen之间通过RPC交互信息,而Neutron Server对外比如Nova和Horizon提供了Rest API来接收其信息;这些接口都是公开的,毕竟是开源产品,但是都不是标准的,只是采用了标准的技术实现。另外需要提及的是,以OVS做Plugin举例,Neutron配置底层并没有采用标准接口,大多还是直接转化为底层Plugin的CLI,而是通过将Neutron的命令转化成了OVS的CLI来配置,这个和SDN控制器通过标准南向Openflow协议来配置OVS有着天壤之别。
底层转发 线卡的底层转发通常是各个交换芯片,这些交换芯片可能是不同厂家的或同一厂家不同型号的交换芯片,但是主控卡发布的配置命令是统一的,所以到线卡调用的SDK API可能有非常大的区别,这个无法统一,比如有的线卡只支持VLAN,但是又的线卡还支持VXLAN/NVgre等。 底层数据转发通常靠Core Plugin来完成,其他Service服务的功能实现也要依赖于Core Plugin;最初Neutron的Core Plugin也只支持同时使用一种类型和对应隔离技术(VLAN/VXLAN/GRE等),后来出现的ML2 Plugin,通过Type Drivers(local, flat, vlan, gre and vxlan network types)和Mechanism Drivers来让多种plugin并存。

应用程序 通常不支持应用程序直接对机架交换机所提供网络功能的配置,还是通过脚本或人工配置CLI来使得功能生效,当然WEB和MIB的方式也是通常支持的。 有Horizon等应用程序配置Neutron的网络功能,但是也需要脚本或人工配置。

通过上述对比,可以发现,Neutron和机架交换机的整体价格还是非常类似的,这个也是说Neutron不是SDN架构的一个重要理论依据。如果说Neutron是SDN架构,那么机架交换机起码还有一个标准的“北向接口”,更应该属于SDN;只是机架交换机属于硬件产品,Neutron的软件实现与之相比,迷惑了很多人觉得Neutron应归属于SDN。

其次,将Neutron对照下SDN的三个标准(按照卫峰总的文章提及的):控制制与转发分离、开放的编程接口、集中化的网络控制等,来说明下为何Neutron不是SDN:

SDN Neutron
控制制与转发分离 此处的分离是指APP、控制器和底层转发解耦合,每个部分可以独自的发展变化,只需能保证通过标准接口来通信即可。 此处的分离仅仅是功能模块和部署的分离,并不能解耦合,Neutron Server上层功能的任何修改,都需要对每一个Plugin的底层通信接口做很大变化。
开放的编程接口 南向接口中Openflow影响最大(+微信关注网络世界),也是被大家认可的标准;北向接口还未出现类似于Openflow标准的接口,主要依赖于各家控制器提供的接口。SDN控制器的接口不仅要求是开发的,而且还必须是标准的且可反馈的,这样才能做到真正的控制与转发解耦合。 前面机架交换机和Neutron的对比中也提及,北向只提供Rest API接口,南向没有使用标准的接口,虽然其中OVS的Plugin支持Openflow也提供了Openflow协议中的南向接口,但是Neutron却使用而来CLI的配置方式;并且,Neutron Rest API接口仅是标准技术实现的,并不是标准的接口,而且也缺乏所要求的SDN控制器北向反馈机制。
集中化的网络控制 属于集中化控制,此处的控制是面向APP的,即SDN里的Software, 其控制网络的目的就是获取使用网络资源。 属于集中化控制,但是面向的是Horizon等组件,但是请注意,Horizon并不适用这些网络资源,这里Horizon虽然也是APP,但是不是SDN里的Software,只是脚本化配置网络的一个漂亮高级的脚本展现形式,这点也是Neutron自身不是SDN架构的重要原因之一。

最后需要重新阐述下,Neutron本身不是SDN架构,但是不妨碍其结合其他技术成为SDN的架构,包括现在新的Plguin中Ryu、OpenContrail等,结合对应的SDN控制器,即可将Neutron的架构变成SDN架构。但是这个架构所提供的北向API能被需要使用网络资源的APP调用,还需要大量的工作要做,因为需要网络资源的通常是VM中部署的APP,比如Web服务需要带宽、LB等网络资源,但是让VM里的WEB服务通过调用SDN控制器的北向接口直接分配Openstack部署环境里的Neutron网络资源,这个架构还有很多方面的考虑,比如网络安全和审核、网络资源限制等等。根据这个方面,网络云计算架构中,大多还没有用到SDN这个层面,说是SDN,多是NV而已。

卫峰总一直是我心中的目标和偶像,我的很多SDN知识相当一部分是从卫峰总的《深度解析SDN:利益、战略、技术、实践》里学习到的,所以上面所述仅是一家之言,也敬请卫峰总等各位专家及读者指正。其实Neutron是不是SDN已经不是很重要,如卫峰总所言,SDN能否给云计算厂商等带利益才是大家核心考虑的,所以本文仅当笑尔。

作者:SDN qq群#北京-小武,微博@北京-小武 个人博客:http://blog.csdn.net/night_elf_1020

参考资料

1.SDN:(Software Defined Network,软件定义网络)是一种新型的开放网络创新架构。最初是由美国斯坦福大学研究组提出,OpenFlow通过将网络设备控制面与数据面分离开来,从而实现...详情>>

2.云计算:(Cloud Computing)描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。云计算是继1980年代大型计算机到...详情>>

3.IaaS:(Infrastructure as a service )是消费者使用处理、储存、网络以及各种基础运算资源,部署与执行操作系统或应用程式等各种软件。客户端无须购买服务器、软件等网络设备,...详情>>

[责任编辑:孙可 sun_ke@cnw.com.cn]