OVN 介绍

本系列文章同步发布於笔者网站


前几篇笔者介绍了 OpenStack 在使用 Linux Bridge 和 Open vSwitch plug-in 下的相关架构,这篇我们要来介绍一个比较新,架构比较不一样的 Neutron Plug-in,OVN。

Overview

OVN 可以说是一个透过 OVS 建立虚拟网路的分散式 SDN controller。以下回一些 OVN 所能提供的功能

  • 透过 L2 跟 L3 overlays 为 OVS 提供一个抽象层,同时可以管理与实体网路的连接
  • 支援利用 OVS connection tracking 实现的灵活 ACL
  • 支援透过 OVS flow 实现的分散式 L3 路由,同时支持 IPv4 和 IPv6
  • 利用 OVS connection tracking 的 NAT 跟 Load balancing
  • 分散式的 DHCP
  • 支援所有的 OVS datapath,例如预设的 Linux kernel datapath 或 DPDK 等
  • 支援从虚拟网路到实体网路的 L3 gateway
  • 支援 software-based 的 L2 gateway
  • 可以为在不需要第二层 overlay 网路的情况下提供 VM 跟跑在 VM 上的 container 之间的连线

OVN 不只有 OpenStack Neutron 的 plugin implementation (networking-ovn) 同时也有提供给 Kuberenetes 使用的 CNI plugin。

元件

OVN 包含下列元件:

  • OVN Northbound Database
  • ovn-northd
  • OVN Southbound Database
  • ovn-controller
  • ovs-vswitchd
  • ovsdb-server

OVN Northbound Database

OVN Northbound Database 负责接收来自 CMS (Cloud management system) 的网路设定,CMS 可以是 OpenStack, Kubernetes 或是其他支援的系统。

ovn-northd

ovn-northd 连接到上游的 OVN Northbound Database 跟下游的 OVN Southbound Database。它负责将 OVN Northbound Database 里面以常规网路概念 (Router, switch) 等的逻辑设定转换成 OVN Northbound Database 中的 logical datapath flows。

OVN Southbound Database

OVN Southbound Database 是 OVN 整个架构的核心,向上连接到 ovn-northd,向下连接到所有节点上的 ovn-controller。

OVN Southbound Database 储存三种资料:

  • Physical Network (PN) tables:里面放如何到达 hypervisor 跟其他节点的资料
  • Logical Network (LN) tables:储存 northd 提供透过 logical datapath flows 描述的虚拟网路
  • Binding tables:储存虚拟网路元件跟实体网路之间的关系

Hypervisors 会负责提供 PN 和 Port Binding tables 的资料,而 ovn-northd 提供 Logical Network (LN) tables 的资料。

ovn-controller

ovn-controller(8) 是 OVN 在每个 hypervisor 上的 agent 和 software gateway。向上连接到 OVN Southbound Database 了解 OVN 设定和状态并提供 PN 和 Port Binding tables 的资料。

而 ovs-vswitchd 和 ovsdb-server 是原本 OVS 就有的元件,一个负责控制网路流量,一个负责监控并且管理 Open vSwitch 设定。

架构

ovn-architecture

小结

以上大概就是 OVN 大致的概念以及其组成元件,在下一篇我们会介绍 OVN 如何跟 OpenStack 做结合

Reference


<<:  我的第一份实习

>>:  [Day16]C# 鸡础观念- 虚拟代工厂~方法(function)

Day 04-Terraform 也有 Backend?啥是 Terraform Backend 能吃吗?

Terraform 也有 Backend 之啥是 Terraform Backend 能吃吗? 课程...

[ JS个人笔记 ] this的指向—DAY8

this 是 JavaScript 的关键字 this 是 function 执行时,自动生成的内...

AutoCAD ActiveX #4 Block & Layer

Layer A logical grouping of data, similar to trans...

Day_09 : 让 Vite 来开启你的Vue 之 Vite 核心 Native ESM

Hi Dai Gei Ho~ 我是Winnie~ 大家中秋节快乐。 这几天在看自己文章的时候发现 V...

远端连线 GCE 的 MySQL 资料库

情境 每次查询API执行後都得进vm下MySQL指令用CLI看成果? 身为免费仔推荐一个好用的 da...