智能体刷屏的背后,是 AI 应用拐点的来临?AICon 北京站议程重磅公布,50+ 硬核分享不容错过 了解详情
写点什么

爱奇艺 CDN IPv6 调度系统实践

爱奇艺技术产品团队

  • 2019-08-26
  • 本文字数:4584 字

    阅读完需:约 15 分钟

爱奇艺CDN IPv6调度系统实践

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 规模部署进程。

调度系统设计

系统架构

爱奇艺 CDN 调度系统全流程架构如下图所示。



以下是架构图中各个系统的角色介绍:


客户端:爱奇艺提供的播放客户端,覆盖手机、平板、电脑、电视和网页等多个平台,客户端首先访问 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 功能的设计工作:


客户端:爱奇艺提供了包括手机、平板、电脑、电视和网页等多种播放客户端,覆盖数亿用户。目前绝大多数客户端都已经支持 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 下载地址;流程如下图:



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 机房资源交付效率。

网络资源准备

为保障各业务上线 IPv6 的基础网络资源需求,数据中心和网络的双栈改造是最早启动的工作环节,在 2018 年底基本完成了数据中心和网络能力的 IPv6 工作。


下面是关键基础网络能力准备情况:


数据中心 IPv6 就绪:爱奇艺的数据中心包括 Core、Storage 和 Cache 三类,目前已经完成所有自建机房的 IPv6 地址申请、部署、分配和注册备案工作,确保 IPv6 网络出口安全可用,全面支持业务双栈上线。


网络能力 IPv6 就绪:爱奇艺自有全球骨干网 QNET 完成 IPv6 升级工作,实现三大运营商和教育网等多家基础电信服务商的 IPv6 对接,并对基于 QNET 的 Anycast 系统进行 IPv6 升级,为 DNS 核心业务提供高可用的 IPv6 服务;


IPv6 网络质量监控:流量监控和网络监控系统完成双栈升级,对比分析 IPv6 和 IPv4 网络质量差异和不同区域 IPv6 网络质量差异,指导和保障 IPv6 业务上线。

IPv6 节点改造

IPv6 节点改造关键是机房基础设施和服务的改造,其中涉及到 CDN 节点和核心的平台。


下面简要介绍一下节点 IPv6 改造的流程:


(1) 通过资源管理平台管理节点的 IPv6 地址段,并为节点的每个服务器和网络设备自动生成 IPv6 地址;


(2) SDN 管理平台从资源管理平台获取节点中网络设备的 IPv6 信息,通过生成配置架构及网元全量配置,实现一键完成核心机房 IPv6 相关配置下发与生效;


(3) 在配置管理平台中创建任务模板,自动下发 IPv6 配置和软件配置到服务器,服务器重启网络,软件配置平滑升级,服务支持 IPv6;


(4) 服务支持 IPv6 后,向调度管理平台注册告知自己具备 IPv6 服务能力;


(5) 调度管理平台自动调整调度策略,在区域开启 IPv6 的情况下,自动切入 IPv6 流量;


整体流程图如下:



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

客户端调度流程

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


平滑上线

上一部分详细介绍了整个 IPv6 业务调度架构和流程,本部分介绍系统上线的关键步骤,其中包括操作系统和软件层面的 IPv6 配置支持以及如何在调度管理平台进行平滑切量上线。

系统配置

系统层面配置包括内核调整和系统 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 信息并配置的功能。


系统初始化还需要调整以下内核参数:



以上针对系统内核参数、网络配置和 IP 地址自动分配相关的运维工作,我们使用自研的配置管理平台,已经实现自动化任务模板。针对存量设备,自动从资源管理平台获取 IP 地址,自动配置;针对新设备,装机流程中自动会分配 IPv6 地址,自动调整相关系统配置。

服务软件配置

(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端口}
复制代码

业务切量

通过爱奇艺调度管理平台,可以灵活的对 IPv6 流量进行调整控制,对于管理的视频 IDC 节点,设置开启 IDC 的 IPv6 服务支持选项,即可在 IDC 节点层面打开视频服务的 IPv6 访问支持:



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



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

总结和展望

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


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


2019-08-26 15:346225

评论

发布
暂无评论
发现更多内容

模块九:毕业设计

本人法海

「架构实战营」

我为 Netty 贡献源码 | 且看 Netty 如何应对 TCP 连接的正常关闭,异常关闭,半关闭场景

bin的技术小屋

Java 网络编程 Netty TCP/IP 6月月更

通过DAO的现状,看Web3最具影响力的基础设施M-DAO

西柚子

C++ 静态反射在网易云信 SDK 中的实践

网易云信

c++ 开发工具

Java—线程池

武师叔

6月月更

企业级Web应用系统权限设计

BigBang!

权限 权限架构 权限设计

【堡垒机】常见的堡垒机部署模式有哪些?

行云管家

等保 堡垒机 等保2.0

架构实战营6期,毕业总结

本人法海

「架构实战营」

焱融科技加入多家行业协会与产业联盟,加速产业互联生态跃迁

焱融科技

华为云云原生2.0全景图再升级,一切皆服务共创新价值

极客天地

如何使用物联网低代码平台进行事件管理?

AIRIOT

物联网 低代码开发

ebook下载 | 灵雀云发布《 企业高管IT战略指南——为何选择容器与Kubernetes》

York

Kubernetes 容器 云原生 系统架构 技术选型

测试基础之:面试的信心来源于过硬的基础

甜甜的白桃

软件测试 核心竞争力 测试开发 功能测试 6月月更

对抗软件复杂度的战争

阿里技术

软件架构 复杂度

ABAP 程序间传递数据

桥下本有油菜花

易观分析《机器学习平台市场研究,2022》研究报告正式启动

易观分析

机器学习 AI软件

在线办公时代,企业如何选择一款合适的文档管理系统

小炮

JDBC连接MySQL数据库,访问数据库信息完成登录功能——保姆级详细教程(附所有java和jsp源代码)

写代码两年半

数据库 JDBC Java EE 6月月更

OpenHarmony开源开发者成长计划 | 知识赋能第六期预告—从零上手OpenHarmony智能家居项目

OpenHarmony开发者

OpenHarmony

阻塞与非阻塞客户端

Damon

微服务 6月月更

研发效能管理如何建立闭环?

思码逸研发效能

研发效能

大数据相关名称解释看这里!简单通俗理解大数据!

行云管家

云计算 大数据 数据安全

【大厂面试题精选】UDP 和 TCP 核心知识总结

C++后台开发

面试题 udp TCP/IP 校招 大厂面经

中国信通院、清华大学、腾讯安全,云原生安全产学研用强强联合!

腾讯安全云鼎实验室

云原生 云原生安全

感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

虎符交易所Hoo推出挂单活动 未成交订单最高可得 200%APY

区块链前沿News

Hoo 虎符交易所

经期管理APP的开发解决方案

开源直播系统源码

软件开发

飞腾与百度发布云智一体机,金融领域AI场景成功落地“江苏银行”

百度开发者中心

30倍加速,3毫秒极速识别,人、车、OCR等9大识别任务一网打尽

百度开发者中心

化工产业业态数字升级案例,看摩贝如何快速打通全场景互融互通?

数商云

数字化转型 企业数字化

集成测试时 MockMvc 无法注入

程序员小航

Java 后端 单元测试

爱奇艺CDN IPv6调度系统实践_语言 & 开发_InfoQ精选文章