view Slide/slide.md @ 32:6da32e2f11c2

add Slide and images
author e165729 <e165729@ie.u-ryukyu.ac.jp>
date Sun, 26 May 2019 03:21:48 +0900
parents
children 762fe0e406e4
line wrap: on
line source

title: 画面配信システム TreeVNC のマルチキャストの導入
author: Ryo Yasuda, Shinji Kono
profile: 並列信頼研
lang: Japanese
code-engine: coderay

<!-- <\!-- 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は、自身のPC画面を他者のPCに表示するソフトウェアである
- TreeVNCを使用することで、参加者は手元のPCを使用しながら講義を受ける事が可能になる。切り替えの際も、ボタン一つで共有する画面の切替を可能としている


## TreeVNC の問題点
- 画面配信は送信するデータ量が多いため、TreeVNCでは無線接続の場合、画面配信の遅延が大きくなってしまう
- 現在のTreeVNCのデータ転送方法だと、無線接続で送信するには大きすぎる
    - マルチキャストを導入することで、データ量を抑え画面配信の遅延を軽減する

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

## TreeVNC
- TreeVNC は本研究室で開発している画面配信システム
- VNC(リモートデスクトップソフトウェア)を利用している
- 木構造の接続方式を採用し、配信側の負荷を分散し大人数での画面配信が可能

## VNC
- VNC(Virtual Network Computing)は、RFBプロトコルを用いてPCの遠隔操作を行うことを目的としたリモートデスクトップソフトウェア
- サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている
- 全てのNodeが一台のサーバーに接続するため負担が大きい

<center><img src="./fig/vnc-crop.svg" alt="message" width="400" height="300"></center>

## RFB プロトコル
- RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコル

- 他人のPC画面が表示される側と、FrameBufferへの更新が行われる(自身のPC画面を送信する)側に分かれ、それぞれをRFBクライアント、RFBサーバと呼ぶ

- FrameBufferは、メモリ上に置かれた画像データのこと

## TreeVNC の構造
- TreeVNCは接続してきたクライアントをNodeとし、バイナリツリー状に管理する
- ルートのノードを Root Node と呼び、その下に新たなNodeを接続していく
- Root Nodeが参照しているVNCServerからFrameBufferUpdateを取得し、各Nodeに送信する
- バイナリツリー状に接続することで、画像データのコピーを各Nodeに負担させることができる

<center><img src="./fig/treevnc-crop.svg" alt="message" width="400" height="300"></center>

## 共有画面切り替え
- 従来の VNC では、配信者が切り替わるたびに再起動、再接続を行う必要があった
- TreeVNC では、画面上にある ShareScreen ボタンを押すことで配信者の切り替えが実行できる
- ShareScreen 実行後、Root Node に対し SERVER CHANGE REQUEST というメッセージが送信される。
- メッセージを受け取った Root Node は配信を希望している Node の VNC サーバーと通信を行い、切り替え作業に入る。


## Multicast
- ツリーに無線接続の Node を加えてしまうと配信の遅延に繋がる
- Multicast の実装を提案
- Multicast ならば、Server からの送信は一度で済むため、ツリー構造の形成が必要ない
- 従って新しい Node が 無線接続であっても、有線接続のツリーの配信には影響が出ない

<center><img src="./fig/interface-crop.svg" alt="message" width="400" height="350"></center>

## Blocking
- 無線接続の場合、一度に送信できるデータ量が 64kbyte しかないため、それに合わせてデータを分割する必要がある
- 大きなデータを小さい単位に分割する
    - 更新が行われた部分を1行ずつ圧縮していく
    - 書き込みのために用意した関数に入る限界値まで圧縮を行ない、関数に書き込む

<center><img src="./fig/FrameUpdateRectangle.svg" alt="message" width="400" height="250"></center>

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