前幾篇筆者介紹了 OpenStack 在使用 Linux Bridge 和 Open vSwitch plug-in 下的相關架構,這篇我們要來介紹一個比較新,架構比較不一樣的 Neutron Plug-in,OVN。
Table of Contents
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 大致的概念以及其組成元件,在下一篇我們會介紹 OVN 如何跟 OpenStack 做結合
Reference
- https://man7.org/linux/man-pages/man7/ovn-architecture.7.html
- https://blog.russellbryant.net/2016/09/29/ovs-2-6-and-the-first-release-of-ovn/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.