annotate midterm.tex @ 3:b57a41c000a1

Correction
author oshiro
date Thu, 15 Nov 2018 16:05:10 +0900
parents 8e83c0829c7c
children 538cc3c7dcc8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
2 %\usepackage[dvips]{graphicx}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
3 \usepackage[dvipdfmx]{graphicx}
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
4 \usepackage{picins}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
5 \usepackage{fancyhdr}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
6 %\pagestyle{fancy}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
7 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
8 \rhead{}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
9 \cfoot{}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
10
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
11 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
12 \setlength{\headheight}{0mm}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
13 \setlength{\headsep}{5mm}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
14 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
15 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
16 \setlength{\textwidth}{181mm}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
17 \setlength{\textheight}{261mm}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
18 \setlength{\footskip}{0mm}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
19 \pagestyle{empty}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
20
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
21 \begin{document}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
22 \title{TreeVNCの拡張}
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
23 \author{学籍番号 155702F 氏名 {大城}{由也} 指導教員 : {河野}{真治}}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
24 \date{平成30年 11月 22日}
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
25 \maketitle
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
26
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
27 \begin{abstract}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
28 \end{abstract}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
29
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
30
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
31 \thispagestyle{fancy}
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
32
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
33
1
1bcb7ef1d5ac add sentences to tex
oshiro
parents: 0
diff changeset
34 \section{研究目的}
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
35 講義や発表の場では、用意された資料や PC 画面を見ながら進行することが多い。ゼミなどでは発表者を切り替えながら発表を行う。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
36 通常このような場面では、資料やスライドを表示するためにプロジェクタが使用されている。ゼミの際には発表者を切り替えるたびにプロジェクタにケーブルを差し替える必要がある。ケーブルの差し替えの際に発表者の PC によってはアダプターの種類や解像度の設定により、正常に PC 画面を表示できない場合がある。
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
37
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
38 画面配信システム TreeVNC は発表者の画面を参加者の PC に表示するソフトウェアである。TreeVNC を使用することで、参加者は不自由なく手元の PC を使用しながら講義を受ける事が可能になる。更に発表者の切り替えの際も、ケーブルの差し替えを行わずに共有する画面の切替を可能としている。
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
39
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
40 TreeVNC は VNC(Virtual Network Computing) を使用した画面配信を行っている。しかし、通常の VNC では配信側に全ての参加者が接続するため、多人数の際の処理性能が落ちてしまう。TreeVNC では有線でネットワークに接続した参加者をバイナリツリー状に接続し、 配信コストをクライアントに分散させる仕組みをとっている。そのため、講義で発表者の画面を表示する際、多人数の生徒が参加しても処理性能が下がらない。また、ツリーのルートが参照している VNC サーバーを変更することで、共有する画面の切替が可能となっている。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
41
3
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
42 しかし、画像配信システムは送信するデータ量が多いため、現在の TreeVNC では無線 LAN 接続の場合、画面の配信に遅延が生じてしまう。そこで本研究では、マルチキャスト対応の実装やデータの分割・圧縮方法の評価を行うことにより、無線 LAN での配信環境の向上を目指し、TreeVNC の有用性を評価することで講義やゼミを円滑に行えることを目標とする。
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
43
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
44 \section{VNC}
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
45 VNC(Virtual Network Computing) は、 RFB プロトコルを用いて遠隔操作を行うリモートデスクトップソフトウェアである。
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
46 サーバー側とクライアント(ビューア)側に分かれており、
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
47 サーバー起動後クライアントがサーバに接続することで遠隔操作を可能としている。
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
48
3
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
49 \section{RFB(Remote Frame Buffer) プロトコル}
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
50 RFB プロトコルは、自身の画面を送信しネットワーク越しに他者の画面に表示するプロトコルである。ユーザがいる側を RFB クライアント、Framebuffer への更新が行われる側を RFB サーバと呼ぶ。Framebuffer とは、メモリ上に置かれた画像データである。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
51
3
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
52 プロトコルを起動した際の動作は以下の順である。\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
53 1.プロトコルバージョンの確認や認証を行う。\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
54 2.クライアントに向けて Framebuffer の大きさやデスクトップに付けられた名称などが含まれた初期メッセージが送信される。\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
55 3.RFB サーバ側は Framebuffer の更新が行われるたびに RFB クライアントに対して Framebuffer の変更部分だけを送信する。\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
56 4.RFB クライアントから FramebufferUpdateRequest が来るとそれに返信する。
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
57
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
58 \section{TreeVNC の構造}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
59 TreeVNC は Java を用いて作成された TightVNC を元に構成されている。TreeVNC はクライアント同士を接続させ、データを受け取ったクライアントが次のクライアントにそのデータを流す方式を取っている。また、サーバへ接続しにきたクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。バイナリツリー状に接続することで、N 台のクライアントが接続しにきた場合、画面配信の画像データをコピーする回数が従来の VNC ではサーバが N 回コピーする必要があるが、TreeVNC では各ノードが2回ずつコピーするだけで済み、負荷を分散することができる。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
60
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
61 TreeVNC で送受信される画像データ量は莫大であり、大きなネットワークスループットが必要となるため、現在では有線接続が必須となっている。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
62
3
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
63 バイナリツリーのルートのノードを Root Node と呼び、そこに接続されるノードを Node と呼ぶ。Root Node は\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
64 1.子 Node にデータを流す機能\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
65 2.各 Node の管理\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
66 3.VNC サーバから流れてきたデータの管理\\
1
1bcb7ef1d5ac add sentences to tex
oshiro
parents: 0
diff changeset
67 を担っている。\\
3
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
68 各 Node は\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
69 1.親 Node から送られてきたデータを自身の子 Node に流す機能\\
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
70 2.子 Node から送られてきたデータを親 Node に流す機能\\
1
1bcb7ef1d5ac add sentences to tex
oshiro
parents: 0
diff changeset
71 を担っている。
1bcb7ef1d5ac add sentences to tex
oshiro
parents: 0
diff changeset
72
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
73 \begin{figure}[htbp]
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
74 \begin{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
75 \includegraphics[scale=0.5]{./images/treeVnc.pdf}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
76 \end{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
77 \caption{構成される木構造}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
78 \label{fig:tree}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
79 \end{figure}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
80
1
1bcb7ef1d5ac add sentences to tex
oshiro
parents: 0
diff changeset
81 \section{TreeVNC の原理}
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
82 従来の VNC と TreeVNC の構造(図\ref{fig:treeVncTheory})の比較を行い、TreeVNC の原理と性能を示す。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
83
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
84 \begin{figure}[htbp]
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
85 \begin{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
86 \includegraphics[scale=0.25]{./images/treeVncTheory}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
87 \end{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
88 \caption{ポート一本にかかる負荷}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
89 \label{fig:treeVncTheory}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
90 \end{figure}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
91
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
92 表\ref{tb:treeVncTheory}はそれぞれのポート一本あたりの通信量である。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
93 通常の VNC の場合、クライアント数に比例してポート一本あたりの負荷が増えている。TreeVNC の場合は1つの Node に対して2台の Node が接続するため、最大でも親から送信されるデータと2つの子に送信するデータ分の負荷になる。
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
94
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
95 送信するデータ量も通常の VNC の場合 Node 数に比例した量のデータを送信する必要があり、CPU に負荷がかかってしまう。それに対して TreeVNC はクライアントが増えても送信するデータはクライアント毎に分散されているため、1台の CPU に掛かる負荷は一定となる。そのため、性能が低下せずに画面配信を行うことが出来る。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
96
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
97 \begin{table}[htbp]
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
98 \begin{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
99 \caption{ポート一本あたりの通信量(N はノード数, d はデータ量)}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
100 \begin{tabular}{|l|l|l|} \hline
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
101 & 通常の VNC & TreeVNC \\ \hline
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
102 通信量 & N * d & (2 + 1) * d \\ \hline
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
103 \end{tabular}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
104 \label{tb:treeVncTheory}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
105 \end{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
106 \end{table}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
107
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
108 \section{圧縮形式}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
109 TreeVNC は ZRLEE というエンコードでデータのやり取りを行う。ZRLEE は RFB プロトコルで使えるエンコーディングタイプの ZRLE を元に生成され、ZRLE は Zlib で圧縮されたデータとそのデータのバイト数がヘッダーとして付けて送られてくる。また Zlib は java.util.zip.deflater と java.util.zip.inflater で圧縮と解凍が行える。
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
110
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
111 しかし、java.util.zip.deflater は解凍に必要な辞書を書き出す(flush)ことが出来ない。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
112 そのため図\ref{fig:zrleFail} のように、Zlib 圧縮されたデータを途中から受け取ってもデータを正しく解凍することが出来ない。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
113
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
114 そこで ZRLEE は 一度 Root Node で受け取った ZRLE のデータを unzip し、 データを update rectangle という画面毎のデータに辞書を付けて zip し直すことで初めからデータを呼んでいなくても解凍を行えるようになっている(図\ref{fig:zrlee})。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
115 一度 ZRLEE に変換してしまえば子 Node はそのデータをそのまま流すだけで良い。ただし、deflater と inflater では前回までの通信で得た辞書をクリアしないといけないため、 Root Node と Node 側では毎回新しく作る必要がある。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
116
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
117 \begin{figure}[htbp]
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
118 \begin{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
119 \includegraphics[scale=0.4]{./images/zrleFail.pdf}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
120 \end{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
121 \caption{ZRLEでの問題点}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
122 \label{fig:zrleFail}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
123 \end{figure}
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
124
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
125 \begin{figure}[htbp]
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
126 \begin{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
127 \includegraphics[scale=0.4]{./images/zrlee.pdf}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
128 \end{center}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
129 \caption{ZRLEE}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
130 \label{fig:zrlee}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
131 \end{figure}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
132
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
133 \newpage
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
134 \section{マルチキャスト配信への対応}
3
b57a41c000a1 Correction
oshiro
parents: 2
diff changeset
135 TreeVNC は現在有線接続でのみ安定した動作をみせている。しかし、講義の際、毎回コードを持参することは負担であるため、無線接続での安定した動作を確立したい。そこで、Wi-Fiを利用したマルチキャストの対応を行う。
2
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
136
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
137 \section{まとめ}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
138 本研究では TreeVNC によるマルチキャスト配信への対応を行っている。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
139
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
140 この研究により今後の TreeVNC の利用時に無線 LAN を使っての接続がより快適なものになると考えられる。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
141
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
142 今後の課題としては、 無線 LAN で送信できるサイズへのデータ分割、圧縮などが挙げられる。
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
143
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
144 \nocite{*}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
145 \bibliographystyle{junsrt}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
146 \bibliography{reference}
8e83c0829c7c add sentences and images
oshiro
parents: 1
diff changeset
147
0
5424f9d691d1 "First Commit"
e155702
parents:
diff changeset
148 \end{document}