Neutron/L2-GW
目录
概述
L2-GW(第二层网关)是添加到 OpenStack Networking(Neutron)服务中的服务插件。L2-GW 正在 Neutron 主树之外作为一个单独的 OpenStack 项目进行开发。L2-GW 服务插件与 ML2 插件/驱动程序结合使用,并利用 l2pop 驱动程序。
在过去的几个周期中,几位利益相关者一直在讨论 L2 网关,含义各不相同。大多数情况下,它们的定义取决于它们的使用场景。从一般意义上讲,L2 网关是一种桥接两个 L2 域(或网络)以实现一个无缝 L2 广播域的实体或资源。在各种提案中,通常至少有一个 L2 域由 Neutron 编排,而另一个 L2 域存在于云之外(例如,在数据中心、广域网或另一个云中)。L2 网关的一个有争议的包含是桥接 Neutron 内部的 L2 域(即,一个网络)到另一个域的叠加层(例如,VLAN 位于 Neutron 网络之上)。根据 L2 域的特征(例如,VLAN、叠加隧道、另一个 open-stack 域等),可能会导致人们对 L2 网关提出不同的定义或实现。
为了取得进展并定义 L2 GW API 的初始版本,团队决定采用一个用例并继续推进。明确理解的是,即使希望涵盖尽可能多的用例,此 API 也可能无法涵盖所有用例。本 wiki 的 用例部分添加了有关 L2 网关的已知用例列表。
L2 网关演示和演示文稿
观看 Arista 硬件上的以下 youtube 演示
观看 HP 硬件上的以下 youtube 演示
观看在 2015 年温哥华 OpenStack Summit 上进行的以下演示
用户/操作员知识库
本节保留给 L2 网关的用户,以便与其他用户分享他们的知识和经验,以便其他社区成员可以相互借鉴。
- 以下是由 Siaras 的 Sherman Yin 撰写的一份文档,用于分享他的用例
Meetings
L2-GW 团队每两周开会一次。会议详情请参见 IRC 会议
蓝图和规范
Kilo 版本规范
团队的章程是在 Kilo 周期中实现 L2-GW API 的初始版本。规范可在以下网址获取
L2 网关部署文档
https://github.com/openstack/networking-l2gw/blob/master/doc/source/usage.rst
代码审查
要查看正在审核的活动补丁,请参见此处
要查看合并的补丁,请参见此处
项目仓库
L2-Gateway 项目作为 stack forge 项目实现。请在此处查看项目仓库
可下载的 L2 网关 python 包
可以通过以下方式安装 L2-Gateway 包
sudo pip install networking-l2gw
或者,可以从以下位置下载 L2 Gateway
https://pypi.python.org/pypi/networking-l2gw/2015.1.1
设计类别
已经提出了与 L2 网关相关的三种设计类别。
1. 附加到网络的新的 Neutron“块”,用于桥接一个网络到另一个网络的叠加层。例如,一个集中器,它接收多个 Neutron 网络并将它们封装为另一个网络上的 VLAN,或馈送到 VM 的端口上的 VLAN。这不是该小组的主要关注点,该小组更关注内部-外部案例,但该设计与内部-外部案例确实有相似之处,特别是需要以桥接的方式附加到网络(当前 Neutron 中的端口附件旨在接收显式寻址到该端口的流量,并且存在各种解决方法,因为端口地址映射会中断)。
2. 桥接到一个 Neutron 网络的服务 - 通过专门的端口或通过某种形式的隐式附件(不需要端口) - 将云内的流量暴露到外部世界。该类别以一个详细说明外部附件类型和网络桥接位置的 API 为特征。API 可以是抽象的或具体的 - “抽象的”意味着将数据包传输到该端口的方式没有明确详细说明,“具体的”意味着 API 包含执行连接的设备的编程细节,例如云边缘路由器或交换机。不同的 API 必须存在于不同的外部域(例如,各种类型的 MPLS 隧道、交换机端口上的 VLAN 等)。
3. 对 Neutron API 的扩展,该扩展只是为了外部控制器暴露 Neutron 网络以供使用,但不包括描述桥接方法的 API(“边缘网络” (*https://blueprints.launchpad.net/neutron/+spec/cloud-edge-networking)。这假定在 Neutron 之外(但可能在 OpenStack 内部,因为它可以在 Keystone 中注册为一个端点)存在一个完全独立的 API,用于链接两个桥接域并描述外部桥接域。这需要对 Neutron 进行非常有限的更改,并且不需要在 Neutron 中指定 API,而是意味着必须定义和实现一个单独的非 Neutron 服务来获取该描述并将其与 Neutron 相关联。
这些设计都解决了 L2 桥接的一些用例,但并非全部,因此没有明确的选择具有明显的优势。
重要的是要注意,云边缘的 L2 元素是一个仅供管理员使用的域 - 也就是说,云的租户不应直接了解云与数据中心内的硬件环境以及更广泛的网络集成的方式。(L3 用例不同 - 如果租户希望封装在 L3 协议中,他们可以使用公共 L3 地址 - 这已经通过 Neutron 中的 VPNaaS 大部分解决了,不需要特权。)因此,期望是管理员将设置网络与世界的桥接,并且单个云租户将获得对网络的的使用权。租户无法更改桥接,也许可以销毁它,如果他们具有自助服务 API,这可能是在比 L2 网关 API 更高的级别上,以便 API 可以运行特权 L2GW 操作以实现提供给租户的更受限制的非特权服务。
用例
最终提出的 L2 网关可能解决所有或部分这些用例。该列表旨在全面,以确保我们在实施的最佳子集做出明智的决策,并提出如何满足其他需求而无需使用 L2GW API 以及为什么它们超出范围。
服务
使用硬件在 Neutron 中创建新的 aaS-转售服务:这假定存在一个物理硬件,例如负载均衡器,存在于 Neutron 之外,并且实施该服务的代码将使用 Neutron 和 L2 网关调用将该设备连接到 Neutron 内部的网络,该网络是 Neutron 侧虚拟服务旨在附加到。最常见的用例是在与云本身位于同一数据中心内的物理负载均衡器设备上备份 Neutron 中的虚拟负载均衡器。
使用虚拟机在 Neutron 中创建新的 aaS-转售服务:这假定服务租户控制着一些虚拟机,并且服务租户希望使用这些虚拟机来实施服务以提供给普通租户。多个租户可用于服务单个虚拟机(出于成本原因),并且可以使用多个虚拟机来为单个租户服务(出于冗余或可伸缩性原因)。
将 Ironic 机器链接到 Neutron:这假定 Ironic 控制着一些物理机器,并且将它们链接到云的最简单方法是将 Neutron 必须提供的操作“将此机器连接到此网络”简化为 L2GW 操作范围内的更基本的“将此交换机端口连接到此网络”操作。
数据中心内的桥接
将测试床链接到云:在这里,物理硬件是测试设置的一部分,该设置部分是虚拟的,并且使用 Neutron 创建拓扑以将其链接到附加到软件可编程交换机的测试床设置,然后用于运行测试。硬件存在于云边缘之外,需要一个服务来编程该交换机以将指定的端口链接到 Neutron 中的特定租户网络。
提供商网络:为了完整起见,已经有一种使用当前 Neutron 中的提供商网络功能从云到相邻网络进行 L2 桥接的方法。这提供了一种将云链接到云外部数据中心的方法,但不可编程:特定的物理网络在静态 Neutron 配置中描述,该配置无法通过 API 更改,并且提供商网络扩展允许将该网络或该网络上的封装(API 仅支持 VLAN)链接到 Neutron 中的租户网络。
桥接至更广阔的世界
虚拟数据中心:通常但不完全涉及 MPLS,这涉及提供一个 API,用于使用 WAN 内的叠加技术将云链接到客户网络,该网络连接到该网络。存在许多形式,包括 L2 和 L3VPN。共同点是必须进行封装,将流量从指定的 Neutron 网络桥接至外部网络,通常通过封装/解封装来完成。该过程可能或可能不涉及指定的外部硬件来完成这项工作,并且可以通过简单的封装(“使用这些连接详细信息”)或链接到网络内的逻辑实体(“使用此 MPLS 网络”)来完成。它还可能涉及与网络信息分发服务交互(“将这些路由通告到此 MPLS 叠加层”)。
VPNaaS:再次为了完整起见,这包括两个已经由现有 Neutron 服务提供或预计将提供的 L3VPN 技术:允许租户本身编程从一个站点的一个端点到另一个站点的一个端点的连接,通过例如 IPSec 链接,以及允许“路战”访问从移动端点到云提供的端点,以便“路战”访问租户应用程序内的管理网络。
使用 devstack 设置 L2 网关
1. 下载 DevStack
2. 将此仓库添加为外部仓库:即,在 local.conf 的末尾添加以下行。
[ [local|localrc] ]
enable_plugin networking-l2gw https://github.com/openstack/networking-l2gw enable_service l2gw-plugin l2gw-agent OVSDB_HOSTS=<ovsdb_identifier>:<ovsdb_server_ip>:<ovsdb_server_port>
3. 运行 stack.sh
路线图
- Kilo
- 项目已引导;
- 初始实现基于以下 API 和实现:https://github.com/openstack/networking-l2gw/blob/master/specs/kilo/
- 与 Neutron 帐篷的关联,基于:https://review.openstack.org/#/c/179454/
- Liberty