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建设自动化建设。
2.2 系统设计
爱奇艺技术团队对客户端、调度和后台管理等多个系统做了大量设计工作来支持IPv6。
下面简要说明各个系统模块针对IPv6功能的设计工作:
-
客户端:爱奇艺提供了包括手机、平板、电脑、电视和网页等多种播放客户端,覆盖数亿用户。目前绝大多数客户端都已经支持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下载地址;流程如下图:
图2-2 IPv4/IPv6调度流程图
HTTP请求头Net-Stack取值示意含义如下:
= X:标识客户端仅支持IPv4;
= Y:标识客户端仅支持IPv6;
= Z:标识客户端支持双栈;
-
爱奇艺混合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机房资源交付效率;
2.3 网络资源准备
为保障各业务上线IPv6的基础网络资源需求,数据中心和网络的双栈改造是最早启动的工作环节,在2018年底基本完成了数据中心和网络能力的IPv6工作。
下面是关键基础网络能力准备情况:
-
数据中心IPv6就绪:爱奇艺的数据中心包括Core、Storage和Cache三类,目前已经完成所有自建机房的IPv6地址申请、部署、分配和注册备案工作,确保IPv6网络出口安全可用,全面支持业务双栈上线。
-
网络能力IPv6就绪:爱奇艺自有全球骨干网QNET完成IPv6升级工作,实现三大运营商和教育网等多家基础电信服务商的IPv6对接,并对基于QNET的Anycast系统进行IPv6升级,为DNS核心业务提供高可用的IPv6服务;
-
IPv6网络质量监控:流量监控和网络监控系统完成双栈升级,对比分析IPv6和IPv4网络质量差异和不同区域IPv6网络质量差异,指导和保障IPv6业务上线。
2.4 IPv6节点改造
IPv6节点改造关键是机房基础设施和服务的改造,其中涉及到CDN节点和核心的平台。
下面简要介绍一下节点IPv6改造的流程:
(1) 通过资源管理平台管理节点的IPv6地址段,并为节点的每个服务器和网络设备自动生成IPv6地址;
(2) SDN管理平台从资源管理平台获取节点中网络设备的IPv6信息,通过生成配置架构及网元全量配置,实现一键完成核心机房IPv6相关配置下发与生效;
(3) 在配置管理平台中创建任务模板,自动下发IPv6配置和软件配置到服务器,服务器重启网络,软件配置平滑升级,服务支持IPv6;
(4) 服务支持IPv6后,向调度管理平台注册告知自己具备IPv6服务能力;
(5) 调度管理平台自动调整调度策略,在区域开启IPv6的情况下,自动切入IPv6流量;
整体流程图如下:
图2-3 节点改造流程
借助于爱奇艺CDN完善的支撑平台,无论在硬件资源准备,还是服务软件管理,针对IPv6的支持已经完全自动化,尤其体现在基础网络设备配置、操作系统支持、IPv6资源管理、服务IPv6支持、服务注册和自动调度等方面均已实现自动化管理并上线。
2.5 客户端调度流程
下面是IPv4和双栈客户端访问DNS、视频调度和视频CDN的时序图,从图中可以看到爱奇艺DNS、HTTP视频调度服务和视频服务均已支持IPv6,可以根据客户端不同的请求方式返回IPv4或者IPv6的资源。
图2-4 IPv4/IPv6播放流程图
3. 平滑上线
上一部分详细介绍了整个IPv6业务调度架构和流程,本部分介绍系统上线的关键步骤,其中包括操作系统和软件层面的IPv6配置支持以及如何在调度管理平台进行平滑切量上线。
3.1 系统配置
系统层面配置包括内核调整和系统IPv6配置启用,IPv6启用方法如下:
(1) grub配置开启IPv6
删除/etc/default/grub配置文件中“ipv6.disable=1”配置
(2) 重新生成grub ,配置
使用命令 grub2-mkconfig –output /boot/grub2/grub.cfg 生成新的grub配置文件
(3) IPv6全局开关配置
新增/etc/sysconfig/network配置文件中“NETWORKING_IPV6=yes”配置
(4) 配置网卡IPv6地址
更新配置文件/etc/sysconfig/network-scripts/ifcfg-ethx,增加如下选项
IPV6INIT="yes" IPV6ADDR="分配的IPv6地址" IPV6_DEFAULTGW="分配的IPv6网关" |
(5) IPv6地址生效
在CentOS 7系统中,需要重启系统,IPv6地址配置才能100%确保生效,CentOS 6 系统只需要执行 service network restart即可生效
(6) 测试网络连通性
通过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_ipv6 net.ipv6.conf.eth0.disable_ipv6 |
在全局系统层面预设开启了IPv6的支持,也可以对网络接口内核参数进行具体调整,设置相关接口参数为0,确保IPv6配置开启。 |
以上针对系统内核参数、网络配置和IP地址自动分配相关的运维工作,我们使用自研的配置管理平台,已经实现自动化任务模板。针对存量设备,自动从资源管理平台获取IP地址,自动配置;针对新设备,装机流程中自动会分配IPv6地址,自动调整相关系统配置。
3.2 服务软件配置
(1) 调度器和视频Cache服务器开启IPv6端口监听
调度器和视频Cache是基于Nginx开发的,线上环境在server{}模块增加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网络部署和系统架构改造,进一步提升用户体验和降低成本。
end
也许你还想看
扫一扫下方二维码,更多精彩内容陪伴你!
爱奇艺技术产品团队
简单想,简单做
原文链接:https://blog.csdn.net/weixin_38753262/article/details/102675203?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165934458816781667879874%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165934458816781667879874&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-30-102675203-null-null.nonecase&utm_term=%E8%87%AA%E5%BB%BAcdn
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/6060