1.背景

“十三五”规划加大IPv6产业的推动力度,百度网盘作为领先云存储的应用,积极响应政府号召,2018年开始实施全面IPv6改造工作。

2.目标

百度网盘产品功能实现在IPv6单栈、IPv6双栈网络下正常访问,双栈网络优先使用IPv6,IPv6网络质量波动时用户无感切换IPv4。实现全国31个省(区市)全部运营商全量上线IPv6,应用侧IPv6流量统计不低于50%。

3.案例介绍

网盘涉及多端(App双端、PC、Web)业务非常复杂,整体改造挑战巨大。首先对全端进行实测摸底:1、IPv6 only环境下功能是否正常;2、双栈环境下IPv6流量占比。从网盘整体现状出发,制定网盘IPv6改造的关键步骤:

1.基础网络:数据中心网络升级IPv6/IPv4双栈,部署IPv6监测环境;

2.客户端App:网络库通信、下载、数据统计等接口支持IPv6;

3.业务后端:用户真实IPv6地址传递、获取、存储接口;

4.运维监控:IPv6监控、预案、灰度切流方案;

图1 百度网盘系统结构

名词解释:

BGW:百度网络接入网关,四层负载均衡

BFE:百度统一接入前端,七层负载均衡

完整的App改造涉及上百个子系统,几十个技术团队的分工合作,高效率组织协同是保证项目进度的关键环节。百度IPv6项目成立专项推进小组,由专职项目进度经理负责推进。公共组件由基础架构团队升级,各子系统、产品线指定IPv6负责人分工协作。

3.1基础网络

百度基础网络由基础技术团队统一改造。如下图所示,边缘接入层负责安全防御和业务接入,云数据中心负责海量数据存储和计算。

图2 百度基础网络接入拓扑

电信、联通、移动三大运营商及教育网均支持IPv6线路,可在原有IPv4链路上配置IPv6开通双栈,也可单独开通IPv6链路。网盘改造使用前者,实施更快。

3.1.1 IPv6网络质量感知

网盘最主要的数据下载是通过CDN分发,基础网络需要能准确的感知CDN的IPv6质量、覆盖率、延时数据,建设以下技术手段:IPv6质量监控、IPv6智能解析调度。

1.IPv6质量监控:为流量调度、故障止损提供基础数据,是质量优化和运维稳定性的必备工具。可购买第三方监控公司的监控点、虚拟机来构建监控源,也可在自有CDN节点部署探测任务。在监控源上模拟IPv4/IPv6用户请求,将请求结果上传到数据中控。中控对访问速度、丢包率、时延、错误码等信息进行分类统计,从而产出IPv6质量优的(省份,运营商)组合,也能准实时告警IPv6网络波动。

2.IPv6智能解析调度:流量调度的决策执行器,在用户优选访问的数据节点故障时,通过DNS解析将流量调度到备用节点。百度实现了故障态的7*24全自动流量调度,在IPv6上线阶段是非常有效的容灾手段。

3.1.2 负载均衡接入层

负载均衡是流量接入的关键设备,建议单独部署一套IPv6的物理集群,将IPv4和IPv6隔离。负载均衡改造时需同时兼容4to4、6to4、6to6三种模式。

百度采用6to4方案,在四层负责均衡设备将用户的真实IPv6地址写入TCP Options,在下游的七层负载均衡模块提取Options再填充到请求头的clientipv6字段,一路透传给下游的业务系统使用。

在改造初期需要对IPv6做非常多的网络监控和适配工作,不一一枚举,当前IPv6技术方案已比较成熟,上述提及的方案在百度云及其他云厂商已有成熟方案,可直接采用云解决方案,也可参考自行搭建。

3.2客户端改造

网盘客户端在网络库接口层支持IPv6协议栈,根据用户上网环境切换合适协议。

1.域名解析优先IPv6:全面使用HTTP-DNS SDK,支持IPv4单栈、IPv6单栈、IPv4/IPv6双栈下的IP解析;

2.Happy Eyeballs:双栈下优先选取IPv6,在IPv6网络连通性较差的环境能自动回退IPv4;

3.网络库/下载库升级:网络接口升级IPv4/IPv6协议,百度内部统一升级URLSession、OKHttp等网络库,降低开发工作量;

网盘改造过程中办公网搭建了4套网络验证环境:IPv4单栈、IPv6单栈、IPv4/IPv6双栈,以及双栈下IPv6故障环境。模拟IPv6地址故障、DNS解析失败等故障场景。在沙盒环境测试人员充分演练不同操作系统、客户端版本在故障态的服务表现。

3.3服务端改造

双栈下需要透传正确的用户IP地址给服务后端,后端服务也需要能正确处理v6格式IP。网盘服务接入层行为可简要描述:

▲IPv6用户,BFE写入clientipv6,clientipv4置空

▲IPv4用户,BFE写入clientipv4,clientipv6置空

IPv6用户的访问在数据中心内转成v4协议,在BFE将实际的v6地址写入请求头传递给下游系统。

下游子系统的升级涉及用户IP的获取、存储、使用等。

▲IPv6地址获取:支持从请求头读取clientipv4和clientipv6两种格式,做好空值判断处理。

▲用户IP存储:同时添加IPv4 & IPv6的存储方式,看内部需求,使用byte还是字符串的方式进行存储。

用户IP接口改造:指含有IP信息透传的API,改造有两种方式,扩展和新增。扩展是对原IPv4的方式扩大输入的byte位数来兼容IPv4 & IPv6;新增是维持原IPv4的接口不变,添加新基于IPv6的接口。

同理还有词典策略、离线计算、IPv6日志分析等等关联系统的地址接口升级。

3.4运维监控和灰度方案

监控改造是在监控系统中区分IPv4、IPv6协议,面对故障能够智能告警。网盘的监控包括:域名流量、IP连通性:

1、域名流量监控是域名维度的异常统计,在状态码、拒绝、响应时间等指标中区分IP类型;

2、IP连通性是在网络探针中区分IPv4/IPv6目标地址,数据中控汇聚IPv6探测质量;

灰度升级的目的是小流量验证,使IPv6切量的异常范围可控,可快速止损。结合网盘业务的业务特点,制定了分级发布原则:

1、先对一个省份的三大运营商进行测试,全量域名在一个省份测试通过后再逐省放量。观察相应监控指标是否正常。

2、先进行数据下载域名的上线,与IPv4调度保持一致,等全量数据域名上线完成,再上线控制域名。

4.总结

百度网盘团队充分协调公司资源,加班加点进行研发和测试,积极推动兄弟部门业务改造,在有限的时间内高效地完成了单栈、双栈等复杂网络环境下的服务全面升级。团队通过对地域、运营商多维度进行流量监控的手段,和逐步放量的方式,保证了线上服务的稳定性。百度网盘团队坚持以用户利益为根本,充分运用自身技术优势,持续为用户提供更全面、稳定和安全的服务及体验。