在OpenStack世界中,网络组件最初叫nova-network,它混迹于计算节点nova的代码库中。nova-network可以单独部 署在一台机器上,为了高性能HA也可以和nova-compute一样部署在计算节点上(这也就是所谓的multi-host功能)。nova- network实现简单,bug少,但性能可不弱哦,直接采用基于Linux内核的Linux网桥少了很多层抽象应该算强大的。不足之处是支持的插件少 (只支持Linux网桥),支持的网络拓扑少(只支持flat, vlan)。

为了支持更多的插件,支持更多的网络拓扑,更灵活的与nova交互,于是有了quantum工程。quantum插件不仅支持Linux网桥,也支 持OpenvSwitch,一些SDN的插件以及其他商业公司的插件。在网络拓扑上,除了支持flat,vlan外,还支持gre, vxlan。但quantum不支持关键的multi-host特性。
quantum因为和一家公司的名称冲突,于是,改名为neutron。

neutron继续演进,quantum之前的实现存在这么一个问题。我们说道说道。在quantum中,实现一种类型的插件一般包括两个部分,一
部分与数据库db打交道称之为plugin,一部分是调用具体的网络设备真正干活的称之为agent。像plugin就有linux bridge
plugin, opevswitch plugin, hyper-v
plugin等,这些plugin因为都是与db打交道,变化的字段并不多,所以代码绝大部分是重复的。这样也就出来了一个公共的plugin叫ml2
plugin(具体的代码实现就是TypeDriver)。

但这只是一个表象,ml2还有更大的作用,那就是它里面的MechanismDriver。我举个例子讲,之前没有ml2的时候,plugin只能
支持一种,用了linux
bridge,就不能用openvswitch了,想要都用那怎么办,那就需要MechanismDriver上场,MechanismDriver的作
用是将agent的类型agent_type和vif_type关联,这样vif_type就可以直接通过扩展api灵活设置了,所以这时候你想用
linux bridge你在vif_type里直接将port绑定成linux
bridge就行了,同理,想用openvswitch就将vif_type将port绑定成openvswitch就行。

除了让openvswitch, linux bridge这些不同的插件共存之外,ml2还能让不同的拓扑如flat, vlan, gre,
vxlan其乐融融和谐共存,直接在ml2_conf.ini这个配置文件里都配上即可。这样也就解决了一个问题,以前前端horizon中无法配置是用
flat还是vlan,因为你配了也没有用,那时候后端还不支持flat和vlan同时存在了,现在皆大欢喜了。

上面的ml2解决的只是网络中L2层的问题,对于L3层的路由功能neturon又单独整出个l3-agent,对于dhcp功能又单独整出个
dhcp-agent,不过它们归根结底仍属于实际真正干功能活的,对于和数据库db打交道的那部分则是通过提供扩展api来实现的。那么现在我们想加更
多的网络服务该怎么办呢,如L4-L7层的FwaaS, VPNaaS, DNATaaS,
DNSaaS,所以现在neutron又出来一个新的服务框架用于将所有这些除L2层以外的网络服务类似于上述ml2的思想在数据库这块一网打尽。并且这
些网络服务可能是有序的,例如可能需要先过FwaaS防火墙服务再过DNATaaS服务来提供浮动IP,所以也就有了service
chain的概念。目前这块代码只进去了firewall, loadbalance, metering,
vpn几块,但万变不离其宗,未来neutron就是朝这个思想继续往下做。想用哪些服务可以通过neutron.conf这个配置文件中的
service_provider项指定。

最后,需要一提的是,从性能角度讲,我认为目前neutron仍然不能用于大规模的生产环境,理由如下:
1)虽然增加了更多的插件,更多的网络服务,更多的网络拓扑,但它仍然不支持multi-host功能,对性能是极大影响
2)neutron-server不支持workers通过fork实现的利用cpu多核的多进程机制,仍然是单线程实现的,阻塞的话(python解释器是单进程的,使用greenlet保证每个线程在单进程下也是线性的),会延缓接受其他请求对性能产生影响。
3)neutron-server是无状态的服务,理论上讲是可以在多台机器上运行前端再加haproxy实现HA的,但实际代码中存在众多竞争条件的bug。当然这个问题不仅在neturon有,其他组件我看一样存在。
4)在遂道性能方面存在优化的可能,遂道如GRE,VXLAN等将虚拟L2层打通反而扩大了广播风暴的可能,实际上虚拟网桥或者hypervisor都是知道虚机的IP和MAC地址的映射的关系的,根本不需要仍使用传统的ARP广播方式来获得这种映射关系。
5)其他…

成熟的路上漫漫其修远兮,这也正好给各位爱好openstack的童鞋们提供了大显身手的好机会:)

文章来源:http://www.openstack.cn/p353.html

[转]Neutron演进的更多相关文章

  1. [译] OpenStack Kilo 版本中 Neutron 的新变化

    OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些 ...

  2. VMware + OpenStack: 从 Plugin 到 VIO (VMware Integrated OpenStack)的演进

    VMware 做为实际上的企业虚拟化领导者,对 OpenStack 的态度一直在变化.一开始,VMware 表达出与 OpenStack 的竞争态度.随着 OpenStack 的逐步壮大并且一步一步进 ...

  3. (转)OpenStack Kilo 版本中 Neutron 的新变化

    OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些 ...

  4. 数据中心网络架构的问题与演进 — NFV

    目录 文章目录 目录 前文列表 前言 NFV NFV 的最终目标 NFV 的抽象框架 基础架构层与虚拟基础设施管理层 资源管理与业务流程编排层 OSS 层 SDN 控制层 NFV 的生态合作 NFV ...

  5. 我非要捅穿这 Neutron(一)网络实现模型篇

    目录 文章目录 目录 前言 传统网络到虚拟化网络的演进 单一平面网络到混合平面网络的演进 Neutron 简述 Neutron 的网络实现模型 计算节点网络实现模型 内外 VID 转换 网络节点网络实 ...

  6. 【腾讯Bugly干货分享】微信热补丁Tinker的实践演进之路

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ad7a70eaed47bb2699e68e Dev Club 是一个交流移动 ...

  7. 【腾讯bugly干货分享】微信Android热补丁实践演进之路

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1264& ...

  8. Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结

    Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结 1.1. 软件体系架构是沿着单机到 CS 架构,再到 BS 的三层架构甚至多层架构逐步发展过来的,关于 ...

  9. Atitit 编程语言编程方法的进化演进 sp  COP ,AOP ,SOP

    Atitit 编程语言编程方法的进化演进 sp  COP ,AOP ,SOP 1.1.  Sp  oop>>COP ,AOP ,SOP1 1.2. Sp  oop 结构化方法SP(Stru ...

随机推荐

  1. cocos2d-html5如何更改预加载时的默认的logo图片和删除loading小圈圈

    找到框架目录(2.1.4)里的cocos2d目录里有个CCLoader.js文件,找到LoaderScene的构造方法ctor,可以看到有一行: this._logoTexture.src= &quo ...

  2. Why did Jimmy Wales invest in Quora? Is he afraid that it will take over Wikipedia?

    QUESTION: Why did Jimmy Wales invest in Quora? Is he afraid that it will take over Wikipedia? Answer ...

  3. Spring初始化 Map 和 解析Json value

    单独定义Map数据结构的bean: <bean id= "expToLevelMap" class="org.springframework.beans.facto ...

  4. android中获取string字符串的方法

    比如在arrays.xml里: <!--leo added for KYLIN-496--> <string-array name="reboot_item"&g ...

  5. mysql-server 的一些记录

    为避免 innodb 文件的增大.个人倾向于读立表空间.以 innodb_file_per_table=1 参数调整. 不使用默认数据目录的话,须得将 grp own 都循环设置为mysql. 昨天晚 ...

  6. [转载] C++ typedef 用法详解

    typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等.在C语言中,信息被抽象为int.float和 double等基本数据类型.从基本数据类型名称上,不能够看出其所代表的物理属性 ...

  7. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  8. HTML5 3D动画效果

    对以前来讲,3D动画拿到网页上展示是一件非常奢侈的事情,第一是浏览器不够先进,第二是大部分只能用flash实现伪3D.HTML5的出现,让实现网页3D动画变得非常简单,当然前提是你不要再使用像IE67 ...

  9. MATLAB符号运算 分类: 图像处理 2015-07-31 22:53 3人阅读 评论(0) 收藏

    1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x; >> expand((x+3)^3) an ...

  10. Oracle数据库Linux下的导出EXP

    先转一篇 ================================我是分割线================================ 时间:2013-06-22 13:48来源:未知 ...