8K動画がカクカクになる原因は?解析方法も紹介します ~未来ネットワーク体験記 第2回~
プライベートクラウドとネットワーク高速化技術を動画配信に活用しました。
テクノロジーコラム
- 2021年08月11日公開
NTTテクノクロス フューチャーネットワーク事業部の松野能久です。
事業部の名の通り「未来のネットワークの研究開発」に携わっています。
前回は8K動画をプライベートクラウドを用いて配信してみました。
プライベートクラウドではネットワーク帯域を動画専用に使えるので快適な動画視聴ができましたが、動画配信にネットワーク帯域が大きく使えない場合はどうなるのでしょうか?
トップの画像ほど乱れることはありませんが快適に動画は見られなくなってしまう可能性が高くなります。
そこで今回はネットワーク帯域が不足している状態の動画の見え方とその原因の特定方法を交えて紹介したいと思います。
動画配信とネットワーク帯域の関係
まずは前提として動画配信とネットワーク帯域の関係性を知っておく必要があるため簡単に解説したいと思います。
動画配信はネットワークとして見るとどうなっているのか?
普段は動画はもちろん映像として私たちの目に見えていますが、ネットワークの中ではどのようなことが起きているかを解説します。
ネットワークは拠点間を繋ぐ道路のような役目を持っています。
そして、この道路を通して動画は配信されています。
動画は何枚もの画像によって構成されているという話は前回のブログ
8K動画をクラウドで快適に配信してみた ~未来ネットワーク体験記 第1回~
で解説しました。
このことから動画を配信する場合、大量の画像がネットワークを通って運ばれていることが想像できますね。
動画配信はネットワーク帯域が不足するとどうなるのか?
動画配信とネットワークの関係がわかったところで次は今回のメインであるネットワーク帯域について解説します。
ネットワークには帯域という概念があります。
イメージしやすいように帯域を広さと変えて考えてみましょう。
ネットワークは道路のような役目とお伝えしましたが、道路の広さが広い(車線が多いイメージ)とより多くの車が通れて多くの荷物を運ぶことができますよね。
ネットワークも同じでネットワークの広さが広いと多くの情報量を送ることができます。
動画配信ではより滑らか(高fps)であったり、8Kのような高画質な動画を送ることが可能となります。
では逆にこの広さが狭かったらどうなるでしょうか?
動画の基である配信する画像を送りきれずに結果としてカクカクした動画になってしまいます。
また他にも、画像は細切れにして送っているため、画像の一部が欠けて動画が乱れるといった現象も起きてしまいます。
更には動画は音もありますよね。
音ももちろんこのネットワークを通して運ばれるのでネットワークが狭いと音がぶつぶつ切れたり、飛んだりして良く聞こえない事象が起きます。
環境準備
それでは、動画配信とネットワーク帯域の関係を、実際に環境を使って体験してみましょう。
前回のブログの環境を使って動画配信のネットワーク帯域を狭くしていきます。
環境の詳しい説明は前回ブログに掲載しています。
ネットワーク帯域を縮小する
ネットワーク帯域の縮小はクラウドから行う方法、サーバ内で行う方法の大きく2つがあります。
クラウド(OpenStack)でのネットワーク帯域縮小方法
プライベートクラウド(OpenStack)で、ネットワーク帯域を縮小するにはネットワーク QoS 機能を使用します。 OpenStack のネットワーク QoS 機能は、クラウド側でネットワーク帯域・遅延などのネットワーク品質を制御することができます。
このネットワーク QoS 機能を使用すると、仮想サーバのネットワークトラフィックを「帯域制限」で転送することができます。 一方、ネットワーク QoS 機能を使用しない場合、すべてのトラフィックは「ベストエフォート」で転送されます。
実際にネットワーク帯域を縮小する方法は、この QoS 機能を有効化した上で、次の手順にて実施することができます。
1.最初に、QoS ポリシーと帯域制限ルールを作成する。 $ openstack network qos policy create bw-limiter $ openstack network qos rule create --type bandwidth-limit --max-kbps 50000 --egress bw-limiter 2.次に、作成したポリシーを仮想サーバー(のポート)に関連付ける。 $ openstack port set --qos-policy bw-limiter
これで、50Mbps程度に縮小することができます。
詳しくは、こちらのオフィシャルサイトを参照してみてください。
サーバ内(Linux)でのネットワーク帯域縮小方法
サーバ内(Linux)で、ネットワーク帯域を縮小するには「tc コマンド(Traffic Control)」を使用します。 Linux OS の tc コマンドは、サーバ側でネットワーク遅延やパケットロスを疑似的に発生させることができます。
今回は、こちらの方法を採用したいと思います。
今回の実験環境では、動画配信元をSender、動画配信先をReceiverと呼ぶことにしています。
それでは、動画配信元であるSenderの方でネットワーク帯域を縮小してみましょう。
これで50Mbps程度に縮小することができました。
8K動画は200Mbps程度のトラフィック量なので大きく足りていませんね。
トラフィックを流してネットワーク帯域を確認してみる
動画を実際に流す前にネットワーク帯域が縮小されているかを確認してみましょう。
今回はiperfというコマンドを使って確認します。
割とネットワーク業界ではスタンダードなコマンドかと思います。
Senderから200Mbpsのトラフィックを送っていますが、Receiverでは50Mbps程度しか受け取れていませんね。
なお、ネットワーク帯域を縮小する前は以下の通りです。
しっかりと200Mbpsのトラフィックが流れていることが確認できますね。
動作紹介
それでは準備した環境を使って
実際に動画がどうなるのか?
また、ネットワークを流れるパケットで見るとどのような現象が発生しているのか?
を確認していきたいと思います。
8K動画を流す
それでは8K動画を早速流してみましょう。
今回は細かい動きがある波の動画を使ってみます。
なんとか動画配信はできていますが動きの滑らかさはなくいわゆるカクカク動画になっています。
そして更には完全な画像が送れず色がありません。
波の形はわかるくらいの画像ですね。
比較のために綺麗に流れている時の画像も載せておきます。
パケットキャプチャで原因を確認する
動画の基である画像は色情報や部分画像に細かく分割されてパケットという単位でネットワークを介して運ばれています。
このパケットの情報を見ることができるのがパケットキャプチャという技術です。
動画配信を行っている間のパケット数をパケットキャプチャを使って確認してみます。
まずはネットワーク帯域を50Mbpsに縮小した際のパケット数を見てみます。
一方で、ネットワーク帯域を縮小していない場合のパケット数はこちらです。
パケット数が1/4程度になっていますね。
残りの3/4のパケットが送れていないということは動画の基になっている画像情報が3/4失われているということです。
このため、今回は動画がカクカクしたり色が落ちてしまったりといった事象になってしまいました。
原因を解決する
解決方法は縮小したネットワーク帯域を基に戻せばOKです。
50Mbpsに縮小したものを削除して元のネットワーク帯域に戻します。
無事、カクカクしたりすることなく8K動画が配信される状態に戻りました。
今回は意図的にネットワーク帯域を狭めましたが、もしネットワークの帯域の制限がかかっていない場合はプロバイダの契約変更でネットワーク帯域を広げる等の対応が必要です。
とはいえ、元から十分なネットワーク帯域がない場合は広げるのは契約しているプロバイダのプランを変更したりと大変ですよね。
そのようなときにもプライベートクラウドであれば自らクラウドの設定でネットワーク帯域を拡張することも可能なのでかなりお手軽です。
まとめ
今回は動画配信で試してみましたが、音声だけでも同じことが起きます。
近年リモートワークでWeb会議が多くなっていますが、映像がカクカクして乱れたり、音声が聞き取れないような環境でお困りではありませんか?
NTTテクノクロスはネットワークのスペシャリストが揃っておりますのでネットワーク診断と改善提案についても承ります。
お気軽にお問い合わせフォームからご連絡ください。
[著者プロフィール]
フューチャーネットワーク事業部 第一ビジネスユニット
松野 能久(MATSUNO YOSHIHISA)