1 业务
对等连接是指两个VPC之间的网络连接。用户可以使用私有IP地址在两个VPC之间进行通信, 就像两个VPC在同一个网络中一样。
同一资源池内,用户可以在自己的VPC之间创建对等连接,也可以在自己的VPC与其他租户的VPC之间创建对等连接。
不同资源池间的VPC之间不能创建对等连接。
VPC对等连接在使用时存在如下约束和限制:
- VPC对等连接建立时要求所有相关的VPC内不存在重叠的子网网段。
- 两个VPC之间只能建立一个VPC对等连接。
- VPC对等连接只支持同资源池内创建。 network级别
- 对等连接的VPC不能通过一端VPC的EIP访问另一端的资源。 例如,VPC A和VPC B之间有对等连接,VPC B有EIP可以访问Internet,则VPC A不能通过VPC B访问Internet。
- 跨租户申请VPC对等连接,需要对端租户接受后,才能生效。同租户申请对等连接默认已接受。
- 对等连接双方租户都有权限删除对等连接,一方删除对等连接后,对等连接的所有信息会被立刻删除,包括对等连接关联的路由信息。
- VPC对等连接建立后,连接双方VPC内的配置了路由的子网可以互通,不配路由的subnet之间也是不通的。VPC对等连接路由存在时,VPC无法被删除。
实现方式:
VPC对等连接通过taitan在租户网关配置vxlan tunnel和静态路由,保证VPC间流量互通,具体逻辑可以参考云间高速实现。
本质上就是从一个vpc的VRF 跳到另一个vpc的VRF。
业务:
- 对等连接下一跳地址池信息录入Ipv4 Ipv6 转发地址分配
- 对等连接创建 删除 更新
创建对等连接 1、为对等连接的requestLoopIp和acceptLoopIp分配转发地址 1)若分配成功,则从对等连接下一跳地址池中分配地址 2)若分配失败,给openstack侧返回false 2、检查对等连接中的request_network和accept_network是否共享同一组租户网关 1)若是,则无需在VPC网关上下发配置,不需要loop口,跳表路由搞定 2)若无,则在两组主备租户网关(请求方 接收方)上分别下发配置,如下 a、创建bd b、创建loop口 c、loop口添加到vrf d、loop口设置转发ip e、两vpp之间创建vxlan tunnel 注:bd和loop口命名原则为segmentationId/loop+segmentationId, vxlan tunnel的vni为segmentationId(每一个对等连接都会分配一个segmentationId); vrf分别为请求方和接收方network下的子网绑定的router对应的vrf; loop口转发地址为对等连接中的请求方和接收方loop口转发地址 删除对等连接 1、回收对等连接的requestLoopIp和acceptLoopIp分配转发地址(回收的地址以地址组的形式保存) 2、遍历对等连接下的所有路由,依次删除租户网关上的配置以及数据库、redis数据 3、检查对等连接中的request_network和accept_network是否共享同一组租户网关 1)若是,则无需从租户网关上删除配置 2)若否,则在两组主备租户网关上删除相关配置(创建流程相反)
- 对等连接路由创建 删除 更新 vxlan tunnel创建
创建对等连接路由 1、查询该路由所属的对等连接中的accept_network和request_network是否共享同一组租户网关 1)是,创建跳表路由,详见VPC网关方案 2)否,创建出接口为本端network对应loop口的路由,详见VPC网关方案 注:创建对等连接路由基本校验 a、该路由中的network必须有对应的对等连接 b、该路由中的network下必须至少有一个子网绑定router c、该路由中的network下的子网绑定的router必须与路由中的router为同一个 d、该路由中的destination与该路由中的network相关的其他对等连接路由的destination不能完全相同(可以有重叠) 删除对等连接路由 1、查询该路由所属的对等连接中的accept_network和request_network是否共享同一组VPC网关 1)是,删除跳表路由,详见VPC网关方案 2)否,删除出接口为本端network对应loop口的路由,详见VPC网关方案