MidoNet初探(by quqi99)

作者:张华  发表于:2015-08-05
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

(http://blog.csdn.net/quqi99)


MidoNet是类似于OpenContrail, Neutron DVR, DragonFlow, OVN的SDN产品,其主要特性如下:
1, L2交换、L3路由、L4负载均衡
2, 有状态和无状态NAT
3,逻辑和分布式防火墙
4, BGP与ECMP支持
5, GRE、VxLAN
6, VTEP(VXLAN Tunneling End Point) support with OVSDB protocol
7, partial docker integration
8, Re-written with Java/scala

MidoNet初探(by quqi99)_第1张图片

如上,非常熟悉的架构,在计算节点上要运行Midolman也就是Mido Agent来同时具备L2-L4层干活功能。采用分布式数据库NSDB来作集中的控制平面存储port, node, mac等映射关系。另外,它还支持BGP,如下图,它并不支持在同一个数据中心的多个跨三层的openstack之间运行iBGP(走GRE/VxLAN隧道),只支持在跨广域网的多个数据中心之间运行eBGP。



在二层的交换上,和目前的Neutron DVR的原理差不多,如下图:
MidoNet初探(by quqi99)_第2张图片

但增加了VxLAN VTEP二层网关功能(网关用于去vxlan头让Vxlan网络与非Vxlan网络交互, 或者不同的vxlan id的vlan网络交互),从流表中比较VM1和VM2的段标记VNI(不需要用IP比较)就可以判断是否位于同一个tenant的网络了,如果不在一个VNI中就出软件或者硬件的VxLAN网关交给上联交换机。如下图所示:

    如果需要VXLAN网络和非VXLAN网络连接,必须使用VXLAN网关才能把VXLAN网络和外部网络进行桥接和完成VXLAN ID和VLAN ID之间的映射和路由,和VLAN一样,VXLAN网络之间的通信也需要三层设备的支持,即VXLAN路由的支持。同样VXLAN网关可由硬件和软件来实现。从封装的结构上来看,VXLAN提供了将二层网络overlay在三层网络上的能力,VXLAN Header中的VNI有24个bit,数量远远大于4096,并且UDP的封装可以穿越三层网络,比VLAN有更好的扩展性。
    改善东西向流量的硬件二层VxLAN网关的部署图如下所示:
MidoNet初探(by quqi99)_第3张图片

防火墙服务链的实现如下,在每一个port上有一些pipline用于去生成一些流表。
MidoNet初探(by quqi99)_第4张图片

支持DNAT端口映射,如下图:
MidoNet初探(by quqi99)_第5张图片

最后,当然支持L3功能,如下图:
MidoNet初探(by quqi99)_第6张图片

Neutron DVR在每个计算节点上都具有L3功能,这一点MidoNet的Provider Router与之不一样,MidoNet更像是没有DVR时的Neutron的部署,有一个集中单一的路由器叫Provider Router用于tenant之间的以及tenant与Internet之间的L3连通性。在一个典型的Midonet的部署中,Provider Router可以有3个ECMP静态路由去连接上行路由(如果哪一个上行路由路需要动态学习上行路由就安装BGP)。看到没,Midonet它这里的Provider Router的概念与Nerutron的Provider Router的概念是有点小区别的,Midonet的计算节点上虽然不具备L3功能,但它具备上面提到的L2网关功能,这样同一tenant的不同子网间的东西向流量并不需要经过Provider Router(Neutron DVR解决的是相同子网的东西向流量不绕道l3-agent的情况), 只有跨tenant的东西向流量和南北流量才需要经过Provder Router


[1], http://blog.midonet.org/introduction-to-mn-part-5-flow-state/

你可能感兴趣的:(MidoNet初探(by quqi99))