Wカップ日本代表戦で学ぶCDN
- 経緯
- CDNとは
- 自分が見ている映像はどこからきているのか?verAkamai
- 自分が見ている映像はどこからきているのか?verCloud Front
- 合わせ技
- トラフィックがいかに異常だったか
- おまけ:H.264コーデック
- 参考ツイート
経緯
2022年Wカップは日本がジャイアントキリングを達成して決勝トーナメントに進出。その1回戦は非常に注目されていたが、その中でも特に「本田の解説がおもしろい!」とAbemaTVでのインターネット中継放送が人気であった。
当日は約2000万人(延べ)がAbemaTVの放送を視聴していたようだ。
同時にこれだけの人数に映像を配信する仕組み(バックエンドとフロントエンド)にはCDN(Content Delivery Network)が深くかかわっている。 (詳しくはAbemaやAkamaiの中の人たちが後日発表してくれるだろう。)
CDNとは
https://voice.stream.co.jp/technology/20211109/ https://www.cloudflare.com/ja-jp/learning/cdn/what-is-a-cdn/ https://www.akamai.com/ja/our-thinking/cdn/what-is-a-cdn 1つのコンテンツを1つのサーバにおいてしまうと、同時アクセスが増えるほどサーバ負荷が増大してそのうちパンクする。 そこでキャッシュサーバによりリソースを散在させ、加えてロードバランサーを用いて負荷の分散を図る。
自分が見ている映像はどこからきているのか?verAkamai
ブラウザの開発者ツール(デベロッパーツール)から簡単に確認できる。 F12などから開発者ツールを開き、Networkタブを選択する。
画像では伝わらないが、このNetworkの情報はリアルタイムで更新されており、常にリクエスト/レスポンスがやり取りされている。(わかりにくい場合はWaterfallを降順にするとよい)
Name列に注目すると、○○.mp4となっているものが2種類あり、それぞれ「audio」「video」とある。これが今見ている映像だと思われる。
カーソルを合わせてクリックすると詳細が表示される。
Request URL: https:// *****.akamaized.net/seoul
とある。 AkamaiはCDNサービスの一つである。 驚くべきはソウルのCDNサーバへリクエストを飛ばしているということ!すごい。ロードバランシング極まれりといった感がある。
自分が見ている映像はどこからきているのか?verCloud Front
再度接続しなおし、同様の手順で調べると今度はCloud Frontだった。 (Via部を見ればわかる)
ちなみにリクエスト先のdig結果はこちら
$ dig text live-playout-cf-sel.p-c2-x.abema-tv.com ; <<>> DiG 9.11.9 <<>> text live-playout-cf-sel.p-c2-x.abema-tv.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 2235 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: a827fec471825dca0377ecbf638e32319a6fd0d5cd7f1245 (good) ;; QUESTION SECTION: ;text. IN A ;; AUTHORITY SECTION: . 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2022120500 1800 900 604800 86400 ;; Query time: 15 msec ;; SERVER: 192.168.10.1#53(192.168.10.1) ;; WHEN: Tue Dec 06 03:02:28 JST 2022 ;; MSG SIZE rcvd: 136 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11182 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: a827fec471825dca67fe28d7638e32318f536a06f9c3a4e1 (good) ;; QUESTION SECTION: ;live-playout-cf-sel.p-c2-x.abema-tv.com. IN A ;; ANSWER SECTION: live-playout-cf-sel.p-c2-x.abema-tv.com. 58 IN A 13.32.50.68 live-playout-cf-sel.p-c2-x.abema-tv.com. 58 IN A 13.32.50.107 live-playout-cf-sel.p-c2-x.abema-tv.com. 58 IN A 13.32.50.78 live-playout-cf-sel.p-c2-x.abema-tv.com. 58 IN A 13.32.50.106 ;; Query time: 10 msec ;; SERVER: 192.168.10.1#53(192.168.10.1) ;; WHEN: Tue Dec 06 03:02:28 JST 2022 ;; MSG SIZE rcvd: 160
合わせ技
Abemaは普段からAkamaiを利用しているらしいが、今回はAWS CloudFrontやGoogleのGCPも併用していた。CDNサービスの合わせ技だ。他にも入場制限のsorryページはFastlyだったらしい。
トラフィックがいかに異常だったか
今回の延べ視聴者数が2000万人を超えているということも驚きだが、もっと定量的なデータもある。
JPNAPサービス(Internet Exchange) https://www.jpnap.net/ix/traffic.html 詳細までは筆者は理解していないが、ある種のトラフィックを計測しておりグラフが見られる。
これによると普段に比べて2T bits/sもトラフィックが多いことが分かる!普段のおよそ2倍である。
おまけ:H.264コーデック
今回AbemaはH.264コーデックの映像を配信していたようだが、H.264は次世代のH.265と比べて圧縮率が半分であるため、トラフィック増大に拍車をかけていた可能性がある。 https://atcl-dsj.com/useful/4678/
どのように調べたか。 開発者ツール→Networkと進んでNameが「manifes.mpd」となっているものの詳細を眺める。Responseにほしい情報がある。
codecs="avc1.4D4028" とあるが、これを検索するとGoogle Castのページにたどり着き、H.264コーデックであることが分かる。 おもしろいね。
参考ツイート
ABEMAのワールドカップ配信、AWSとAkamaiを同時利用、バランシングさせていて"本気"を感じる
— にゃーんっ (@st9708f) December 5, 2022
なんと韓国リージョンまで利用してインターネットの限界に挑戦中
耐えろ・・・! pic.twitter.com/F85Wyk9a63
Abema, 楽天ひかりはAkamai, KDDIはAWSかな? pic.twitter.com/mdWfn1UKEd
— アリシィ (@shigure_alicey) December 5, 2022
AbemaTVを支えてるのはAkamaiのCDNとGoogleのGCP。
— ゆな先生 (@JapanTank) December 5, 2022
あとは部分的にAmazon AWS。
サイバーエージェントの技術者たちと、たぶん裏側にスタンバイしてるこの3社の技術陣の頑張りで今夜の中継ができるかがわかれる。
彼らは試合を見れないだろう。
頑張れエンジニアたち!
Abemaは普段Akamaiを利用していますが,今回のライブはAWSのCloudfrontを利用しています.
— nanra28 (@Nanra28_) December 2, 2022
JPIXやBBIXは増加幅が少ないですが,それらの大きな割合を占めると思われるKDDI,SBはPNIしているからでしょう.
JPNAPにおいては,確かにAWSからOCNへJPNAPを通っているので,そのトラフィックが多そうです. https://t.co/pV9Lw1GCya
Abemaのサーバーがすごいんじゃなくて、アカマイ(AKAMAI)ってゆー会社のコンテンツデリバリーネットワーク(CDN)が凄いんやで✋
— デスさん (@desusanJP) December 5, 2022
これマメな✋#サッカーW杯 pic.twitter.com/vn9vTqjx1E
AbemaTVのインフラどうなってるんだろう
— ゆな先生 (@JapanTank) December 2, 2022
いつもはバックエンドがGoogle(GCP)、フロントがAkamaiのCDNで動いているはずだけども、今回はAWSのClouffrontがCDNとして動いている?
メガクラウドベンダーとはいえ、これだけの視聴をさばける環境をIaaSで作れるものなの?
akamai/CloudFrontのオリジンサーバはそれぞれ東京とソウルに分散してるっぽい?
— J416DY (@j416dy) December 5, 2022
韓国の試合は同時に起きないし、リソース分散頑張ってそう。
バックエンドは確かAWSだっけ?#abema#ABEMAでFIFAワールドカップ pic.twitter.com/aMExboXCcn
akamaiの後ろにGCPパターンも #ABEMA pic.twitter.com/h7gUh6OZnR
— J416DY (@j416dy) December 5, 2022
そういえば、このIXを流れるネット中継トラフィックは、CDNがASを超えずにユーザに届けることができなかったトラフィックだと思われるので、CDNが配送している分を含むともっと凄いはず。
— 小川晃通(あきみち)PhD。YouTubeでIPv6やTCP/IPの解説動画作ってます! (@geekpage) December 2, 2022
そして、この図はJPNAPに流れた分なので、他のIXで流れているトラフィックもある。凄いトラフィックだ。。。 https://t.co/h9FWmMxyPR
mpd見る限りではH.264しかなさげ? https://t.co/376wk1aMB8 pic.twitter.com/RZsbRzzTDM
— 蒸すか大差 (@7vU6jrZRuX2ffkY) December 5, 2022