comparison presen/prosym.md @ 33:c20b2d98c5f4

Update
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Fri, 08 Jan 2016 03:17:25 +0900
parents 0b99de43a192
children 1ef0837924a3
comparison
equal deleted inserted replaced
32:0b99de43a192 33:c20b2d98c5f4
60 - サーバー側の処理性能が落ちてしまう 60 - サーバー側の処理性能が落ちてしまう
61 - 配信者を切り替える際、配信側のサーバーを立ち上げ直す必要がある 61 - 配信者を切り替える際、配信側のサーバーを立ち上げ直す必要がある
62 62
63 # TreeVNC の構造 63 # TreeVNC の構造
64 - Java で作成されたTightVNC(Tight Virtual Network Computing) を元に作成されている 64 - Java で作成されたTightVNC(Tight Virtual Network Computing) を元に作成されている
65 - 様々なメッセージで通信を行う
65 - クライアント同士をバイナリツリー状に接続する 66 - クライアント同士をバイナリツリー状に接続する
66 - バイナリツリーのルートのノードをRoot Nodeと呼び、 Root Node に接続されるノードを Node と呼ぶ 67 - バイナリツリーのルートのノードをRoot Nodeと呼び、 Root Node に接続されるノードを Node と呼ぶ
67 - Node は 親 Node から送られたデータを自分の子 Node に流す機能、 逆に子 Node から送られてきたデータを親 Nodeに流す機能がある
68 68
69 # Root Node 69 # Node が行う処理
70 - Root Node は 子 Nodeにデータを流す機能に加え 70 - Node
71 - 親 Node から送られたデータを自分の子 Node に流す
72 - 子 Node から送られてきたデータを親 Nodeに流す
73 - Root Node
74 - TreeVNC で配信を行う際に一番最初に起動する Node
75 - Node の機能
71 - 各 Node の管理 76 - 各 Node の管理
72 - VNC サーバーから送信されたFramebuffer の管理を行う 77 - VNC サーバーから送信されたFramebuffer の管理
78
73 79
74 # TreeVNCの負荷分散 80 # TreeVNCの負荷分散
75 - ポート一本あたりの負荷 81 - ポート一本あたりの負荷
76 - 従来のVNC : Node数 * データ量 82 - 従来のVNC : Node数 * データ量
77 - TreeVNC : (2(子供の数) + 1) * データ量 83 - TreeVNC : (2(子供の数) + 1) * データ量
81 <img src="./images/comparenormalandtree.svg" alt="message" width="600"> 87 <img src="./images/comparenormalandtree.svg" alt="message" width="600">
82 88
83 # TreeVNC の圧縮形式 89 # TreeVNC の圧縮形式
84 - TreeVNC は ZRLEE というエンコードでデータのやり取りを行う 90 - TreeVNC は ZRLEE というエンコードでデータのやり取りを行う
85 - ZRLEE は Rfb でのエンコードの1つである ZRLE を元に生成される 91 - ZRLEE は Rfb でのエンコードの1つである ZRLE を元に生成される
86 - ZRLEE はZRLE を一度 Root Node で解凍して再圧縮を行う 92 - ZRLE を一度 Root Node で解凍して再圧縮を行う
87 - その際配信画面の更新のたびに辞書を作りなおす 93 - 配信画面の更新のたびに辞書を作りなおす
94 - 途中からデータを受け取っても解凍できる
88 95
89 <img src="./images/ZRLEE.svg" alt="message" width="400"> 96 <img src="./images/ZRLEE.svg" alt="message" width="400">
90 97
91 # TreeVNC に参加するまでのメッセージ通信の流れ 98 # メッセージ通信の流れ
92 <img src="./images/message.svg" alt="message" width="400"/> 99 <img src="./images/message.svg" alt="message" width="400"/>
93 100
94 # 切断時の木の再構成 101 # 切断時の木の再構成
95 - TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまう 102 - TreeVNC はバイナリーツリーという特性上 Node の切断を検知できずにいると、Node 同士で構成された木構造が崩れてしまう
96 - TreeVNC は Node 切断の検知を LOST\_CHILD というメッセージ通信で行っている 103 - TreeVNC は Node 切断の検知を LOST\_CHILD というメッセージで行っている
97 104
98 <img src="./images/lostChild1.svg" alt="message" width="800"> 105 <img src="./images/lostChild1.svg" alt="message" width="800">
99 106
100 # 共有画面切り替え 107 # 共有画面切り替え
101 - TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている 108 - TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている
102 - 画面を配信されている側のビューワにある Share Screen ボタンが押す 109 - 画面を配信されている側のビューワにある Share Screen ボタンが押す
103 - Root Node に SERVER\_CHANGE\_REQUEST メッセージを送信する 110 - Root Node に SERVER\_CHANGE\_REQUEST を送信する
104 - Root Node は Share Screen ボタンを押したクライアントの VNC サーバーと通信を始める。 111 - Root Node は Share Screen ボタンを押したクライアントの VNC サーバーと通信を始める。
105 - NAT 越えは現時点では実装されていない 112 - NAT 越えは現時点では実装されていない
106 113
107 # QUALITY モードと SPEED モード 114 # QUALITY モードと SPEED モード
108 - 高解像度のデータの描画処理はPCのスペックによって重くなる場合がある 115 - 高解像度のデータの描画処理はPCのスペックによって重くなる場合がある
109 - 画像描画処理には 116 - 画像描画処理には
110 - 高画質優先の QUALITY モード 117 - 高画質優先の QUALITY モード
111 - 描画速度優先の SPEED モード 118 - 描画速度優先の SPEED モード
112 - 今まで QUALITY モード を使用していた(変更不可) 119 - 今まで QUALITY モード を使用していた(変更不可)
113 - 今回ビューワからユーザーがどちらのモードを使用するかを変更できるようにした 120 - ビューワからユーザーがどちらのモードを使用するかを変更を可能にした
114 - これにより描画処理の遅延が解決できると思われる
115 121
116 # マルチディスプレイ 122 # マルチディスプレイ
117 - 画面切り替えの際のSERVER\_CHANGE\_REQUESTに共有するディスプレイの座標を付加する 123 - 画面切り替えの際のSERVER\_CHANGE\_REQUESTに共有するディスプレイの座標を付加する
118 - Root Node は 接続した VNC サーバーから画像データを要求する FRAME\_BUFFER\_UPDATE\_REQUEST メッセージに受け取った座標を付加する 124 - Root Node は 接続した VNC サーバーから画像データを要求する FRAME\_BUFFER\_UPDATE\_REQUEST に受け取った座標を付加する
119 - VNC サーバーは要求された座標内の画像データを FRAME\_BUFFER\_UPDATE メッセージで Root Node に送信する 125 - VNC サーバーは要求された座標内の画像データを FRAME\_BUFFER\_UPDATE で Root Node に送信する
120 126
121 <img src="./images/shareScreenToMultiDisplay.svg" alt="message" width="800"> 127 <img src="./images/shareScreenToMultiDisplay.svg" alt="message" width="800">
122 128
123 # 複数ネットワークの対応 129 # 複数ネットワークの対応
124 - Root Node が接続しているネットワークごとに木構造を形成する 130 - Root Node が接続しているネットワークごとに木構造を形成する
127 <img src="./images/MultiNetworkTree.svg" alt="message" width="600"> 133 <img src="./images/MultiNetworkTree.svg" alt="message" width="600">
128 134
129 # Direct Connection 135 # Direct Connection
130 - NATを越えたネットワークからの接続は直接配信側の Root Node に接続を行うことで実現する 136 - NATを越えたネットワークからの接続は直接配信側の Root Node に接続を行うことで実現する
131 - Direct Connection した Node はそのネットワークの Root Node になり、そのネットワークの他の Node は Root Node に接続を行い木構造を作る 137 - Direct Connection した Node はそのネットワークの Root Node になり、そのネットワークの他の Node は Root Node に接続を行い木構造を作る
138 - Direct Connection された Root Node では NAT を越えたネットワークの Root Node の管理を行わない
132 139
133 <img src="./images/directConnection.svg" alt="message" width="800"> 140 <img src="./images/directConnection.svg" alt="message" width="800">
134 141
135 # TreeVNCの評価 142 # TreeVNCの評価
136 - 木の深さによる画像データの遅延を調べる 143 - 木の深さによる画像データの遅延を調べる
137 - 実験環境 144 - 実験環境
138 - 実際に講義を受講している学生が TreeVNC を使用 145 - 実際に講義を受講している学生が TreeVNC を使用
139 - 約20名の接続 146 - 約20名の接続
140 147
141 # 実測方法 148 # 実測方法
142 - Root Node は 送信時間と画像データを持った CHECK\_DELAY を 末端 Node まで各 Node を伝いながら伝達する 149 - Root Node は 送信時間と画像データを持った CHECK\_DELAY を 末端 Node まで木構造を辿りながら伝達する
143 - CHECK\_DELAY を受け取った各 Node は CHECK\_DELAY\_REPLY を送信する 150 - CHECK\_DELAY を受け取った各 Node は 付加された送信時間を CHECK\_DELAY\_REPLY に付加し、 Root Node に送信する
144 - CHECK\_DELAY\_REPLY を受け取った Root Node は CHECK\_DELAY の送信にどれだけ時間がかかったかの計算を行う 151 - CHECK\_DELAY\_REPLY を受け取った Root Node は CHECK\_DELAY の送信にどれだけ時間がかかったかの計算を行う
145 152
146 ```java 153 ```java
147 // 遅延時間の計算 154 // 遅延時間の計算
148 Long delay = System.currentTimeMillis() - time; 155 Long delay = System.currentTimeMillis() - time;
156 <img src="./images/depth3.svg" alt="message" width="450"> 163 <img src="./images/depth3.svg" alt="message" width="450">
157 <img src="./images/depth4.svg" alt="message" width="450"> 164 <img src="./images/depth4.svg" alt="message" width="450">
158 165
159 # 結果から 166 # 結果から
160 - 画像データの伝達はほぼ1秒以内に収まっている 167 - 画像データの伝達はほぼ1秒以内に収まっている
161 - 容量が小さい場合でも時間がかかる場合がある。 それはその送信の前に大容量の画像を送信した後の回線の Delay が残っているためだと考えられる 168 - 容量が小さい場合でも時間がかかる場合がある。 それはその送信の前に大容量の画像を送信した後の回線の遅延が残っているためだと考えられる
162 - 深さ 3 で極端に遅い場合がある。 遅い原因として1つの Node がボトルネックになっている事が判明した。 169 - 深さ3が遅い原因として1つの Node がボトルネックになっている事が判明した。
163 - ネックになった Node をそのままにするとその子Nodeに影響を及ぼしてしまう。 そのためその Node に何らかの対応を行う必要がある 170 - ネックになった Node をそのままにするとその子Nodeに影響を及ぼしてしまう。 そのためその Node に何らかの対応を行う必要がある
164 171
165 # まとめと課題 172 # まとめと課題
166 - 今回TreeVNCの様々な問題点の解決を行った 173 - 今回TreeVNCの様々な問題点の解決を行った
167 - 実験を行うことによりさらなる問題点が判明した 174 - 実験を行うことによりさらなる問題点が判明した