changeset 25:820612e057e2

update pretex
author e155702
date Wed, 20 Feb 2019 01:39:11 +0900
parents fbdba7d0a0fc
children 3a4bb9890146
files final_pre/main.pdf final_pre/main.tex slide/slide.html slide/slide.md
diffstat 4 files changed, 137 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
Binary file final_pre/main.pdf has changed
--- a/final_pre/main.tex	Tue Feb 19 22:50:16 2019 +0900
+++ b/final_pre/main.tex	Wed Feb 20 01:39:11 2019 +0900
@@ -3,6 +3,7 @@
 \usepackage[dvipdfmx]{graphicx}
 \usepackage{picins}
 \usepackage{fancyhdr}
+\usepackage{abstract}
 %\pagestyle{fancy}
 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
 \rhead{}
@@ -18,14 +19,20 @@
 \setlength{\footskip}{0mm}
 \pagestyle{empty}
 
+\renewcommand{\abstractname}{Abstract}
 \begin{document}
 \title{画面共有システム TreeVNC の拡張}
 \author{学籍番号 155702F 氏名 {大城}{由也} 指導教員 : {河野}{真治}}
 \date{平成31年 2月 20日}
+\twocolumn [
 \maketitle
 
-%\begin{abstract}
-%\end{abstract}
+\begin{onecolabstract}
+TreeVNC distributes in tree structure.
+However, in wireless environments, there is a problem in delivery speed because data that can be sent at once is limited.
+I want to implement multicast there.
+For that reason, I implemented a system that divides the data into sizes that can be wirelessly transmitted
+\end{onecolabstract}]
 
 
 \thispagestyle{fancy} 
@@ -53,7 +60,7 @@
 
 \begin{figure}[htbp]
     \begin{center}
-        \includegraphics[scale=0.3]{images/treevnc-crop.pdf}
+        \includegraphics[scale=0.4]{images/treevnc-crop.pdf}
     \end{center}
     \caption{TreeVNC の構造}
     \label{fig:treevnc}
@@ -61,13 +68,14 @@
 
 \begin{figure}[htbp]
     \begin{center}
-        \includegraphics[scale=0.3]{images/vnc-crop.pdf}
+        \includegraphics[scale=0.5]{images/vnc-crop.pdf}
     \end{center}
     \caption{従来の VNC の構造}
     \label{fig:vnc}
 \end{figure}
 
 
+\newpage
 \section{TreeVNC の問題点}
 TreeVNC には TreeVNCServer にクライアントが接続している状態で、VNCServer 側が何らかの要因で接続を切ってしまった場合、クライアント側が正しく切断されない問題と、VNCServer にクライアントとして接続した際に、画面の操作を許可するかどうか確認する authentication のポップアップが Root 側にも表示されてしまっていた問題が生じており、上記二つの問題点は修正を行った。
 
@@ -77,7 +85,7 @@
 
 \begin{figure}[htbp]
     \begin{center}
-        \includegraphics[scale=0.3]{images/interface-crop.pdf}
+        \includegraphics[scale=0.4]{images/interface-crop.pdf}
     \end{center}
     \caption{Multicast での接続図}
     \label{fig:interface}
@@ -85,20 +93,21 @@
 
 
 \section{画像データの Blocking}
-TreeVNC ではデータ圧縮する際、画面を分割し、一単位 64 * 64 サイズのタイルに見立て行っている(図\ref{fig:tiling})。あらかじめサイズを設定しデータの圧縮を行うことで、解凍の手順が一般化し簡素化することが可能となる。
+画像データはサイズが膨大で、送信する際に一度では送れないので分割して送られる。しかし、無線接続では有線接続よりも送信できるデータ量が少ないため、さらに分割する必要がある。
+そこでデータを再分割する手法として Blocking を実装した。
+
+%Blocking の流れ
+
+TreeVNC ではデータを解凍する際、画面を分割し、一単位 64 * 64 サイズのタイルに見立て行っている(図\ref{fig:tiling})。あらかじめサイズを設定しデータの解凍を行うことで、手順が一般化し簡素化することが可能となる。
 
 \begin{figure}[htbp]
     \begin{center}
-        \includegraphics[scale=0.3]{images/tiling-crop.pdf}
+        \includegraphics[scale=0.4]{images/tiling-crop.pdf}
     \end{center}
-    \caption{データ圧縮時の画面の分割イメージ}
+    \caption{データ解凍時の画面の分割イメージ}
     \label{fig:tiling}
 \end{figure}
 
-有線接続では上記の方法で分割したデータを送信しても問題は発生しないが、無線接続だと大きすぎる。ここでデータをさらに分割する手法として Blocking を実装した。
-
-
-
 
 Blocking 実装後 VNCServer とクライアントの接続を行ったところ、十分な転送速度を確認できた。
 
@@ -125,7 +134,7 @@
 
 データの Blocking を行うことにより、無線 LAN 接続での Multicast 対応を行えるようになった。
 
-また今後の課題として、Multicast の実装、Multicast 実行時の遅延、Packetloss などの評価を行う。
+また今後の課題として、Multicast の実装、Multicast 実行時の遅延の評価、Packetloss 時の対処がある。
 
 % 参考文献
 \def\line{−\hspace*{-.7zw}−}
--- a/slide/slide.html	Tue Feb 19 22:50:16 2019 +0900
+++ b/slide/slide.html	Wed Feb 20 01:39:11 2019 +0900
@@ -86,7 +86,7 @@
 <!-- === begin markdown block ===
 
       generated by markdown/1.2.0 on Ruby 2.6.1 (2019-01-30) [x86_64-darwin17]
-                on 2019-02-19 21:28:06 +0900 with Markdown engine kramdown (2.0.0)
+                on 2019-02-20 00:07:06 +0900 with Markdown engine kramdown (2.0.0)
                   using options {}
   -->
 <!-- <\!-- slideshow の command -\-> -->
@@ -107,9 +107,9 @@
 <!-- _S9SLIDE_ -->
 <h1 id="section">画面配信システムの活用</h1>
 <ul>
-  <li>講義や発表の場では、プロジェクタが使用されることが多い。その場合、アクシデント発生の恐れがある。</li>
-  <li>画面配信システム TreeVNC は、自身の PC 画面を他者の PC に表示するソフトウェアである。</li>
-  <li>TreeVNC を使用することで、参加者は手元の PC を使用しながら講義を受ける事が可能になる。切り替えの際も、ボタン一つで共有する画面の切替を可能としている。</li>
+  <li>講義や発表の場では、プロジェクタが使用されることが多い。その場合、アクシデント発生の恐れがある</li>
+  <li>画面配信システム TreeVNC は、自身の PC 画面を他者の PC に表示するソフトウェアである</li>
+  <li>TreeVNC を使用することで、参加者は手元の PC を使用しながら講義を受ける事が可能になる。切り替えの際も、ボタン一つで共有する画面の切替を可能としている</li>
 </ul>
 
 
@@ -118,7 +118,7 @@
 <!-- _S9SLIDE_ -->
 <h1 id="treevnc-">TreeVNC の問題点</h1>
 <ul>
-  <li>画面配信は送信するデータ量が多いため、TreeVNC では無線 LAN 接続の場合、画面配信の遅延が大きくなってしまう。</li>
+  <li>画面配信は送信するデータ量が多いため、TreeVNC では無線 LAN 接続の場合、画面配信の遅延が大きくなってしまう</li>
   <li>有線接続時のデータ転送方法だと、無線接続で送信するには大きすぎる</li>
 </ul>
 
@@ -140,46 +140,90 @@
       <li>送信データの Blocking</li>
     </ul>
   </li>
-  <li>TreeVNC の無線 LAN 上での Multicast 接続の実装や、Multicast で送信可能な大きさにデータを分割する手法の実装を行う。</li>
-  <li>無線 LAN 接続での配信環境の向上を目指し、TreeVNC の有用性を評価することで講義やゼミを円滑に行えることを目標とする。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="treevnc">TreeVNC</h1>
+<ul>
+  <li>TreeVNC は本研究室で開発している画面配信システム</li>
+  <li>VNC (リモートデスクトップソフトウェア) を利用している</li>
+  <li>配信側の負荷を分散し、大人数での画面配信が可能</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="vnc">VNC</h1>
+<ul>
+  <li>VNC (Virtual Network Computing) は、RFB プロトコルを用いて PC の遠隔操作を行うことを目的としたリモートデスクトップソフトウェア</li>
+  <li>サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている</li>
+</ul>
+
+<p><img src="./fig/vnc-crop.svg" alt="message" width="400" height="250" /></p>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="rfb-">RFB プロトコル</h1>
+<ul>
+  <li>RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコル</li>
+  <li>ユーザがいる (画面を表示される) 側と FrameBuffer への更新が行われる (自身の画面を送信する) 側に分かれ、それぞれを RFB クライアント、RFB サーバと呼ぶ</li>
+  <li>FrameBuffer は、メモリ上に置かれた画像データのこと</li>
 </ul>
 
 
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="vnctreevnc-done">
-- VNCサーバー側停止時のTreeVNCの暴走を止める Done</h1>
+<h1 id="treevnc--1">TreeVNC の構造</h1>
 <ul>
-  <li>authenticationのポップアップがrootで上がってしまう点の修正 Done</li>
-  <li>SERVER_CHANGE_REQUESTでリクエスト側の画面が消えない点の修正 Done</li>
-  <li>ディスプレイモードで立ち上げた時にも画面を開かせる</li>
-  <li>consolelogをlog4jに切り替える</li>
-  <li>以下を実装して multicast 接続できるようにする
-    <ul>
-      <li>RFB.readsenddata で multicastqueue にブロッキングしたデータを挿入する</li>
-      <li>multicastqueue を multicastport に出力するスレッドを作成する</li>
-      <li>ReceiveData thread を multicastport にたいして走らせる</li>
-      <li>multicast するネットワークインターフェースを選択する UI を作成する</li>
-    </ul>
-  </li>
+  <li>TreeVNC は接続してきたクライアントを Node とし、バイナリツリー状に管理する。</li>
+  <li>ルートのノードを Root Node と呼び、その下に新たな Node を接続していく</li>
+  <li>Root Node が参照している VNCServer から FrameBufferUpdate を取得し、各 Node に送信する</li>
+  <li>バイナリツリー状に接続することで、画像データのコピーを各 Node に負担させることができる</li>
 </ul>
 
 
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="section-2">近況報告</h1>
+<h1 id="section-2">共有画面切り替え</h1>
+<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_ -->
+<h1 id="treevnc--2">TreeVNC の問題点</h1>
 <ul>
-  <li>Blocking を実装した
-    <ul>
-      <li>TreeRFBProto の blockedReadSendData を zrleeBlocking に書き換えました</li>
-      <li>TreeRFBProto に writeUpdateRectangleWithHeader を追加しました</li>
-    </ul>
-  </li>
-  <li>updateRectangle record failed ~ というメッセージが出て画面の描画が途中で止まってしまう</li>
-  <li>マウスポインタが上に上がってしまう挙動が治したはずだが復活している</li>
+  <li>クライアントが接続している状態で、サーバー側が接続を切るとクライアント側が正しく切断されない</li>
+  <li>サーバーに接続した際に、画面の操作を許可するかどうか確認するポップアップが Root 側にも表示されてしまう</li>
+  <li>膨大なデータを無線 LAN 接続で配信した場合、配信の遅延が大きくなる</li>
 </ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="multicast-">Multicast 対応</h1>
+<ul>
+  <li>有線接続の Node で形成されたツリーに無線接続の Node を加えてしまうと通信の遅延が発生し、ツリー全体の配信遅延に繋がる</li>
+  <li>Multicast の実装を提案</li>
+  <li>Multicast ならば、Server からの送信は一度で済むため、ツリー構造の形成が必要ない</li>
+  <li>従って新しい Node が 無線接続であっても、有線接続のツリーの配信には影響が出ない</li>
+</ul>
+
+<p>#</p>
 <!-- === end markdown block === -->
 </div>
 
--- a/slide/slide.md	Tue Feb 19 22:50:16 2019 +0900
+++ b/slide/slide.md	Wed Feb 20 01:39:11 2019 +0900
@@ -19,12 +19,12 @@
 <!-- slideshow build スライド.md -t s6cr --> 
 
 # 画面配信システムの活用
-- 講義や発表の場では、プロジェクタが使用されることが多い。その場合、アクシデント発生の恐れがある。
-- 画面配信システム TreeVNC は、自身の PC 画面を他者の PC に表示するソフトウェアである。
-- TreeVNC を使用することで、参加者は手元の PC を使用しながら講義を受ける事が可能になる。切り替えの際も、ボタン一つで共有する画面の切替を可能としている。
+- 講義や発表の場では、プロジェクタが使用されることが多い。その場合、アクシデント発生の恐れがある
+- 画面配信システム TreeVNC は、自身の PC 画面を他者の PC に表示するソフトウェアである
+- TreeVNC を使用することで、参加者は手元の PC を使用しながら講義を受ける事が可能になる。切り替えの際も、ボタン一つで共有する画面の切替を可能としている
 
 # TreeVNC の問題点
-- 画面配信は送信するデータ量が多いため、TreeVNC では無線 LAN 接続の場合、画面配信の遅延が大きくなってしまう。
+- 画面配信は送信するデータ量が多いため、TreeVNC では無線 LAN 接続の場合、画面配信の遅延が大きくなってしまう
 - 有線接続時のデータ転送方法だと、無線接続で送信するには大きすぎる
 
 # 目次
@@ -35,25 +35,43 @@
     - TreeVNC の改良
     - 送信データの Blocking
 
-- TreeVNC の無線 LAN 上での Multicast 接続の実装や、Multicast で送信可能な大きさにデータを分割する手法の実装を行う。
-- 無線 LAN 接続での配信環境の向上を目指し、TreeVNC の有用性を評価することで講義やゼミを円滑に行えることを目標とする。
+# TreeVNC
+- TreeVNC は本研究室で開発している画面配信システム
+- VNC (リモートデスクトップソフトウェア) を利用している
+- 配信側の負荷を分散し、大人数での画面配信が可能
+
+# VNC
+- VNC (Virtual Network Computing) は、RFB プロトコルを用いて PC の遠隔操作を行うことを目的としたリモートデスクトップソフトウェア
+- サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている
+
+<img src="./fig/vnc-crop.svg" alt="message" width="400" height="250">
+
+# RFB プロトコル
+- RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコル
+- ユーザがいる (画面を表示される) 側と FrameBuffer への更新が行われる (自身の画面を送信する) 側に分かれ、それぞれを RFB クライアント、RFB サーバと呼ぶ
+- FrameBuffer は、メモリ上に置かれた画像データのこと
 
-# 
-- VNCサーバー側停止時のTreeVNCの暴走を止める Done
-* authenticationのポップアップがrootで上がってしまう点の修正 Done
-* SERVER_CHANGE_REQUESTでリクエスト側の画面が消えない点の修正 Done
-* ディスプレイモードで立ち上げた時にも画面を開かせる
-* consolelogをlog4jに切り替える
-* 以下を実装して multicast 接続できるようにする
-	* RFB.readsenddata で multicastqueue にブロッキングしたデータを挿入する
-	* multicastqueue を multicastport に出力するスレッドを作成する
-	* ReceiveData thread を multicastport にたいして走らせる
-	* multicast するネットワークインターフェースを選択する UI を作成する
+# TreeVNC の構造
+- TreeVNC は接続してきたクライアントを Node とし、バイナリツリー状に管理する。
+- ルートのノードを Root Node と呼び、その下に新たな Node を接続していく
+- Root Node が参照している VNCServer から FrameBufferUpdate を取得し、各 Node に送信する
+- バイナリツリー状に接続することで、画像データのコピーを各 Node に負担させることができる
+
+# 共有画面切り替え
+- 従来の VNC では、配信者が切り替わるたびに再起動、再接続を行う必要があった
+- TreeVNC では、画面上にある ShareScreen ボタンを押すことで配信者の切り替えが実行できる
+- ShareScreen 実行後、Root Node に対し SERVER CHANGE REQUEST というメッセージが送信される。
+- メッセージを受け取った Root Node は配信を希望している Node の VNC サーバーと通信を行い、切り替え作業に入る。
 
+# TreeVNC の問題点
+- クライアントが接続している状態で、サーバー側が接続を切るとクライアント側が正しく切断されない
+- サーバーに接続した際に、画面の操作を許可するかどうか確認するポップアップが Root 側にも表示されてしまう
+- 膨大なデータを無線 LAN 接続で配信した場合、配信の遅延が大きくなる
 
-# 近況報告
-* Blocking を実装した
-	* TreeRFBProto の blockedReadSendData を zrleeBlocking に書き換えました
-	* TreeRFBProto に writeUpdateRectangleWithHeader を追加しました
-* updateRectangle record failed ~ というメッセージが出て画面の描画が途中で止まってしまう
-* マウスポインタが上に上がってしまう挙動が治したはずだが復活している
\ No newline at end of file
+# Multicast 対応
+- 有線接続の Node で形成されたツリーに無線接続の Node を加えてしまうと通信の遅延が発生し、ツリー全体の配信遅延に繋がる
+- Multicast の実装を提案
+- Multicast ならば、Server からの送信は一度で済むため、ツリー構造の形成が必要ない
+- 従って新しい Node が 無線接続であっても、有線接続のツリーの配信には影響が出ない
+
+# 
\ No newline at end of file