6
|
1 <!DOCTYPE html>
|
|
2 <html>
|
|
3 <head>
|
|
4 <meta http-equiv="content-type" content="text/html;charset=utf-8">
|
|
5 <title>画面配信システム TreeVNC の拡張</title>
|
|
6
|
|
7 <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.6.1 (2019-01-30) [x86_64-darwin17]">
|
|
8 <meta name="author" content="Yukiya OSHIRO" >
|
|
9
|
|
10 <!-- style sheet links -->
|
|
11 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection">
|
|
12 <link rel="stylesheet" href="s6/themes/screen.css" media="screen">
|
|
13 <link rel="stylesheet" href="s6/themes/print.css" media="print">
|
|
14 <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection">
|
|
15
|
|
16 <!-- JS -->
|
|
17 <script src="s6/js/jquery-1.11.3.min.js"></script>
|
|
18 <script src="s6/js/jquery.slideshow.js"></script>
|
|
19 <script src="s6/js/jquery.slideshow.counter.js"></script>
|
|
20 <script src="s6/js/jquery.slideshow.controls.js"></script>
|
|
21 <script src="s6/js/jquery.slideshow.footer.js"></script>
|
|
22 <script src="s6/js/jquery.slideshow.autoplay.js"></script>
|
|
23
|
|
24 <!-- prettify -->
|
|
25 <link rel="stylesheet" href="scripts/prettify.css">
|
|
26 <script src="scripts/prettify.js"></script>
|
|
27
|
|
28 <script>
|
|
29 $(document).ready( function() {
|
|
30 Slideshow.init();
|
|
31
|
|
32 $('code').each(function(_, el) {
|
|
33 if (!el.classList.contains('noprettyprint')) {
|
|
34 el.classList.add('prettyprint');
|
|
35 }
|
|
36 });
|
|
37 prettyPrint();
|
|
38 } );
|
|
39
|
|
40
|
|
41 </script>
|
|
42
|
|
43 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
|
|
44 <!--[if IE]>
|
|
45 <script src="s6/js/jquery.microsoft.js"></script>
|
|
46 <![endif]-->
|
|
47
|
|
48
|
|
49
|
|
50 </head>
|
|
51 <body>
|
|
52
|
|
53 <div class="layout">
|
|
54 <div id="header"></div>
|
|
55 <div id="footer">
|
|
56 <div align="right">
|
|
57 <img src="s6/images/logo.svg" width="200px">
|
|
58 </div>
|
|
59 </div>
|
|
60 </div>
|
|
61
|
|
62 <div class="presentation">
|
|
63
|
|
64 <div class='slide cover'>
|
|
65 <table width="90%" height="90%" border="0" align="center">
|
|
66 <tr>
|
|
67 <td>
|
|
68 <div align="center">
|
|
69 <h1><font color="#808db5">画面配信システム TreeVNC の拡張</font></h1>
|
|
70 </div>
|
|
71 </td>
|
|
72 </tr>
|
|
73 <tr>
|
|
74 <td>
|
|
75 <div align="left">
|
|
76 Yukiya OSHIRO
|
32
|
77 並列信頼研
|
6
|
78 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
|
|
79 </div>
|
|
80 </td>
|
|
81 </tr>
|
|
82 </table>
|
|
83 </div>
|
|
84
|
|
85 <div class='slide '>
|
|
86 <!-- === begin markdown block ===
|
|
87
|
|
88 generated by markdown/1.2.0 on Ruby 2.6.1 (2019-01-30) [x86_64-darwin17]
|
33
|
89 on 2019-02-20 15:30:01 +0900 with Markdown engine kramdown (2.0.0)
|
6
|
90 using options {}
|
|
91 -->
|
|
92 <!-- <\!-- slideshow の command -\-> -->
|
|
93 <!-- slide.htmlでは通常キーでのコマンドが存在している -->
|
|
94
|
|
95 <!-- p,a,s : スライドを自動送り(1,2...) -->
|
|
96 <!-- : スライドを逆方向に自動送り(...,2,1) -->
|
|
97 <!-- n : Page数を on/off -->
|
|
98 <!-- f : 右下ロゴの on/off -->
|
|
99 <!-- t : slide.html.pdf に変更 -->
|
|
100 <!-- c : 右下スライド移動用UIの on/off -->
|
|
101 <!-- d : ロゴ部分の選択…? -->
|
|
102 <!-- [URL](http://~~~) -->
|
|
103 <!-- [FILE](file:///Users/ryokka/~~~) -->
|
|
104 <!-- slideshow build スライド.md -t s6cr -->
|
|
105
|
29
|
106 <h2 id="section">画面配信システムの活用</h2>
|
6
|
107 <ul>
|
25
|
108 <li>講義や発表の場では、プロジェクタが使用されることが多い。その場合、アクシデント発生の恐れがある</li>
|
|
109 <li>画面配信システム TreeVNC は、自身の PC 画面を他者の PC に表示するソフトウェアである</li>
|
|
110 <li>TreeVNC を使用することで、参加者は手元の PC を使用しながら講義を受ける事が可能になる。切り替えの際も、ボタン一つで共有する画面の切替を可能としている</li>
|
24
|
111 </ul>
|
|
112
|
|
113 </div>
|
|
114 <div class='slide '>
|
29
|
115 <!-- _S9SLIDE_ -->
|
|
116
|
|
117 <h2 id="treevnc-">TreeVNC の問題点</h2>
|
24
|
118 <ul>
|
30
|
119 <li>クライアントが接続している状態で、サーバー側が接続を切るとクライアント側が正しく切断されない</li>
|
|
120 <li>サーバーに接続した際に、画面の操作を許可するかどうか確認するポップアップが Root 側にも表示されてしまう</li>
|
26
|
121 <li>画面配信は送信するデータ量が多いため、TreeVNC では無線接続の場合、画面配信の遅延が大きくなってしまう</li>
|
32
|
122 <li>現在の TreeVNC のデータ転送方法だと、無線接続で送信するには大きすぎる</li>
|
6
|
123 </ul>
|
|
124
|
|
125 </div>
|
|
126 <div class='slide '>
|
29
|
127 <!-- _S9SLIDE_ -->
|
|
128
|
32
|
129 <h2 id="section-1">今回の発表</h2>
|
6
|
130 <ul>
|
32
|
131 <li><del>クライアントが接続している状態で、サーバー側が接続を切るとクライアント側が正しく切断されない</del></li>
|
|
132 <li><del>サーバーに接続した際に、画面の操作を許可するかどうか確認するポップアップが Root 側にも表示されてしまう</del></li>
|
|
133 <li>画面配信は送信するデータ量が多いため、TreeVNC では無線接続の場合、画面配信の遅延が大きくなってしまう</li>
|
|
134 <li>現在の TreeVNC のデータ転送方法だと、無線接続で送信するには大きすぎる</li>
|
|
135 </ul>
|
|
136
|
|
137 </div>
|
|
138 <div class='slide '>
|
|
139 <!-- _S9SLIDE_ -->
|
|
140
|
|
141 <h2 id="section-2">目次</h2>
|
|
142 <ul>
|
|
143 <li><strong>TreeVNC の概要</strong>
|
24
|
144 <ul>
|
32
|
145 <li><strong>基本概念</strong></li>
|
|
146 <li><strong>構造</strong></li>
|
24
|
147 </ul>
|
|
148 </li>
|
|
149 <li>研究内容
|
|
150 <ul>
|
|
151 <li>TreeVNC の改良</li>
|
|
152 <li>送信データの Blocking</li>
|
|
153 </ul>
|
|
154 </li>
|
25
|
155 </ul>
|
|
156
|
|
157 </div>
|
|
158 <div class='slide '>
|
29
|
159 <!-- _S9SLIDE_ -->
|
|
160
|
|
161 <h2 id="treevnc">TreeVNC</h2>
|
25
|
162 <ul>
|
|
163 <li>TreeVNC は本研究室で開発している画面配信システム</li>
|
|
164 <li>VNC (リモートデスクトップソフトウェア) を利用している</li>
|
|
165 <li>配信側の負荷を分散し、大人数での画面配信が可能</li>
|
|
166 </ul>
|
|
167
|
|
168 </div>
|
|
169 <div class='slide '>
|
29
|
170 <!-- _S9SLIDE_ -->
|
|
171
|
|
172 <h2 id="vnc">VNC</h2>
|
25
|
173 <ul>
|
|
174 <li>VNC (Virtual Network Computing) は、RFB プロトコルを用いて PC の遠隔操作を行うことを目的としたリモートデスクトップソフトウェア</li>
|
|
175 <li>サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている</li>
|
32
|
176 <li>全ての Node が一台のサーバーに接続するため負担が大きい</li>
|
25
|
177 </ul>
|
|
178
|
32
|
179 <center><img src="./fig/vnc-crop.svg" alt="message" width="400" height="300" /></center>
|
25
|
180
|
|
181 </div>
|
|
182 <div class='slide '>
|
29
|
183 <!-- _S9SLIDE_ -->
|
|
184
|
|
185 <h2 id="rfb-">RFB プロトコル</h2>
|
25
|
186 <ul>
|
|
187 <li>RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコル</li>
|
|
188 <li>ユーザがいる (画面を表示される) 側と FrameBuffer への更新が行われる (自身の画面を送信する) 側に分かれ、それぞれを RFB クライアント、RFB サーバと呼ぶ</li>
|
|
189 <li>FrameBuffer は、メモリ上に置かれた画像データのこと</li>
|
24
|
190 </ul>
|
|
191
|
|
192 </div>
|
|
193 <div class='slide '>
|
29
|
194 <!-- _S9SLIDE_ -->
|
|
195
|
|
196 <h2 id="treevnc--1">TreeVNC の構造</h2>
|
24
|
197 <ul>
|
25
|
198 <li>TreeVNC は接続してきたクライアントを Node とし、バイナリツリー状に管理する。</li>
|
|
199 <li>ルートのノードを Root Node と呼び、その下に新たな Node を接続していく</li>
|
|
200 <li>Root Node が参照している VNCServer から FrameBufferUpdate を取得し、各 Node に送信する</li>
|
|
201 <li>バイナリツリー状に接続することで、画像データのコピーを各 Node に負担させることができる</li>
|
6
|
202 </ul>
|
|
203
|
32
|
204 <center><img src="./fig/treevnc-crop.svg" alt="message" width="400" height="300" /></center>
|
26
|
205
|
6
|
206 </div>
|
|
207 <div class='slide '>
|
29
|
208 <!-- _S9SLIDE_ -->
|
|
209
|
32
|
210 <h2 id="section-3">共有画面切り替え</h2>
|
25
|
211 <ul>
|
|
212 <li>従来の VNC では、配信者が切り替わるたびに再起動、再接続を行う必要があった</li>
|
|
213 <li>TreeVNC では、画面上にある ShareScreen ボタンを押すことで配信者の切り替えが実行できる</li>
|
|
214 <li>ShareScreen 実行後、Root Node に対し SERVER CHANGE REQUEST というメッセージが送信される。</li>
|
|
215 <li>メッセージを受け取った Root Node は配信を希望している Node の VNC サーバーと通信を行い、切り替え作業に入る。</li>
|
|
216 </ul>
|
|
217
|
|
218 </div>
|
|
219 <div class='slide '>
|
29
|
220 <!-- _S9SLIDE_ -->
|
|
221
|
32
|
222 <h2 id="section-4">目次</h2>
|
25
|
223 <ul>
|
32
|
224 <li>TreeVNC の概要
|
|
225 <ul>
|
|
226 <li>基本概念</li>
|
|
227 <li>構造</li>
|
|
228 </ul>
|
|
229 </li>
|
|
230 <li><strong>研究内容</strong>
|
|
231 <ul>
|
|
232 <li><strong>TreeVNC の改良</strong></li>
|
|
233 <li><strong>送信データの Blocking</strong></li>
|
|
234 </ul>
|
|
235 </li>
|
|
236 </ul>
|
|
237
|
|
238 </div>
|
|
239 <div class='slide '>
|
|
240 <!-- _S9SLIDE_ -->
|
|
241
|
|
242 <h2 id="multicast">Multicast</h2>
|
|
243 <ul>
|
|
244 <li>ツリーに無線接続の Node を加えてしまうと配信の遅延に繋がる</li>
|
25
|
245 <li>Multicast の実装を提案</li>
|
|
246 <li>Multicast ならば、Server からの送信は一度で済むため、ツリー構造の形成が必要ない</li>
|
|
247 <li>従って新しい Node が 無線接続であっても、有線接続のツリーの配信には影響が出ない</li>
|
|
248 </ul>
|
|
249
|
32
|
250 <center><img src="./fig/interface-crop.svg" alt="message" width="400" height="350" /></center>
|
26
|
251
|
|
252 </div>
|
|
253 <div class='slide '>
|
29
|
254 <!-- _S9SLIDE_ -->
|
|
255
|
|
256 <h2 id="blocking">Blocking</h2>
|
26
|
257 <ul>
|
|
258 <li>無線接続の場合、一度に送信できるデータ量が 64kbyte しかないため、それに合わせてデータを分割する必要がある</li>
|
32
|
259 <li>大きなデータを小さい単位に分割する
|
30
|
260 <ul>
|
|
261 <li>更新が行われた部分を1行ずつ圧縮していく</li>
|
|
262 <li>書き込みのために用意した関数に入る限界値まで圧縮を行ない、関数に書き込む</li>
|
|
263 </ul>
|
|
264 </li>
|
26
|
265 </ul>
|
|
266
|
32
|
267 <center><img src="./fig/tiling-crop.svg" alt="message" width="400" height="250" /></center>
|
30
|
268
|
26
|
269 </div>
|
|
270 <div class='slide '>
|
29
|
271 <!-- _S9SLIDE_ -->
|
|
272
|
32
|
273 <h2 id="section-5">まとめ</h2>
|
26
|
274 <ul>
|
|
275 <li>TreeVNC の改良と Multicast 対応のためのデータの Blocking を実装した。
|
|
276 <ul>
|
|
277 <li>VNCServer 側が接続を切断した場合でもクライアントが正しく終了する様にした。</li>
|
|
278 <li>画面操作の許可を確認する authentication のポップアップが Root 側に表示されない様にした。</li>
|
|
279 <li>データの Blocking を行うことにより、無線接続での Multicast 対応を行えるようにした。</li>
|
|
280 </ul>
|
|
281 </li>
|
|
282 <li>今後の課題
|
|
283 <ul>
|
|
284 <li>Multicast の実装</li>
|
|
285 <li>Multicast 実行時の遅延の評価</li>
|
|
286 <li>Packetloss 時の対処</li>
|
|
287 </ul>
|
|
288 </li>
|
|
289 </ul>
|
6
|
290 <!-- === end markdown block === -->
|
|
291 </div>
|
|
292
|
|
293
|
|
294 </div><!-- presentation -->
|
|
295 </body>
|
|
296 </html>
|