Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用中子

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 读取到 存储对象内容的 中,而不是以 xget/get 格式 obj_uuid_cf读取。这减少了往返 Cassandra 数据库的次数。

中子中的网络共享

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

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

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

使用共享属性

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

neutron net-list --shared

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

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

使用路由器:外部属性

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

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

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

注意:

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

用于 Neutron 网络共享的命令

下表总结了与 Contrail 一起使用的最常见 Neutron 命令。

表 1:中子命令

行动

命令

列出所有共享网络。

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 Networking 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 插件为以下核心资源提供了实现:

  • 网络

  • 港口

它还实现了以下标准和上游中子扩展:

  • 安全组

  • 路由器 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,无需将公有子网和私有子网连接到Neutron路由器。标记 router:external 公共网络就足以创建和关联浮动 IP,并且向其转发数据包将起作用。

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