干货丨爱奇艺CDN IPv6系统配置

2,174 阅读13分钟

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调度系统全流程架构如下图所示。

640?wx_fmt=png

图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下载地址;流程如下图:

640?wx_fmt=png

图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流量;

整体流程图如下:

640?wx_fmt=png

图2-3 节点改造流程

借助于爱奇艺CDN完善的支撑平台,无论在硬件资源准备,还是服务软件管理,针对IPv6的支持已经完全自动化,尤其体现在基础网络设备配置、操作系统支持、IPv6资源管理、服务IPv6支持、服务注册和自动调度等方面均已实现自动化管理并上线。

2.5 客户端调度流程****

    下面是IPv4和双栈客户端访问DNS、视频调度和视频CDN的时序图,从图中可以看到爱奇艺DNS、HTTP视频调度服务和视频服务均已支持IPv6,可以根据客户端不同的请求方式返回IPv4或者IPv6的资源。

640?wx_fmt=png

图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_dadIPv6 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配置开启。

以上针对系统内核参数、网络配置和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访问支持:

640?wx_fmt=png

调度管理平台支持按照用户区域和运营商配置IPv6的开启:

640?wx_fmt=png

实际的推进过程中,也是通过对用户区域和调度资源(IDC)两个维度进行配置实现灰度切量的,确保不影响用户体验并对用户无感知。

4. 总结和展望

经过一年多的努力,爱奇艺调度系统已经全面具备IPv6服务能力,正在按照区域和运营商,逐步增加IPv6用户覆盖。截至2019年6月底,爱奇艺IPv6月活用户达到上亿级别,峰值带宽达到数百G;

未来,我们仍将继续推进IPv6部署,稳步增加IPv6带宽占比,充分利用IPv6技术优势,为用户带来更好的播放体验。同时,推进IPv6网络部署和系统架构改造,进一步提升用户体验和降低成本。