OpenvSwitch 子项目 OVN 功能介绍(一)

2022-06-13 10:54:37 浏览数 (1)

众所周知,OpenvSwitch 以其丰富的功能和不错的性能,已经成为 Openstack 部署中最受欢迎的虚拟交换机。由于 Openstack Neutron 的架构引入了一些性能问题,比如 neutron-server 要与非常多的 agent 通信,RPC 就是一个性能瓶颈,还有 neutron 里面用到非常多的 namespace,namespace 资源有限而且系统开销比较大,这也是一个性能瓶颈。OVS 社区觉得从长远来看,Neutron 应该让一个其它的项目来做虚拟网络的控制平面,Neutron 只需要提供 API 的处理,于是 OVS 社区推出了 OVN(Open Virtual Switch)这个项目,OVN 是 OVS 的控制平面,它给 OVS 增加了对虚拟网络的原生支持,大大提高了 OVS 在实际应用环境中的性能和规模。

OVN 的功能

虽然 OVN 是 OVS 社区在 2015 年 1 月份才宣布的一个子项目,但是到目前为止 OVN 已经支持了很多功能,

  • Logical switches:逻辑交换机,用来做二层转发。
  • L2/L3/L4 ACLs:二到四层的 ACL,可以根据报文的 MAC 地址,IP 地址,端口号来做访问控制。
  • Logical routers:逻辑路由器,分布式的,用来做三层转发。
  • Multiple tunnel overlays:支持多种隧道封装技术,有 Geneve,STT 和 VXLAN。
  • TOR switch or software logical switch gateways:支持使用硬件 TOR switch 或者软件逻辑 switch 当作网关来连接物理网络和虚拟网络。

OVN 对于运行平台没有额外的要求,只要能够运行 OVS,就可以运行 OVN,所以 OVN 可以和 Linux,Docker,DPDK 还有 Hyper-V 兼容,从 OVS 升级到 OVN 是非常容易的。

另外 OVN 可以和很多 CMS(Cloud Management System)集成到一起,比如 Openstack neutron,这些 CMS 只需要添加一个 plugin 来配置 OVN 即可。

OVN 架构

图 1. OVN 架构图

图 1 是 OVN 架构概览,最上面 Openstack/CMS plugin 是 CMS 和 OVN 的接口,它把 CMS 的配置转化成 OVN 的格式写到 Nnorthbound DB 里面。

Northbound DB 里面存的都是一些逻辑的数据,大部分和物理网络没有关系,比如 logical switch,logical router,ACL,logical port,和传统网络设备概念一致。

OVN-northd 类似于一个集中的控制器,它把 Northbound DB 里面的数据翻译一下,写到 Southbound DB 里面。

Southbound DB 里面存的数据和 Northbound DB 语义完全不一样,主要包含 3 类数据,一是物理网络数据,比如 HV(hypervisor)的 IP 地址,HV 的 tunnel 封装格式;二是逻辑网络数据,比如报文如何在逻辑网络里面转发;三是物理网络和逻辑网络的绑定关系,比如逻辑端口关联到哪个 HV 上面。

ovn-controller 是 OVN 里面的 agent,类似于 neutron 里面的 ovs-agent,它也是运行在每个 HV 上面,北向,ovn-controller 会把物理网络的信息写到 Southbound DB 里面,南向,它会把 Southbound DB 里面存的一些数据转化成 Openflow flow 配到本地的 OVS table 里面,来实现报文的转发。

ovs-vswitchd 和 ovsdb-server 是 OVS 的两个进程。

0 人点赞