Mercurial > hg > Papers > 2016 > parusu-thesis
comparison 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 |
comparison
equal
deleted
inserted
replaced
33:f85aef510a85 | 34:a55afdfb536b |
---|---|
1 title: 有線 LAN 上のPC画面配信システムTreeVNCの改良 | 1 title: PC画面配信システムTreeVNCの NAT への対応 |
2 author: Tatsuki IHA, Shinji KONO | 2 author: Tatsuki IHA, Shinji KONO |
3 profile: | 3 profile: |
4 lang: Japanese | 4 lang: Japanese |
5 code-engine: coderay | 5 code-engine: coderay |
6 | 6 |
9 - 画面配信システム TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる 仕組みを取っている。そのため, 多人数が参加しても処理性能が下がらない | 9 - 画面配信システム TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる 仕組みを取っている。そのため, 多人数が参加しても処理性能が下がらない |
10 - ツリー のルートが参照している VNC サーバーを変更することで、ケーブルの差し替えなしに画面の切替が行える | 10 - ツリー のルートが参照している VNC サーバーを変更することで、ケーブルの差し替えなしに画面の切替が行える |
11 | 11 |
12 # TreeVNC の問題点 | 12 # TreeVNC の問題点 |
13 - TreeVNC を実際に使用していく中で様々な問題が発生 | 13 - TreeVNC を実際に使用していく中で様々な問題が発生 |
14 - 琉球大学では無線と有線が別々のネットワークになっている | |
15 - TreeVNCは単一のネットワークにしか対応できず、両方のネットワークにつながっている端末でも1つのネットワークでしか使用できなかった | |
16 - 講義等を大学外の遠隔地から受けたい場合がある | 14 - 講義等を大学外の遠隔地から受けたい場合がある |
17 - TreeVNC は NAT を越えた接続が行うことができない | 15 - TreeVNC は NAT を越えた接続が行うことができない |
18 | 16 |
19 # TreeVNC の問題点 | 17 # TreeVNC の問題点 |
20 - ゼミ等で発表者毎に画面切り替えを行う際、デュアルディスプレイを使っている学生がいた | 18 - ゼミ等で発表者毎に画面切り替えを行う際、デュアルディスプレイを使っている学生がいた |
23 <img src="./images/multidisplay.svg" alt="message" width="500"> | 21 <img src="./images/multidisplay.svg" alt="message" width="500"> |
24 | 22 |
25 # この発表は | 23 # この発表は |
26 - TreeVNC の概要 | 24 - TreeVNC の概要 |
27 - 構造 | 25 - 構造 |
28 - 圧縮形式 | 26 - 原理 |
29 - TreeVNC の原理 | |
30 - 画面切り替え | 27 - 画面切り替え |
31 - 今回の改良 | 28 - 今回の改良 |
32 - 描画処理の安定化 | |
33 - 複数のネットワークの対応 | |
34 - NAT を越えた通信 | 29 - NAT を越えた通信 |
35 - マルチディスプレイの対応 | 30 - マルチディスプレイの対応 |
36 - TreeVNC の評価 | 31 - TreeVNC の評価 |
37 - 画像データ送信の遅延 | 32 - 画像データ送信の遅延 |
33 - ネックになってるノードへの対処 | |
38 | 34 |
39 # TreeVNC | 35 # TreeVNC |
40 - TreeVNC は本研究室で開発している VNC を利用した画面配信システム | 36 - TreeVNC は本研究室で開発している VNC を利用した画面配信システム |
41 - 参加したクライアントをバイナリツリー状で接続することで配信コストを分散させる | 37 - 参加したクライアントをバイナリツリー状で接続することで配信コストを分散させる |
42 - スムーズな配信画面の切替を行う | 38 - スムーズな配信画面の切替を行う |
43 | 39 |
44 <img src="./images/TreeVNC.svg" alt="message" width="400"> | 40 <img src="./images/treeVnc.svg" alt="message" width="400"> |
45 | 41 |
46 # VNC | 42 # VNC |
47 - VNC(Virtual Network Computing) は RFBプロトコルを用いて遠隔操作を行うソフトウェア | 43 - VNC(Virtual Network Computing) は RFBプロトコルを用いて遠隔操作を行うソフトウェア |
48 - サーバー側とクライアント側に分かれており、サーバーを起動し、クライアントがサーバーに接続を行うことで遠隔操作を可能とする | 44 - サーバー側とクライアント側に分かれており、サーバーを起動し、クライアントがサーバーに接続を行うことで遠隔操作を可能とする |
49 | 45 |
53 - RFB(Remote Frame Buffer)プロトコルは VNC で用いられているプロトコル | 49 - RFB(Remote Frame Buffer)プロトコルは VNC で用いられているプロトコル |
54 - 自身の画面をネットワーク越しに他者の画面に表示する | 50 - 自身の画面をネットワーク越しに他者の画面に表示する |
55 - Framebuffer と呼ばれるメモリ上に置かれた画像データを使用して画面表示を行う | 51 - Framebuffer と呼ばれるメモリ上に置かれた画像データを使用して画面表示を行う |
56 - サーバーは Framebuffer が更新されるたびにクライアントに対して変更部分だけを送信する。 | 52 - サーバーは Framebuffer が更新されるたびにクライアントに対して変更部分だけを送信する。 |
57 | 53 |
58 # 多人数でVNCを使用する際の問題点 | |
59 - 多人数のクライアントが1つのサーバーに接続する構造 | |
60 - サーバー側の処理性能が落ちてしまう | |
61 - 配信者を切り替える際、配信側のサーバーを立ち上げ直す必要がある | |
62 | |
63 # TreeVNC の構造 | 54 # TreeVNC の構造 |
64 - Java で作成されたTightVNC(Tight Virtual Network Computing) を元に作成されている | 55 - Java で作成されたTightVNC(Tight Virtual Network Computing) を元に作成されている |
65 - 様々なメッセージで通信を行う | 56 - 様々なメッセージで通信を行う |
66 - クライアント同士をバイナリツリー状に接続する | 57 - クライアント同士をバイナリツリー状に接続する |
67 - バイナリツリーのルートのノードをRoot Nodeと呼び、 Root Node に接続されるノードを Node と呼ぶ | 58 - バイナリツリーのルートのノードをRoot Nodeと呼び、 Root Node に接続されるノードを Node と呼ぶ |
68 | |
69 # Node が行う処理 | |
70 - Node | |
71 - 親 Node から送られたデータを自分の子 Node に流す | |
72 - 子 Node から送られてきたデータを親 Nodeに流す | |
73 - Root Node | |
74 - TreeVNC で配信を行う際に一番最初に起動する Node | |
75 - Node の機能 | |
76 - 各 Node の管理 | |
77 - VNC サーバーから送信されたFramebuffer の管理 | |
78 | |
79 | 59 |
80 # TreeVNCの原理 | 60 # TreeVNCの原理 |
81 - ポート一本あたりの負荷 | 61 - ポート一本あたりの負荷 |
82 - 従来のVNC : Node数 * データ量 | 62 - 従来のVNC : Node数 * データ量 |
83 - TreeVNC : (2(子供の数) + 1) * データ量 | 63 - TreeVNC : (2(子供の数) + 1) * データ量 |
84 - 従来のVNCはNode数に比例 | 64 - 従来のVNCはNode数に比例 |
85 - TreeVNCはNode数に関係なく一定 | 65 - TreeVNCはNode数に関係なく一定 |
86 | 66 |
87 <img src="./images/comparenormalandtree.svg" alt="message" width="600"> | 67 <img src="./images/treeVncTheory.svg" alt="message" width="600"> |
88 | |
89 # TreeVNC の圧縮形式 | |
90 - TreeVNC は ZRLEE というエンコードでデータのやり取りを行う | |
91 - ZRLEE は Rfb でのエンコードの1つである ZRLE を元に生成される | |
92 - ZRLE を一度 Root Node で解凍して再圧縮を行う | |
93 - 配信画面の更新のたびに辞書を作りなおす | |
94 - 途中からデータを受け取っても解凍できる | |
95 | |
96 <img src="./images/ZRLEE.svg" alt="message" width="400"> | |
97 | |
98 # メッセージ通信の流れ | |
99 <img src="./images/message.svg" alt="message" width="400"/> | |
100 | 68 |
101 # 切断時の木の再構成 | 69 # 切断時の木の再構成 |
102 - TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまう | 70 - TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまう |
103 - TreeVNC は Node 切断の検知を LOST\_CHILD というメッセージで行っている | 71 - TreeVNC は Node 切断の検知を LOST\_CHILD というメッセージで行っている |
104 | 72 |
105 <img src="./images/lostChild1.svg" alt="message" width="800"> | 73 <img src="./images/lostChild.svg" alt="message" width="800"> |
106 | 74 |
107 # 共有画面切り替え | 75 # 共有画面切り替え |
108 - TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている | 76 - TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている |
109 - 画面を配信されている側のビューワにある Share Screen ボタンが押す | 77 - 画面を配信されている側のビューワにある Share Screen ボタンが押す |
110 - Root Node に SERVER\_CHANGE\_REQUEST を木構造を辿りながら送信 | 78 - Root Node に SERVER\_CHANGE\_REQUEST を木構造を辿りながら送信 |
111 - Root Node は Share Screen ボタンを押したクライアントの VNC サーバーと通信を開始 | 79 - Root Node は Share Screen ボタンを押したクライアントの VNC サーバーと通信を開始 |
112 - NAT 越えは現時点では実装されていない | |
113 | 80 |
114 # QUALITY モードと SPEED モード | 81 # Direct Connection |
115 - 高解像度のデータの描画処理はPCのスペックによって重くなる場合がある | 82 - NATを越えたネットワークからの接続は直接配信側の Root Node に接続を行うことで実現する |
116 - 画像描画処理には | 83 - Direct Connection した Node はそのネットワークの Root Node になる |
117 - 高画質優先の QUALITY モード | 84 - Direct Connection された Root Node では NAT を越えたネットワーク先の Node の管理を行わない |
118 - 描画速度優先の SPEED モード | 85 |
119 - 今まで QUALITY モード を使用していた(変更不可) | 86 <img src="./images/directConnection.svg" alt="message" width="800"> |
120 - ビューワからユーザーがどちらのモードを使用するかを変更を可能にした | |
121 | 87 |
122 # マルチディスプレイ | 88 # マルチディスプレイ |
123 - 画面切り替えの際のSERVER\_CHANGE\_REQUESTに共有するディスプレイの座標を付加する | 89 - 画面切り替えの際のSERVER\_CHANGE\_REQUESTに共有するディスプレイの座標を付加する |
124 - Root Node は 接続した VNC サーバーから画像データを要求する FRAME\_BUFFER\_UPDATE\_REQUEST に受け取った座標を付加する | 90 - Root Node は 接続した VNC サーバーから画像データを要求する FRAME\_BUFFER\_UPDATE\_REQUEST に受け取った座標を付加する |
125 - VNC サーバーは要求された座標内の画像データを FRAME\_BUFFER\_UPDATE で Root Node に送信する | 91 - VNC サーバーは要求された座標内の画像データを FRAME\_BUFFER\_UPDATE で Root Node に送信する |
126 | 92 |
127 <img src="./images/shareScreenToMultiDisplay.svg" alt="message" width="800"> | 93 <img src="./images/shareScreenToMultiDisplay.svg" alt="message" width="800"> |
128 | |
129 # 複数ネットワーク | |
130 - Root Node が接続しているネットワークごとに木構造を形成する | |
131 - 新しい Node が接続してきた際、 interfaces から Node のネットワークと一致する木構造を取得し、 接続の処理を任せる | |
132 | |
133 <img src="./images/MultiNetworkTree.svg" alt="message" width="600"> | |
134 | |
135 # Direct Connection | |
136 - NATを越えたネットワークからの接続は直接配信側の Root Node に接続を行うことで実現する | |
137 - Direct Connection した Node はそのネットワークの Root Node になる | |
138 - Direct Connection された Root Node では NAT を越えたネットワーク先の Node の管理を行わない | |
139 | |
140 <img src="./images/directConnection.svg" alt="message" width="800"> | |
141 | 94 |
142 # TreeVNCの評価 | 95 # TreeVNCの評価 |
143 - 木の深さによる画像データの遅延を調べる | 96 - 木の深さによる画像データの遅延を調べる |
144 - 実験環境 | 97 - 実験環境 |
145 - 実際に講義を受講している学生が TreeVNC を使用 | 98 - 実際に講義を受講している学生が TreeVNC を使用 |
167 - 画像データの伝達はほぼ1秒以内に収まっている | 120 - 画像データの伝達はほぼ1秒以内に収まっている |
168 - 容量が小さい場合でも時間がかかる場合がある。 それはその送信の前に大容量の画像を送信した後の回線の遅延が残っているためだと考えられる | 121 - 容量が小さい場合でも時間がかかる場合がある。 それはその送信の前に大容量の画像を送信した後の回線の遅延が残っているためだと考えられる |
169 - 深さ3が遅い原因として1つの Node がボトルネックになっている事が判明した。 | 122 - 深さ3が遅い原因として1つの Node がボトルネックになっている事が判明した。 |
170 - ネックになった Node をそのままにするとその子Nodeに影響を及ぼしてしまう。 そのためその Node に何らかの対応を行う必要がある | 123 - ネックになった Node をそのままにするとその子Nodeに影響を及ぼしてしまう。 そのためその Node に何らかの対応を行う必要がある |
171 | 124 |
125 # ネックになっているノードへの対処 | |
126 - CHECK\_DELAY\_REPLY で Root Node は ネックかどうかのを判断をする | |
127 - ネックになっているなら、そのノードを木構造のリストから削除 | |
128 - 最後のノードを削除したnodeの場所に移動 | |
129 - ネックになったところは三分木になる | |
130 | |
131 <img src="./images/fixTree.svg" alt="message" width="800"> | |
132 | |
172 # まとめと課題 | 133 # まとめと課題 |
173 - 今回TreeVNCの様々な問題点の解決を行った | 134 - 今回TreeVNCの様々な問題点の解決を行った |
174 - 実験を行うことによりさらなる問題点が判明した | 135 - 実験を行うことによりさらなる問題点が判明した |
175 - 実測で判明したネックになっているNodeへの対処 | 136 - 実測で判明したネックになっているNodeへの対処 |
176 - NATを越えた画面切り替え | 137 - NATを越えた画面切り替え |
177 - 追加した機能の評価方法を思考し、評価を行う | 138 - 追加した機能の評価方法を思考し、評価を行う |
178 | 139 |
179 # | |
180 - http://www.cr.ie.u-ryukyu.ac.jp/software/TreeVNC.html |