Mercurial > hg > Papers > 2015 > parusu-prosym
view presen/prosym.html @ 24:90ecaf620a22
Update
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 04 Jan 2016 18:52:13 +0900 |
parents | fe9d38d95c31 |
children | 5c8f117b96bd |
line wrap: on
line source
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>有線 LAN 上のPC画面配信システムTreeVNCの改良</title> <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.3.0 (2015-12-25) [x86_64-darwin15]"> <meta name="author" content="Tatsuki IHA" > <!-- style sheet links --> <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> <link rel="stylesheet" href="s6/themes/screen.css" media="screen"> <link rel="stylesheet" href="s6/themes/print.css" media="print"> <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection"> <!-- JS --> <script src="s6/js/jquery-1.11.3.min.js"></script> <script src="s6/js/jquery.slideshow.js"></script> <script src="s6/js/jquery.slideshow.counter.js"></script> <script src="s6/js/jquery.slideshow.controls.js"></script> <script src="s6/js/jquery.slideshow.footer.js"></script> <script src="s6/js/jquery.slideshow.autoplay.js"></script> <!-- prettify --> <link rel="stylesheet" href="scripts/prettify.css"> <script src="scripts/prettify.js"></script> <script> $(document).ready( function() { Slideshow.init(); $('code').each(function(_, el) { if (!el.classList.contains('noprettyprint')) { el.classList.add('prettyprint'); el.style.display = 'block'; } }); prettyPrint(); } ); </script> <!-- Better Browser Banner for Microsoft Internet Explorer (IE) --> <!--[if IE]> <script src="s6/js/jquery.microsoft.js"></script> <![endif]--> </head> <body> <div class="layout"> <div id="header"></div> <div id="footer"> <div align="right"> <img src="s6/images/logo.svg" width="200px"> </div> </div> </div> <div class="presentation"> <div class='slide cover'> <table width="90%" height="90%" border="0" align="center"> <tr> <td> <div align="center"> <h1><font color="#808db5">有線 LAN 上のPC画面配信システムTreeVNCの改良</font></h1> </div> </td> </tr> <tr> <td> <div align="left"> Tatsuki IHA <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> </div> </td> </tr> </table> </div> <div class='slide '> <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.3.0 (2015-12-25) [x86_64-darwin15] on 2016-01-04 18:51:20 +0900 with Markdown engine kramdown (1.9.0) using options {} --> <!-- _S9SLIDE_ --> <h1 id="section">画面共有を利用したコミュニケーション</h1> <p>授業やゼミ等で、それぞれが PC 端末を持っている場合では、PC の機能を活かした コミュニケーションが可能である。教員が操作する画面をそのまま学生に配信したり, ゼミ などで、発表する学生の画面を切り替えたりすることを可能にしたい。画面配信システム TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる 仕組みを取っている。そのため, 多人数が参加しても処理性能が下がらない。また、ツリー のルートが参照している VNC サーバーを変更することで、ケーブルの差し替えなしに画面 の切替が可能となる。</p> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-1">画面共有を利用したコミュニケーション</h1> <p>しかし、 TreeVNC を実際に使用していく中で様々な問題が発生した。 本研究では TreeVNC の改良として、複数のネットワークへの対応、 WAN への対応、 マルチディスプレイへの対応を行うとともに、TreeVNC 有用性を示すた めに画像データの遅延時間計測を行った。</p> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="treevnc">TreeVNC</h1> <ul> <li>は本研究室で開発している VNC を利用した画面配信システム</li> <li>参加したクライアントをバイナリツリー状で接続することで配信コストを分散させる</li> <li>スムーズな画面の切替を行う</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-2">問題点を一枚づつ</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-3">解決した問題</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="vnc">VNC</h1> <ul> <li>VNC(Virtual Network Computing) は RFBプロトコルを用いて遠隔操作を行うソフトウェア</li> <li>サーバー側とクライアント側に分かれており、サーバーを起動し、クライアントがサーバーに接続を行うことで遠隔操作を可能とする</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="rfb-">RFB プロトコル</h1> <ul> <li>RFB(Remote Frame Buffer)プロトコルは VNC で用いられているプロトコル</li> <li>自身の画面をネットワーク越しに他者の画面に表示する</li> <li>RFB サーバと RFB クライアントに分かれている</li> <li>Framebuffer と呼ばれるメモリ上に置かれた画像データを使用して画面表示を行う</li> <li>RFB サーバーは Framebuffer が更新されるたびにRFB クライアントに対して Framebuffer の変更部分だけを送信する。</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="vnc-1">多人数でVNCを使用する際の問題点</h1> <ul> <li>多人数のクライアントが1つのサーバーに接続する構造である</li> <li>そのため、サーバー側の処理性能が落ちてしまう</li> <li>ゼミ等の発表で画面配信者が切り替わる場合配信者が変わるたびにアプリケーションを終了し、再接続を行う必要がある。</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="treevnc-">TreeVNC の構造</h1> <ul> <li>Java で作成されたTightVNC(Tight Virtual Network Computing) を元に作成されている</li> <li>クライアント同士をバイナリツリー状に接続する</li> <li>バイナリツリーのルートのノードをRoot Nodeと呼び、 Root Node に接続されるノードを Node と呼ぶ</li> <li>Root Node は 子 Nodeにデータを流す機能に加え、 各 Node の管理、 VNC サーバーから送信されたFramebuffer の管理を行う</li> <li>Node は 親 Node から送られたデータを自分の子 Node に流す機能、 逆に子 Node から送られてきたデータを親 Nodeに流す機能がある</li> </ul> <p><img src="./images/TreeVNC.svg" alt="message" width="400" /></p> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="treevnc-1">TreeVNCの通信量</h1> <ul> <li>ポート一本あたりの負荷 <ul> <li>従来のVNC : Node数 * データ量</li> <li>TreeVNC : (2(子供の数) + 1) * データ量</li> </ul> </li> <li>従来のVNCはNode数に比例</li> <li>TreeVNCは子供の数に関係するためNode数に関係なく一定</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="treevnc--1">TreeVNC の圧縮形式</h1> <ul> <li>TreeVNC は ZRLEE というエンコードでデータのやり取りを行う</li> <li>ZRLEE は ZRLE を元に生成される</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="zrle">ZRLE</h1> <ul> <li>RFB プロトコルで使えるエンコーディングタイプの1つ</li> <li>Zlib で圧縮されたデータとそのデータのバイト数がヘッダーとして付け加えられる</li> <li>java.util.zip.deflater で圧縮, java.util.zip.inflater で解凍が行える</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="javautilzipdeflater-">java.util.zip.deflater の問題点</h1> <ul> <li>java.util.zip.deflater は必要な辞書を書き出す事ができない</li> <li>そのためZlibで圧縮されたデータを途中から受け取ってもデータを正しく解凍できない <img src="./images/ZRLE.svg" alt="message" width="400" /></li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="zrlee">ZRLEE</h1> <ul> <li>ZRLEE は一度 Root Nodeで ZRLEを解凍して再圧縮を行う、その際にfinish()を入れることで はじめからデータを呼んでいなくても解凍を行えるようにした。 <img src="./images/ZRLEE.svg" alt="message" width="400" /></li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="treevnc--2">TreeVNC の通信経路</h1> <ul> <li>ある Node から Root Node に直接通信を行 う send direct message (Node to Root)</li> <li>Root Node からある Node に直接通信を行う send direct message (Root to Node)</li> <li>Root Node から木の末端の Node までのすべ ての Node に通信を行う messeage down tree (Root to Node)</li> <li>ある Node から木構造を上に辿って Root Node まで通信を行う message up tree (Node to Root)</li> <li>Root Node から配信者の VNC サーバーへ の通信を行う send message (Root to VNC- Server)</li> <li>VNC サーバーから Root Node への通信を行う send message (VNCServer to Root)</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="message">Message通信</h1> <ul> <li>クライアントが参加するまでの流れの説明</li> <li>FIND_ROOT</li> <li>FIND_ROOT_REPLY</li> <li>WHERE_TO_CONNECT</li> <li>CONNECT_TO</li> <li>CONNECT</li> <li>FRAME_BUFFER_UPDATE</li> </ul> <p><img src="./images/message.svg" alt="message" width="400" /></p> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-4">木の再構成</h1> <ul> <li>Lost Child</li> </ul> <p><img src="./images/lostChild1.svg" alt="message" width="800" /></p> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-5">共有画面切り替え</h1> <ul> <li>TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている</li> <li>Share Screen ボタンが押されると、 Root Node は Share Screen ボタンを押したクライアントの VNC サーバーと通信を始める。</li> <li>そのため TreeVNC は配信者切り替えの度にVNCを終了し、再接続する必要がない。</li> <li>server Change の図が必要かな?</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-6">使用しての問題点</h1> <ul> <li>マルチディスプレイ問題</li> <li>複数のネットワーク</li> <li>遠隔地での参加</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="quality--speed-">QUALITY モードと SPEED モード</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-7">マルチディスプレイ</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-8">複数ネットワークの対応</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="wan">WANへの対応</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="treevnc-2">TreeVNCの評価</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-9">まとめ</h1> <!-- === end markdown block === --> </div> </div><!-- presentation --> </body> </html>