カテゴリー
2020年 CDN Microsoft Riverbed WebRTC キャッシュ コンピューター 技術一般

WebRTC とは -メディア通信の最適化

PVアクセスランキング にほんブログ村 にほんブログ村 IT技術ブログへ
にほんブログ村

先日、Kollective Technology の ECDN というコンテンツ配信製品を、社内で検討する機会がありました。

Microsoft Teams、Stream、Windows Update を使用した場合、使用する人数が増えるほど、WAN 回線の帯域幅を消費してしまい、回線が逼迫してしまうケースがあります。

ECDNがない場合の通信

Kollective 社の ECDN 製品を使用すると、WAN回線越しに流れてくるデータストリームを少なく(ケースにより1つにする)することができます。

データストリームを受けたブラウザーがそのデータをキャッシュし、同じ場所にいる別の端末に共有します。これにより、WAN 回線を効率的に使用することができる様になります。

ECDNがない場合の通信

この製品で、WebRTC という技術が使われています。

WebRTC は名前が聞いたことはあったのですが、詳細までは知らなかったので、いい機会なので調べてみました。

WebRTC とは?

WebRTC は、Web Real Time Communications の略で、プラグインを追加することなく、ブラウザ上で簡単にリアルタイムコミュニケーションを可能にします。2011年頃に Google によって提唱され、そこから少しずつ技術開発されてます。

HTML5 で新しく策定された API の規格で、P2P通信を利用した端末間の相互接続も行うことができ、P2P 通信によるビデオチャットやファイル共有を、Web ブラウザだけで実現することができます。

Web ブラウザーを使って、簡単に使うことができるのですが、使用できるブラウザーは限定されている様です。その理由は、ブラウザーが WebRTC をサポートしている必要があるからです。

WebRTC 対応ブラウザー

  • Chrome
  • Firefox
  • Opera
  • Edge
  • Safari

IE はサポートしてないんですね。今でも IE を使ってる企業はまだまだ多いですが、もう古いブラウザーなので、Edge を使えってことでしょう。

ちなみに、Kollective社 の製品では、以下のブラウザーとプラットフォームをサポートしています。

対応ブラウザー

  • Edge
  • Chrome
  • Firefox
  • Safari

対応モバイル端末

  • Android
  • iPad

iPhone は、WebRTC をサポートしてないらしいです。なお、対応ブラウザーが使えない場合、Teams アプリを使用すれば、WebRTC が使えるそうです。

対応 OS対応ブラウザー
Windows / MacChrome 26以降
Firefox 22以降
Opera 15以降
AndroidChrome 29以降
iOS開発中

WebRTC で実現できること

WebRTC を実装することで、実現することのできる機能は、以下のものがあります。

  • 端末上のカメラやマイクからのデータの取り込み

Media Capture and Stream

  • ストリームデータの P2P 通信

WebRTC 1.0: Real-time Communication Between Browsers

  • テキストデータやバイナリデータの P2P 通信

WebRTC 1.0: Real-time Communication Between Browsers

WebRTC では、クライアントがサーバにデータの要求をするクライアント/サーバモデルでななく、複数端末間での通信です。

つまり、それぞれのPCがデータを保持し、他のPCに対して直接、データの送信・要求を行うPeer to Peerの形をとります。

また、通信プロトコルには基本的に「TCP/IP」の代わりに、「UDP/IP」を用いて通信のリアルタイム性を担保しているのも特徴です。状況によってプロトコルを使い分けるみたいです。

Kollective社の製品では、上記の「WebRTC 1.0: Real-time Communication Between Browsers」を使用しているのですね。

P2P 通信に必要な情報

P2P 通信を行うためには、ブラウザ間で共有しなければならない情報があります。

P2P 通信を開始するには接続先のグローバルアドレス情報が必要になるので、NAT traversal として、STUN(Simple Traversal of UDP through NATs)やICE(Interactive Connectivity Establishment)といった技術がサポートされており、NAT が割り当てたグローバル IP アドレスとポート番号を取得できるようになっています。

Session Description Protocol (SDP)

  • 通信に必要な各ブラウザの情報を示す文字列 (セッションの属性、メディアの形式、IP アドレス、ポート番号、通信帯域など)のことです。
  • 片方の PC が他方 PC に対し SDP を Offer し、それに対して Answer SDP を返すという形で通信を行います。

Interactive Connectivity Establishment (ICE)

  • 通信相手のブラウザに到達する通信経路に関する情報を提供します。
  • この通信経路を探す際、環境によっては、NAT やファイアウォールなどで直接的に PC 同士の情報を渡せないこともあり得ます。
  • そのため、STUN サーバや TURN サーバというものを用いて通信経路を検知し、それらの経路候補を ICE Candidate として、ブラウザ間で共有する必要があります。

WebRTC の JavaScript API

WebRTC は、以下の 3つの JavaScript API を提供しています。

getUserMedia

  • Web ブラウザから端末に取り付けられているカメラやマイクにアクセス
  • ストリームデータを取得する

RTCPeerConnection

  • マルチメディアセッションを確立
  • UDP/IP を使用して Web ブラウザ同士で直接ストリームデータを送受信
  • コーデック(オーディオおよびビデオの符号化および復号化)、暗号化、帯域管理(帯域幅の変化にストリームを適応させるなど)の各機能も提供

RTCDataChannel

  • テキストデータやバイナリデータの P2P によるデータ通信のための API
  • ファイル転送やテキストチャットなどを実現
  • UDP/IP を使用しているので、TCP/IP とは異なりパケット再送は行わない

メディア系の技術は名前を知っている程度で、触れる機会がなかったのですが、今回は良いチャンスです。これを機会に学んでみようと思います。

追記:

リバーベッドテクノロジーの SaaS Accelerator という製品が、この WebRTC をサポートしたとの話を聞きました。今度、機会のある時に試してみたいと思います。

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate CDN キャッシュ クラウド コンピューター 技術一般 認定資格

AWS を学ぶ(18)CloudFront を使ってみる

この記事は、日本語で作成し、機械翻訳で外国語に訳しています。

AWS を学んでみる(8)CloudFront ってなんだろうで、CloudFront について調べてみましたが、今回は、CloudFront を実際に使ってみました。

今回の動作確認では、以下のようなイメージで、構成を作ってみます。

(1) の部分が、Web サーバーと ELB、(2) の部分が CloudFront です。

CloudFront を使ってみる

事前準備

まず、(1) の部分を作っていきます。

VPC やサブネットについては、AWS を学ぶ(1)VPC を理解するAWS を学ぶ(2)VPC を作ってみようで説明しています。

EC2 でのインスタンスの起動については、AWS を学ぶ(4)EC2 を理解するAWS を学ぶ(6)EC2 を使ってみようで説明しています。

EC2 上に、Web サーバーを起動させます。インターネットからアクセスできるように、パブリックサブネットに起動させて下さい。

Web サーバーのグローバルアドレスを確認し、ブラウザーに入力して下さい。

Web サーバーのコンテンツが表示されましたね。

次に、ELB を起動させます。

ELB の起動と設定については、AWS を学んでみる(9)ELB を使ってみようで説明しています。

今回は ALB を使ってみます。ターゲットを、ES2 上の Web サーバーで指定しておきます。

ターゲットのステータスが Healthy になりました。

ELB のDNS 名を確認し、それをブラウザーに入力してアクセスします。

Web サーバーのコンテンツが表示されましたね。ELB 経由で Web サーバーへのアクセスも成功です。

CloudFront の起動と設定

AWS 管理コンソールの検索テキストボックスに CloudFront と入力し、CloudFront を選択します。

CloudFront の管理コンソールが表示されます。

「Create Distribution」をクリックします。

今回試したいのは、Web サーバーのコンテンツキャッシュです。上の「Web」の方の「Get Started」をクリックします。

Create Distribution の画面が表示されます。

Origin Settings の中の「Origin Distribution Name」のテキストボックスをクリックし、プルダウンメニューを表示させます。

その中に、先ほどの事前準備で作成した ELB が表示されていますので、それを選択します。

これ以外の設定は、今回は特に変更しません。

画面下部の「Create Distribution」をクリックします。

CloudFront Distributions の画面に戻ります。

Statusのところが、「In Progress」になっているはずです。導入が完了するまでに、10 分くらいかかります。

Status が「Deployed」になりました。これで CloudFront の導入が完了です。

導入が完了した Distribution の「ID」をクリックして、詳細を表示させます。

「Domain Name」の箇所に表示されているのが、CloudFront を使う時のアクセス先になります。

CloudFront のドメイン名を、ブラウザーに入力してアクセスしてみます。

Web サーバーやELB経由の時と同じコンテンツが表示されましたね。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)