基于DPDK实现私网VPC间互联互通的云联网解决方案

01

背景

随着云计算和网络技术的不断发展,越来越多的业务有着上云的需求。上云后业务能够使用云上已有的服务提升开发效率,也可以利用云平台的弹性伸缩特性,及时应对业务的负载变化。360内部也提出业务全部上云的战略目标,业务上云后,每个子业务可以由运维人员按需自由地划分到一个或多个VPC中,并且可以灵活的定义VPC内的IP地址范围、配置路由表和网关等,给业务带来灵活性的同时,也因为各个VPC间是天然隔离关系,从而保证了子业务的安全性和独立性。

在业务全面上云的过程中,也会发现不同VPC间的子业务又有着互通需求,例如某个事业部下面有多个子业务分属于不同的VPC,部分子业务间有些互通需求,相同的子业务也可能存在跨地域部署的场景,这种就属于不同地域的VPC间也有着互通需求。如何使得各子业务间一方面保证VPC带来的灵活性以及安全隔离的特性,同时也能保证这种复杂业务场景下的互通需求?

360的虚拟化研发团队针对类似需求,提出了云联网解决方案以满足跨VPC和跨地域网络的互联互通。


02

云联网介绍

云联网(Cloud Connect Network)提供一种能够快速构建跨区域VPC之间以及云上多VPC与云下多数据中心之间的高速、优质、稳定的互联互通能力,在其高度灵活性和隔离性的基础上提供了按需互联互通的能力,实现原理如下图所示。

193f8a3cb6af988fd0cf439a8555d235.png

2.1云联网应用场景

1.多VPC间互联互通

现实应用中会存在多个VPC间具有互联互通需求,这时可以把多个VPC同时加入一个云联网实例中实现多VPC间的互联互通。

a6c495692fd81cc63a9d146ce6cf6e87.png

2.跨区域多VPC互联互通

公司的北京分部和香港分部需要进行私网通信和数据传输,通过云链接将北京和香港两个区域的VPC建立连接,使得两地的数据中心网络可以互访,同时可无障碍的访问VPC之上的业务系统。

a8c19a12f1a10fd37caf776f07c8a18e.png

2.2云联网与对等连接/专用通道的区别

在使用云联网之前,如果要实现多个 VPC 互通、IDC 和多个 VPC 互通,需要为VPC 间两两分别建立对等连接,为 IDC 到每一个 VPC 建立专用通道,且各 VPC、IDC 网段均不能重叠,否则无法建立连接。建立连接后,还需管理各实例的路由表,手动添加路由策略后才能实现互通。

14bf8cb034105fb9834e1a27f767d24e.png

上述场景如果使用云联网,只需创建一个云联网实例,将需要互联的 VPC 和 IDC 加入到该云联网中,即可实现所有 VPC、IDC 与多个 VPC 的互通。

云联网优势

对等连接/专用通道

云联网

链路全网互联

1. n 个 VPC 间全部联通需要建立 Cn2 条对等连接。其中,Cn2=n * (n-1)/2,n 表示 VPC 的个数。即,当有  4 个 VPC 需要互联时,需要 6 条对等连接链路。
 2. 单个专用通道只能打通一个 VPC。 
 3. 网段重叠的 VPC 间不可建对等连接。

1. 无需创建对等,加入云联网的实例 fullmesh 互联。 
 2. 单个专用通道,可与所有 VPC、IDC 通信。
 3. CIDR 网段重叠可以一键加入云联网,更灵活。

路由自动学习

1. 每条链路均需配置路由。
 2. 链路变更需手动更新维护。

1. 路由自动学习,下发。
 2. 动态更新,无需手工维护。

03

云联网实现方案

3.1 云联网方案设计

各区域VPC与云联网集群间使用vxlan隧道进行互联互通,不同VPC流量通过vxlan隧道到达云联网服务器之后,通过查询路由表完成路由寻址最终把流量路由到目的VPC。

一组互联互通的VPC在云联网网关服务器上对应一个虚拟交换实例,为支持多组VPC间的互联互通,360虚拟化研发团队参考linxu内核的VRF方案提出了云链接交换实例(CCSI),用于隔离不同虚拟交换实例间的路由表项。

CCSI (cloud connect switch instance) 云链接交换实例,是由路由表和一组网络设备组成的虚拟路由器实例,可以完成流量寻路和路由表隔离功能。

592f0cc171438df993de46d2a2720d7d.png

3.2 云联网服务器架构

为了保证云联网网关的转发性能,360研发团队采用了目前主流的高性能DPDK转发套件,并实现了简易的用户态及协议栈和CCSI路由隔离和转发机制,具体架构如下:

529baa03ed70c793f15681aa3eb9c73d.png

360研发团队通过使用内核by-pass、零拷贝、大页内存、轮询收发包、无锁化等一系列技术使其单核性能达到小包线速。

3.3 云联网流量转发原理

VPC间互通流量在VPC内部根据虚机交换机Vswitch的流表项进行路由和封装,封装后的流量根据报文的外层IP地址在物理网络中路由转发,最终到达云联网集群。云联网集群收到VPC发送的vxlan流量后,首先完成vxlan报文的解封装,然后根据报文的内层目的IP地址查找CCSI转发表,从而找到目的端VPC对应的VIP地址和vxlanId,再根据报文的内层目的IP和vxlanId查找虚机信息表找到其对应的宿主机IP地址,最后根据vxlanId,宿主机IP地址和VIP地址进行vxlan隧道报文的封装,并把封装后报文发送到物理网络,最终封装后的vxlan报文通过物理网络的路由转发到达对端VPC。

ee229fa3db46b42fb1c6ada46b8d775e.png

如上图所示,虚拟交换实例CCSI存储的是路由表项用于流量在各VPC间进行寻址,具体内容有目的IP地址、vxlanid和VIP地址,具体内容如表1所示:

目的IP地址

vxlanId

VIP

172.16.10.0/24

96

10.224.130.137

172.16.20.0/24

101

10.223.20.20

172.18.100.0/25

768

10.143.217.143

1.目的IP地址指的VPC的私网IP地址

2.vxlanId指的是VPC的VNI,每个VPC唯一

3.VIP地址即为网关上VTEP口IP地址,用于虚拟化中的宿主机与网关间通信

                 表1:CCSI路由表

虚机信息表中存储的是虚拟化集群中的虚机具体信息,每一条表项都能确定唯一一台虚机,具体如表2所示:

vxlanId

虚机IP

虚机MAC

宿主机IP

96

172.16.10.33

fa:16:3f:35:82:42

10.162.10.11

101

172.16.20.55

fa:16:3f:35:92:22

10.162.20.55

101

172.16.25.30

fa:16:3f:5d:6c:81

10.192.20.2

               表2:虚机信息表

在跨VPC互联互通过程中虚拟化网络的Vswitch完成VPC内部的路由寻址和报文封装解封装,在网关上通过CCSI和虚拟信息表完成路由寻址和报文的封装解封装,具体流量路径如下:

跨VPC间互联互通的流量转发路径说明

1

源虚机上的流量通过虚拟化网络到达VPC中的Vswitch

2

由Vswitch根据已有openflow流表项完成vxlan隧道报文的封装,报文封装后的外层目的IP地址为云联网网关的VTEP口IP地址

3

云联网网关收到封装的vxlan报文后,首先对报文进行解封装然后根据内层报文的IP地址在CCSI中寻址,查询到下一条的VIP地址和vxlanId

4

云联网网关服务器根据CCSI中查询到的VxlanId和内层报文的目的IP地址查询虚机信息表,获取目的VM所在的宿主机IP地址以及VM的MAC地址

5

云联网网关服务器根据查询到vxlanId、宿主机IP、虚机MAC以及VIP地址等信息完成vxlan报文的封装,并把报文转发到Underlay网络

6

目的VPC收到云联网网关发送过来的vxlan报文,首先会经过Vswitch对报文进行解封装, 然后根据报文内层的IP地址和MAC进行路由,流量最终到达目的虚机

3.4 CCSI流量隔离

VPC专有网络可以由运维人员灵活的定义VPC内的IP地址范围、配置路由表等,给业务带来了极大的灵活性。但也给虚拟化网络治理带来更高的挑战和要求。由于不同VPC中的IP地址存在重复的可能性,导致云联网网关服务器上存在大量的重复路由表项,为了解决这个问题,研发团队参考内核的VRF特性提出了CCSI(云链接交换实例),云联网服务器至少由一个CCSI组成,不同CCSI间相互隔离拥有独立的路由表项,流量在CCSI内部查找路由表根据目的地址查找报文下一跳需要的vxlanId和vtep口。

1f96821a2b3cb0b4aa0ca560d3387b62.png

CCSI由多条路由表项组成,每条路由表项包括目的网段、vxlanId和VIP(即为nexhop IP)地址三个元素,每个CCSI实例中的路由表项不能重复不同CCSI中的路由表项没有限制可以重复,每个CCSI相互独立完成路由的隔离和寻址。

04

软硬结合提高系统性能

 高性能低成本是整个360虚拟化研发团队的目标和追求,为了达到千万级pps的既定目标研发团队采用了目前主流的高性能DPDK转发套件,其优秀的Kernel by-pass 、RX Steering and CPU affinity、Zero Copy、Polling instead of interruptd 、全局无锁化、硬件offload等特性充分支持了单核小包线速转发,很好的支撑了最初跟业务团队一起制定的千万级PPS目标。

05

后续优化

功能上为了满足更多业务场景,云联网网关在目前支持了跨区域多VPC间互联互通的基础上还会推出支持多VPC与IDC间的互联互通;性能上为了追求性能的极致和更好的满足业务需求,后续会结合Melloanx 25G/100G网卡特性实现offload功能,把由软件实现的解封包、QOS、ACL等功能逐步下沉到硬件网卡实现。

06

参考文章

  • https://docs.aws.amazon.com/zh_cn/vpc/latest/peering/vpc-peering-basics.html

  • https://yq.aliyun.com/articles/497058

  • https://tools.ietf.org/html/rfc5880#section-6.8.5

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值