跳转到: 导航, 搜索

Neutron/MPLSVPNaaS

概述

MPLS VPNaaS (MPLS VPN-as-a-Service) 是 Neutron 的一个扩展,它引入了 MPLS VPN 功能集。

以下是为 Havana 版本在 OpenStack Networking 中设计和实现 MPLS VPN 作为一项服务的计划。

此 BP 引用 Neutron/VPNaaS (IPSec VPN)( https://wiki.openstack.org/wiki/Neutron/VPNaaS) 。

相关蓝图

2013-03-27 Neutron 扩展用于 BGP MPLS VPN

2013-01-07 Quantum VPN 用于 WAN(广域网)

2013-03-30 MPLS VPN 用于 WAN

2013-07-17 Neutron/MPLS VPNaaS

为什么在OpenStack中使用MPLS VPN

1. 满足用户需求:QoS 保证

2. MPLS 得到骨干设备的广泛支持:通常,骨干网络中的核心节点具有部署 MPLS 隧道的能力。

在云计算时代,租户与数据中心网络之间的数据交互越来越多,并且需要安全连接、QoS 和弹性调整。因此,MPLS 隧道是构建通过骨干网络的 VPN 的更好解决方案。

注意

此 BP 中“VPN 服务”的定义可能已过时,我们稍后会更新它。

欢迎加入我们

我们专注于 OpenStack 中的 MPLS VPN,如果您对此 BP 有任何兴趣或疑问,请联系我们

laixuejiao@gmail.com

wangchang365@gmail.com

先决条件

我们认为 WAN 中的 MPLS VPN 已经由 ISP(或其他提供商)建立,因此我们只需要考虑租户的子网如何访问 MPLS VPN。我们使用术语“MPLS VPN 接入连接”来表示连接到 PE 的连接(连接租户的子网或仅虚拟机的 Neutron 路由器)。此外,MPLS VPN 接入连接可以表示 CE 路由器(供应商的硬件设备)和 PE 之间的连接。

用例

用例 1

如果 OpenStack 中没有硬件设备作为 CE 设备。那么我们将 quagga 和 Neutron 路由器结合起来,使 Neutron 成为 CE 接入路由器。此实现不需要特定的硬件设备。

Mpls vpn use case 1.png

用例 2

如果有供应商的硬件设备在 OpenStack 中,供应商需要提供其驱动程序,这将配置供应商的设备以访问 MPLS VPN。

Mpls vpn use case 2.png

MPLS VPN 工作原理

Neutron 路由器

在 Neutron 中,租户可以为子网或租户创建路由器,并定义子网之间的连接,所有这些都由 Neutron 路由器完成。

MPLS VPN 服务

根据 RFC-4364 BGP/MPLS IP 虚拟专用网络 (VPN),为了在 Neutron 中实现 MPLS VPN,我们需要一个与 Neutron 路由器配合的 Quagga 实例,然后该 Quagga 路由器将从 PE(或运行一些协议,如 BGP 等)交换路由,最终租户的子网或虚拟机将访问 MPLS VPN。

MPLS VPN 接入连接

如 RFC 定义,VPN 服务(带有 Quagga 的 Neutron 路由器)可以通过多种不同的方式连接到 PE:PPP 连接、ATM 虚拟电路 (VC)、帧中继 VC、以太网接口、以太网接口上的虚拟局域网 (VLAN)、GRE 隧道、第二层隧道协议 (L2TP) 隧道、IPSec 隧道等。我们将使用数据模型“MPLS VPN 接入连接”来指这些连接技术。

架构

下图显示了 Neutron MPLS VPN 的架构

Mpls vpn arch.png

MPLS VPN 接入连接模型

租户的子网访问 MPLS VPN

Sub access mpls vpn.png

租户的虚拟机访问 MPLS VPN

Vm access mpls vpn.png

数据模型

VPN 服务资源

属性 类型 必需 CRUDt 默认值 验证约束 笔记
id uuid-str 不适用 R 自动生成 不适用 VPN 服务对象的 UUID
tenant_id uuid-str Yes CR 有效的 tenant_id vpn 服务的租户 UUID
name 字符串 CRU 不适用 VPN 服务的名称
description 字符串 CRU 不适用 VPN 服务的描述
vpn_type 字符串 C L2 MPLS 或 L3 MPLS 服务类型 - 定义服务类型。
status 字符串 不适用 R 不适用 不适用 指示 mpls vpnservice 是否当前处于运行状态。可能的值包括:ACTIVE DOWN BUILD ERROR
admin_state_up 布尔值 不适用 CRU TRUE true/false vpnservice 的管理状态。如果为 false (down),端口将不转发数据包
subnet_id uuid 是*(需要 subnet_id) CR 不适用 有效的子网 ID 租户希望 VPN 服务所在的子网 ID
router_id uuid CR 不适用 有效的路由器 ID 插入 VPN 服务的路由器 ID

MPLS VPN 接入连接资源

属性 类型 必需 CRUDt 默认值 验证约束 笔记
id uuid-str 不适用 CRD 自动生成 不适用 MPLS 连接 ID
端口 ID Uuid-str CR 有效的端口 ID 将使用路由器的哪个端口进行 mpls 接入。
tenant_id uuid-str CR 有效的 tenant_id 此 VPN 连接的租户的 UUID
name 字符串 CRU 不适用 此 VPN 连接的名称
description 字符串 CRU 不适用 此 VPN 连接的描述
connection_type 字符串 CRD 不适用 定义此 VPN 连接将使用哪种接入技术。
vpn_service_id uuid-str 不适用 CRU 有效的 VPN 服务 ID。 此连接属于哪个 VPN 服务。

接入技术资源

GRE 连接

属性 类型 必需 CRUDt 默认值 验证约束 笔记
id uuid-str 不适用 C 自动生成 不适用 接入连接 ID
Mpls_connection_id uuid-str 不适用 R 有效的现有 mpls 连接 哪个 mpls 连接将使用此接入连接
GRE_Local_IP ipaddress Yes CR 有效的 IP 地址格式 GRE 隧道的本地 IP 地址
GRE_Dst_IP ipaddress CRU 不适用 GRE 隧道的目的 IP 地址
Local_IP ipaddress Yes CRU 不适用 端设备(VPN 服务、CE)的地址
Dst_IP ipaddress Yes CRU 不适用 PE 的地址
整数 Yes CR 不适用 此 GRE 隧道的密钥值

VLAN

属性 类型 必需 CRUD 默认值 验证约束 笔记
id uuid-str 不适用 R 自动生成 不适用 接入连接 ID
Mpls_connection_id uuid-str N/A R 有效的现有 mpls 连接 哪个 mpls 连接将使用此接入连接
Vlan_id id Yes CR 有效的 VLAN ID 用于接入连接的 VLAN ID

PPP

属性 类型 必需 CRUD 默认值 验证约束 笔记
id uuid-str 不适用 R 自动生成 不适用 接入连接 ID
Mpls_connection_id uuid-str 不适用 R 有效的现有 mpls 连接 哪个 mpls 连接将使用此接入连接
Ppp-server IP 地址 Yes CR 有效的 IP 地址 PPP 服务器的地址
Auth_type str Auth_method:chap 或 pap
Auth_message str Auth 消息

L2TP

属性 类型 必需 CRUD 默认值 验证约束 笔记
id uuid-str 不适用 R 自动生成 不适用 接入连接 ID
Mpls_connection_id uuid-str 不适用 R 有效的现有 mpls 连接 哪个 mpls 连接将使用此接入连接
lns IP 地址 Yes CR 有效的 VLAN ID 用于接入连接的 VLAN ID
隧道 ID id 隧道 ID
会话 ID ID 会话 ID
Ppp-server IP 地址 Yes CR 有效的 IP 地址 PPP 服务器的地址
Auth_type str Auth_method:chap 或 pap
Auth_message str Auth 消息

REST APIs


vpn-service-create 创建 VPNService

vpn-service-delete 删除给定的 VPNService

vpn-service-list 列出给定租户的所有 VPNService。

vpn-service-show 显示给定 VPNService 的详细信息。

vpn-service-update 更新给定的 VPNservice。


vpn-mpls-access-connection-create 创建 MPLS 接入 VPNConnection

vpn-mpls-access-connection-delete 删除给定的 MPLS 接入 VPNConnection。

vpn-mpls-access-connection-list 列出属于给定租户的 MPLS 接入 VPNConnection。

vpn-mpls-access-connection-show 显示给定 MPLS 接入 VPNConnection 的信息。

vpn-mpls-access-connection-update 更新给定的 MPLS 接入 VPNConnection。


vpn-mpls-access-connection-config-cretae 创建并配置 MPLS 接入的接入技术

vpn-mpls-access-connection-config-delete 删除 MPLS 的接入连接配置

vpn-mpls-access-connection-config-show 显示给定接入连接的信息