ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

スマートグラスのWebRTCの通信を覗いてみた!

はじめに

スマートグラスの活用が進み、特に現場業務の効率化向上に寄与しています。
今回は、Realwear社のNavigator 520(スマートグラス)を使用し、TeamViewer Frontline(ソフトウェア)を通じてエンドツーエンドのビデオ通話を実現するためのテストを行いました。本記事では、テストの内容とネットワーク設定について紹介します。

ライター:上野 寛登
スマートグラス・ロボット・データ分析などを担当
現場業務の効率化を実現するため、各種ソリューションをご紹介しております。

目次

TeamViewer Frontlineを用いたRealwear Navigator 520のビデオ通話テスト


WebRTCの仕組み


WebRTCは、ブラウザ間でリアルタイムの音声、ビデオ、およびデータ通信を可能にするオープンソースの技術です。例えば、WebRTCを利用してリアルタイムの音声通話やビデオ通話、ウェブ会議、直接データ転送などが実現されています。TeamViewer Frontlineでは、このWebRTCの技術を使用して、エンド間のビデオ通信を行っています。


通信の大まかなプロセスは以下の通りです。


①シグナリング:接続の初期設定やメタデータの交換を行うプロセス。
例:電話をかける前に「これから電話してもよいですか?」とメッセージを送るようなもの。

②接続の確立(ICE):STUNやTURNサーバーを利用して、最適なピア間の通信経路を確立するプロセス。
例:実際に電話をかけて、相手とつながるまでのプロセス。
通信状況をチェックして、一番つながりやすい方法を自動で選ぶプロセス。

③メディアとデータの送受信:音声やビデオ(メディアストリーム)は暗号化され、安全に送られます。
例:電話がつながって、実際に会話を始めるプロセス。
このとき、会話の内容が盗み聞きされないように、通信が暗号化されています。


今回は、このような技術が使用されているTeamViewer Frontlineのビデオ通話を検証していきます。

検証目的


今回の検証は、ビデオ通話に必要なポートの確認です。WebRTCでエンド間のビデオ通話を行う際には、TURNサーバーおよびSTUNサーバーへの通信が必要になります。この通信を制御した場合に、どのような挙動が起こるのかを確認します。
TURNサーバー:P2P通信の確立に失敗した場合に、ピア間のトラフィックを中継します。
STUNサーバー:各ピアがパブリックIPアドレスを確認する際に使用。

ネットワーク構成概要


検証に使用したネットワーク環境は以下の通りです。


外部ネットワーク


ビデオ通話に必要なTeamViewer Frontlineの各コンポーネント(TeamViewerコマンドセンター、TURNサーバー、STUNサーバー)はインターネット上に存在します。また、今回の検証ではスマートグラスにSIMを挿入してインターネットに接続します。


内部ネットワーク


こちらのネットワークは、検証用のLAN環境です。このネットワークにはPCが所属しており、このPCからインターネット上にあるスマートグラスへ通信を行います。

内部ネットワークとインターネットを接続するルータには、ホワイトリストで以下の設定を行っています。
HTTPS: 443
※現状では、ポート443のみ許可しており、それ以外の通信は拒否しています。

基本検証


TeamViewer Frontlineのビデオ通話では、以下のポートが使用されます。この後の検証では、順番に下記のポートを許可していきます。
TCP: 443
TCP: 8080
UDP: 8080
UDP: 40000-45000(同一LAN内でのビデオ通話で使用)

参照:Assist Requirements (teamviewer.com)

初回テスト:設定変更なし


まず、設定を変更せずにPCからスマートグラスへの通信を試みました。この通信で使用されたのはHTTPS(443)のみです。
この場合、PCからスマートグラスへのシグナリングは問題なく行われるものの、通話中の音声や映像が確認できませんでした。


PC側の画面             スマートグラス側の画面

ネットワークアナライザーツール(Wireshark)を使用して通信を確認すると、TCPの再送信が頻発していることがわかりました。TCPのセッションが確立できていないため、ビデオ通話に必要な情報(メディアストリーム・音声)が交換できていません。

グラフィックス5.png
※TCPの再送信が頻発し、セッションの確立が不完全であることを確認。
※Wiresharkを使用してパケットキャプチャを実施。

ポート設定変更後のテスト


次に、以下のポート設定をネットワーク機器に適用しました。
TCP: 8080(TURNサーバーへの通信を許可)
UDP: 8080(STUNサーバーへの通信を許可)
※UDP 40000-45000は同一ネットワーク内でのビデオ通話で使用されるため、今回は設定していません。

グラフィックス6.png

参照:Assist Requirements (teamviewer.com)


設定変更後、再度PCからスマートグラスへの通信を試みたところ、ビデオ通話が正常に行われました。

グラフィックス8.png 
スマートグラス側の画面

グラフィックス9.png          

PC側の画面

Wiresharkで通信を確認したところ、UDP 8080を使用したビデオ通信が行われていました。STUNサーバーを経由して、エンド間のビデオ通話が実現されています。

グラフィックス10.png


一方、TCP 8080に関しては、ビデオ通話の開始直後に通信が行われているものの、その後は頻繁に通信が行われているようには見えませんでした。
グラフィックス13.png

UDP 8080を許可しない場合の動作確認


次に、UDP 8080を許可しない場合の動作を確認しました。
リクエストの通信が頻繁に送信されていますが、応答がありません。これはUDP 8080を制限しているためです。

グラフィックス12.png


一方、TCP 8080の通信量は先ほどに比べて増加しています。

UDP 8080を制御したことで、TCP 8080を使用したTURNサーバー経由の通信に切り替わっています。

グラフィックス11.png

マルチキャスト通信の確認


1対Nのマルチキャスト通信も実施しました。
こちらも先ほど設定したポートを解放することで、問題なく動作しました。

通信の帯域


快適なビデオ通話を実現するためには、安定した通信環境が必要です。今回のLAN環境(PC側)では、ダウンロードが約700 Mbps、アップロードが約400 Mbpsでした。
インターネット環境(スマートグラス側)では、ダウンロードが約70 Mbpsでした。

グラフィックス15.png 
PC側の速度テスト(Fast.comを使用)    

スマートグラス側の速度テスト(Speedtest by Ooklaを使用)

結論

今回の検証で、スマートグラス上の通信の動きを把握することができました。実際の現場で上記のようなテクノロジーを使用する場合には、今回のようにポートが制限されていることが多いです。しっかりと通信フローを確認することで、必要なポートのみを開け、安全に通信を実現することができます。引き続きこのような検証を行い、有意義なレポートを作成していきたいと考えています。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND