Neutron - 操作输入无效:physical_network 'physnet_em1' VLAN 提供商网络未知

Neutron - Invalid input for operation: physical_network 'physnet_em1' unknown for VLAN provider network

我在 VirtualBox VM 运行 Ubuntu 18.04 上使用 Devstack 安装了 Openstack。我正在尝试使用以下命令创建提供商网络:

neutron net-create mgmt --provider:network_type=vlan --provider:physical_network=physnet_em1 --provider:segmentation_id=500 --shared

此命令returns出现以下错误:

neutronclient.common.exceptions.BadRequest: Invalid input for operation:
physical_network 'physnet_em1' unknown for VLAN provider network.
Neutron server returns request_ids: ['req-7a0bfe13-b4c3-4408-bc60-8d36e8bc3f9a']

我想知道如何进行。

  1. 您应该使用 openstack-client 命令,例如 openstack network create ...,因为单个库的客户端命令,例如您的 neutron net-create,已被弃用。有一些非常特殊的情况,只有单个组件的客户端库才有可能,但 openstack-client 涵盖了大部分情况。不幸的是,文档中经常使用旧命令,因为许多文档不是最新的。

  2. 为避免您遇到的错误,您只需从命令中删除 --provider:physical_network=physnet_em1--provider:segmentation_id=500。物理网络和 vlan-range 应该在 neutron-server 的 ml2_conf.ini 中定义,例如:

    [ml2]
    type_drivers = flat,vlan,vxlan
    ...
    
    [ml2_type_vlan]
    network_vlan_ranges = physnet_em1:171:280
    ...
    

    所以 neutron net-create mgmt --provider:network_type=vlan --shared 它在我的测试部署中工作(至少终端没有错误,现在没有测试网络连接)。此任务的 openstack-command 将是 openstack network create --provider-network-type vlan mgmt --share --external.

  3. 通常,据我所知,对于提供商网络,使用 flat 网络类型而不是 vlan,因为提供商网络通常不应该直接连接到任何虚拟机。其他非提供商网络可以是 vlan 或 vxlan,然后通过中子路由器连接到提供商网络。一个 openstack-command 可以是:openstack network create --provider-network-type flat --provider-physical-network physnet_em1 mgmt --share --external。对于平面网络,您可以通过命令行定义 provider-physical-network。 在像这样的一些文档中:https://docs.openstack.org/newton/install-guide-ubuntu/launch-instance-networks-provider.html 他们还使用 flat-网络作为提供商网络类型。