view Slide/slide.pdf.html @ 33:762fe0e406e4

add new imange and update slide
author e165729 <e165729@ie.u-ryukyu.ac.jp>
date Sun, 26 May 2019 15:40:24 +0900
parents 6da32e2f11c2
children 5bfea3be9c5f
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/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>

<style>
  .slide {page-break-after: always;}
</style>




</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 -->


<!-- _S9SLIDE_ -->
<h2 id="画面配信システムの活用">画面配信システムの活用</h2>
<ul>
  <li>
    <p>講義や発表の場では、プロジェクタが使用されることが多い。その場合接続不良など、アクシデントが起きる恐れがある</p>
  </li>
  <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>問題点
    <ul>
      <li>画面配信は送信するデータ量が多いため、TreeVNCでは無線接続の場合、画面配信の遅延が大きくなってしまう</li>
      <li>現在のTreeVNCのデータ転送方法だと、無線接続で送信するには大きすぎる</li>
    </ul>
  </li>
  <li>解決案
    <ul>
      <li>マルチキャストを導入することで、データ量を抑え画面配信の遅延を軽減する</li>
    </ul>
  </li>
</ul>

<!-- ## 目次
- **TreeVNC の概要**
    - **基本概念**
    - **構造**
- 研究内容
    - TreeVNC の改良
    - 送信データの Blocking
-->



</div>

<div class='slide'>
  <!-- _S9SLIDE_ -->
<h2 id="treevnc">TreeVNC</h2>
<ul>
  <li>
    <p>TreeVNC は本研究室で開発している画面配信システム</p>
  </li>
  <li>
    <p>VNC(リモートデスクトップソフトウェア)を利用している</p>
  </li>
  <li>
    <p>木構造の接続方式を採用し、配信側の負荷を分散し大人数での画面配信が可能</p>
  </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="400" height="300" /></center>



</div>

<div class='slide'>
  <!-- _S9SLIDE_ -->
<h2 id="rfb-プロトコル">RFB プロトコル</h2>
<ul>
  <li>
    <p>RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコル</p>
  </li>
  <li>
    <p>他人のPC画面が表示される側と、FrameBufferへの更新が行われる(自身のPC画面を送信する)側に分かれ、それぞれをRFBクライアント、RFBサーバと呼ぶ</p>
  </li>
  <li>
    <p>FrameBufferは、メモリ上に置かれた画像データのこと</p>
  </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="400" height="300" /></center>



</div>

<div class='slide'>
  <!-- _S9SLIDE_ -->
<h2 id="木構造の再構成">木構造の再構成</h2>
<ul>
  <li>Nodeが切断されたことを検知できなければ木構造が維持できない</li>
  <li>Root Nodeが木構造のネットワークトポロジーを管理しているため、Root NodeにNodeの切断を知らせる必要がある</li>
  <li>切断検知にはMulticastQueueを使用しており、MulticastQueueには画像データが入っている</li>
  <li>MulticastQueueから画像データが一定時間取得されず、Timeoutを検知した場合切断したと判断する</li>
</ul>



</div>

<div class='slide'>
  <!-- _S9SLIDE_ -->
<h2 id="画像データのエンコード方法">画像データのエンコード方法</h2>
<ul>
  <li>TreeVNCではZRLEというエンコードタイプを元にした、ZRLEEというエンコードを用いて画像データを圧縮を行う</li>
  <li>ZRLEでは解凍時に必要な辞書データを書き出すことができない</li>
  <li>ZRLEEはRoot Nodeで受け取ったZRLEのデータを一度解凍し、辞書データを付与して再圧縮している</li>
</ul>

<center><img src="./fig/EncodeZRLEE.svg" alt="message" width="400" height="300" /></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>



</div>

<div class='slide'>
  <!-- _S9SLIDE_ -->
<h2 id="有線接続との接続の違い">有線接続との接続の違い</h2>



</div>

<div class='slide'>
  <!-- _S9SLIDE_ -->
<h2 id="rfbプロトコルのupdaterectangleの構成">RFBプロトコルのUpdateRectangleの構成</h2>
<ul>
  <li>無線接続の場合、一度に送信できるデータ量が 64kbyte しかないため、それに合わせてデータを分割する必要がある</li>
  <li>大きなデータを小さい単位に分割する
    <ul>
      <li>更新が行われた部分を1行ずつ圧縮していく</li>
      <li>書き込みのために用意した関数に入る限界値まで圧縮を行ない、関数に書き込む</li>
    </ul>
  </li>
</ul>

<center><img src="./fig/FrameUpdateRectangle.svg" alt="message" width="400" height="250" /></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="400" height="350" /></center>



</div>

<div class='slide'>
  <!-- _S9SLIDE_ -->
<h2 id="まとめ">まとめ</h2>
<ul>
  <li>TreeVNC の改良と Multicast 対応のためのデータの Blocking を実装した。
    <ul>
      <li>VNCServer 側が接続を切断した場合でもクライアントが正しく終了する様にした。</li>
      <li>画面操作の許可を確認する authentication のポップアップが Root 側に表示されない様にした。</li>
      <li>データの Blocking を行うことにより、無線接続での Multicast 対応を行えるようにした。</li>
    </ul>
  </li>
  <li>今後の課題
    <ul>
      <li>Multicast の実装</li>
      <li>Multicast 実行時の遅延の評価</li>
      <li>Packetloss 時の対処</li>
    </ul>
  </li>
</ul>

</div>


</div><!-- presentation -->
</body>
</html>