在 ML2 中 enable local network - 每天5分钟玩转 OpenStack(79)

前面完成了一系列准备工作,本节开始将创建各种 Neutorn 网络,我们首先讨论 local network。

 

local network 的特点是不会与宿主机的任何物理网卡相连,也不关联任何的 VLAN ID。

对于每个 local netwrok,ML2 linux-bridge 会创建一个 bridge,instance 的 tap 设备会连接到 bridge。位于同一个 local network 的 instance 会连接到相同的 bridge,这样 instance 之间就可以通信了。

因为 bridge 没有与物理网卡连接,所以 instance 无法与宿主机之外的网络通信。 同时因为每个 local network 有自己的 bridge,bridge 之间是没有连通的,所以两个 local network 之间也不能通信,即使它们位于同一宿主机上。

下图是 local network 的示例:

  • 创建了两个 local network,分别对应两个网桥 brqXXXX 和 brqYYYY。
  • VM0 和 VM1 通过 tap0 和 tap1 连接到 brqXXXX。
  • VM2 通过 tap2 连接到 brqYYYY。
  • VM0 与 VM1 在同一个 local network中,它们之间可以通信。
  • VM2 位于另一个 local network,由于 brqXXXX 和 brqYYYY 没有联通,所以 VM2 无法与 VM0 和 VM1 通信。

下面我们将一步一步实现 local network。

在 ML2 配置中 enable local network

创建 local 网络之前请先确保 ML2 已经加载了 local type driver。 ML2 的配置文件位于 /etc/neutron/plugins/ml2/ml2_conf.ini。

type_drivers 告诉 ML2 加载所有 5 种网络的 type driver。

type_drivers = local,flat,vlan,gre,vxlan

这样所有类型的网络我们都可以创建(虽然在本节只创建 local 网络)。

普通用户和 admin 都可以通过 CLI 或者 Web GUI 创建网络,但只有 amdin 才能指定网络的 type,所以需要用 tenant_network_types 告诉 ML2 当普通用户在自己的 Tenant(Project)中创建网络时,默认创建哪种 type 的网络,这里 type 是 local。

tenant_network_types = local

tenant_network_types 可以指定多种 type,比如:

tenant_network_types = vlan, local

其作用是先创建 vlan 网络,当没有 vlan 可创建时(比如 vlan id 用完),便创建 local 网络。

当配置文件发生了变化,需要重启 Neutron 相关服务使之生效。

有了上面的这些准备,我们可以开始深入学习 linux bridge 如何实现每种 network type 了。

 

下一节将创建第一个 local network。

 

时间: 2024-09-20 14:33:23

在 ML2 中 enable local network - 每天5分钟玩转 OpenStack(79)的相关文章

创建第二个 local network - 每天5分钟玩转 OpenStack(84)

GUI 中有两个地方可以创建 network: 1. Project -> Network -> Networks 这是普通用户在自己的 tenant 中创建 network 的地方. 2. Admin -> Networks 这是 admin 创建 network 的地方. 前面我们已经用第一种方式创建了 "first_local_net",本节将以第二种方式创建 local network "second_local_net". 菜单路径为 A

创建 OVS Local Network - 每天5分钟玩转 OpenStack(129)

上一节我们完成了 OVS 的准备工作,本节从最基础的 local network 开始学习.local network 不会与宿主机的任何物理网卡连接,流量只被限制在宿主机内,同时也不关联任何的 VLAN ID. 创建第一个 local network 下面我们通过 Web GUI 创建 local network. 进入菜单 Admin -> Networks,点击 "Create Network" 按钮. 显示创建页面. "Provider Network Type

再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)

上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 first_local_net 以同样的方式 launch instance "cirros-vm2",分配的 IP 为 172.16.1.4. cirros-vm2 也被 schedule 到控制节点,ovs-vsctl show 的输出如下: cirros-vm2 对于的 tap 设

将 instance 部署到 OVS Local Network - 每天5分钟玩转 OpenStack(130)

上一节创建了 OVS 本地网络 first_local_net,今天我们会部署一个 instance 到该网络并分析网络结构.launch 一个 instance,选择 first_local_net 网络 instance 部署成功,分配的 IP 地址为 172.16.1.3 底层网络发生了什么变化? 对于 instance "cirros-vm1",Neutron 会在 subnet 中创建一个 port,分配 IP 和 MAC 地址,并将 port 分配给 cirros-vm1.

在 ML2 中配置 OVS flat network - 每天5分钟玩转 OpenStack(133)

前面讨论了 OVS local network,今天开始学习 flat network. flat network 是不带 tag 的网络,宿主机的物理网卡通过网桥与 flat network 连接,每个 flat network 都会占用一个物理网卡. 在 ML2 配置中 enable flat network 在控制节点 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置 flat network 相关参数: tenant_network_types = fl

在 ML2 中配置 OVS vlan network - 每天5分钟玩转 OpenStack(136)

前面我们已经学习了 OVS 的 local 网络 和 falt 网络,今天开始讨论 vlan 网络. vlan network 是带 tag 的网络. 在 Open vSwitch 实现方式下,不同 vlan instance 的虚拟网卡都接到 br-int 上. 这一点与 linux bridge 非常不同,linux bridge 是不同 vlan 接到不同的网桥上. 在我们的实验环境中,收发 vlan 数据的物理网卡为 eth1,上面可以走多个 vlan,所以物理交换机上与 eth1 相连

OVS 中的各种网络设备 - 每天5分钟玩转 OpenStack(128)

上一节我们启用了 Open vSwitch,本节将查看当前的网络状态并介绍 Open vSwitch 涉及的各种网络设备 初始网络状态 查看一下当前的网络状态. 控制节点 ifconfig 显示控制节点上有三个网桥 br-ex,br-int 和 br-tun. 从命名上看我们大致能猜出他们的用途: br-ex连接外部(external)网络的网桥 br-int集成(integration)网桥,所有 instance 的虚拟网卡和其他虚拟网络设备都将连接到该网桥. br-tun隧道(tunnel

创建 OVS flat network - 每天5分钟玩转 OpenStack(134)

上一节完成了 flat 的配置工作,今天创建 OVS flat network.Admin -> Networks,点击 "Create Network" 按钮. 显示创建页面. Provider Network Type 选择 "Flat". Physical Network 填写 "default",与 ml2_conf.ini 中 flat_networks 参数值保持一致. 点击 "Create Network"

创建 flat network - 每天5分钟玩转 OpenStack(87)

上一节我们讨论了 flat network 的原理,今天就来创建 "flat_net" 并分析底层网络的实现. 打开菜单 Admin -> Networks,点击 "Create Network" 按钮. 显示创建页面. Provider Network Type 选择 "Flat". Physical Network 填写 "default",与 ml2_conf.ini 中 flat_networks 参数保持一致.