Proxy内において、gateway_windows.exeの接続でエラーが発生する

Comments

5 comments

  • Avatar
    Toshiya Nakakura

     

    WebRTC自体がプロキシを超える仕様を持っていないため、ご想定の環境ではSkyWay WebRTC Gatewayに限らず全てのWebRTC標準に準拠した実装で、インターネット経由での接続ができません。

    プロキシサーバを利用してシグナリングサーバへ接続した場合でも、同一構内網同士での接続であれば確立可能ですが、SkyWay WebRTC Gatewayは

    「同一構内網で通信できる機能を持つソフトウェアのインターネット越え通信を支援する」

    ためのアプリケーションですので、同一構内網だけで動作させる場合はそもそも利用する必要がないことから、プロキシサーバ経由でのシグナリングサーバへ接続する機能は実装しておりません。

     

    以下参考情報ですが、

    WebRTCでの通信確立は2段階に分かれて実施されます。

    最終的にはブラウザやその他のアプリケーション同士(以下WebRTCクライアントと記載)でメディアのやり取りをするためのWebRTCセッションを確立するのですが、その前にWebRTCクライアント間での接続に利用するIPアドレスやポート番号等の必要な情報をシグナリングサーバを経由して交換する必要があります。

    この際収集されるIPアドレスやポート番号の中にProxyサーバのものは含まれないため、この状態でProxyサーバ経由でシグナリングサーバへ接続できたとしても、Proxyサーバ経由でのWebRTCセッションは確立することができません。最終的に確立できる可能性のあるWebRTCセッションは、同一構内網のPrivate IPアドレス間でのセッションのみです。

    同一構内網でのPrivate IPアドレス間であれば、例えばUnityのサンプルで利用したgStreamerから直接通信可能ですので、SkyWay WebRTC Gatewayを間に挟む必要がありません。

    0
    Comment actions Permalink
  • Avatar
    中澤 祥

    ご返信ありがとうございます。

    また、参考情報のご教授いただきありがとうございます。

    頂いた情報を元に色々検証していきたいと思います。

    0
    Comment actions Permalink
  • Avatar
    中澤 祥

    重ね重ねの質問失礼します。

    1.SkyWay WebRTC Gatewayの役割は下記であっていますか?

    企業イントラNW内のクライアント - Skyway WebRTC Gateway - インターネット上のクライアント

     

    2.下記のご返信について、企業イントラNW内のみにクライアントが存在している場合は、Skyway WebRTC Gateway が不要と考えれば良いでしょうか?

    >SkyWay WebRTC Gatewayは「同一構内網で通信できる機能を持つソフトウェアのインターネット越え通信を支援する」ためのアプリケーションですので、同一構内網だけで動作させる場合はそもそも利用する必要がないことから、プロキシサーバ経由でのシグナリングサーバへ接続する機能は実装しておりません。

     

    3.Proxyを経由することが目的ではなく、下記の環境を想定しています。

    同一企業イントラ内で、

    クライアント1(C1):ブラウザ

    クライアント2(C2):Unity App

    このときにC1とC2でSkyWayを利用して、WebRTCのセッションを確立する方法はどのような方法になりますでしょうか?

     

    色々とご質問してしまい申し訳ございませんが、ご教授いただければ幸いです。

    0
    Comment actions Permalink
  • Avatar
    Toshiya Nakakura (Edited )

    1. については概ねご理解のとおりです。但し「企業イントラNW」としてはProxyサーバを経由しての通信は想定しておらず、NATやFirewallを超えての通信を想定しています。

     

    この際の動きについてご説明しますと、動作は以下の通りです。

    まず、今までイントラNWの中で行っていた既存の通信プログラムの中継装置として動作することを目的として設計しています。

    例えばビルAのイントラNW内で

    プログラムA -- プログラムB

    という通信があったとき、プログラムBをビルBに移動させると直接通信ができなくなりますが、

    プログラムA -- WebRTC Gateway -- Internet --WebRTC Gateway -- プログラムB

    <-- ここまでビルAのイントラ    -->|    | <-- ここからビルBのイントラ-->

    というように中継することで異なるビルまで通信を飛ばせるようになります。

     

    この際、WebRTC Gateway間の通信はWebRTCに一旦変換して行います。従ってWebRTCを送受信できるソフトウェアであれば、WebRTC Gatewayではなく別のソフトウェアであっても通信可能です。結果的にビルB側でブラウザで終端することも可能になります。

     

     

    さて、設計思想が上記の通りでしたので、同一のイントラ内にプログラムAとBがある場合直接通信できますよね、とお答え致しました。この文脈では2.についてはご理解の通りです。

    しかしながら質問3.を読み、ご期待の動作はインターネット超えではなく、Unityとブラウザの間で通信することであると理解しました。

    この場合はブラウザが理解できる形式に変換して通信する必要があり、映像を流し込む場合はWebRTCしか現実的な選択肢はありません。

    これを解決するための方法について、私が今思いつくのは以下の2つです。

     

    A. WebRTC GatewayのSkyWayのシグナリングサーバへの通信だけなんとかして通す

    WebRTC Gatewayはプロキシサーバを利用する機能を実装していないため、別経路を用意する必要が有ります。

    例えばスマートフォンのテザリング等でシグナリングサーバへ接続するための別経路を作っていただければ、その後のメディア通信はイントラNW内で動作するはずですが、企業NWに外部からスマートフォンを接続するのはセキュリティ規定等で禁止されているかと思いますので、現実的には難しいかと思います。

     

    B. Proxy経由でシグナリングサーバへ接続できる別のUnityで動作するWebRTC アプライアンスを利用する

    こちらについては私自身が把握できていないため、できることを保証できないのですが、UnityでWebRTCを利用するためのソフトウェアはいくつかあるようですので、それらを調査されるとよいかもしれません。

     

    直接お力になれず申し訳ありませんが、ご了承下さい。

    よろしくお願いします。

     

    0
    Comment actions Permalink
  • Avatar
    中澤 祥

    ご返信ありがとうございます。

    詳細なご説明と解決方法のご提案について、非常に助かります。

    頂いた回答を元に、仕様についての検証を引き続き進めていきたいと思います。

    以上、よろしくお願いいたします。

    0
    Comment actions Permalink

Please sign in to leave a comment.