NetworkServiceDiablo
| |
旧设计页面
此页面曾用于帮助设计 OpenStack 之前版本的一个特性。它可能已经被实现,也可能没有。因此,此页面可能不会被更新,并且可能包含过时的信息。上次更新时间为 2013-12-12 |
目录
Network Service Proposal for Diablo
概述
此提案是几位社区成员之间讨论的结果,他们独立提交了 Openstack 中网络功能的蓝图。这些提案包括
(在此处列出提案)
此页面描述了在 Diablo 时间范围内以实验形式交付的目标服务。
Network Services Model
下图描述了两件事
- 软件服务架构,以及虚拟网络服务和 IPAM 服务与 Nova 的关系
- 用于描述 Diablo 时间范围内的虚拟网络拓扑的逻辑网络架构元素
Network Services Actors
Nova Refactoring and Responsibilities
建议对 Nova 网络进行以下两种重构
- 将网络功能组合成更集中的模型,但不要删除对现有选项的支持
- 为现有的 flat(静态)、flat(DHCP)和 VLAN 选项添加对虚拟网络服务支持
Virtual Networking Service
(这个项目需要一个名称。“Quantum”被提出过。)
虚拟网络服务将在 Diablo 中承担以下职责
- 提供用于管理 L2 网络抽象(“虚拟网络”?)的 API
- 提供身份验证、验证等
- 提供错误处理
- 分解请求(如果需要)
- 将请求分派到适当的插件
- 资源消耗查找服务
- 插件能力目录
Virtual Networking Service Plug-in
VNS 的插件将在 Diablo 中承担以下职责
- 接收并验证来自 L2 服务的请求
- 将逻辑抽象映射到实际的物理/虚拟服务实现/配置
- 向 L2 服务通告能力
IPAM Service
- 今天:Nova 只是从预定义的块中分配 IP 地址
- 网络块细分,将大块划分为较小的子网
- DHCP(应至少提供 dns-masq 等效项和插件支持)
- IPAM 服务的消费者 - openstack 服务(nova、LBaaS、Layer 2 等)
- IPv4 和 IPv6
- 多租户(重叠的 IP 范围)
- 公共地址空间
- 私有(重叠)地址空间
- 必须能够将 IP 关联到租户/项目和网络段
- 应存储 IP 地址、默认网关、子网(dhcp 选项:dns 服务器、ntp 等)
- 策略 - 分配 - 块使用方式的规则(为特定目的保留某些地址等)
- 问题:我们如何处理同一 L2 段上的多个 IP 子网?
- 策略和优先级?
- 问题:静态 IP?
- nova 保留,然后持有?
- 消费者是否可以指定要获取的 IP?
- 需要支持浮动 IP
- IPAM 服务是存储库,而不是“actor”(存储信息并回答查询,不会主动推送它)*
IPAM Service Plug-in
- 需要支持 DHCP 功能的插件
- 需要了解是否有对更广泛 IP 服务的插件的要求
Container Service
如果容器服务在 Diablo 时间范围内被定位,它将
- 提供用于管理容器抽象的 API
- 容器表示作为单元进行管理的资源逻辑组
- 初步重点是网络和网络服务
- 提供容器“口味”目录
- 提供定义容器“口味”的方式
- 提供实例化容器“口味”的方式
- 提供动态构建容器定义的方式
- 提供在运行时修改容器实例的机制。
- 分解请求并根据需要与其他网络服务通信。
Virtual Network Components
Network Segment
Diablo 时间范围内的虚拟网络拓扑的中心元素是网络段
- 表示单个 Layer 2 网络子网
- 通过“端口”提供访问
- 连接到“端口”的任何设备都可以与段上的任何其他设备通信
Virtual Interface (VIF)
VIF 表示从连接到网络的设备(例如,VM、网络服务或网关)的接口(例如,虚拟 NIC)
Port
端口表示到网络段的连接。端口可以单独配置,并且可以连接到任何有效的 VIF。但是,当 VIF “连接”到网络段时,VIF 和端口之间存在 1:1 的关系。
Other items proposed for discussion (captured by Dan W)
L2 Service Discussion Notes (Tuesday 4/26/2011)
- ** Tenant/Logical API ***
基本抽象:- 接口(由接口服务公开,例如,nova、防火墙、负载均衡器等) - 网络(由 L2 服务公开)。 - 端口,与网络相关联(由 L2 服务公开)
- 租户可以调用 L2 服务将接口“连接”到端口(可能是在 Port 对象上的“PUT”操作。此连接的语义是接口设备与接口服务(例如,VM NIC)之间的“虚拟电缆”和 L2 网络上的端口。“- 提到像 nova 这样的服务也可以作为此 API 的客户端,例如,自动将 VM 的公共 NIC 创建并连接到共享公共网络。- L2 网络的“口味”概念未确定。这可能更适合于像 donabe 这样的更高级别的容器服务,但有些人担心提供商然后可以使用具有多种 L2 段实现方式(例如,vlan 与 overlay)的插件。
- ** The Network Edge: ***
- 必须能够描述 L2 网络服务管理的交换机与接口服务之间的连接点。 - 可以将其视为元组 (interface-id, interface-location),其中 interface-id 是租户/逻辑 API 中使用的逻辑接口标识符,而 interface-location 是接口服务(例如,XenServer 与 KVM 与 VMware ESX 与 VMware with vDS)可以理解的接口的当前位置的描述。 - Openstack 的部署必须确保它具有能够理解接口服务将使用的所有格式的 L2 网络服务,否则 L2 服务将无法实际连接所有接口。应该有一种机制/握手来在设置时检查这一点。- 沟通此信息的具体机制尚未定义。有些人提到一个用于映射的显式目录,另一些人提到一个管理 API 以支持查询。
- ** Plugin Interface ****
- L2 网络插件接口将映射到租户/逻辑 API 和任何管理 API。- 插件“之上”存在代码以实现 API 解析、执行基本验证、根据服务提供商的要求强制执行 API 限制以及使用 keystone 授权请求。 - 如果希望使用多个插件,一种选择是根据定义的策略将调用分派到适当插件的“元插件”。 - 插件可以潜在地与多种类型的设备通信(例如,与 Cisco 物理交换机和 Open vSwitch 通信的插件。从这个意义上说,插件不同于“驱动程序”,驱动程序通常与它所谈论的“事物”类型之间存在一对一的对应关系。(注意:此讨论发生在一些人去吃午饭之后,因此我们可能没有完全达成共识)。
- ** Network & Scheduling ****
- 没有详细探讨,但似乎需要让 L2 插件定义可以在其中创建 L2 网络的“区域”概念。例如,如果使用 VLAN,这可能映射到单个 L2 域的数据中心“pod”。- 也提出了网络信息告知调度的其他原因,例如,能够满足主机的带宽保证。此主题可能需要与 nova 中合适的同事进行专门讨论。
- ** Other ***
- L2 服务的临时名称仍然是“quantum”。网络容器概念是“donabe”。- 讨论了 L2 桥接是 L2 服务的一部分还是“插入”到 L2 网络的更高级别服务的一部分。没有达成最终决定,因为双方都有相当强烈的意见。我们应该在峰会结束前努力最终确定这一点。
