画面配信システム TreeVNC の拡張
Yukiya OSHIRO 並列信頼研
画面配信システムの活用
講義や発表の場では、プロジェクタが使用されることが多い。その場合、アクシデント発生の恐れがある
画面配信システム TreeVNC は、自身の PC 画面を他者の PC に表示するソフトウェアである
TreeVNC を使用することで、参加者は手元の PC を使用しながら講義を受ける事が可能になる。切り替えの際も、ボタン一つで共有する画面の切替を可能としている
TreeVNC の問題点
クライアントが接続している状態で、サーバー側が接続を切るとクライアント側が正しく切断されない
サーバーに接続した際に、画面の操作を許可するかどうか確認するポップアップが Root 側にも表示されてしまう
画面配信は送信するデータ量が多いため、TreeVNC では無線接続の場合、画面配信の遅延が大きくなってしまう
現在の TreeVNC のデータ転送方法だと、無線接続で送信するには大きすぎる
今回の発表
クライアントが接続している状態で、サーバー側が接続を切るとクライアント側が正しく切断されない
サーバーに接続した際に、画面の操作を許可するかどうか確認するポップアップが Root 側にも表示されてしまう
画面配信は送信するデータ量が多いため、TreeVNC では無線接続の場合、画面配信の遅延が大きくなってしまう
現在の TreeVNC のデータ転送方法だと、無線接続で送信するには大きすぎる
目次
TreeVNC の概要
基本概念
構造
研究内容
TreeVNC の改良
送信データの Blocking
TreeVNC
TreeVNC は本研究室で開発している画面配信システム
VNC (リモートデスクトップソフトウェア) を利用している
配信側の負荷を分散し、大人数での画面配信が可能
VNC
VNC (Virtual Network Computing) は、RFB プロトコルを用いて PC の遠隔操作を行うことを目的としたリモートデスクトップソフトウェア
サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている
全ての Node が一台のサーバーに接続するため負担が大きい
RFB プロトコル
RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコル
ユーザがいる (画面を表示される) 側と FrameBuffer への更新が行われる (自身の画面を送信する) 側に分かれ、それぞれを RFB クライアント、RFB サーバと呼ぶ
FrameBuffer は、メモリ上に置かれた画像データのこと
TreeVNC の構造
TreeVNC は接続してきたクライアントを Node とし、バイナリツリー状に管理する。
ルートのノードを Root Node と呼び、その下に新たな Node を接続していく
Root Node が参照している VNCServer から FrameBufferUpdate を取得し、各 Node に送信する
バイナリツリー状に接続することで、画像データのコピーを各 Node に負担させることができる
共有画面切り替え
従来の VNC では、配信者が切り替わるたびに再起動、再接続を行う必要があった
TreeVNC では、画面上にある ShareScreen ボタンを押すことで配信者の切り替えが実行できる
ShareScreen 実行後、Root Node に対し SERVER CHANGE REQUEST というメッセージが送信される。
メッセージを受け取った Root Node は配信を希望している Node の VNC サーバーと通信を行い、切り替え作業に入る。
目次
TreeVNC の概要
基本概念
構造
研究内容
TreeVNC の改良
送信データの Blocking
Multicast
ツリーに無線接続の Node を加えてしまうと配信の遅延に繋がる
Multicast の実装を提案
Multicast ならば、Server からの送信は一度で済むため、ツリー構造の形成が必要ない
従って新しい Node が 無線接続であっても、有線接続のツリーの配信には影響が出ない
Blocking
無線接続の場合、一度に送信できるデータ量が 64kbyte しかないため、それに合わせてデータを分割する必要がある
大きなデータを小さい単位に分割する
更新が行われた部分を1行ずつ圧縮していく
書き込みのために用意した関数に入る限界値まで圧縮を行ない、関数に書き込む
まとめ
TreeVNC の改良と Multicast 対応のためのデータの Blocking を実装した。
VNCServer 側が接続を切断した場合でもクライアントが正しく終了する様にした。
画面操作の許可を確認する authentication のポップアップが Root 側に表示されない様にした。
データの Blocking を行うことにより、無線接続での Multicast 対応を行えるようにした。
今後の課題
Multicast の実装
Multicast 実行時の遅延の評価
Packetloss 時の対処