changeset 19:df9704981b79

Add ZRLEE
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Mon, 30 Nov 2015 22:48:13 +0900
parents a8c64ed24b6d
children 0c8a1baf41cb
files paper/pic/directConnection.graffle paper/pic/directConnection.pdf paper/pic/directConnection.xbb paper/pic/shareScreenToMultiDisplay.graffle paper/pic/shareScreenToMultiDisplay.pdf paper/pic/shareScreenToMultiDisplay.xbb paper/prosym.bib paper/prosym.pdf paper/prosym.tex prosym.mm
diffstat 10 files changed, 86 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
Binary file paper/pic/directConnection.graffle has changed
Binary file paper/pic/directConnection.pdf has changed
--- a/paper/pic/directConnection.xbb	Mon Nov 30 16:42:56 2015 +0900
+++ b/paper/pic/directConnection.xbb	Mon Nov 30 22:48:13 2015 +0900
@@ -1,8 +1,8 @@
-%%Title: pic/directConnection.pdf
+%%Title: directConnection.pdf
 %%Creator: extractbb 20150315
-%%BoundingBox: 0 0 719 375
-%%HiResBoundingBox: 0.000000 0.000000 719.000000 375.000000
-%%PDFVersion: 1.4
+%%BoundingBox: 0 0 715 375
+%%HiResBoundingBox: 0.000000 0.000000 715.000000 375.000000
+%%PDFVersion: 1.3
 %%Pages: 1
-%%CreationDate: Sun Nov 29 16:43:34 2015
+%%CreationDate: Mon Nov 30 18:10:05 2015
 
Binary file paper/pic/shareScreenToMultiDisplay.graffle has changed
Binary file paper/pic/shareScreenToMultiDisplay.pdf has changed
--- a/paper/pic/shareScreenToMultiDisplay.xbb	Mon Nov 30 16:42:56 2015 +0900
+++ b/paper/pic/shareScreenToMultiDisplay.xbb	Mon Nov 30 22:48:13 2015 +0900
@@ -1,8 +1,8 @@
 %%Title: shareScreenToMultiDisplay.pdf
 %%Creator: extractbb 20150315
-%%BoundingBox: 0 0 815 849
-%%HiResBoundingBox: 0.000000 0.000000 815.000000 849.000000
-%%PDFVersion: 1.4
+%%BoundingBox: 0 0 815 842
+%%HiResBoundingBox: 0.000000 0.000000 815.000000 842.000000
+%%PDFVersion: 1.3
 %%Pages: 1
-%%CreationDate: Tue Nov 10 02:56:46 2015
+%%CreationDate: Mon Nov 30 18:11:06 2015
 
--- a/paper/prosym.bib	Mon Nov 30 16:42:56 2015 +0900
+++ b/paper/prosym.bib	Mon Nov 30 22:48:13 2015 +0900
@@ -1,25 +1,48 @@
 @Misc{rfbprotocol,
-  author = "{Tristan Richardson}",
-  title = "The RFB Protocol",
-  howpublished = "\url{http://www.realvnc.com/docs/rfbproto.pdf}"
+  author = "{RICHARDSON, T., AND LEVINE, J.}",
+  title = "The remote framebuffer protocol. RFC 6143",
+  month = "mar",
+  year = 2011
 }
 
 @Misc{tightvnc,
-  title        = "{TightVNC Software}",
+  author       = "{TightVNC Software}",
   howpublished = "\url{http://www.tightvnc.com}"
 }
 
-@article{oc:thesis,
-         author = "{Miwa OSHIRO}",
-         title = "授業やゼミ向けの画面配信システムTreeVNCの拡張機能",
-         journal = "琉球大学工学部情報工学科平成26年度学位論文(学士) ",
-         year = 2014
+@Misc{vnc,
+    author = "{RICHARDSON, T., STAFFORD-FRASER, Q., WOOD, K. R., AND HOPPER,}",
+    title  = "A. Virtual Network Computing",
+    month = "jan",
+    year = 1998
+}
+
+@Misc{zlib,
+    author = "{LOUP GAILLY, J., AND ADLER, M.}",
+    title = "zlib: A massively spiffy yet delicately unobtrusive compression library.",
+    howpublished = "\url{http://zlib.net}"
+
+}
+
+@article{understandingScreenContents,
+    author = "{Surendar Chandra, Jacob T. Biehl, John Boreczky, Scott Carter, Lawrence A. Rowe}",
+    title = "Understanding Screen Contents for Building a High Performance, Real Time Screen Sharing System",
+    journal = "ACM Multimedia",
+    year = 2012,
+    month = "Oct"
+}
+@article{taninari:2011a,
+    author = "{Yu TANINARI and Nobuyasu OSHIRO and Shinji KONO}",
+    title = "VNCを用いた授業用画面共有システムの実装と設計",
+    journal = "日本ソフトウェア科学会第28回大会論文集",
+    month = "sep",
+    year = 2011
 }
 
 @article{taninari:2012a,
-  author = "{Yu TANINARI and Nobuyasu OSHIRO and Shinji KONO}",
-  title = "VNCを用いた授業用画面共有システムの設計・開発",
-  journal = "情報処理学会",
-  month = "may",
-  year = 2012
+    author = "{Yu TANINARI and Nobuyasu OSHIRO and Shinji KONO}",
+    title = "VNCを用いた授業用画面共有システムの設計・開発",
+    journal = "情報処理学会 システムソフトウェアとオペレーティング・システム研究会(OS)",
+    month = "may",
+    year = 2012
 }
Binary file paper/prosym.pdf has changed
--- a/paper/prosym.tex	Mon Nov 30 16:42:56 2015 +0900
+++ b/paper/prosym.tex	Mon Nov 30 22:48:13 2015 +0900
@@ -55,22 +55,24 @@
 
 \affiliate{IE}{琉球大学工学部情報工学科}
 
-\author{伊波 立樹}{Tatsuki IHA}{IE}
-\author{河野 真治}{Shinji KONO}{IE}
+\author{伊波 立樹}{Tatsuki IHA}{IE}[innparusu@cr.ie.u-ryukyu.ac.jp]
+\author{河野 真治}{Shinji KONO}{IE}[kono@ie.u-ryukyu.ac.jp]
 
 \begin{abstract}
     授業やゼミ等で、それぞれがPC端末を持っている場合では、PCの機能を活かしたコミュニケーションが可能である。教員が操作する画面をそのまま学生に配信したり, ゼミなどで、発表する学生の画面を切り替えたりすることを可能にしたい。
     画面配信システムTreeVNCは参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる仕組みを取っている。そのため,多人数が参加しても処理性能が下がらない。また、ツリーのルートが参照しているVNCサーバーを変更することで、ケーブルの差し替えなしに画面の切替が可能となる。
-    今研究ではTreeVNCの改良として、複数のネットワークへの対応、 WANへの対応、 マルチディスプレイへの対応するとともに、TreeVNC 有用性を示すために画像データの遅延時間計測を行った。
+    本研究ではTreeVNCの改良として、複数のネットワークへの対応、 WANへの対応、 マルチディスプレイへの対応するとともに、TreeVNC 有用性を示すために画像データの遅延時間計測を行った。
 \end{abstract}
 
 \begin{jkeyword}
+    VNC,
+    分散アプリケーション
 \end{jkeyword}
 
 \maketitle
 
 % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{研究背景と目的}
+\section{画面共有を利用したコミュニケーション}
 授業やゼミ等で、それぞれが PC 端末を持っている場合では、
 PC の機能を活かしたコミュニケーションが可能である。
 
@@ -83,28 +85,26 @@
 またゼミの際には発表者を切り替えるたびにプロジェクタにケーブルを差し替える必要がある。
 ケーブルの差し替えの際に発表者の PC によってアダプターの種類や解像度の設定によって正常に PC 画面を表示できない場合もある。
 
-画面配信システム TreeVNC\cite{oc:thesis}\cite{taninari:2012a}は発表者の画面を参加者の PC に表示する。
+画面配信システム TreeVNC\cite{taninari:2011a}は発表者の画面を参加者の PC に表示する。
 そのため、参加者は不自由なく手元の PC を使用しながら授業を受ける事が可能になる。
 更に発表者の切り替えの際もケーブルの差し替えずに共有する画面の切替を可能としている。
 
 Tree VNC は VNC を使用した画面配信を行っている。
 しかし通常の VNC では共有側に全ての参加者が接続するため、多人数の際の処理性能が落ちてしまう。
-Tree VNC では参加者をバイナリツリー状に接続し、 配信コストをクライアントに分散させる仕組みになっている。
+Tree VNC では有線でネットワークに接続した参加者をバイナリツリー状に接続し、 配信コストをクライアントに分散させる仕組みになっている。
 そのため、授業で先生の画面を表示する際、多人数の生徒が参加しても処理性能が下がらない。
 また、ツリーのルートが参照している VNCサーバーを変更することで、共有する画面の切替が可能となる。
 
-本研究では 複数のネットワークへの対応、 WAN 、マルチディスプレイへの対応を行う。
+しかし TreeVNC を授業やゼミで使用している中、 様々な問題が発生した。
+TreeVNC は起動した PC が複数のネットワークに接続していても、単一のネットワークしか使用することが出来ない。
+更に、 NATを越えたネットワーク接続に対応しておらず、遠隔地などで授業やゼミに参加することが出来ない。
+また、ゼミの際に、マルチディスプレイを使用して画面配信を行う際、すべての画面が配信され、不必要な画面まで表示される。
 
-TreeVNC は起動した PC が複数のネットワークに接続していても、単一のネットワークしか使用することが出来なかった。
-それに対応するため、木構造の生成方法を見直し、複数ネットワークに対応した。
-TreeVNC はNATを越えたネットワーク接続に対応しておらず、遠隔地などで授業やゼミに参加することが出来なかった。
-そのため、NATを越えた新しい接続方法を提案し、実装を行った。
-また、ゼミの際に、マルチディスプレイを使用して画面配信を行う際、全ての画面が送信されることがわかった。発表の際は複数の画面を表示する必要ない。
-そこで、配信する際に配信するディスプレイ情報を取得し、配信を行うことで、対応した。
+そこで本研究では、上記の問題点を解決し、TreeVNCの有用性を評価することで授業やゼミを円滑に行えることを目標とする。
 
 \section{画面配信システムTreeVNC}
 \subsection{VNCについて}
-VNC(Virtual Network Computing) は、 RFBプロトコルを用いて遠隔操作を行うリモートデスクトップソフトウェアである。
+VNC(Virtual Network Computing)\cite{vnc} は、 RFBプロトコルを用いて遠隔操作を行うリモートデスクトップソフトウェアである。
 VNC はサーバー側とクライアント(ビューア)側に分かれている。 サーバを起動し、クライアントがサーバに接続を行い遠隔操作を可能とする。
 
 \subsection{RFBプロトコル}
@@ -131,6 +131,9 @@
 また、サーバへ接続しに来たクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。
 バイナリツリー状に接続することで、$N$台のクライアントが接続しに来た場合、画面配信の画像データをコピーする回数は従来の VNC ではサーバ側で$N$回する必要があるが、TreeVNCでは各ノードが2回ずつコピーするだけで済む。 
 
+TreeVNCで通信される画像のデータ量は大きいため、大きなネットワークスループットが必要である。
+そのため、有線接続が必須である。
+
 バイナリツリーのルートのノードを Root Node と呼び、 Root Node に接続されるノードを Node と呼ぶ
 Root Node は子 Nodeにデータを流す機能に加え、各 Node の管理、 VNC サーバーから流れてきた画像データの管理を行う。 
 Node は 親 Node から送られたデータを 自分の子 Node に流す機能、 逆に子 Node から送られてきたデータを 親 Node に流す機能がある。
@@ -143,6 +146,17 @@
     \label{fig:tree}
 \end{figure}
 
+TreeVNC は ZRLEE\cite{taninari:2012a} というエンコードでデータのやり取りを行う。
+ZRLEE はRFB プロトコルで使えるエンコーディングタイプの ZRLE を元に生成される。
+ZRLE は Zlib\cite{zlib} で圧縮されたデータとそのデータのバイト数がヘッダーとして付けて送られてくる。
+Zlib は java.util.zip.deflater と java.util.zip.inflater で圧縮と解凍が行える。
+しかし、 java.util.zip.deflater は解凍に必要な辞書を書き出す(flush)ことが出来ない。
+辞書を書き出すことが出来ないため、 Zlib圧縮されたデータを途中から受け取ってもデータを正しく解凍することが出来ない。
+そこで ZRLEE は 一度 Root Node で受け取った ZRLE のデータを unzip し、 データをzip し直して最後に finish() をいれることで初めからデータを呼んでいなくても解凍を行えるようにした。
+一度 ZRLEE に変換してしまえば子 Node はそのデータをそのまま流すだけで良い。
+ただし、deflater と inflater では前回までの通信で得た辞書をクリアしないといけないため、 Root Node と Node 側では毎回新しく作る必要がある。
+
+
 \subsection{TreeVNC の通信経路}
 TreeVNC の通信経路として以下が挙げられる
 \begin{itemize}
@@ -406,21 +420,25 @@
 
 \begin{figure}[ht]
     \begin{center}
-        \includegraphics[width=70mm]{./pic/depth1.eps}
+        \includegraphics[width=60mm]{./pic/depth1.eps}
     \end{center}
     \begin{center}
-        \includegraphics[width=70mm]{./pic/depth2.eps}
+        \includegraphics[width=60mm]{./pic/depth2.eps}
     \end{center}
     \begin{center}
-        \includegraphics[width=70mm]{./pic/depth3.eps}
+        \includegraphics[width=60mm]{./pic/depth3.eps}
     \end{center}
     \begin{center}
-        \includegraphics[width=70mm]{./pic/depth4.eps}
+        \includegraphics[width=60mm]{./pic/depth4.eps}
     \end{center}
     \caption{深さ毎のデータサイズと遅延の関係(上から深さ1, 2, 3, 4)}
     \label{fig:depth}
 \end{figure}
 
+\section{配布方法、リポジトリ}
+TreeVNC は jar で配布されている(http://www.cr.ie.u-ryukyu.ac.jp/software/TreeVNC.html)。
+また、Mercurial リポジトリでバージョン管理を行っている(http://www.cr.ie.u-ryukyu.ac.jp/hg/Applications/TreeVNC)。
+
 \section{まとめ}
 本研究では画面配信システムTreeVNCをマルチディスプレイ、WAN に対応させた。
 
--- a/prosym.mm	Mon Nov 30 16:42:56 2015 +0900
+++ b/prosym.mm	Mon Nov 30 22:48:13 2015 +0900
@@ -104,8 +104,10 @@
 <node CREATED="1448711063105" ID="ID_1777520283" MODIFIED="1448711071531" TEXT="&#x6bb5;&#x6570;&#x5206;&#x3057;&#x304b;delay&#x3057;&#x306a;&#x3044;"/>
 <node CREATED="1448711270150" ID="ID_1384636979" MODIFIED="1448711279759" TEXT="&#x8a08;&#x7b97;&#x65b9;&#x6cd5;&#x8c37;&#x6210;&#x3055;&#x3093;&#x306e;&#x4fee;&#x8ad6;&#x306b;&#x3042;&#x308b;"/>
 </node>
-<node CREATED="1445934911108" ID="ID_1630472567" MODIFIED="1445934928697" TEXT="node &#x9593;&#x306e;&#x30e1;&#x30c3;&#x30bb;&#x30fc;&#x30b8;&#x901a;&#x4fe1;">
+<node CREATED="1445934911108" ID="ID_1630472567" MODIFIED="1448859256343" TEXT="node &#x9593;&#x306e;&#x30e1;&#x30c3;&#x30bb;&#x30fc;&#x30b8;&#x901a;&#x4fe1;">
 <node CREATED="1448708616343" ID="ID_1485989477" MODIFIED="1448708651328" TEXT="&#x30e1;&#x30c3;&#x30bb;&#x30fc;&#x30b8;&#x901a;&#x4fe1;&#x306e;&#x8868;&#x306f;&#x3042;&#x307e;&#x308a;&#x306b;&#x3082;&#x5c0f;&#x3055;&#x3059;&#x304e;&#x308b;"/>
+<node CREATED="1448858897771" ID="ID_644004873" MODIFIED="1448858909927" TEXT="&#x901a;&#x4fe1;&#x306e;&#x7d4c;&#x8def;&#x306e;&#x8aac;&#x660e;&#x304c;&#x5fc5;&#x8981;"/>
+<node CREATED="1448859258241" ID="ID_447723103" MODIFIED="1448859266112" TEXT="Frame Buffer update &#x306e;&#x8f09;&#x305b;&#x3089;&#x308c;&#x308b;"/>
 </node>
 </node>
 <node CREATED="1445931791442" ID="ID_1147767082" MODIFIED="1445931796810" TEXT="&#x753b;&#x9762;&#x5207;&#x308a;&#x66ff;&#x3048;"/>
@@ -131,6 +133,7 @@
 <node CREATED="1445935293033" ID="ID_334245462" MODIFIED="1445935319856" TEXT="--filterSingleDisplay"/>
 <node CREATED="1445935327641" ID="ID_1839126687" MODIFIED="1445935341463" TEXT="share&#x3059;&#x308b;&#x4eba;&#x304c;&#x9078;&#x629e;&#x3059;&#x308b;&#x65b9;&#x5f0f;&#x306b;&#x3057;&#x305f;&#x3044;"/>
 <node CREATED="1447059445587" ID="ID_905485729" MODIFIED="1447059538239" TEXT="&#x9078;&#x629e;&#x3057;&#x305f;screen&#x306e;&#x5de6;&#x4e0a;&#x3068;&#x53f3;&#x4e0b;&#x3092;serverChangeReqest&#x3067;&#x9001;&#x308b;&#x3001;&#x305d;&#x306e;&#x7bc4;&#x56f2;&#x306e;&#x6307;&#x5b9a;&#x3057;&#x3001;root&#x304b;&#x3089;update reqest&#x3092;&#x9001;&#x308b;"/>
+<node CREATED="1448794815480" ID="ID_1833189417" MODIFIED="1448794823530" TEXT="Retina&#x30c7;&#x30a3;&#x30b9;&#x30d7;&#x30ec;&#x30a4;&#x5165;&#x308c;&#x305f;&#x307b;&#x3046;&#x304c;&#x826f;&#x3044;"/>
 </node>
 <node CREATED="1445938308271" ID="ID_822542723" MODIFIED="1445938312573" TEXT="&#x7121;&#x7dda;LAN&#x3068;&#x306e;&#x6df7;&#x5728;">
 <node CREATED="1448709037286" ID="ID_1602211998" MODIFIED="1448709608014" TEXT="&#x30a4;&#x30f3;&#x30bf;&#x30fc;&#x30d5;&#x30a7;&#x30fc;&#x30b9;&#x6bce;&#x306b;&#x6728;&#x3092;&#x751f;&#x6210;"/>