使用中子
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 命令。
行动 |
命令 |
---|---|
列出所有共享网络。 |
|
创建具有共享属性的网络。 |
|
在现有网络上设置共享属性。 |
|
列出所有 |
|
创建具有该 |
|
|
|
支持 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 选项。
例子
neutron port-create net1 --extra-dhcp-opt opt_name=<dhcp_option_name>,opt_value=<value>
可以使用的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。