跳转到主要内容

支持Neutron中的L2网关的API和实现。

项目描述

支持Neutron中L2网关的API和实现。

L2网关

该项目提出了一种Neutron API扩展,可用于表示和管理L2网关组件。最简单的说法,L2网关的目的是将两个或多个网络连接起来,使它们看起来像单个L2广播域。

初始实现

有许多使用情况可以通过L2网关API来解决。最值得注意的是,在云计算环境中,一个典型的用例是连接虚拟和物理网络。将此翻译为Neutron和OpenStack的世界,这意味着依赖于L2网关功能将Neutron逻辑(叠加)网络扩展到OpenStack领域之外的物理(服务提供商)网络。这些网络可以是,例如,可能或可能不由OpenStack管理的VLAN。

更多信息

要获取使用或修改L2GW的帮助,您可以向 OpenStack Discuss邮件列表 <mailto:openstack-discuss@lists.openstack.org> 发送电子邮件;请在主题中使用[L2-Gateway]标签。大多数人都在IRC频道#openstack-neutron上。

入门指南

要开始使用,您必须在已经运行 Neutron 服务器的 Controller 节点上安装 l2gw 插件软件。然后您需要一个新节点,我们称之为 l2gw 节点,在这里您将进行 vxlan 租户网络和物理网络之间的实际桥接。l2gw 节点可以是一个支持 OVSDB 架构的裸金属交换机,或者一个已安装 OVS 的服务器。在这个例子中,我们将使用服务器。

在这个例子中,l2gw 节点有一个 ens5 接口连接到一个物理段,以及一个管理接口,IP 地址为 10.225.0.27。

ip link set up dev ens5
apt-get update
apt-get install openvswitch-vtep
ovsdb-tool create /etc/openvswitch/vtep.db /usr/share/openvswitch/vtep.ovsschema
ovsdb-tool create /etc/openvswitch/vswitch.db /usr/share/openvswitch/vswitch.ovsschema
# Stop OVS services started by the installer.
systemctl is-active --quiet ovs-vswitchd && systemctl stop ovs-vswitchd
systemctl is-active --quiet ovsdb-server && systemctl stop ovsdb-server
mkdir -p /var/run/openvswitch/
ovsdb-server --pidfile --detach --log-file --remote ptcp:6632:10.225.0.27 \
             --remote punix:/var/run/openvswitch/db.sock --remote=db:hardware_vtep,Global,managers \
             /etc/openvswitch/vswitch.db /etc/openvswitch/vtep.db
ovs-vswitchd --log-file --detach --pidfile unix:/var/run/openvswitch/db.sock
ovs-vsctl add-br myphyswitch
vtep-ctl add-ps myphyswitch
vtep-ctl set Physical_Switch myphyswitch tunnel_ips=10.225.0.27
ovs-vsctl add-port myphyswitch ens5
vtep-ctl add-port myphyswitch ens5
/usr/share/openvswitch/scripts/ovs-vtep \
             --log-file=/var/log/openvswitch/ovs-vtep.log \
             --pidfile=/var/run/openvswitch/ovs-vtep.pid \
             --detach myphyswitch

此时,您的 l2gw 节点正在运行。

为了配置 Openstack 控制平面,您需要检查三个文件:neutron.confl2gw_plugin.inil2gateway_agent.ini 在控制节点上编辑您的 neutron.conf,确保在 service_plugins 中有字符串 networking_l2gw.services.l2gateway.plugin.L2GatewayPlugin

您可以使用以下命令添加:

sudo sed -ri 's/^(service_plugins.*)/\1,networking_l2gw.services.l2gateway.plugin.L2GatewayPlugin/' \
   /etc/neutron/neutron.conf

确保 neutron-server 以 --config-file=/etc/neutron/l2gw_plugin.ini 运行。l2gw_plugin.ini 文件的默认设置应该是正确的。

现在,您可以使用以下命令为 neutron l2gw 插件创建数据库表:neutron-db-manage upgrade heads

l2gateway_agent.ini 文件用于配置 neutron-l2gateway 代理。代理是当您与 Openstack API 交互时将配置 l2gw 节点的软件组件。在这里,给出交换机的指针很重要。 ovsdb_hosts = 'ovsdb1:10.225.0.27:6632'

名称 ovsdb1 只是一个将在 Openstack 数据库中使用的名称,用于识别此交换机。

现在,当 l2gw 节点和 Openstack 控制平面都配置完成后,我们可以使用 API 服务将 VXLAN 租户网络桥接到 l2gw 节点的物理接口。

首先,在 Openstack 中创建一个 l2-gateway 对象。我们需要提供接口名称和之前在 OVS 命令中使用的桥接名称。

l2-gateway-create --device name="myphyswitch",interface_names="ens5" openstackname

使用刚刚创建的 GATEWAY-NAME/UUID 来提供第二个命令,其中执行 VXLAN 租户网络和物理 L2 网络之间的实际桥接。

l2-gateway-connection-create <GATEWAY-NAME/UUID> <NETWORK-NAME/UUID>

现在让我们看看发生了什么。在 l2gw 节点上,您可以执行以下命令:

ovs-vsctl show
vtep-ctl show

您应该看到创建了一些 VXLAN 隧道。您将看到每个托管连接到您桥接的租户网络的实例的计算节点上的 vxlan 隧道。如果此租户网络中还有一个路由器,您将找到连接到网络节点的 VXLAN 隧道。

参考资料

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

networking-l2gw-20.0.0.tar.gz (169.6 kB 查看哈希值)

上传时间 源代码

构建分发

networking_l2gw-20.0.0-py3-none-any.whl (169.3 kB 查看哈希值)

上传时间 Python 3

支持者