荔枝技术|私有云网络的落地实践

作者周子贻,荔枝私有云资深工程师,目前负责私有云网络相关开发工作。

一、私有云介绍

荔枝私有云主要由三大底座:计算、存储、网络组成。

1、计算使用Kubernetes实现

2、存储根据环境情况由Ceph、商用存储、本地盘组合使用

3、网络使用自研的荔枝SDN网络

荔枝落地私有云后的价值:

对于开发来说,落地私有云后的业务上线流程也变得更加快捷简单

二、自研网络介绍

目前我们的自研SDN网络支持5种流量路径:

1、相同VPC内部访问,Pod之间经宿主机直连

2、跨VPC访问,Pod之间的流量需经PCGW实现,由PCGW实现目的路由和鉴权服务。

3、访问IDC服务则新增DCGW负责IDC机器的路由处理。

4、访问公网由NATGW提供,负责鉴权、出口选择等策略。

5、LBGW则是对外提供Loadbalance服务

这是我们自研网络目前的架构图。每台物理机都会部署Vnf Agent服务负责整个网络的管理,通过监听Etcd获取最新的路由信息,将路由信息转换成Ebpf Map的数据类型。每个Pod的对外网卡都会挂载ebpf程序,通过读取ebpf map的路由数据决定Pod网络包的路由并封包后发出。

用户通过平台操作后由SDN-Controller服务计算路由数据后写入Etcd中。

使用SDN网络后,可以直接在平台上操作两个地区间的Overlay网络打通。对于用户层面可以实现无缝联通。

三、自研网络的迭代过程

我们的自研网络目前经过了3个迭代版本。第一个版本是基于SRv6协议和系统路由(iprouter2+iptables)实现。

V1

处理流程都是通过ip rule+ip route + iptables完成,当路由数量大量增加后的变更都需要大量时间移除过期路由或者新增路由;同时,依赖系统路由实现需要消耗大量资源。在初次压测时,单台机器的输出带宽达到800Mbps时,系统的软中断负载已经100%。

V2

因此,我们基于XDP/ebpf实现了第二个版本,单机性能得到大幅提升。因为XDP的入门难度相对于TC会简单很多,同时处理能力也高,所以我们一开始就选择了XDP/ebpf进行修改。但是,Pod是使用Veth Pair对外沟通的,而使用XDP挂载到Veth上会相对于tc的性能较差。后来我们逐步使用tc代替XDP。虽然在物理网卡上XDP性能会比较上,但在实现QoS、抓包等功能上tc会有明显的优势。

V3

随着业务量的上升,我们考虑到未来IDC的机器在需要时无法快速增加,需要利用公有云的云主机作为我们私有云的一个扩容方案,我们需要修改IPv6为IPv4去提高云上的兼容性。因此我们在参考SRv6和Geneve协议的基础上,基于IPv4协议自研SRv4协议。

因为网络全流程使用ebpf处理,所以我们可以自定义所需的协议格式。SRv4核心是IP+UDP+SRv4_Header+原数据载荷组成,对于交换机、路由器或者其他不支持SRv4的机器来说,SRv4包是一个普通的UDP包,可以提高网络中的兼容性。

四、基于SRv4实现的特色功能

1、快速弹性

 

在公有云上申请机器后只需将公有云机器和私有云机器underlay联通,通过vnfagent即可将overlay完全打通,无需人工介入修改路由等信息。

2、透明的负载均衡服务

通过SRv4协议的自定义头部,将原来要在负载均衡上做的SNAT信息存放在SRv4头部扩展空间中,在RS(Real Server)宿主机上缓存该扩展信息用于回包。对于RS,来自负载均衡的请求和直连的请求都是一样的,能够直接得到真实的Client IP信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值