Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 Neutron

OpenStack 的网络解决方案 Neutron 具有具有代表性的网络 (VirtualNetwork)、端口 (VirtualMachineInterface)、子网 (IpamSubnets) 和安全组的 Contrail 元素。Neutron 插件将元素从一种表示形式转换为另一种表示形式。

数据结构

尽管 Neutron 和 Contrail 之间的实际数据相似,但元素列表却有很大不同。在 Contrail API 中,网络元素列表是一个摘要,仅包含 UUID、FQ 名称和 href,但在 Neutron 中,每个资源的所有详细信息都包含在列表中。

Neutron 插件的列表检索操作效率低下,尤其是在大规模上,因为它:

  • 读取资源列表(例如), GET /virtual-networks然后

  • 迭代并读取资源 (GET /virtual-network/<uuid> ) 的详细信息。

因此,API 服务器在这种类型的 GET 操作中花费了大部分时间,只是等待来自 Cassandra 数据库的结果。

Contrail 中的以下功能可通过 Neutron 提高性能:

  • 在集合的 GET 中添加了可选的详细信息查询参数,以便 API 服务器返回列表中所有资源的详细信息,而不仅仅是摘要。与此同时,Contrail API 库也会发生变化,以便向调用方返回对象列表。

  • 现有 Contrail 列表 API 可采用可选 parent_id 查询参数,以返回有关父级锚定的资源的信息。

  • Contrail API 服务器以 multiget 格式将对象从 Cassandra 读入 obj_uuid_cf,其中存储对象内容,而不是以 xget/get 格式读取。这样可以减少往返 Cassandra 数据库的次数。

Neutron 中的网络共享

使用 Neutron,部署人员可以使用网络上的两个属性之一,使网络可供其他租户或项目访问:

  • shared将属性设置为允许共享

  • router:external当插件支持external_net扩展时,设置属性

使用共享属性

当网络设置了 shared 属性时,其他租户或项目中的用户(包括非管理员用户)可以使用以下方法访问该网络:

neutron net-list --shared

用户还可以使用以下操作直接在该网络上启动虚拟机:

nova boot <other-parameters> –nic net-id=<shared-net-id>

使用 Router:External 属性

当网络设置了 router:external 属性时,其他租户或项目中的用户(包括非管理员用户)可以使用该网络分配浮动 IP,方法是:

neutron floatingip-create <router-external-net-id>

然后将 IP 地址池与其实例相关联。

注意:

托管 FIP 池的 VN 应标记为“共享”和“外部”。

用于 Neutron 网络共享的命令

下表总结了 Contrail 最常用的 Neutron 命令。

行动

命令

列出所有共享网络。

neutron net-list --shared

创建具有共享属性的网络。

neutron net-create <net-name> –shared

在现有网络上设置共享属性。

neutron net-update <net-name> -shared

列出所有 router:external 网络。

neutron net-list --router:external

创建具有该属性的 router:external网络。

neutron net-create <net-name> -router:external

router:external在现有网络上设置属性。

neutron net-update <net-name> -router:external

支持 Neutron API

OpenStack Neutron 项目在由 OpenStack 计算服务管理的设备之间提供虚拟网络服务。软件开发人员使用 OpenStack 网络 API v2.0 (Neutron) 创建应用。

Contrail 提供以下功能来增强对 OpenStack Neutron 的支持:

  • 独立于虚拟机创建端口。

  • 支持虚拟网络上的多个子网。

  • 支持子网上的分配池。

  • 按租户配额。

  • 在子网上启用 DHCP。

  • 外部路由器可用于浮动 IP。

有关使用 OpenStack Networking API v2.0 (Neutron) 的更多信息,请参阅: http://docs.openstack.org/api/openstack-network/2.0/content/ 和 OpenStack Neutron Wiki,网址为: http://wiki.openstack.org/wiki/Neutron

Contrail Neutron 插件

Contrail Neutron 插件为以下核心资源提供了实施:

  • 网络

  • 港口

它还实现了以下标准和上游的 Neutron 扩展:

  • 安全组

  • 路由器 IP 和浮动 IP

  • 按租户配额

  • 允许的地址对

已实施以下特定于 Contrail 的扩展:

  • 网络 IPAM

  • 网络策略

  • VPC表和路由表

  • 浮动 IP 池

该插件不实现原生批量、分页或排序操作,而是依赖于 Neutron 通用代码提供的仿真。

DHCP 选项

在 Neutron 命令中,可以使用 port-create 中的 extra-dhcp-options 配置 DHCP 选项。

可以使用的 opt_name 和 opt_value 对在 GitHub: https://github.com/Juniper/contrail-controller/wiki/Extra-DHCP-Options 中维护。

不兼容

在 Contrail 架构中,已知存在以下与 Neutron API 不兼容的问题。

  • 不支持基于资源中的任何任意键进行筛选。唯一支持的过滤是 by id, name,tenant_id

  • 要使用浮动 IP,无需将公有子网和私有子网连接到 Neutro n 路由器。用标记公共网络 router:external 足以创建和关联浮动 IP,并且数据包转发到该 IP 将正常工作。

  • 配额的默认值来自 /etc/contrail/contrail-api.conf ,而不是来自 /etc/neutron/neutron.conf。