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 与一个或多个网络或路由器关联。
总结这两个工作流程的序列图
组件架构概述¶
此图提供了架构概述
第二张图描绘了 bagpipe 参考驱动程序如何实现其后端
参考¶
基于 BGP/MPLS 的 IP 虚拟专用网络 (IP VPN) http://tools.ietf.org/html/rfc4364
基于 BGP MPLS 的以太网 VPN(以太网 VPN,又称 E-VPN)http://tools.ietf.org/html/rfc7432