【Microsoft Teams】帯域制限ポリシーの動作は謎

2022年11月6日

シレっと動作の変更が行われる事は常である。この記事は2022/11/05の環境で検証されました。

Teamsの帯域制限ポリシーとは、は以下

https://learn.microsoft.com/ja-jp/microsoftteams/meeting-policies-audio-and-video#media-bit-rate-kbs

会議ポリシーとか名前からアレな翻訳のポリシーに属しているメディアビットレートポリシー。会議ポリシーって会議毎に割り当てられるポリシーだと思うじゃん?残念、ユーザーに割り当てるポリシーである。ビデオ「会議」の際に適用されるので会議ポリシー。

それはさておき、ざっと説明文だけ読めば個人単位、またはグループ単位での、音声・動画の使用帯域を制限するポリシーなのだろう。重役は無制限、ヒラは200kbpsくらいが上限で。つまりはこんな感じか。

では何が謎なのか?

実際にやってみる

そもそも帯域と言っても、登りと下りの2種類ある。いわゆる「ギガが足りない」に沿って一般的に考えれば、少なくとも下りは制限されるだろう。だが何事も検証が大事。

3名会議の検証環境を用いる。内訳は1名だけ上限150kbps(18.5KB/s)、他2名は無制限だ。

150kbpsというのは、ビデオ会議の最小要件から採用した。

https://learn.microsoft.com/ja-jp/microsoftteams/prepare-network#bandwidth-requirements

制限アリをA、制限なしをB,Cと呼称。3つ全てのマイクをミュートし、以下4つの検証を行った。

  1. Aのカメラのみオン、B,Cはオフ
  2. Bのカメラのみオン、A,Cはオフ
  3. B,Cのカメラをオン、Aはオフ
  4. 全員のカメラをオン

まずは上記リストの1から。下の図1の最上部が上限設定アリのユーザーのプロセスである。

図1

はい、登り無制限が確定しました。そしてB,C共に高画質のビデオを受信している。

次にリスト2番目の結果が下の図2である。

図2

ファ???

なるほど、Aの受信速度は納得。設定した150kbps以下である。しかし帯域無制限のはずのCも影響を受けている。なぜなら、カメラをオンにしたBのアップロード速度が制限されているからだ。ここで一つの事実が浮上する。

帯域制限が適用されるのは、受信側ではなく送信側であるという事。

さらにリスト3番目の検証を行う。結果は以下の図3。

図3

Aの帯域制限を守るように、BとCのアップロードがさらに制限される。動画はもうコマ送り状態。

そして最後に全員のカメラをオンにする。結果は以下の図4。

なんとも言えない結果になった。Aのアップロードは制限を受けていない。A以外の会議参加者が帯域無制限であるためだろう。逆にBとCのアップロードはAの帯域制限と合わせる為に低画質配信となった。よってB視点で見ると、帯域制限を受けているはずのAが高画質で見えており、無制限のCはコマ送りとなっている。

社長Cがコマ送りであるにも関わらず、ヒラのAがイキイキと動く姿。部長Bには思うところがあるかもしれない。

結論

以上の検証結果をまとめる。

受信側に一人でも帯域制限ポリシーを適用された人物が居る場合、送信側はその帯域制限に合わせた送信しか行わない。よって、全員に配信される画質が低下する。

「こいつが参加する時だけ回線の調子悪いな」

そんな人を作りたい時にだけ使うポリシーである。重役だけの会議は高画質で。そんな思惑で使えない事も無い。が、そこに1人のヒラが参上すると仮定する。画面内でコマ送りになる重役たちをしり目に、ヒラは無駄にモニターの中で躍動する事となるだろう。

”なんでこいつだけこんなに滑らかに動くの?”

そんな質問が上級職から飛び出そうな組織のSEは、ネットワーク状況を鑑みてグローバルで帯域制限してしまうほうが無難だと思う。

社外の相手にはこちらの映像が鮮明に見え、しかし社内間では常に低画質。または社外に繋ぐ人は制限からリストアウトしておく。

実用として思いつくのはこの程度だろうか。それ以外あるかな?トリッキーすぎて思いつかない。

考察

こういう挙動になってしまうのは、Teamsのアプリが送信元で映像のエンコードを行っているからだと思う。AWS上のTeamsサーバーはブロードキャスティング程度しか担っておらず、受信側の帯域状態を送信元に伝える挙動になっているのだろう。謎いと思ったが、少し考えれば分かる事だった。

YoutubeやTwitchといったライブ配信サーバーは、今やクラウド上でエンコードを行っている。マシンスペックや収益もろもろが増大し、サーバー群が増強されているからだ。5年ほど前までは、ライブ配信では配信者がエンコードを行う事が常だった。クラウド上の配信サーバーのマシンパワーが不足しており、配信者のPCスペックが大幅にそれを上回っていたからだ。よって配信者側がエンコードを行い、サーバーは中継を担うという方式を取っていた。現在のTeamsはこの環境と同意なのだろう。

ビデオミーティングの画質が現在においても安定しないのには理由がある。一つのライブ配信動画には~数万の接続があり、これらユーザー数に対しエンコードは画質の種類の分だけでよい。3~5程度だろうか。

しかしながらビデオミーティングでは、カメラの台数分だけエンコードが必要になる。10人居れば10プロセス、低画質と高画質を選べるだけでも最低20プロセスが必要だ。ユーザー数の比ではライブ配信の数倍~数千倍のエンコード処理が必要となる。まだまだ現実的じゃないね。

よって送信元でエンコードを行う事は致し方なく、しかしマシンスペックにバラつきがある送信元で複数のエンコードを走らせる事は現実的ではない。そもそも動画のエンコードとは処理が重い部類のプロセスであるのだ。よって回線帯域の最低値に合わせてエンコードを行うのはシステム上は合理的である。

ただしスマホアプリではアップロード品質を送信元が選べる仕様が存在する。Web版やデスクトップ版にも導入されそうな仕様ではある。ポリシーにこれらの諸設定が加われば、前述の重役は高画質で~、といった設定を管理者が行うのもより現実的になるだろう。

あれ?帯域制限ポリシーって下りではなく登りにこそ適用されるべきなのでは?