Mercurial > hg > Papers > 2019 > riono-sigos
view Slide/slide.html @ 37:eb2dbbcaa96e
slide Rewriting and add images
author | e165729 <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 28 May 2019 22:45:05 +0900 |
parents | 322aad31566d |
children | 3df74d1e66f2 |
line wrap: on
line source
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>画面配信システム TreeVNC のマルチキャストの導入</title> <meta name="generator" content="Slide Show (S9) v4.0.1 on Ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin18]"> <meta name="author" content="Ryo Yasuda, Shinji Kono" > <!-- 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'); } }); 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">画面配信システム TreeVNC のマルチキャストの導入</font></h1> </div> </td> </tr> <tr> <td> <div align="left"> Ryo Yasuda, Shinji Kono 並列信頼研 <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'> <!-- <\!-- slideshow の command -\-> --> <!-- slide.htmlでは通常キーでのコマンドが存在している --> <!-- p,a,s : スライドを自動送り(1,2...) --> <!-- : スライドを逆方向に自動送り(...,2,1) --> <!-- n : Page数を on/off --> <!-- f : 右下ロゴの on/off --> <!-- t : slide.html.pdf に変更 --> <!-- c : 右下スライド移動用UIの on/off --> <!-- d : ロゴ部分の選択…? --> <!-- [URL](http://~~~) --> <!-- [FILE](file:///Users/ryokka/~~~) --> <!-- slideshow build スライド.md -t s6cr --> <!-- ## 目次 - **TreeVNC の概要** - **基本概念** - **構造** - 研究内容 - TreeVNC の改良 - 送信データの Blocking --> <!-- _S9SLIDE_ --> <h2 id="画面配信システムの活用">画面配信システムの活用</h2> <ul> <li>講義やゼミではプロジェクタを使用して、先生が用意した資料を見ることが多い。その際接続不良など、物理的アクシデントが起きる恐れがある</li> <li>画面配信システムで代用する場合がある。画面配信システムのとしてはAppleTVやUstreamなどが挙げられる <ul> <li>AppleTVは画面共有先がTVに限定されている</li> <li>Ustreamは画面の切り替えを行うことができない</li> </ul> </li> </ul> <center><img src="./fig/AppleTVRogo.svg " alt="message" width="200" height="200" /> <img src="./fig/UstreamRogo.svg" alt="message" width="200" height="150" /></center> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="画面配信システムの活用-1">画面配信システムの活用</h2> <ul> <li> <p>画面配信システムTreeVNCは、自身のPC画面を他者のPCに表示するソフトウェアである</p> </li> <li> <p>TreeVNCを使用することで、参加者は手元のPCを使用しながら講義を受ける事が可能になる。切り替えの際も、ボタン一つで共有する画面の切替を可能としている</p> </li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="treevncの問題点">TreeVNCの問題点</h2> <ul> <li>画面配信は送信するデータ量が多いため、TreeVNCでは無線接続の場合、画面配信の遅延が大きくなってしまう</li> <li>現在のTreeVNCのデータ転送方法だと、無線接続で送信するには大きすぎる</li> <li>本研究ではマルチキャストを導入することで、Wifi環境下における画面配信の遅延対応の検討する</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="treevnc">TreeVNC</h2> <ul> <li>TreeVNC は本研究室で開発している画面配信システム</li> <li>VNC(リモートデスクトップソフトウェア)を利用している</li> <li>木構造の接続方式を採用し、配信側の負荷を分散し大人数での画面配信が可能</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="vnc">VNC</h2> <ul> <li>VNC(Virtual Network Computing)は、RFBプロトコルを用いてPCの遠隔操作を行うことを目的としたリモートデスクトップソフトウェア</li> <li>サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている</li> <li>全てのNodeが一台のサーバーに接続するため負担が大きい</li> </ul> <center><img src="./fig/vnc-crop.svg" alt="message" width="500" height="400" /></center> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="rfb-プロトコル">RFB プロトコル</h2> <ul> <li>RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコル</li> <li>他人のPC画面が表示される側と、FrameBufferへの更新が行われる(自身のPC画面を送信する)側に分かれ、それぞれをRFBクライアント、RFBサーバと呼ぶ</li> <li>FrameBufferは、メモリ上に置かれた画像データのこと</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="treevnc-の構造">TreeVNC の構造</h2> <ul> <li>TreeVNCは接続してきたクライアントをNodeとし、木構造状に管理する</li> <li>ルートのノードをRoot Nodeと呼び、その下に新たなNodeを接続していく</li> <li>Root Nodeが参照しているVNCServerからFrameBufferUpdateを取得し、各Nodeに送信する</li> <li>木構造状に接続することで、画像データのコピーを各Nodeに負担させることができる</li> </ul> <center><img src="./fig/treevnc-crop.svg" alt="message" width="450" height="350" /></center> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="木構造の再構成">木構造の再構成</h2> <ul> <li>Nodeが切断されたことを検知できなければ木構造が維持できない</li> <li>Root Nodeが木構造のネットワークトポロジーを管理しているため、Root NodeにNodeの切断を知らせる必要がある</li> <li>切断検知には画像データが入っているMulticastQueueを使用</li> <li>MulticastQueueから画像データが一定時間取得されず、Timeoutを検知した場合切断したと判断する</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="画像データのエンコード方法">画像データのエンコード方法</h2> <ul> <li>TreeVNCではZRLEというエンコードタイプを元にした、ZRLEEというエンコードを用いて画像データを圧縮を行う</li> <li>ZRLEはZlibで圧縮されたデータとそのデータのバイト数がヘッダーとして送られる</li> <li>Zlibとはデータの可逆圧縮アルゴリズムが実装されているライブラリ</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="画像データのエンコード方法-1">画像データのエンコード方法</h2> <ul> <li>ZRLEでは解凍時に必要な辞書データを書き出すことができない</li> <li>ZRLEEはRoot Nodeで受け取ったZRLEのデータを一度解凍し、辞書データを付与して再圧縮している</li> </ul> <center><img src="./fig/EncodeZRLEE.svg" alt="message" width="550" height="450" /></center> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="共有画面切り替え">共有画面切り替え</h2> <ul> <li>従来のVNCでは、配信者が切り替わるたびに再起動、再接続を行う必要があった</li> <li>TreeVNCでは、画面上にあるShareScreenボタンを押すことで配信者の切り替えが実行できる</li> <li>ShareScreen実行後、Root Nodeに対しSERVER CHANGE REQUESTというメッセージが送信される</li> <li>メッセージを受け取ったRoot Nodeは配信を希望しているNodeのVNCサーバーと通信を行い、切り替え作業に入る</li> </ul> <center><img src="./fig/ShareScreenSS.svg" alt="message" width="400" height="300" /></center> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="有線接続との接続の違い">有線接続との接続の違い</h2> <ul> <li>現状のTreeVNCでは画面配信のデータ量は多く、無線LAN接続を行うと画面配信の遅延が大きくなる</li> <li>WifiのMulticast機能を利用し、UpdateRectangleを一度だけ送信することで無線LAN接続でも十分に遅延が抑えられると考える</li> <li>HDや4kの画面更新には64MB程度となり、これを圧縮しつつwifiのMulticast paketの最大サイズ64KBに変換、送信する必要がある</li> <li>paket lossがあった場合、再送処理は複雑であると予想できるため、まずBlokingによる実験を行う</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="rfbプロトコルのupdaterectangleの構成">RFBプロトコルのUpdateRectangleの構成</h2> <ul> <li>1つのUpdateRectangleには複数のRectangleが格納されている</li> <li>RectangleはZlibで圧縮されたデータが指定された長さだけ格納されており、そのデータはさらに64x64 ByteのTileに分割されている</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="rfbプロトコルのupdaterectangleの構成-1">RFBプロトコルのUpdateRectangleの構成</h2> <ul> <li>無線接続の場合、一度に送信できるデータ量が64KBしかないため、それに合わせて更新された部分のRectangleを分割する必要がある <ul> <li>Phase0 行の途中から始まる部分</li> <li>Phase1 行の最初から最後までの部分</li> <li>Phase2 行の途中で終わる部分</li> </ul> </li> </ul> <center><img src="./fig/FrameUpdateRectangleColor.svg" alt="message" width="550" height="450" /></center> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="木構造とマルチキャストの共存">木構造とマルチキャストの共存</h2> <ul> <li>ツリーに無線接続のNodeを加えてしまうと全体の配信遅延に繋がる</li> <li>無線接続時のMulticastの実装を提案</li> <li>Multicastならば、Serverからの送信は一度で済むため、ツリー構造の形成が必要ない</li> <li>従って新しいNodeが無線接続であっても、有線接続のツリーの配信には影響が出ない</li> </ul> <center><img src="./fig/interface-crop.svg" alt="message" width="500" height="450" /></center> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="まとめ">まとめ</h2> <ul> <li>WifiでMulticast paketを利用する手法についての考察を行なった <ul> <li>Wifiの速度とMulticastの信頼性が高ければ実用的である可能性がある</li> <li>Blockingは実装中、再圧縮の時間は実用的な時間で済むと予想されている</li> </ul> </li> <li>今後の課題 <ul> <li>Blockingの実装</li> <li>WifiのMulticast paket lossは接続環境や状況に依存すると思われるためさらなる実験が必要</li> <li>Node接続じの有線接続と無線接続の判断、区別処理の実装</li> </ul> </li> </ul> </div> </div><!-- presentation --> </body> </html>