乾貨丨愛奇藝CDN IPv6系統配置

愛奇藝技術產品團隊發表於2019-08-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排程系統全流程架構如下圖所示。
乾貨丨愛奇藝CDN IPv6系統配置
圖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下載地址;流程如下圖:

乾貨丨愛奇藝CDN IPv6系統配置
圖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流量;

整體流程圖如下:
乾貨丨愛奇藝CDN IPv6系統配置
圖2-3 節點改造流程

藉助於愛奇藝CDN完善的支撐平臺,無論在硬體資源準備,還是服務軟體管理,針對IPv6的支援已經完全自動化,尤其體現在基礎網路裝置配置、作業系統支援、IPv6資源管理、服務IPv6支援、服務註冊和自動排程等方面均已實現自動化管理並上線。

2.5 客戶端排程流程
    下面是IPv4和雙棧客戶端訪問DNS、影片排程和影片CDN的時序圖,從圖中可以看到愛奇藝DNS、HTTP影片排程服務和影片服務均已支援IPv6,可以根據客戶端不同的請求方式返回IPv4或者IPv6的資源。
乾貨丨愛奇藝CDN 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訪問支援:
乾貨丨愛奇藝CDN IPv6系統配置

排程管理平臺支援按照使用者區域和運營商配置IPv6的開啟:

乾貨丨愛奇藝CDN 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章