1. 背景
IPv6是“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议。IPv4地址资源紧缺严重制约了互联网的应用和发展。IPv6不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。
2017年底,中共中央办公厅和国务院办公厅印发了《推进互联网协议第六版(IPv6)规模部署行动计划》,要求加快推进基于IPv6的下一代互联网规模部署工作。计划指出,到2018年末国内IPv6活跃用户数要达到2亿,2020年末达到5亿,2025年末中国IPv6规模要达到世界第一。新互联网时代科技进步与市场趋势的推动之下,爱奇艺积极响应并全力开展IPv6专项部署工作,推动基础网络、后台服务和前端应用全面向IPv4/IPv6双栈支持演进,并以实际的用户数和流量贡献,于2019年6月被IPv6规模部署专家委员会评为优秀案例。
爱奇艺调度系统(包括Anycast DNS调度和HTTP视频调度)作为爱奇艺CDN核心系统之一,在爱奇艺技术团队的努力下,已经全面具备IPv6服务能力,支持各项业务高效对接IPv6基础资源,加快了爱奇艺IPv6规模部署进程。 2. 调度系统设计 2.1 系统架构 爱奇艺CDN调度系统全流程架构如下图所示。 图2-1 IPv4/IPv6调度架构图 以下是 架构图中各个系统的角色介绍:客户端:爱奇艺提供的播放客户端,覆盖手机、平板、电脑、电视和网页等多个平台,客户端首先访问DNS解析HTTP视频调度域名,然后请求HTTP视频调度获取CDN下载地址,最后从CDN下载视频数据;
探测服务器:一组开启双栈的HTTP服务器,为全网客户端提供探测服务,帮助客户端判断本地IPv4和IPv6可用情况;
Local DNS:客户端使用的DNS服务器地址,由用户所在运营商提供;客户端向Local DNS发起域名解析请求,Local DNS递归查询到爱奇艺Anycast DNS,最后把结果返回给客户端;
Anycast DNS:爱奇艺自研的高性能DNS系统,单机QPS可达近百万,基于Anycast技术部署,为全球用户提供高可用的DNS服务,支持IPv6后可提供IPv6 AAAA记录查询解析;
HTTP视频调度:CDN核心系统之一,根据客户端请求来源地址归属运营商和区域,为用户选择服务质量最优的CDN,确保用户享受极致播放体验;
爱奇艺混合CDN:包括自建CDN和商业CDN,为爱奇艺数亿用户提供就近下载服务;
资源管理平台(天工):资源统一管理平台,实现从资源需求收集、商务拓展、资源采购、资源部署、资源管理、基础运维和成本计算的统一管理,旨在打造以流程管理为基础的自动化运维平台;
调度管理平台(伏羲):调度管理平台,管理DNS调度和HTTP视频调度各种配置和策略。调度管理平台从资源管理平台中自动同步机房和服务器基础信息,借助配置管理平台实现配置的快速下发和生效;同时支持通过域名和IP维度进行拨测,实时探测全网服务器健康状态,自动下线故障服务器;
配置管理平台(Fast):作为CDN 服务器的管理平台,联动资源管理平台和调度管理平台等多个系统,同步资产和服务等基础信息。利用部署在多个运营商+区域的 Proxy 集群,保证全网 CDN 节点的连通率,提供稳定可靠的配置管理服务。
SDN管理平台:网络配置管理平台,实现基于模板支持自定义业务场景的网设配置功能,支持批量下发自定义业务场景配置,支持netconf、ssh和snmp多种管理方式。通过生成配置架构及网元全量配置,实现核心IDC建设自动化建设。
客户端:爱奇艺提供了包括手机、平板、电脑、电视和网页等多种播放客户端,覆盖数亿用户。目前绝大多数客户端都已经支持IPv6。当客户端启动以及检测到网络变化时,访问爱奇艺IPv6探测服务器,分别通过IPv4/IPv6发出HTTP请求,以此判断本地IPv4/IPv6网络连通性;在支持IPv6的前提下,客户端优先解析视频调度的IPv6地址;客户端在通过IPv4或IPv6请求调度器时,携带Net-Stack header,告知视频调度器本地协议栈支持情况;
Anycast DNS:开启双栈,支持通过IPv4/IPv6 DNS查询A记录和AAAA记录。同时提供永远在线的IPv4&IPv6权威DNS服务;
HTTP视频调度:开启双栈,支持通过IPv6地址查询客户端归属运营商和区域;根据用户请求头中的Net-Stack参数以及来源IP地址,判断客户端IPv4/IPv6支持情况,结合调度策略开关和IPv6资源负载,为用户返回IPv4或IPv6下载地址。对于仅支持IPv6的客户端,返回IPv6下载地址;对于支持双栈的客户端,会在IPv6资源允许的情况下,返回IPv6下载地址;对于部分支持双栈的客户端,当IPv6资源紧张的情况下,返回IPv4下载地址;对于仅支持IPv4的客户端,返回IPv4下载地址;流程如下图:
爱奇艺混合CDN: 包括爱奇艺自建CDN和商业CDN,都需要开启双栈,同时支持IPv4和IPv6,结合调度管理平台,可支持部分节点和部分商业CDN支持IPv6的资源模式,可保证资源可以灰度平滑上线;
资源管理平台:为了支持IPv6,资源管理平台实现了IPv6地址段管理闭环,其中包括:基于IDC的IPv6地址段录入、自动分配、拨测和回收等功能,为了完成全网IPv6地址的分配,开发了基于命令行的自动化分配工具,结合配置管理平台完成了全网存量的IPv6的配置。在服务器上线(装机子流程)流程根据IDC IPv6的状态,可以自动分配IPv6地址。
调度管理平台:从资源管理平台自动同步服务器IPv6配置,增加DNS调度和HTTP视频调度IPv6地址库,拨测系统兼容IPv6;基于区域和机房两个维度的增加IPv6开关,精细控制IPv6上线节奏,在保障用户体验的同时,逐步增加IPv6流量占比;
配置管理平台:各个CDN 节点接收到 IPv6 配置任务后,使用自己的资产和服务信息对任务模板进行二次渲染,得到最终的配置命令并执行,执行完毕后上报修改状态;
SDN管理平台:全面支持IPv6,通过生成配置架构及网元全量配置,实现一键完成核心机房IPv6相关配置,有效提升IPv6机房资源交付效率;
数据中心IPv6就绪:爱奇艺的数据中心包括Core、Storage和Cache三类,目前已经完成所有自建机房的IPv6地址申请、部署、分配和注册备案工作,确保IPv6网络出口安全可用,全面支持业务双栈上线。
网络能力IPv6就绪:爱奇艺自有全球骨干网QNET完成IPv6升级工作,实现三大运营商和教育网等多家基础电信服务商的IPv6对接,并对基于QNET的Anycast系统进行IPv6升级,为DNS核心业务提供高可用的IPv6服务;
IPv6网络质量监控:流量监控和网络监控系统完成双栈升级,对比分析IPv6和IPv4网络质量差异和不同区域IPv6网络质量差异,指导和保障IPv6业务上线。
IPV6INIT="yes"IPV6ADDR="分配的IPv6地址"IPV6_DEFAULTGW="分配的IPv6网关" |
(5) IPv6地址生效
通过ping6命令,可以测试IPv6地址与外部IPv6网络连通性 以上工作已经开发出完善的命令行工具,实现自动获取分配IPv6信息并配置的功能。 系统初始化还需要调整以下内核参数:
内核参数 | 参数作用 |
net.ipv6.conf.bond0.accept_dad | IPv6 DAD(重复地址检测Duplicate Address Detect)主要是为了探测是否有其它的节点使用了该地址;对于分配静态单播地址的网卡接口,设置相关接口参数为0,提高系统初始化速度。 |
net.ipv6.route.max_size | 内核参数net.ipv6.route.max_size是IPv6路由缓存条目的最大值,在CentOS 7中,对于此参数的预设值过小;此参数可根据生产系统实际情况评估设置,也可调整成与net.ipv4.route.max_size预设值保持一致。 |
net.ipv6.conf.all.disable_ipv6net.ipv6.conf.eth0.disable_ipv6 | 在全局系统层面预设开启了IPv6的支持,也可以对网络接口内核参数进行具体调整,设置相关接口参数为0,确保IPv6配置开启。 |
server{listen [::]:80 backlog=8192;…} |
(2) DNS服务器开启IPv6端口监听 爱奇艺自研DNS是基于开源的acl[1]框架,为了支持IPv6,acl框架在基础模块和配置方面都做了很多优化,开启IPv6相关的配置如下:
service hpdns{master_disable = no;master_service = |53 # 监听所有网络地址的53端口…} |
3.3 业务切量 通过爱奇艺调度管理平台,可以灵活的对IPv6流量进行调整控制,对于管理的视频IDC节点,设置开启IDC的IPv6服务支持选项,即可在IDC节点层面打开视频服务的IPv6访问支持:
调度管理平台支持按照用户区域和运营商配置IPv6的开启: 实际的推进过程中,也是通过对用户区域和调度资源(IDC)两个维度进行配置实现灰度切量的,确保不影响用户体验并对用户无感知。 4. 总结和展望 经过一年多的努力,爱奇艺调度系统已经全面具备IPv6服务能力,正在按照区域和运营商,逐步增加IPv6用户覆盖。截至2019年6月底,爱奇艺IPv6月活用户达到上亿级别,峰值带宽达到数百G; 未来,我们仍将继续推进IPv6部署,稳步增加IPv6带宽占比,充分利用IPv6技术优势,为用户带来更好的播放体验。同时,推进IPv6网络部署和系统架构改造,进一步提升用户体验和降低成本。 [1]: https://github.com/acl-dev/acl
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69945252/viewspace-2653590/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69945252/viewspace-2653590/