概述

基于 BGP 的 VPN 依赖于 BGP 路由协议的扩展和数据平面隔离(例如,MPLS-over-x、VXLAN)在共享基础设施上创建多站点隔离的虚拟网络,例如 BGP/MPLS IPVPN(RFC4364)和 E-VPN(RFC7432)。自 2000 年初以来,它们已广泛用于 IP/MPLS WAN 骨干网。

这些 BGP VPN 在 Neutron 的上下文中相关,有两个不同的用例

  1. 在 Neutron 端口(通常是虚拟机)和云数据中心外部的 BGP VPN 之间创建可达性(此用例与 Neutron 选择的后端无关)

  2. 利用这些 BGP VPN 作为 Neutron 的后端,以受益于底层技术的灵活性、健壮性和可扩展性(就像其他现有后端,例如 OpenContrail、Nuage Networks 或 Calico 一样——尽管后者依赖于纯粹的、非 VPN 的 BGP)

BaGPipe 提案是通过在计算节点或可能在 ToR 交换机中实现此协议栈——BGP 路由协议 VPN 扩展和数据平面封装——并通过驱动程序和插件将其与 Neutron 关联来解决这两个用例。

networking-bagpipe 包包括

  • 对于用例 1:Neutron 的 BGPVPN 互连服务插件(networking-bgpvpn)的后端代码;只有计算节点代码(agent 和 BGP)在 networking-bagpipe 中,Neutron 服务器端部分目前在 networking-bgpvpn 包中)

  • 对于用例 2:Neutron ML2 机制驱动程序(基础 Neutron 网络)、networking-sfc 驱动程序(服务链)

  • 两个用例通用的计算代码:Neutron l2 agent(openvswitch-agent)的 agent 扩展,用于整合并通过其 REST API 将信息传递给 BaGPipe-BGP(一种轻量级的 BGP VPN 实现)