第 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 透明网络的某些功能:

Expand
 中继透明

机制驱动程序支持

ML2/OVN

ML2/OVN

管理的 VLAN 设置

OpenStack Networking Service (neutron)

VM 实例

IP 分配

由 DHCP 分配。

在 实例中配置。

VLAN ID

已修复。实例必须使用中继中配置的 VLAN ID。

灵活。您可以在实例中设置 VLAN ID。

为 VLAN 标记流量实施中继由以下步骤组成:

  1. 创建父端口,并使用它来创建中继。
  2. 创建一个或多个子端口,并将它们与父端口关联。
  3. 创建一个子接口,用于标记与子端口关联的 VLAN 的流量。
  4. 创建实例时,将父端口 ID 指定为实例的 vNIC。

本节包含以下主题:

5.1. 创建中继

在 OpenShift 上的 Red Hat OpenStack Services (RHOSO)环境中,使实例 VLAN 感知的第一步是创建一个中继。

在创建中继时,首先创建父端口。接下来,使用父端口创建中继。在创建中继期间,RHOSO 网络服务(neutron)向父端口添加中继连接。

先决条件

  • 管理员已为您创建一个项目,并为您提供了一个 clouds.yaml 文件来访问云。
  • python-openstackclient 软件包驻留在您的工作站上。

    $ dnf list installed python-openstackclient
    Copy to Clipboard Toggle word wrap

流程

  1. 确认为您的云设置了系统 OS_CLOUD 变量:

    $ echo $OS_CLOUD
    my_cloud
    Copy to Clipboard Toggle word wrap

    如果需要,重置变量:

    $ export OS_CLOUD=my_other_cloud
    Copy to Clipboard Toggle word wrap

    作为替代方案,您可以在每次运行 openstack 命令时添加 --os-cloud <cloud_name > 选项指定云名称。

  2. 识别连接到您要提供对中继 VLAN 访问权限的实例的网络:

    $ openstack network list -c Name -c Subnets --max-width=55
    Copy to Clipboard Toggle word wrap

    输出示例

    +-------------+---------------------------------------+
    | Name        | Subnets                               |
    +-------------+---------------------------------------+
    | private     | 47d34cf0-0dd2-49bd-a985-67311d80c5c4, |
    |             | 82014d36-9e60-43eb-92fc-74674573f4e8, |
    |             | d7535565-113f-4192-baa6-da21f301f141  |
    | private2    | 7ee56cef-83c0-40d1-b4e7-5287dae1c23c  |
    | public      | 49dda67d-814e-457b-b14b-77ef32935c0f, |
    |             | 6745edd4-d15f-4971-89bf-70307b0ad2f1, |
    |             | cc3f81bb-4d55-4ead-aad4-5362a7ca5b04  |
    | lb-mgmt-net | 5ca08724-568c-4030-93eb-f2e286570a25  |
    +-------------+---------------------------------------+
    Copy to Clipboard Toggle word wrap

  3. 创建父中继端口,并将它附加到实例连接的网络。

    Example

    在本例中,在公共网络上 创建了一个名为 parent-trunk-port 的端口。这个端口是 端口,您可以使用它来创建子端口:

    $ openstack port create --network public parent-trunk-port
    Copy to Clipboard Toggle word wrap

    输出示例

    +-------------------------+--------------------------------------------+
    | Field                   | Value                                      |
    +-------------------------+--------------------------------------------+
    | admin_state_up          | UP                                         |
    | allowed_address_pairs   |                                            |
    | binding_host_id         |                                            |
    | binding_profile         |                                            |
    | binding_vif_details     |                                            |
    | binding_vif_type        | unbound                                    |
    | binding_vnic_type       | normal                                     |
    | created_at              | 2024-09-25T20:18:40Z                       |
    | data_plane_status       | None                                       |
    | description             |                                            |
    | device_id               |                                            |
    | device_owner            |                                            |
    | device_profile          | None                                       |
    | dns_assignment          | fqdn='host-10-0-0-236.openstacklocal.',    |
    |                         | hostname='host-10-0-0-236',                |
    |                         | ip_address='10.0.0.236'                    |
    |                         | fqdn='host-2002-c000-200--                 |
    |                         | 64.openstacklocal.',                       |
    |                         | hostname='host-2002-c000-200--64',         |
    |                         | ip_address='2002:c000:200::64'             |
    | dns_domain              |                                            |
    | dns_name                |                                            |
    | extra_dhcp_opts         |                                            |
    | fixed_ips               | ip_address='10.0.0.236', subnet_id='6745ed |
    |                         | d4-d15f-4971-89bf-70307b0ad2f1'            |
    |                         | ip_address='2002:c000:200::64', subnet_id= |
    |                         | '49dda67d-814e-457b-b14b-77ef32935c0f'     |
    | id                      | 530ff46e-b285-4ad7-a77a-7dca1fb9174d       |
    | ip_allocation           | immediate                                  |
    | mac_address             | fa:16:3e:0f:b8:cb                          |
    | name                    | parent-trunk-port                          |
    | network_id              | bcdb3cc0-8c0b-4d2d-813c-e141bb97aa8f       |
    | numa_affinity_policy    | None                                       |
    | port_security_enabled   | True                                       |
    | project_id              | 24089d2fe1a94dd29ca2f665794fbe92           |
    | propagate_uplink_status | None                                       |
    | qos_network_policy_id   | None                                       |
    | qos_policy_id           | None                                       |
    | resource_request        | None                                       |
    | revision_number         | 1                                          |
    | security_group_ids      | 9bf70539-31b0-47e5-a0ea-3ee409de0499       |
    | status                  | DOWN                                       |
    | tags                    |                                            |
    | trunk_details           | {'trunk_id':                               |
    |                         | 'ef2aff85-9e51-43d4-ab28-2ab833f049b3',    |
    |                         | 'sub_ports': []}                           |
    | updated_at              | 2024-09-25T20:18:40Z                       |
    +-------------------------+--------------------------------------------+
    Copy to Clipboard Toggle word wrap

  4. 使用父端口创建中继。

    Example

    在本例中,中继名为 trunk1,其父端口名为 parent-trunk-port

    $ openstack network trunk create --parent-port parent-trunk-port trunk1
    Copy to Clipboard Toggle word wrap

    输出示例

    +-----------------+--------------------------------------+
    | Field           | Value                                |
    +-----------------+--------------------------------------+
    | admin_state_up  | UP                                   |
    | created_at      | 2024-09-25T20:19:43Z                 |
    | description     |                                      |
    | id              | ef2aff85-9e51-43d4-ab28-2ab833f049b3 |
    | name            | trunk1                               |
    | port_id         | 530ff46e-b285-4ad7-a77a-7dca1fb9174d |
    | project_id      | 24089d2fe1a94dd29ca2f665794fbe92     |
    | revision_number | 1                                    |
    | status          | ACTIVE                               |
    | sub_ports       |                                      |
    | tags            | []                                   |
    | tenant_id       | 24089d2fe1a94dd29ca2f665794fbe92     |
    | updated_at      | 2024-09-25T20:19:43Z                 |
    +-----------------+--------------------------------------+
    Copy to Clipboard Toggle word wrap

验证

  1. 查看中继连接:

    $ openstack network trunk list --max-width=72
    Copy to Clipboard Toggle word wrap

    输出示例

    +--------------------+--------------+--------------------+-------------+
    | ID                 | Name         | Parent Port        | Description |
    +--------------------+--------------+--------------------+-------------+
    | ef2aff85-9e51-43d4 | parent-trunk | 530ff46e-b285-4ad7 |             |
    | -ab28-2ab833f049b3 |              | -a77a-7dca1fb9174d |             |
    +--------------------+--------------+--------------------+-------------+
    Copy to Clipboard Toggle word wrap

  2. 查看中继连接的详情:

    $ openstack network trunk show parent-trunk
    Copy to Clipboard Toggle word wrap

    输出示例

    +-----------------+--------------------------------------+
    | Field           | Value                                |
    +-----------------+--------------------------------------+
    | admin_state_up  | UP                                   |
    | created_at      | 2024-09-25T20:19:43Z                 |
    | description     |                                      |
    | id              | ef2aff85-9e51-43d4-ab28-2ab833f049b3 |
    | name            | trunk1                               |
    | port_id         | 530ff46e-b285-4ad7-a77a-7dca1fb9174d |
    | project_id      | 24089d2fe1a94dd29ca2f665794fbe92     |
    | revision_number | 1                                    |
    | status          | ACTIVE                               |
    | sub_ports       |                                      |
    | tags            | []                                   |
    | tenant_id       | 24089d2fe1a94dd29ca2f665794fbe92     |
    | updated_at      | 2024-09-25T20:19:43Z                 |
    +-----------------+--------------------------------------+
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat