Mercurial > hg > Papers > 2016 > parusu-thesis
diff presen/slide.md @ 34:a55afdfb536b
Add presen
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 18 Feb 2016 02:44:11 +0900 |
parents | f85aef510a85 |
children | 8cf792825826 |
line wrap: on
line diff
--- a/presen/slide.md Thu Feb 18 00:33:49 2016 +0900 +++ b/presen/slide.md Thu Feb 18 02:44:11 2016 +0900 @@ -1,4 +1,4 @@ -title: 有線 LAN 上のPC画面配信システムTreeVNCの改良 +title: PC画面配信システムTreeVNCの NAT への対応 author: Tatsuki IHA, Shinji KONO profile: lang: Japanese @@ -11,8 +11,6 @@ # TreeVNC の問題点 - TreeVNC を実際に使用していく中で様々な問題が発生 -- 琉球大学では無線と有線が別々のネットワークになっている -- TreeVNCは単一のネットワークにしか対応できず、両方のネットワークにつながっている端末でも1つのネットワークでしか使用できなかった - 講義等を大学外の遠隔地から受けたい場合がある - TreeVNC は NAT を越えた接続が行うことができない @@ -25,23 +23,21 @@ # この発表は - TreeVNC の概要 - 構造 - - 圧縮形式 - - TreeVNC の原理 + - 原理 - 画面切り替え - 今回の改良 - - 描画処理の安定化 - - 複数のネットワークの対応 - NAT を越えた通信 - マルチディスプレイの対応 - TreeVNC の評価 - 画像データ送信の遅延 + - ネックになってるノードへの対処 # TreeVNC - TreeVNC は本研究室で開発している VNC を利用した画面配信システム - 参加したクライアントをバイナリツリー状で接続することで配信コストを分散させる - スムーズな配信画面の切替を行う -<img src="./images/TreeVNC.svg" alt="message" width="400"> +<img src="./images/treeVnc.svg" alt="message" width="400"> # VNC - VNC(Virtual Network Computing) は RFBプロトコルを用いて遠隔操作を行うソフトウェア @@ -55,28 +51,12 @@ - Framebuffer と呼ばれるメモリ上に置かれた画像データを使用して画面表示を行う - サーバーは Framebuffer が更新されるたびにクライアントに対して変更部分だけを送信する。 -# 多人数でVNCを使用する際の問題点 -- 多人数のクライアントが1つのサーバーに接続する構造 -- サーバー側の処理性能が落ちてしまう -- 配信者を切り替える際、配信側のサーバーを立ち上げ直す必要がある - # TreeVNC の構造 - Java で作成されたTightVNC(Tight Virtual Network Computing) を元に作成されている - 様々なメッセージで通信を行う - クライアント同士をバイナリツリー状に接続する - バイナリツリーのルートのノードをRoot Nodeと呼び、 Root Node に接続されるノードを Node と呼ぶ -# Node が行う処理 -- Node - - 親 Node から送られたデータを自分の子 Node に流す - - 子 Node から送られてきたデータを親 Nodeに流す -- Root Node - - TreeVNC で配信を行う際に一番最初に起動する Node - - Node の機能 - - 各 Node の管理 - - VNC サーバーから送信されたFramebuffer の管理 - - # TreeVNCの原理 - ポート一本あたりの負荷 - 従来のVNC : Node数 * データ量 @@ -84,40 +64,26 @@ - 従来のVNCはNode数に比例 - TreeVNCはNode数に関係なく一定 -<img src="./images/comparenormalandtree.svg" alt="message" width="600"> - -# TreeVNC の圧縮形式 -- TreeVNC は ZRLEE というエンコードでデータのやり取りを行う -- ZRLEE は Rfb でのエンコードの1つである ZRLE を元に生成される -- ZRLE を一度 Root Node で解凍して再圧縮を行う -- 配信画面の更新のたびに辞書を作りなおす -- 途中からデータを受け取っても解凍できる - -<img src="./images/ZRLEE.svg" alt="message" width="400"> - -# メッセージ通信の流れ -<img src="./images/message.svg" alt="message" width="400"/> +<img src="./images/treeVncTheory.svg" alt="message" width="600"> # 切断時の木の再構成 - TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまう - TreeVNC は Node 切断の検知を LOST\_CHILD というメッセージで行っている -<img src="./images/lostChild1.svg" alt="message" width="800"> +<img src="./images/lostChild.svg" alt="message" width="800"> # 共有画面切り替え - TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている - 画面を配信されている側のビューワにある Share Screen ボタンが押す - Root Node に SERVER\_CHANGE\_REQUEST を木構造を辿りながら送信 - Root Node は Share Screen ボタンを押したクライアントの VNC サーバーと通信を開始 -- NAT 越えは現時点では実装されていない -# QUALITY モードと SPEED モード -- 高解像度のデータの描画処理はPCのスペックによって重くなる場合がある -- 画像描画処理には - - 高画質優先の QUALITY モード - - 描画速度優先の SPEED モード -- 今まで QUALITY モード を使用していた(変更不可) -- ビューワからユーザーがどちらのモードを使用するかを変更を可能にした +# Direct Connection +- NATを越えたネットワークからの接続は直接配信側の Root Node に接続を行うことで実現する +- Direct Connection した Node はそのネットワークの Root Node になる +- Direct Connection された Root Node では NAT を越えたネットワーク先の Node の管理を行わない + +<img src="./images/directConnection.svg" alt="message" width="800"> # マルチディスプレイ - 画面切り替えの際のSERVER\_CHANGE\_REQUESTに共有するディスプレイの座標を付加する @@ -126,19 +92,6 @@ <img src="./images/shareScreenToMultiDisplay.svg" alt="message" width="800"> -# 複数ネットワーク -- Root Node が接続しているネットワークごとに木構造を形成する -- 新しい Node が接続してきた際、 interfaces から Node のネットワークと一致する木構造を取得し、 接続の処理を任せる - -<img src="./images/MultiNetworkTree.svg" alt="message" width="600"> - -# Direct Connection -- NATを越えたネットワークからの接続は直接配信側の Root Node に接続を行うことで実現する -- Direct Connection した Node はそのネットワークの Root Node になる -- Direct Connection された Root Node では NAT を越えたネットワーク先の Node の管理を行わない - -<img src="./images/directConnection.svg" alt="message" width="800"> - # TreeVNCの評価 - 木の深さによる画像データの遅延を調べる - 実験環境 @@ -169,6 +122,14 @@ - 深さ3が遅い原因として1つの Node がボトルネックになっている事が判明した。 - ネックになった Node をそのままにするとその子Nodeに影響を及ぼしてしまう。 そのためその Node に何らかの対応を行う必要がある +# ネックになっているノードへの対処 +- CHECK\_DELAY\_REPLY で Root Node は ネックかどうかのを判断をする +- ネックになっているなら、そのノードを木構造のリストから削除 +- 最後のノードを削除したnodeの場所に移動 +- ネックになったところは三分木になる + +<img src="./images/fixTree.svg" alt="message" width="800"> + # まとめと課題 - 今回TreeVNCの様々な問題点の解決を行った - 実験を行うことによりさらなる問題点が判明した @@ -176,5 +137,3 @@ - NATを越えた画面切り替え - 追加した機能の評価方法を思考し、評価を行う -# -- http://www.cr.ie.u-ryukyu.ac.jp/software/TreeVNC.html