有線 LAN 上のPC画面配信システムTreeVNCの改良

Tatsuki IHA

画面共有を利用したコミュニケーション

授業やゼミ等で、それぞれが PC 端末を持っている場合では、PC の機能を活かした コミュニケーションが可能である。教員が操作する画面をそのまま学生に配信したり, ゼミ などで、発表する学生の画面を切り替えたりすることを可能にしたい。画面配信システム TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる 仕組みを取っている。そのため, 多人数が参加しても処理性能が下がらない。また、ツリー のルートが参照している VNC サーバーを変更することで、ケーブルの差し替えなしに画面 の切替が可能となる。

画面共有を利用したコミュニケーション

しかし、 TreeVNC を実際に使用していく中で様々な問題が発生した。 本研究では TreeVNC の改良として、複数のネットワークへの対応、 WAN への対応、 マルチディスプレイへの対応を行うとともに、TreeVNC 有用性を示すた めに画像データの遅延時間計測を行った。

TreeVNC

問題点を一枚づつ

解決した問題

VNC

RFB プロトコル

多人数でVNCを使用する際の問題点

TreeVNC の構造

Root Node

TreeVNCの通信量

TreeVNC の圧縮形式

ZRLE

java.util.zip.deflater の問題点

message

ZRLEE

message

TreeVNC の通信経路

TreeVNC に参加するまでのメッセージ通信の流れ

message  
  • 接続を行う Node(以下 Client Node) は Multicast 通信で Root Node に対して FIND_ROOT を送信する(1:findRoot())
  • Root Node が FIND_ROOT を受信すると接続を行う Node に FIND_ROOT_REPLY を送信する (2:findRootReplay)
  • Client Node 側で、どの Root Node に接続するかを選択するパネルが表示される
  • Client Node はパネルで接続する Root Node を選択し、Root に対して接続先を要求 する WHERE_TO_CONNECT を送信する (3:whereToConnect())
  • 受信した Root Node は Client Node の接続先を CONNECT_TO で送信する (4:connectTo)
  • Client Node は Root の指定した接続先に接続しに行く
  • Root Node, Client Node 間の接続が確立後 Root Node から Clinet Node に対して定期的に画像データ FRAME_BUFFER_UPDATE を送信する (5:framebufferUpdate())

切断時の木の再構成

切断時の木の再構成

LOST_CHILDの例

共有画面切り替え

QUALITY モードと SPEED モード

マルチディスプレイ

複数ネットワークの対応

WANへの対応

TreeVNCの評価

使用するメッセージ

実測方法

// 遅延時間の計算
Long delay = System.currentTimeMillis() - time;

結果

message message message message

まとめと課題