1
|
1 % withpage: ページ番号をつける (著者確認用)
|
7
|
2 \documentclass[dvipdfmx]{ipsjprosym}
|
2
|
3 \usepackage[dvipdfmx]{graphicx}
|
4
|
4 \usepackage{url}
|
|
5 \usepackage{listings, jlisting}
|
|
6 \lstset{%
|
|
7 language={java},%使用言語
|
|
8 basicstyle={\small},%書体
|
|
9 commentstyle={\small\itshape},%コメントの書体
|
|
10 keywordstyle={\small\bfseries},%キーワードの書体
|
|
11 %identifierstyle={\small},%
|
|
12 %ndkeywordstyle={\small},%
|
|
13 stringstyle={\small},%文字列の書体
|
|
14 frame={trlb},%外枠
|
|
15 breaklines=true,%改行
|
2
|
16 columns=[l]{fullflexible},%
|
|
17 xrightmargin=0zw,%
|
4
|
18 xleftmargin=3zw,%
|
|
19 numbers=left,%行番号の表示
|
|
20 numberstyle={\scriptsize},%行番号の書体
|
|
21 numbersep=1zw,%
|
2
|
22 stepnumber=1,
|
4
|
23 lineskip=-0.5ex,%
|
|
24 captionpos=b,%キャプションの位置
|
|
25 moredelim=**[s][\color{red}]{\"compressed}{\"},
|
2
|
26 }
|
4
|
27 \renewcommand{\lstlistingname}{Code}
|
2
|
28 \input{dummy.tex} %% Font
|
0
|
29
|
|
30 \begin{document}
|
|
31
|
2
|
32 % ユーザー定義したマクロなど
|
|
33 \makeatletter
|
|
34 \let\@ARRAY\@array \def\@array{\def\<{\inhibitglue}\@ARRAY}
|
|
35 \def\<{\(\langle\)}
|
|
36 \def\>{\(\rangle\)}
|
|
37 %\def\|{\verb|}
|
|
38 \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline}
|
|
39 \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\}
|
|
40 \def\LATEX{\iLATEX\Large}
|
|
41 \def\LATEx{\iLATEX\normalsize}
|
|
42 \def\LATex{\iLATEX\small}
|
|
43 \def\iLATEX#1{L\kern-.36em\raise.3ex\hbox{#1\bf A}\kern-.15em
|
|
44 \ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}
|
|
45 \def\LATEXe{\ifx\LaTeXe\undefined \LaTeX 2e\else\LaTeXe\fi}
|
|
46 \def\LATExe{\ifx\LaTeXe\undefined \iLATEX\scriptsize 2e\else\LaTeXe\fi}
|
|
47 \def\Quote{\list{}{}\item[]}
|
|
48 \let\endQuote\endlist
|
|
49 \def\TT{\if@LaTeX@e\tt\fi}
|
|
50 \def\CS#1{\if@LaTeX@e\tt\expandafter\string\csname#1\endcsname\else
|
|
51 $\backslash$#1\fi}
|
0
|
52
|
2
|
53 % Title, Author %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
7
|
54 \title{有線 LAN 上のPC画面配信システムTreeVNCの改良}
|
0
|
55
|
2
|
56 \affiliate{IE}{琉球大学工学部情報工学科}
|
|
57
|
|
58 \author{伊波 立樹}{Tatsuki IHA}{IE}
|
|
59 \author{河野 真治}{Shinji KONO}{IE}
|
0
|
60
|
|
61 \begin{abstract}
|
2
|
62 ゼミや授業等で、それぞれがPC端末を持っている場合では、PCの機能を活かしたコミュニケーションが可能である。教員が操作する画面をそのまま学生に配信したり, ゼミなどで、発表する学生の画面を切り替えたりすることを可能にしたい。
|
|
63 TreeVNCは参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる仕組みを取っている。そのため,多人数が参加しても処理性能が下がらない。また、ツリーのRootが見ているVNCサーバーを変更することで、ケーブルの差し替えなしに画面の切替が可能となる。
|
|
64 今研究ではTreeVNCの改良として、WANへの対応、 マルチディスプレイへの対応を行う。
|
0
|
65 \end{abstract}
|
|
66
|
|
67 \begin{jkeyword}
|
|
68 \end{jkeyword}
|
|
69
|
|
70 \maketitle
|
|
71
|
|
72 % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
2
|
73 \section{研究背景と目的}
|
|
74 ゼミや授業等で、それぞれがPC端末を持っている場合では、
|
|
75 PCの機能を活かしたコミュニケーションが可能である。
|
|
76 教員が操作する画面をそのまま学生に配信したり、
|
|
77 ゼミなどで、発表する学生の画面を切り替えたりすることを可能にしたい。
|
|
78
|
7
|
79 TreeVNC画面配信システム\cite{oc:thesis}\cite{taninari:2012a}は、
|
2
|
80 参加したクライアントをバイナリツリー状に接続し、
|
|
81 配信コストをクライアントにバランスさせる仕組みになっている。
|
|
82 なので、多人数が参加しても処理性能が下がらない。
|
|
83 また、RFBプロトコルを用いているので、ケーブルの差し替えなしに
|
|
84 共有している画面の切り替えが可能になっている。
|
|
85
|
10
|
86 今研究では、 WAN 、マルチディスプレイへの対応を行った。
|
6
|
87 WANへの対応として、新しい接続方法を提案し、実装を行った。
|
|
88 また、マルチディスプレイへの対応としては配信する際に、配信するディスプレイ情報を取得し、配信を行うことで、対応した。
|
2
|
89
|
|
90 \section{画面配信システムTreeVNC}
|
|
91 \subsection*{[RFBプロトコル]}
|
|
92 RFB(remote frame buffer)プロトコル\cite{rfbProtocol}とは、自身の画面を送信し、ネットワーク越しに他者の画面に表示するプロトコルである。
|
|
93 ユーザが居る側をRFBクライアント側と呼び、Framebufferへの更新が行われる側はRFBサーバと呼ぶ。
|
|
94 Framebufferとは、メモリ上に置かれた画像データのことである。
|
|
95 RFBプロトコルでは、最初にプロトコルバージョンの確認や認証が行われる。
|
|
96 その後、クライアントに向けてFramebufferの大きさやデスクトップに付けられた名前などが含まれている初期メッセージが送信される。
|
|
97 RFBサーバ側はFramebufferの更新が行われるたびに、RFBクライアントに対してFramebufferの変更部分だけを送信する。
|
|
98 更にRFBクライアントのFramebufferUpdateRequestが来るとそれに答え返信する。
|
|
99 RFBプロトコルは、描画データに使われるエンコードが多数用意されており、また独自のエンコードを実装することもできるプロトコルである。
|
|
100
|
|
101 \subsection*{[TightVNC]}
|
|
102 TightVNC(Tight Virtual Network Computing)\cite{tightvnc}はJavaを用いて作成されたRFBプロトコルのクライアントである。
|
|
103 本研究で作成したTreeVNCはTightVNCを元に作成されている。
|
0
|
104
|
2
|
105 \subsection*{[多人数で VNC を使用する時の問題点]}
|
|
106 多人数で従来の VNC を使用する際、1つのコンピュータに多人数が同時につながり、
|
|
107 処理が集中してしまい、性能が大幅に落ちてしまうという問題が生じる。
|
|
108
|
|
109 ゼミ等の画面配信者が頻繁に切り替わる場合、
|
|
110 配信者が替わる度にアプリケーションを終了し、接続をし直さないといけないという問題がある。
|
|
111
|
|
112 \subsection*{[TreeVNC の構造]}
|
|
113 多人数で VNC を用いるために、クライアントの接続がサーバに一極集中してしまう問題を解決する。
|
|
114 そのために、 TreeVNC はサーバへ接続しに来たクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。
|
|
115 バイナリツリーなら、各nodeに最大2台分のクライアントしか接続されない。
|
|
116 $N$台のクライアントが接続しに来た場合、画面配信の画像データをコピーする回数は、
|
|
117 従来の VNC ではサーバ側で$N$回する必要があるが、TreeVNCでは各 node が2回ずつコピーするだけで済む。
|
|
118 TreeVNC は、root への負荷を各 node に分散することにより、処理性能が向上している。
|
|
119
|
4
|
120 \begin{figure}[ht]
|
2
|
121 \begin{center}
|
|
122 \includegraphics[width=70mm]{./pic/TreeVNC.pdf}
|
|
123 \end{center}
|
|
124 \caption{構成される木構造}
|
|
125 \label{fig:tree}
|
|
126 \end{figure}
|
|
127
|
|
128 \subsection*{[Multicast や Broadcast を用いたVNC]}
|
|
129 Multicast とは、
|
|
130 同一ネットワーク内でマルチキャストアドレスを持っている端末に対してデータを送信することである。
|
|
131 Broadcast とは、
|
|
132 同一ネットワーク上の全ての端末に対してデータを送信することである。
|
|
133 どちらの通信方法も、root からのデータ送信は1回でよく、
|
|
134 1度データの送信を行うとデータの複製はルータが行う。
|
|
135
|
|
136 VNC を Multicast や Broadcast の通信方法を用いて実装すると、
|
|
137 画像データの送信が1度で済むため、負荷分散のために木構造を形成する必要もなくなる。
|
|
138
|
|
139 しかし、これらの通信方法でのパケットの扱いには
|
|
140 \begin{itemize}
|
|
141 \item 送信可能なパケットのブロックサイズが 64000byte までであると決まっている
|
|
142 \item パケットが途中で消失してしまっても特定することができない
|
|
143 \end{itemize}
|
|
144 といった性質がある。
|
|
145
|
0
|
146
|
2
|
147 VNC でこれらの通信方法を用いて実装する場合、
|
|
148 パケットの扱いの性質を乗り越えなければならない。
|
|
149
|
|
150 送信可能なパケットのサイズが決まっているので、
|
|
151 画面データは 64000byte 以下に分割し送信しなければならない。
|
|
152 しかし、現在の TreeVNC で用いている方法では、
|
|
153 データ分割の処理には時間がかかってしまう。
|
0
|
154
|
2
|
155 パケットの消失を検知するために、
|
|
156 各パケットに対してシリアル番号を振り分ける。
|
|
157 パケットを受信した node 側で、
|
|
158 シリアル番号が連番で届いているのかどうかを調べれば、消失を検知することが可能である。
|
|
159 もしパケットが届いていなかった場合は、root に対して再送要求を送信すれば良い。
|
|
160 しかし、Multicast や Broadcast 通信ではパケットロス率が高かった。
|
|
161
|
|
162 これらの通信方法を用いての VNC の実装にはもう更なる工夫が必要である。
|
|
163
|
|
164
|
|
165
|
|
166 \subsection*{[node 間で行われるメッセージ通信]}
|
|
167 RFBプロトコルで提供されているメッセージに加え、 TreeVNC 独自のメッセージを使用している。
|
4
|
168 TreeVNC で使用されるメッセージの一覧を表\ref{tb:message}に示す。
|
2
|
169
|
|
170
|
4
|
171 \begin{table}[h!]
|
|
172 \large
|
|
173 \scalebox{0.4} {
|
|
174 \begin{tabular}{|l|l|l|} \hline
|
|
175 通信経路 & message & 説明 \\ \hline \hline
|
|
176 & FIND\_ROOT & TreeVNC接続時にrootを探す。 \\ \cline{2-3}
|
|
177 send direct message & WHERE\_TO\_CONNECT & 接続先をrootに聞く。 \\ \cline{2-3}
|
|
178 (child to root) & LOST\_CHILD & 子nodeの切断をrootに知らせる。 \\ \hline \hline
|
|
179
|
|
180 & FIND\_ROOT\_REPLY & FIND\_ROOTへの返信。 \\ \cline{2-3}
|
|
181 send direct message & CONNECT\_TO\_AS\_LEADER & 左子nodeとして接続する。接続先のnodeが含まれている。 \\ \cline{2-3}
|
|
182 (root to child) & CONNECT & 右子nodeとして接続する。接続先のnodeが含まれている。 \\ \hline \hline
|
|
183
|
|
184 message down tree & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。\\ \cline{2-3}
|
|
185 (root to child) & CHECK\_DELAY & 通信の遅延を測定する。 \\ \hline \hline
|
|
186
|
|
187 message up tree & CHECK\_DELAY\_REPLY & CHECK\_DELAYへの返信。 \\ \cline{2-3}
|
|
188 (child to root) & SERVER\_CHANGE\_REQUEST & 画面切り替え要求。 \\ \hline \hline
|
|
189
|
|
190 & FRAMEBUFFER\_UPDATE\_REPLY & 画像データの要求。 \\ \cline{2-3}
|
|
191 send message & SET\_PIXEL\_FORMAT & pixel値の設定。 \\ \cline{2-3}
|
|
192 (root to VNCServer) & SET\_ENCODINGS & pixelデータのencodeTypeの設定。 \\ \cline{2-3}
|
|
193 & KEY\_EVENT & キーボードからのイベント。 \\ \cline{2-3}
|
|
194 & POINTER\_EVENT & ポインタからのイベント。 \\ \cline{2-3}
|
|
195 & CLIENT\_CUT\_TEXT & テキストのカットバッファを持った際のmessage。 \\ \hline \hline
|
|
196
|
|
197 & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。 \\ \cline{2-3}
|
|
198 send message & SET\_COLOR\_MAP\_ENTRIES & 指定されているpixel値にマップするRGB値。 \\ \cline{2-3}
|
|
199 (VNCServer to root) & BELL & ビープ音を鳴らす。 \\ \cline{2-3}
|
|
200 & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline
|
|
201 \end{tabular}
|
|
202 }
|
|
203 \caption{通信経路とメッセージ一覧}
|
|
204 \label{tb:message}
|
|
205 \end{table}
|
|
206
|
|
207
|
|
208 図\ref{fig:message}は
|
2
|
209 TreeVNC で node が root に接続し、画像データを受信するまでのメッセージ通信の様子である。
|
|
210
|
4
|
211 手順として
|
2
|
212
|
0
|
213 \begin{itemize}
|
2
|
214 \item nodeはMulticast通信でrootに対してFIND\_ROOTを送信する(1:findRoot())
|
|
215 \item rootがFIND\_ROOTを受信し、FIND\_ROOT\_REPLYを送信する(2:findRootReplay())
|
|
216 \item node側で、どのrootに接続するかを選択するパネルが表示される
|
|
217 \item nodeはパネルで接続するrootを選択し、rootに対して接続先を要求するWHERE\_TO\_CONNECTを送信する(3:whereToConnect())
|
|
218 \item 受信したrootはnodeの接続先をCONNECT\_TOで送信する(4:connectTo)
|
|
219 \item nodeはrootの指定した接続先に接続しに行く
|
|
220 \item root・node間の接続が確立後、rootからnodeに対して定期的に画像データFRAME\_BUFFER\_UPDATEを送信する(5:framebufferUpdate())
|
0
|
221 \end{itemize}
|
|
222
|
4
|
223 を行っている。
|
|
224
|
|
225 \begin{figure}[ht]
|
|
226 \begin{center}
|
|
227 \includegraphics[width=65mm]{./pic/message.pdf}
|
|
228 \end{center}
|
|
229 \caption{node 間で行われるメッセージ通信}
|
|
230 \label{fig:message}
|
|
231 \end{figure}
|
|
232
|
|
233
|
2
|
234 \subsection*{[配信画面切り替え]}
|
|
235 ゼミでは発表者が順々に入れ替わる。発表者が入れ替わる度に共有する画面の切り替えが必要となる。
|
|
236 ゼミを円滑に進めるために、画面の切り替えをスムーズに行いたい。
|
|
237
|
|
238 画面の共有にプロジェクタを使用する場合、
|
|
239 発表者が変わる度にケーブルの抜き差しを行わないとならない。
|
|
240 その際に、ディスプレイ解像度を設定し直す必要が出たり、
|
|
241 接続不良が起こる等の煩わしい問題が生じることがある。
|
|
242
|
|
243 従来のVNCを使用する場合、
|
|
244 画面の切り替えの度に一旦VNCを終了し、発表者のVNCServerへと再接続を行う必要がある。
|
|
245
|
|
246 TreeVNC は、配信者の切り替えの度に生じる問題を解決している。
|
|
247 TreeVNC を立ち上げることで、ケーブルを使用する必要なしに、
|
|
248 各参加者の手元のPCに発表者の画面を共有することができる。
|
|
249 画面の切り替えは、ユーザがVNCSeverへの再接続を行うことなく、
|
|
250 share button を押すことによって、配信者の切り替えを行うことができる。
|
|
251
|
|
252 TreeVNC の root は配信者の VNCServer と通信を行っている。
|
|
253 VNCServer から画面データを受信し、そのデータを node へと送信している。
|
|
254 配信者切り替え時に share button が押されると、
|
|
255 root は share button を押したクライアントの VNCServer と通信を始める。
|
|
256 TreeVNCは、配信者切り替えの度に VNC を終了し、再接続する必要がない。
|
|
257
|
|
258 しかし、配信者と受信者の画面サイズの違いや、
|
|
259 マルチディスプレイ全体を共有してしまう問題があるので、
|
|
260 それらを解決する必要がある。
|
|
261
|
|
262 \section{QUALITYモードとSPEEDモード}
|
|
263 高解像度のまま拡大・縮小の処理を行うと、
|
|
264 PC のスペックによっては描画処理に時間がかかってしまうことがある。
|
|
265 配信者の画面をリアルタイムに取得するため、
|
|
266 描画処理に時間のかからないモードを追加する。
|
|
267
|
|
268 画像描画処理には、
|
|
269 高画質優先の QUALITY モードと描画速度優先の SPEED モードがある。
|
|
270 今まで TreeVNC は QUALITY モードで使用していた。
|
|
271
|
4
|
272 今回、どちらのモードを使用するかを Viewer から変更出来るようにした。
|
2
|
273 これにより、描画処理の遅延を解決することができた。
|
|
274
|
|
275 \section{マルチディスプレイ対応}
|
3
|
276 画面配信側のPCがマルチディスプレイの場合、
|
|
277 VNCServer からは複数の画面全体の画像データが送信されてしまう。
|
2
|
278
|
3
|
279 授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。
|
|
280 そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した。
|
|
281
|
|
282 ディスプレイの情報は個々のクライアントでしか取得ができない。
|
|
283 なので、配信側は画面の切替を行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。
|
4
|
284 その座標を root への画面切り替えを要求する SERVER\_CHANGE\_REQUEST message に付加させる。
|
|
285 root は 配信側の VNCServer に画像データを要求する FRAMEBUFFER\_UPDATE\_REPLY message に送信された座標を付加する。
|
|
286 VNCServer は要求された座標内の画像データを FRAMEBUFFER\_UPDATE message で root に送信する。
|
3
|
287 これにより、一画面のみの表示が可能となる。
|
2
|
288
|
4
|
289 図\ref{fig:multidisplay} は Display1 のみを画面共有する例を示している。
|
|
290
|
|
291 \begin{figure}[ht]
|
2
|
292 \begin{center}
|
3
|
293 \includegraphics[width=70mm]{./pic/shareScreenToMultiDisplay.pdf}
|
2
|
294 \end{center}
|
3
|
295 \caption{マルチディスプレイへの対応}
|
2
|
296 \label{fig:multidisplay}
|
|
297 \end{figure}
|
|
298
|
|
299 \section{無線LANへの対応}
|
|
300 授業でTreeVNCを使用する場合、
|
|
301 有線を使用するか否かは学生によって違う。
|
|
302 TreeVNCを有線・無線の両方からの接続に対応したい。
|
|
303
|
|
304 従来の TreeVNC は、クライアントの接続する木構造が単一であった。
|
|
305 そのため、単一のネットワークインターフェースでしか使用することができなかった。
|
|
306
|
|
307 この問題を解決するために、
|
|
308 図\ref{fig:multinetworktree}の様に、ネットワークインターフェース別に
|
|
309 木構造を形成するように設計した。
|
|
310
|
4
|
311 \begin{figure}[ht]
|
2
|
312 \begin{center}
|
|
313 \includegraphics[width=70mm]{./pic/MultiNetworkTree.pdf}
|
|
314 \end{center}
|
|
315 \caption{Multi Network Tree}
|
|
316 \label{fig:multinetworktree}
|
|
317 \end{figure}
|
|
318
|
7
|
319 TreeVNC は root が TreeManager というオブジェクトを持っている。
|
2
|
320 TreeManager は TreeVNC の接続部分を管理している。
|
|
321 TreeManager では木構造を管理する nodeList が生成される。
|
|
322 この nodeList を元に、新しい node の接続や、node の切断検出時の接続の切り替え等を行う。
|
|
323
|
|
324 root の保持しているネットワークインタフェース毎に
|
|
325 TreeManager を生成する様に変更した。
|
|
326
|
7
|
327 新しい node が接続してきた際、 interfaces から node のネットワークインタフェースと一致する TreeManager を取得する。
|
2
|
328 その TreeManager に、node 接続の処理を任せる。
|
|
329
|
|
330 こうすることによって、TreeVNC を複数のネットワークインターフェース別に
|
|
331 木構造を構成することができる。
|
|
332
|
|
333 \section{WANへの対応}
|
|
334 遠隔地からでもゼミや授業に参加できるよう、
|
4
|
335 別ネットワークから TreeVNC への接続を可能にした。
|
|
336
|
|
337 図\ref{fig:directConnection} に別ネットワークからの接続を示す。
|
|
338 別ネットワークからTreeVNCに参加する際、 直接配信側のネットワークの root に接続を行う。
|
|
339 この接続を Direct Connection と呼ぶ。
|
|
340
|
7
|
341 Direct Connection した node はそのネットワークの root になり、node はそのネットワークの root に接続し、木構造を生成する。
|
2
|
342
|
4
|
343 配信側の root は Direct Connection で接続された node に対して Framebuffer Update で 画像データを別ネットワークの node に送信する。
|
|
344 Framebuffer Update が送信された node はそのネットワークの root なので、子 node に対して Framebuffer Update を送信する。
|
|
345
|
|
346 これにより、別ネットワークでの画面共有が可能となる。
|
2
|
347
|
4
|
348 \begin{figure}[ht]
|
2
|
349 \begin{center}
|
4
|
350 \includegraphics[width=80mm]{./pic/directConnection.pdf}
|
|
351 \caption{遠隔地 node からの接続}
|
|
352 \label{fig:directConnection}
|
2
|
353 \end{center}
|
|
354 \end{figure}
|
|
355
|
|
356
|
|
357 \section{評価}
|
|
358 \subsection*{[木の深さによるメッセージ伝達の遅延]}
|
|
359 VNCServer から受信する画像データ、
|
|
360 TreeVNC で扱われるメッセージ通信は構成された木を伝って伝達される。
|
|
361 接続する人数が増える毎に木の段数は増えていく。
|
|
362 そこで root から木の末端の node まで、
|
|
363 メッセージが遅延することなく伝達できているかを検証する実験を行った。
|
|
364
|
|
365
|
|
366 \subsection*{[実験環境]}
|
|
367 授業を受講している学生が TreeVNC を使用した状態で実験を行った。
|
|
368 TreeVNC には最大で34名が接続していた。
|
|
369
|
|
370 \subsection*{[メッセージを使用した実測]}
|
|
371 TreeVNC を伝搬するメッセージに、CHECK\_DELAY・CHECK\_DELAY\_REPLY を追加した。
|
|
372 CHECK\_DELAY は root から node の末端まで伝達するメッセージ(図\ref{fig:checkdelay}, 左)、
|
|
373 CHECK\_DELAY\_REPLY は各 node から root まで伝達するメッセージ(図\ref{fig:checkdelay}, 右)である。
|
|
374
|
4
|
375 \begin{figure}[ht]
|
2
|
376 \begin{center}
|
|
377 \includegraphics[width=70mm]{./pic/checkDelay.pdf}
|
|
378 \end{center}
|
|
379 \caption{CHECH\_DELAY, CHECK\_DELAY\_REPLY}
|
|
380 \label{fig:checkdelay}
|
|
381 \end{figure}
|
0
|
382
|
2
|
383 CHECK\_DELAY message は、送信時刻を付けて送信する。
|
|
384 root から CHECK\_DELAY 送信し、
|
|
385 末端 node まで各 node を伝いながら伝達して行く。
|
|
386
|
8
|
387 CHECK\_DELAY\_REPLY には CHECK\_DELAY から受け取った送信時刻をそのまま付つけて送信する。
|
|
388 CHECK\_DELAY を受け取った各 node は CHECK\_DELAY\_REPLY を接続している親 node に送信する。
|
2
|
389
|
|
390 CHECK\_DELAY\_REPLY を受け取った root は、
|
|
391 メッセージの伝達にどれだけの時間がかかったかを計算する。
|
|
392
|
|
393 計算方法を以下のソースコード\ref{calc}に記述する。
|
|
394 各 node にデータを下ろす際も、root にデータが上る際も、
|
|
395 木を伝い受け渡されている。
|
|
396 なので、データが root から末端 node に伝わる時間は、
|
|
397 CHECK\_DELAY を送信した時間と、
|
|
398 CHECK\_DELAY\_REPLY を受信した時間の半分であるといえる。
|
|
399
|
4
|
400 \begin{table}[htb]
|
|
401 \begin{lstlisting}[label=calc, caption=遅延時間の計算方法]
|
2
|
402 Long delay = System.currentTimeMillis() - time;
|
|
403 double halfDelay = (double) delay / 2;
|
|
404 \end{lstlisting}
|
4
|
405 \end{table}
|
2
|
406
|
|
407
|
|
408 \subsection*{[depth毎の遅延結果]}
|
|
409 バイナリツリーで木を構成した場合、
|
|
410 node 数が34台だと深さが5となる。
|
|
411 各木構造の階層毎に、メッセージの伝搬にかかった時間を測定した。
|
|
412
|
|
413 図\ref{fig:test}は遅延の分布を示したヒストグラムである。
|
|
414 X軸はメッセージ伝達にかかった秒数(ms)、
|
|
415 Y軸は CHECK\_DELAY\_REPLY を送信した node の割合を表している。
|
|
416
|
|
417 ほとんどのメッセージの伝達は 0.0 〜 4.0 ミリ秒内に収まっている。
|
|
418 木の段数毎に、メッセージ伝達速度の差が生じている。
|
|
419 深い段数の node ほど、メッセージ伝達速度が落ちている。
|
|
420
|
|
421 \begin{figure}[h]
|
|
422 \begin{center}
|
|
423 \includegraphics[width=70mm]{./pic/test.pdf}
|
|
424 \end{center}
|
4
|
425 \caption{遅延の分布}
|
2
|
426 \label{fig:test}
|
|
427 \end{figure}
|
0
|
428
|
1
|
429 \section{まとめ}
|
4
|
430 本研究では画面配信システムTreeVNCをマルチディスプレイ、WAN に対応させた。
|
0
|
431
|
4
|
432 マルチディスプレイに対応したことで、 配信者が配信したいディスプレイを選択し、画面配信することが可能となった。
|
|
433
|
|
434 WANに対応することで別ネットワークにいるユーザーが TreeVNC に参加することが可能となった。
|
|
435
|
7
|
436 今後の課題として、画面切り替えの安定化、 WAN での画面切り替え、 ユーザビリティの向上、 共有機能の追加を行う。
|
0
|
437
|
4
|
438 現在のTreeVNCでは、share button を押すと、その時配信されている画面から、自動的に画面が切り替わってしまうという問題がある。
|
|
439 それを防ぐために share button が押されるとその時の配信者に切り替え確認を行う処理を追加する。
|
0
|
440
|
7
|
441 今回追加した Direct Connection などの一部の機能はコマンドラインオプションで指定する必要があるため、一般ユーザーでは操作するのが困難である。
|
4
|
442 そこで、 今までコマンドラインオプションで指定していた機能を Viewer で操作するように変更を行う。
|
|
443
|
7
|
444 共有機能の追加としては、音声、講義中の質問・意見 等が挙げられる。
|
|
445
|
4
|
446 \nocite{*}
|
|
447 \bibliographystyle{ipsjunsrt}
|
|
448 \bibliography{prosym}
|
0
|
449
|
|
450 \end{document}
|