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 的架构跟封包流向。


<<:  [Day 7] SRE - 故障排除小技巧

>>:  Day-4 演算法分析概念

Day16颜色(CSS)

Color 今天来介绍如何选择CSS的颜色 常用的方法种共有三种方式 我会将重点简述一下哦 RGB ...

Swift 新手-AI/IOT CoreML and TensorFlow

Core ML 是一个 Apple 框架,它允许开发人员将机器学习/深度学习模型集成到他们的应用程序...

[Day 22] 2D批次渲染 (三) - 终於找到问题了

今日目标 [Debug] 批次渲染 DrawLine 终於找到问题在哪了... 终於找到问题在哪里,...

Day 10- 物品借用纪录系统 (2) 设定 Calendar

昨天我们完成了基础建设,但是有个地方忘记讲到,我现在赶快补充一下! 我们昨天设定归还日期时,一定有人...

就决定是你了 - 阵列系列III

来到阵列系列的最後一天,今天要一次认识会改变原本阵列的Array Method,再往下看之前,先来个...