BGP VPN 互联服务概述

基于 BGP 的 IP VPN 网络在行业内被广泛使用,尤其是在企业中。该项目旨在支持 L3VPN 和 Neutron 资源(即网络、路由器和端口)之间的互联互通。

一个典型的用例如下:租户已经拥有在数据中心外部设置好的 BGP IP VPN(一组外部站点),并且希望能够触发在虚拟机和这些 VPN 站点之间建立连接。

另一个类似的需求是,当使用 E-VPN 在多个站点之间提供以太网互连时,它继承了 BGP/MPLS IP VPN 的基本协议架构。

此服务插件公开了一个 API,用于通过它们连接的网络和路由器将 OpenStack Neutron 端口(通常是虚拟机)与 IP VPN 互连,该 IP VPN 的定义方式如 [RFC4364](基于 BGP/MPLS 的 IP 虚拟专用网络)或 E-VPN [RFC7432]

介绍视频

以下视频是巴塞罗那 OpenStack Summit(2016 年 10 月)期间演讲的录像。虽然它们没有涵盖自那时以来的工作,但它们可以很好地介绍该项目

关于 BGP VPN 和路由目标的提醒

基于 BGP 的 VPN 允许网络运营商向 VPN 客户提供 VPN 服务,从而在客户的多个站点之间提供隔离的连接。

与 IPSec 或基于 SSL 的 VPN 不同,这些 VPN 通常不是通过互联网构建的,通常不加密,并且其创建不在最终用户手中。

以下是关于如何定义 VPN 站点之间的连接(VRF)的提醒。

在基于 BGP 的 VPN 中,一组称为路由目标的标识符与 VPN 相关联,并且在典型情况下标识一个 VPN;它们也可以用于构建其他 VPN 拓扑,例如集线器和辐条。

PE(提供商边缘路由器)中的每个 VRF(虚拟路由和转发)从路由目标导入/导出路由。如果 VRF 从路由目标导入,则 BGP IP VPN 路由将被导入到此 VRF 中。如果 VRF 导出到路由目标,则 VRF 中的路由将与此路由目标关联,并由 BGP 宣告。

PE/CE 与 Neutron 结构的映射

如概述中所述,PE、CE(客户边缘路由器)、VRF 如何映射到 Neutron 结构取决于用于此服务插件的后端驱动程序。

例如,使用当前的 bagpipe 驱动程序,PE 和 VRF 功能在计算节点上实现,虚拟机充当 CE。此 PE 功能将与边缘 IP/MPLS 路由器、BGP 路由反射器或其他 PE 进行 BGP 对等连接。

Bagpipe BGP 也可以在网络节点中实例化,在 l3agent 级别,每个 l3agent 上都有一个 BGP 扬声器;然后可以将路由器命名空间视为 CE。

其他后端可能希望将路由器视为 CE,并根据通过此 API 收到的信息驱动外部 PE 与服务提供商 PE 对等连接。后端负责管理 CE 和云提供商 PE 之间的连接。

另一个典型选项是驱动程序将工作委托给 SDN 控制器,该控制器驱动 BGP 实现来宣告/使用相关的 BGP 路由,并远程驱动 vswitch 以相应地设置数据平面。

API 和工作流程

BGP VPN 由运营商部署和管理,特别是为了管理控制不同 VPN 之间隔离的路由目标标识符。由于此原因,BGP VPN 参数不能由租户选择,而只能由管理员选择。此外,网络运营商可能更喜欢不向用户公开实际的路由目标值。

让租户掌握的操作是将其拥有的 BGPVPN 资源与他的 Neutron 网络或路由器关联。

因此,有两种工作流程,一种是管理员,另一种是租户。

  • 管理员/运营商工作流程:创建 BGPVPN

    • 云/网络管理员根据合同和有关该租户 VPN 的 OSS 信息为租户创建 BGPVPN

    • 在此阶段,关联的网络和路由器的列表可以为空

  • 租户工作流程:将 BGPVPN 关联到网络和/或路由器,按需

    • 租户列出可以使用的 BGPVPN

    • 租户将 BGPVPN 与一个或多个网络或路由器关联。

总结这两个工作流程的序列图

../_images/workflows_seqdiag.png

组件架构概述

此图提供了架构概述

../_images/components_sdn_blockdiag.png

第二张图描绘了 bagpipe 参考驱动程序如何实现其后端

../_images/overview_blockdiag.png

参考

[RFC4364]

基于 BGP/MPLS 的 IP 虚拟专用网络 (IP VPN) http://tools.ietf.org/html/rfc4364

[RFC7432]

基于 BGP MPLS 的以太网 VPN(以太网 VPN,又称 E-VPN)http://tools.ietf.org/html/rfc7432