下面呢介绍下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.下面简单说下他的架构图
Virtual Network Midonet闲扯_第1张图片

    从图中可以看出他采用的不是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如何上网,也就引出了咱们今天的第二个话题


   大家看这个图,一看有点高大上的感觉,逻辑思路很清晰哈,图画的很是不错,由此图可以看出他在租户路由外层又放置了一个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的一些高级功能例如×××AAS,FWAAS当初三月份的时候还不支持,据说他们要在今年年底发布的版本会支持这些功能。

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

下面针对于这个图说下

Virtual Network Midonet闲扯_第2张图片


利用中间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,并且提供一个管理页面
 



 
    这个页面我曾经也试用过一段时间,没用之前对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,然后我前段时间看的时候变了,变成了多节点,我发两个图你看下

Virtual Network Midonet闲扯_第3张图片


Virtual Network Midonet闲扯_第4张图片



问题五:

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