第 5 章 VLAN 感知实例
在 OpenShift 上的 Red Hat OpenStack Services (RHOSO)环境中,可以通过两种方式将实例与 VLAN 关联:VLAN 中继或 VLAN 透明网络。
中继是端口的集合,可让您使用标签将网络流量路由到多个 VLAN。与访问一个 VLAN 上只能发送和接收网络流量的端口相比,中继通常提供较低延迟和更高带宽。在 RHOSO 环境中,中继由与父端口关联的一个或多个子端口组成。
VLAN 中继通过将 VLAN 合并到单一中继端口来支持 VLAN 感知实例。例如,项目数据网络可以使用 VLAN 或隧道分段(GENEVE),而实例则看到标记有 VLAN ID 的流量。网络数据包会在实例注入实例之前立即标记,不需要标记整个网络。
使用 VLAN 透明网络时,您可以在虚拟机实例中设置 VLAN 标记。VLAN 标签通过网络传输,并由同一 VLAN 上的实例使用,其他实例和设备会忽略它们。在 VLAN 透明网络中,VLAN 在实例中管理。您不需要在 OpenStack Networking Service (neutron)中设置 VLAN。
下表比较 VLAN 中继和 VLAN 透明网络的某些功能:
| 中继 | 透明 | |
|---|---|---|
| 机制驱动程序支持 | ML2/OVN | ML2/OVN |
| 管理的 VLAN 设置 | OpenStack Networking Service (neutron) | VM 实例 |
| IP 分配 | 由 DHCP 分配。 | 在 实例中配置。 |
| VLAN ID | 已修复。实例必须使用中继中配置的 VLAN ID。 | 灵活。您可以在实例中设置 VLAN ID。 |
为 VLAN 标记流量实施中继由以下步骤组成:
- 创建父端口,并使用它来创建中继。
- 创建一个或多个子端口,并将它们与父端口关联。
- 创建一个子接口,用于标记与子端口关联的 VLAN 的流量。
- 创建实例时,将父端口 ID 指定为实例的 vNIC。
本节包含以下主题:
5.1. 创建中继 复制链接链接已复制到粘贴板!
在 OpenShift 上的 Red Hat OpenStack Services (RHOSO)环境中,使实例 VLAN 感知的第一步是创建一个中继。
在创建中继时,首先创建父端口。接下来,使用父端口创建中继。在创建中继期间,RHOSO 网络服务(neutron)向父端口添加中继连接。
先决条件
-
管理员已为您创建一个项目,并为您提供了一个
clouds.yaml文件来访问云。 python-openstackclient软件包驻留在您的工作站上。dnf list installed python-openstackclient
$ dnf list installed python-openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
确认为您的云设置了系统
OS_CLOUD变量:echo $OS_CLOUD
$ echo $OS_CLOUD my_cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,重置变量:
export OS_CLOUD=my_other_cloud
$ export OS_CLOUD=my_other_cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 作为替代方案,您可以在每次运行
openstack命令时添加--os-cloud <cloud_name> 选项指定云名称。识别连接到您要提供对中继 VLAN 访问权限的实例的网络:
openstack network list -c Name -c Subnets --max-width=55
$ openstack network list -c Name -c Subnets --max-width=55Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建父中继端口,并将它附加到实例连接的网络。
Example
在本例中,
在公共网络上创建了一个名为parent-trunk-port的端口。这个端口是 父 端口,您可以使用它来创建子端口:openstack port create --network public parent-trunk-port
$ openstack port create --network public parent-trunk-portCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用父端口创建中继。
Example
在本例中,中继名为
trunk1,其父端口名为parent-trunk-port:openstack network trunk create --parent-port parent-trunk-port trunk1
$ openstack network trunk create --parent-port parent-trunk-port trunk1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看中继连接:
openstack network trunk list --max-width=72
$ openstack network trunk list --max-width=72Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看中继连接的详情:
openstack network trunk show parent-trunk
$ openstack network trunk show parent-trunkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤