ML2 Provider-network 部分规格

Launchpad蓝图

https://blueprints.launchpad.net/neutron/+spec/provider-network-partial-specs

此蓝图将允许创建具有部分提供的提供者属性的提供者网络。此功能将仅针对 ML2 插件实现。

问题描述

目前,租户网络的全部提供者属性均由 neutron 选择,而对于提供者网络,管理员必须指定所有提供者属性。对于提供者网络,管理员无法指定某些提供者属性并将剩余属性的选择委托给 neutron-server。这意味着管理员在创建提供者网络时必须知道有效的且未分配的物理网络和分段 ID。

此蓝图将允许管理员指定某些提供者属性,并让 neutron 从允许值池中选择剩余的属性。

用例

  • 为裸机部署创建网络,无需关注物理网络/分段 ID 的选择,

  • 创建“服务”网络(通常用于存储的网络),这些网络通过 vlan 在特定物理网络上提供,无需关注分段 ID 的选择,

  • 为测试创建 gre/vxlan 网络。

提议的变更

Vlan/gre/vxlan ML2 类型驱动程序将被扩展,以便在网络创建时支持部分提供提供者/多提供者网络属性,并让类型驱动程序从租户网络池中选择一个网络。

更确切地说,类型驱动程序将从匹配提供的属性的租户网络池中选择一个网络并分配它。如果未找到候选网络,则类型驱动程序将引发 NoNetworkAvailable 异常。网络删除过程不会更改:网络将被返回到其租户网络池。

备选方案

另一种解决方案是为以前的网络类型提供替代类型驱动程序实现,允许部分指定提供者属性。此解决方案不需要新的配置选项,但 ML2 类型管理器必须检查是否为每种网络类型提供至多一个类型驱动程序。

数据模型影响

REST API 影响

此蓝图减少了网络创建时提供者网络属性的约束

  • 如果指定 provider:network_type=vlan,则 provider:physical_network 和 provider:segmentation_id 是可选的

    neutron net-create net-vlan --provider:network_type=vlan
    neutron net-create net-storage --provider:network_type=vlan\
        --provider:physical_network=storage
    
  • 如果指定 provider:network_type=gre,则 provider:segmentation_id 是可选的

    neutron net-create net-gre --provider:network_type=gre
    
  • 如果指定 provider:network_type=vxlan,则 provider:segmentation_id 是可选的

    neutron net-create net-vxlan --provider:network_type=vxlan
    

相同的约束减少也适用于网络创建时的多提供者属性

neutron net-create net-multi --segments type=dict list=true\
    provider:network_type=vlan,provider:physical_network=multi\
    provider:network_type=gre\

安全影响

提供者/多提供者网络的默认策略不会更改。

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人:Cedric Brandily <cbrandily>

工作项

  1. 更新 ML2 插件/类型管理器,以便允许 reserve_provider_network 返回已分配的网络

  2. 扩展 vlan 类型驱动程序以支持部分规格

  3. 扩展 gre/vxlan 类型驱动程序以支持部分规格

  4. 更新 ML2 多提供者以支持部分规格

依赖项

测试

代码将由单元测试覆盖。

将提供 Tempest 测试。Tempest 必须意识到测试部署支持的网络类型,以便在所有支持的网络类型上测试部分规格。新的 Tempest 选项 partial_specs_scenario 将被定义以配置支持的网络类型

  • 禁用部分规格测试(默认值)

    partial_specs_scenario =
    
  • 启用 vlan 提供者网络部分规格测试

    partial_specs_scenario = vlan
    
  • 启用 vlan 和 gre 提供者网络部分规格测试

    partial_specs_scenario = vlan,gre
    

文档影响

记录部署程序影响。

参考资料

https://review.openstack.org/#/q/topic:bp/provider-network-partial-specs,n,z