從裸機到雲端:OVN 介紹

Auto Draft

前幾篇筆者介紹了 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


Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.