OpenStack之Neutron简介

openstack neutron
Openstack可以说是一个社区(社区官网:http://www.openstack.org/,国内对openstack报道网站:http://www.openstack.cn),包括开源的代码(源代码网址:https://github.com/openstack)、多个组件的项目开发等内容;是一个美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开放源代码项目。OpenStack是一个云平台管理的项目,它决不是一个单纯软件。Openstack随着组件的增加,功能日益丰富;其版本号现在到了H版,I版马上也要Release。Openstack的版本号和发布一个软件产品一样,只是随着功能的增加和完善用版本号作为一个个里程碑来区分下。

Openstack为了实现云计算的各项功能,将计算、存储和网络划分了几个项目分别来开发,每个项目对应着Openstack的一个或几个组件;Openstack的组件及关系有以下几个(下面资料来自openstack官网,仅是翻译下):

openstack_havana_conceptual_arch

图1 openstack组件关系图

其中主要组件的作用:

  • Horizon:为openstack提供交互页面;
  • Nova:负责虚拟机的生命周期管理,及部分网络,主要是虚拟机相关的;
  • Neutron: 负责虚拟环境下的网络;在G版中称为quantum组件,因已经被注册到H版改名;
  • Swift:对象存储;
  • Cinder:块存储;
  • Keystone:负责整个openstack各个组件和服务之间的安全认证机制方面的工作;

还有镜像glance、监控ceilometer等些组件。

学习openstack请先参考官网了解下什么是openstack及其大概历史是怎么样的,然后在官网看些安装文档或者省事的话可以看下国内人的博客(还是那句话,很多博客写的内容只知道然,没有说所以然),接着结合使用可以找些各个组件的作用和内部机理的资料来深入学习。如果直接上来就安装或者学习原理,必然是一下沉到水底,不知道深浅和方向了。Openstack的安装在官网可以看到相应文档(http://docs.openstack.org/),建议如果真心学习且有时间还是一步步用源码安装,这样过程当中肯定会有很多错误;但是解决错误的过程中,必定会学习到很多openstack的内容;当然,一步步安装真的需要勇气,为了能尽快一睹openstack的芳容,可以采用一键部署的方式——ubuntu下有devstack(官网详见http://devstack.org/),centos下面有rdo(官网详见http://openstack.redhat.com/Main_Page);具体内容可以参见官网的介绍,但是rdo的packstack比ubuntu的devstack发布时间要晚一些,集成进去的openstack的功能也稍一些(现在来看VPNAAS暂时rdo还没有)。另外,国内还有些关于openstack的书籍,这个我只能佩服这些作者的毅力,因为一本书出来至少要几个月,就在几个月里,openstack可能已经出一个新版本了,那现在再去看这些书很多已经是过时的内容了。如果仅仅是使用和开发openstack的一些经验,几篇文章足矣,无需用一本书吧。一句话,学习openstack需要的东西,都在官网。

拿Openstack的网络的neutron组件来介绍下,Neutron为openstack的虚拟机提供网络方面的功能;原来没有neutron这个组件(G版名称是Quantum)的时候,网络的主要功能也是在nova组件里实现的,那时候底层采用的大多是linux bridge,无法实现灵活组网和高级的网络功能;为此Openstack把网络大部分功能转到了neutron组件来开发实现,但是nova里还有些网络功能被保留,比如虚拟机的网卡方面的功能。其实,Openstack里网络功能是最复杂的功能,很多计算和存储方面的问题都是和网络紧密相关的。连Openstack的官网也说配置neutron是Openstack里最让人感觉繁琐的事情之一。

相对于交换机整个系统来说,Neutron其实是系统平台的位置,提供配置命令及参数检查,并把网络功能用一种逻辑组织起来;但是无论底层的plugin最终是用软件SDN还是硬件交换机来加速,Neutron自身并不提供任何网络功能,它只是一个架子。Neutron的网络功能大部分是Plugin提供的,除了DHCP和L3-agent等的某些部分功能。

Neutron将网络按照三层交换机的概念分为:

  • Network:相当于交换机根据vlan创建的一个三层接口;
  • Subnet:相当于交换机创建了一个三层接口地址;
  • Port:相当于交换机的一个物理端口,但是这个端口有一个MAC地址;

Neutron支持的plugin有:

还有一些非官方维护的:

对于这些plugin的使用情况,有一些非官方统计:

openstack neutron plugin

图2  openstack代码贡献图,作者认为可以侧面反映plugin使用情况

上面的统计来自yongsheng Gong的一份资料,并且其测试报告里说,OVS的性能“is as good as”linux bridge的性能。

另外,至于neutron plugin是路由器还是交换机,这个也无法明确,确切来说是看所用的plugin;但是选择的plugin满足自己的需求才是最重要的,至于工作在几层似乎是个多余的问题,应该要问的是自己的知识储备和需求是什么。

这样neutron的CLI或者horizon的页面配置了网络功能后,就会调用neutron的API,然后如果plugin是OVS的话,就会生成对应的比如OVS的命令下发到底层虚拟网络设备,底层就提供了相应的网络功能(如果支持的话,有的不支持也不会报错,比如H版对IPV6转发的支持)。这些网络功能包括二层vlan或vxlan等租户之间的隔离、floating IP之间的三层转发和NAT转换、防火墙、VPN和负载均衡等,看官网还提供有IDS和DC互联,但是还没有驱动力去调研。

如果你能配置出如下图3中网络且都能访问外网和相互隔离,说明你已经对底层有了一定了解:

openstack neutron network topology

图3 neutron配置后的一种网络拓扑实例

上面图中,如果用OVS作为plugin的话需要注意,里面的一个虚拟路由器并不是直接对应创建一个OVS,很有迷惑性,在底层其仅仅是在OVS上创建了一个vlan,配置了一个三层接口地址,并且添加了一个和这个网段相连的虚拟port。有兴趣的可以配置成功后,到底层详细dump下。

这里仅是简单介绍下,大部分是基本概念的汇总,有不正确或不明确的地方再沟通。希望群里的同学都能跨过这些基本内容,多讨论些官方文档无法找到答案的问题。

作者:SDN qq群#北京-小武,微博@北京-小武


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/sdn-guide/14890.html/
分享到:
条评论

登录后才可以评论

SDNLAB君 发表于15-11-16
0