從裸機到雲端:OpenStack Neutron 介紹 — OVS Provider Networks

從裸機到雲端:OpenStack Neutron 介紹 — OVS Provider Networks

上篇介紹了 Neutron 使用 Linux Bridge plug-in 在不同狀況下的架構以及流向,接下來幾天會介紹 OVS plug-in 時的架構以及流量是怎麼流的。首先第一篇筆者會先來介紹 Open vSwitch with Provider Network。

Open vSwitch: Provider networks

架構

上圖為 Linux Bridge – Provider Networts 架構下的整個架構總覽,可以看到那些元件是跑在 controller node 上,哪些是在 compute node 上。

這張圖畫出了在單一 provider network (untagged/flat) 下 compute node 中的元件是怎麼串接的。在這個範例中 Instance 跟 DHCP agent 是在同一台的,但是在實際狀況下 DHCP agent 有可能是在其他 compute node 上。

在有多個 Provider networks 的狀況下,每一個 provider networks 會使用同一個 OVS provider bridge 跟 integration bridge,但是會用不同的 internal VLAN 隔離。Internal VLAN 通常會跟 Neutron 的 network VLAN 不一樣。

Traffic Flow

這節會介紹在各個狀況下實際封包是如何在架構中流通的。

架構設定

以下是我們預想的架構,有兩個透過 vlan 隔離的 provider networks 並且上面各有一台 instance

  • Provider network 1 (VLAN)
    • VLAN ID 101 (tagged)
    • IP 地址範圍 203.0.113.0/24
    • Gateway (在實體的網路上)
      • IP 203.0.113.1
  • Provider network 2 (VLAN)
    • VLAN ID 102 (tagged)
    • IP 地址範圍 192.0.2.0/24
    • Gateway
      • IP 192.0.2.1
  • Instance 1
    • IP 203.0.113.101
  • Instance 2
    • IP 192.0.2.101

南北向流量

  • Instance 在 compute node 1 上並且用 provider network 1
  • Instance 將封包送往外部網路

  • Instance 的網路介面 (1) 透過 veth pair (2) 將封包送往 linux bridge 的 instance port
  • 在 linux bridge 上 iptables (3) 會處理防火牆跟 connection tracking
  • Linux bridge 上的 ovs 介 (4) 面透過 veth pair 將封包送往 OVS integration bridge security group 介面 (5)
  • OVS integration bridge 將封包加上 internal VLAN tag
  • OVS integration bridge int-br-provider patch 介面 (6) 將封包送往 OVS provider bridge phy-br-provider patch 介面 (7)
  • OVS Provider bridge 將 internal VLAN tag 換成實際 provider network 的 VLAN tag 101
  • OVS Provider bridge 上的 provider network 介面 (8) 會將封包送往實體網路介面 (9)
  • 實體網路介面將封包送往實體網路設施中的交換器 (10)

後面的部分就跟大家一般網路了解的一樣,封包會被送往 router 後送出去。而封包回程的模式就是整個倒過來。

東西向流量 1:在同一個網路下的 instance

  • Instance 1 在 compute node 1 上並且用 provider network 1
  • Instance 2 在 compute node 2 上並且用 provider network 1
  • Instance 1 將封包送往 Instance 2

前面的狀況是完全一樣的

  • Instance 的網路介面 (1) 透過 veth pair (2) 將封包送往 linux bridge 的 instance port
  • 在 linux bridge 上 iptables (3) 會處理防火牆跟 connection tracking
  • Linux bridge 上的 ovs 介面 (4) 透過 veth pair 將封包送往 OVS integration bridge security group 介面 (5)
  • OVS integration bridge 將封包加上 internal VLAN tag
  • OVS integration bridge int-br-provider patch 介面 (6) 將封包送往 OVS provider bridge phy-br-provider patch 介面 (7)
  • OVS Provider bridge 將 internal VLAN tag 換成實際 provider network 的 VLAN tag 101
  • OVS Provider bridge 上的 provider network 介面 (8) 會將封包送往實體網路介面 (9)
  • 實體網路介面將封包送往實體網路設施中的交換器 (10)

在實際網路基礎設施中:

  • 交換器將封包從 compute node 1 送往 compute node 2 (11)

封包到達 compute node 2 後:

  • 實體網路介面 (12) 將封包送往 OVS provider bridge 上的 provider network port (13)
  • 在 OVS provider bridge 的 phy-br-provider patch port (14) 將封包送往 OVS integration bridge 上的 int-br-provider patch port (15)
  • OVS integration bridge 將 VLAN tag 101 換成 internal VLAN tag
  • OVS integration bridge security group 介面 (16) 將封包送往 Linux bridge 上的 ovs 介面 (17)
  • 在 linux bridge 上 iptables (18) 會處理防火牆跟 connection tracking
  • linux bridge 的 instance port (19) 透過 veth pair 將封包送往Instance 的網路介面 (20)

東西向流量 2:在不同一個網路下的 instance

  • Instance 1 在 compute node 1 上並且用 provider network 1
  • Instance 2 在 compute node 1 上並且用 provider network 2
  • Instance 1 將封包送往 Instance 2

一開始封包送出去的流程也是一樣的

  • Instance 的網路介面 (1) 透過 veth pair (2) 將封包送往 linux bridge 的 instance port
  • 在 linux bridge 上 iptables (3) 會處理防火牆跟 connection tracking
  • Linux bridge 上的 ovs 介面 (4) 透過 veth pair 將封包送往 OVS integration bridge security group 介面 (5)
  • OVS integration bridge 將封包加上 internal VLAN tag
  • OVS integration bridge int-br-provider patch 介面 (6) 將封包送往 OVS provider bridge phy-br-provider patch 介面 (7)
  • OVS Provider bridge 將 internal VLAN tag 換成實際 provider network 的 VLAN tag 101
  • OVS Provider bridge 上的 provider network 介面 (8) 會將封包送往實體網路介面 (9)
  • 實體網路介面將封包送往實體網路設施中的交換器 (10)

在實際網路基礎設施中:

  • 交換器將封包 VLAN tag 101 拿掉並且送往路由器 (11)
  • 路由器將封包從 provider network 1 (12) 路由到 provider network 2 (13)
  • 路由器將封包送往交換器 (14)
  • 交換器將封包 VLAN tag 102 拿掉並且送往 compute node 1 (15)

回到 compute node 1 上:

  • 實體網路介面 (16) 將封包送往 OVS provider bridge 上的 provider network port (17)
  • 在 OVS provider bridge 的 phy-br-provider patch port (18) 將封包送往 OVS integration bridge 上的 int-br-provider patch port (19)
  • OVS integration bridge 將 VLAN tag 102 換成 internal VLAN tag
  • OVS integration bridge security group 介面 (20) 將封包送往 Linux bridge 上的 ovs 介面 (21)
  • 在 linux bridge 上 iptables (22) 會處理防火牆跟 connection tracking
  • linux bridge 的 instance port (23) 透過 veth pair 將封包送往Instance 的網路介面 (24)

可以看到除了中間實體網路設施的 routing 不一樣而已,其實跟送往同一個 provider network 不同 instance 的封包流向非常的相似 以上就是各種狀況下 Open vSwitch Provider Network 的封包流量。

小結

本篇介紹了 Open vSwitch – Provider Network 下的架構跟封包流向。可以發現整體的概念跟 Linux Bridge – Provider Network 非常相像,只是中間多了 OVS integration/provider bridge。而下一篇會介紹使用 Open vSwitch – self-service network 的架構跟封包流向。


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