OVN(Open Virtual Network)是分布式的controller,ovs2.6 release了第一个版本。

OVN特点


优点

  • 控制器保证控制面更加灵活。
  • OVN和OVS同源,保证OVN和OVS的兼容性。
  • 作为分布式的控制器,能够更好的支持扩容。
  • 替代一些插件,增强性能。
  • 虚拟网络抽象,更易理解。

缺点

  • 使用C语言,开发难度大。
  • 不支持插件,定制需求需要修改源码。
  • 目前对HA的支持还不够好。

OVN 特性


  • 提供虚拟网络抽象,L2、L3、overlays和物理网络的联通。
  • 灵活的ACL
  • 分布式L3
  • ARP代答
  • NAT和LB
  • 完全分布式DHCP
  • 所有的features都是通过OVS datapath实现的
  • L3网关从逻辑到物理网络
  • L2软网关
  • 支持TOR

OVN 架构


ovn本身主要有几个模块:

  • ovn-northd服务运行于控制节点,主要是翻译Northbound DB的数据到Southbound DB
  • ovn-controller服务运行于计算节点,主要是根据Southbound DB的数据翻译为流表下发到本地的OVS
  • ovn-controller-vtep是可以配置支持OVSDB协议的物理交换机
  • ovn-nbctl和ovn-sbctl命令是分别查看Northbound DB和Southbound DB数据
  • ovn-trace是用于查看报文的路径的

请输入图片描述

  • openstack或者CMS插件通过OVSDB协议将信息配置到Northbound DB。主要是逻辑拓扑信息,比如logical switch,logical router, logical port等信息,和我们传统的网络拓扑一样,便于理解。
  • ovn-northd连接Northbound DB,并将里面的信息进行翻译存储到Southbound DB,主要是逻辑流表,更简单易懂的流表。
  • ovn-controller连接Southbound DB,并且将里面的逻辑流表等信息翻译为OVS的真实流表,最后通过openflow协议下发给OVS。

OVN 数据平面优化


安全组的区别

请输入图片描述

请输入图片描述

图一是未使用OVN时,安全组需要在bridge用iptables实现。
图二是使用OVN时,安全组使用OVS的ACL流表实现即可,这对于以后使用OVS-DPDK更容易平滑过渡。
下图是安全组的性能对比:

请输入图片描述

L3的区别

  • 跨子网内网通信的时候,未使用OVN,需要将报文都发送给网络节点进行路由转发,而且不同路由存在于不同的namespace中,所以网络节点的性能压力就比较大,也会多一次tunnel封装;而使用OVN之后,可以采用DVR的方式,并且实现全部靠流表实现,性能也会有优势。
  • 外网通信的时候,都需要将报文发送给网络节点,但是未使用OVN的时候,网络节点的网关通常存在于namespace中,借助Linux的协议栈完成工作;而使用OVN的时候,依然可以通过OVS的流表完成工作。所以对于支持DPDK也更容易。

乱扯


相对于ODL和ONOS的大而全,我更喜欢OVN这种轻量级的控制器,在满足需求,人员不足的情况下还是比较推荐的,并且也属于OVS的亲儿子,两者配合兼容应该不成问题,最后。。。对不起,我编不下去了。有其他观点欢迎交流。
其实我对java python不熟,对C比较熟,所以就研究它了。

最后修改:2021 年 08 月 20 日
如果觉得我的文章对你有用,请随意赞赏