Virtual Network Midonet闲扯

简介:

下面呢介绍下Midonet由来,MidoNet是由日本的SDN公司Midkura研发的一款网络虚拟化软件,其基于底层 物理设施来实现网络虚拟化,具有分布式、分散、多层次的特点,主要作为OpenStack 中的默认网络组件,可以让虚拟网络解决方案,特别是专为网络基础设施设计的方案,为云平台如OpenStack服务,并且将其网络存贮栈虚拟化。


Midokura这家刚刚在网络虚拟化这个竞争很强的领域走过4个年头的创业公司,宣布开源其MidoNet网络虚拟化平台,以加速OpenStack云服务框架内的网络技术的发展。在去年11月份的时候,在巴黎召开的OpenStack大会上,Midokura官方宣布将MidoNet开源,OpenStack社区可以免费使用MidoNet,我从今年3月中旬的时候就研究过一段Midonet,他的思想很好,包括他的一些组件,当初在midonet.slack.com开源聊天室活跃过一段时间,因为毕竟Midonet的资料比较少,有兴趣的同学也可以加入进去讨论下。过会技术分享完之后我会给大家分享几个关于Midonet方面的资料,有需要的可以自行下载,今天分享的纯属个人见解哈,还望各位多多包涵。 


下面介绍下他的组件:

Midolman(Midonet Agent):Midonet Agent安装在各个计算节点,负责建立网络流量控制和提供分布式Midonet网络服务,路由,NAT等他把相关的虚拟网络信息存放到NSDB。 


Network State Database(NSDB):存储网络配置和状态,网络拓扑,路由,Midonet不集中处理网络功能,由Midonet Agent处理,Midonet Agent会跟NSDBs做实时同步当有变化时候会及时同步并且更新NSDB


今天主要分以下几个方面来说下Midonet
1.Midonet Architecture
2.VM如何上网?
3.NSDB
4.Midonet是如何来做跨二层虚实结合的?
5.OpenStack 如何与 Midonet 做集成?


1.下面简单说下他的架构图
81.jpg

    从图中可以看出他采用的不是Open vSwitch 而是 Linux Kernel datapath,上层是Hypervisor and Midonet Agent(Midolman),然后是租户VM,这里的Midonet Gateway相当于原生的OpenStack Network Node,上网则可以采用两种方式后面我会讲到
     那么另一侧则是Midonet API and Midonet CLI 另外Midonet Enterprise Midonet Manager(可选)因为这个组件是企业版才会有的,在上面呢就是涉及到云平台层面,可以是VMware VSphere,openstack等等
     OK,那么下面我说下OpenStack直接用原生的neutron以及horizon来调取Midonet API整个环境就可以work了
     至于VMware VSphere等没有使用过,也没有发言权哈,以免误导大家
      刚才忽略了NSDB(Network State Database),下面就来讲下刚才遗留的两个问题,一个就是VM上网,另一个是NSDB(Network State Database).

2、下面在说下VM如何上网,也就引出了咱们今天的第二个话题
bf.jpg

   大家看这个图,一看有点高大上的感觉,逻辑思路很清晰哈,图画的很是不错,由此图可以看出他在租户路由外层又放置了一个router也就是Midonet的MidoNet Provider Router也就是OpenStack的external的那层网络,可以在他上面配置static route and BGP Dynamic route,详情配置可以查看官方文档。

3.简单说下今天的第三个话题NSDB(Network State Database)
    Network State Database(NSDB):存储网络配置和状态,网络拓扑,路由,Midonet不集中处理网络功能,由Midonet Agent处理,Midonet Agent会跟NSDBs做实时同步当有变化时候会及时同步并且更新NSDB,在部署的时候NSDB是分布式集群的方式
这个咱们前面也提到了,再次提了下 
他的NSDB是由ZooKeeper + Cassandra来做的
     前段时间在微信朋友圈挺火的一篇文章说zk超过上千节点就会有问题,具体的我也没测试过,毕竟没有那么大的环境来测试,有兴趣的朋友可以测试下,不过Midonet有利也有弊,他抛弃了原生neutron的一些组件,也就是意味着他发布的前几个version都不支持OpenStack的一些高级功能例如VPNAAS,FWAAS当初三月份的时候还不支持,据说他们要在今年年底发布的版本会支持这些功能。

4.说下Midonet是如何来做跨二层虚实结合的?
    我觉得Midonet的灵活之处就是他的bridge可以随意port to bridge
    例如他的L2 gateway

下面针对于这个图说下

3c.jpg


利用中间VAB bridge-->物理网卡-->物理交换机(trunk) 
这里的VAB是自己创建的然后port to VUB8 & VUB5 
 下面是VAB bridge-->VUB8 bridge-->VUB5 bridge   下面分别是vlan8和vlan5的各个VM
在物理交换机接入vlan8或者vlan5网段的物理机,这样就做到了虚实结合,传统网络与云网络相结合,物理机与云主机相结合,皆大欢喜哈。 

5.下面说下今天最后一个话题也是大家关心的话题就是OpenStack 如何与 Midonet 做集成呢?

8a.jpg
 
   下面说下他的搭建,搭建过程呢其实可以按照OpenStack官方文档 + Midonet官方文档交互式安装(这样感觉有点土哈,不过很实用)
    我后面分享PPT里面有一个自动化工具部署的,是基于docker的。技术也是蛮新的,很前沿哈:)

下面说下各个文档的地址:
Openstack官方文档地址:
http://docs.openstack.org/

Midonet企业版本文档地址:
http://docs.midokura.com/

Midonet开源版本文档地址:
http://docs.midonet.org/

     其实呢midonet有两个版本,一个是企业版MEM(Midokura Enterprise MidoNet),企业版的话可以免费使用30天,具体多少刀我给忘了,有心的朋友可以自己去了解下。另一个就是开源版本Midonet,最初咱们说了他是去年11月份刚开源,所以就产生了midonet.org开源版本,目前好像已经有mail list了。也有不少活跃的人,但大部分都是Midokura公司的;两个版本的区别在于开源版本出来事情基本靠自己来解决,而企业版本Midokura公司将会提供Technical Support,并且提供一个管理页面 
 
2e.jpg
cb.jpg

 
    这个页面我曾经也试用过一段时间,没用之前对bridge,router都是抽象的,用了WEB Manager之后发现会好很多,但是收费哈,当然也可以自己开发然后调取API也是可以的,好了言归正传,Midonet功能虽好但是没有一个懂底层网络的工程师还是不能驾驭的,最后给大家分享几个midonet相关的资料,资料可能比较老,仅供参考哈,再次感谢肖总和各位的支持,今天的分享就到此结束,大家有什么要问的吗 
 
资料的话我上传到我网盘吧,有需要的朋友可以去网盘下载:
http://pan.baidu.com/s/1pJOOfwR  

二、问题交流阶段:


问题一:

问:按照官方文档,是不是要在gw节点装quagga?
答:你这个属于目前最新版本了,我当初玩的时候么有quagga。也许是换了个名字


问题二:

问:midonet比ovs和opencontrail来说有什么优点吗?
答:只能说各有个的好处opencontrail的话没玩过,不具备发言权哈,OVS的话你用这个就省去了优化OVS了,
问:看架构图 就是基于ovs内核模块的,性能应该差不多吧
答:他的发包流程是在发包之前就给你计划了一条最优路径选择
群友LJS:对,midonet内部走rip,最优路径


问题三:

问:Midonet 我还头一次听 学习中,国内用的人多吗?
答:国内不是很多,几乎没有听说过哪家在使,国外的话用户量也不算很多


问题四:

问:请教一下,Gateway的HA是如何实现的呢?和DVR的具体区别是什么?
答:GatewayHA应该就是多节点吧,具体没做,我看他官网的架构是多节点的,
问:是使用BGP?
答:static route就行吧,毕竟当初我测试环境,BGP的话他在BGP也只是小型的
问:Gateway也在计算节点吗?
答:单独分开,其实他这个架构在3月份的时候是这样的,controller node,network node,compute node,然后网络节点呢就是gateway在各个节点都有NSDB,然后我前段时间看的时候变了,变成了多节点,我发两个图你看下 

8b.jpg


97.jpg



问题五:

问:l3和ovs被替换了 其他还是用neutron的plugin?
答:嗯dhcp,metadata都还是用neutron的.




本文转自Devin 51CTO博客,原文链接:http://blog.51cto.com/devingeng/1900207
相关文章
Virtual Machine
虚拟机 关于内存 CPU通过总线来管理内存, 总线分为3种 控制总线: 指定对内存进行的是读还是写操作 地址总线: 用来表示内存中的地址, 一根地址电线对应一个0|1bit, 如果有4根线, 则CPU对内存的操作就是00, 01, 10, 11这四个地址, 如果有32根, 则CPU对内存的操作就是...
1004 0
|
网络协议 网络虚拟化
|
关系型数据库 Java 数据库连接
|
网络协议
|
关系型数据库 Java 数据库连接