annotate paper/main.tex @ 39:13c45eab34ba

Update
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Thu, 18 Feb 2016 09:20:34 +0900
parents d8660bf1da6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \documentclass[a4j,12pt]{jreport}
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
2 \usepackage[dvipdfmx]{graphicx}
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 \usepackage{mythesis}
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 \usepackage{multirow}
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 \usepackage{here}
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
6 \usepackage{url}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
7 \usepackage{listings, jlisting}
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
8
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
9 \input{dummy} %% font
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
10
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
11 \lstset{
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
12 language=java,
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
13 tabsize=2,
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
14 frame=single,
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
15 basicstyle={\ttfamily\footnotesize},%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
16 identifierstyle={\footnotesize},%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
17 commentstyle={\footnotesize\itshape},%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
18 keywordstyle={\footnotesize\bfseries},%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
19 ndkeywordstyle={\footnotesize},%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
20 stringstyle={\footnotesize\ttfamily},
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
21 breaklines=true,
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
22 captionpos=b,
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
23 columns=[l]{fullflexible},%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
24 xrightmargin=0zw,%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
25 xleftmargin=1zw,%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
26 aboveskip=1zw,
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
27 numberstyle={\scriptsize},%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
28 stepnumber=1,
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
29 numbersep=0.5zw,%
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
30 lineskip=-0.5ex,
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
31 numbers=left
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
32 }
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
33 \renewcommand{\lstlistingname}{Code}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
34
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 \setlength{\itemsep}{-1zh}
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
36
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
37 \title{PC画面配信システムTreeVNCの NAT への対応}
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
38 %\title{Supporting NAT in Screen Sharing System TreeVNC}
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 \icon{
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
40 \includegraphics[width=80mm,bb=0 0 595 642]{fig/ryukyu.pdf} %%元は 642じゃなくて842
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
41 }
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
42 \year{平成27年度 卒業論文}
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 \belongto{琉球大学工学部情報工学科}
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
44 \author{125716B 伊波 立樹 \\ 指導教員 {河野 真治} }
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
45
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
46 %% TreeVNC のNATへの対応
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
47 %% マルチスクリーン TreeVNC
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 %% プリアンブルに記述
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 %% Figure 環境中で Table 環境の見出しを表示・カウンタの操作に必要
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 %%
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 \makeatletter
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 \newcommand{\figcaption}[1]{\def\@captype{figure}\caption{#1}}
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 \newcommand{\tblcaption}[1]{\def\@captype{table}\caption{#1}}
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 \makeatother
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 \setlength\abovecaptionskip{0pt}
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 \begin{document}
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 % タイトル
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 \maketitle
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 \baselineskip 17pt plus 1pt minus 1pt
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 \pagenumbering{roman}
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 \setcounter{page}{0}
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 \tableofcontents % 目次
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 \listoffigures % 図目次
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 \listoftables % 表目次
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 %以下のように、章ごとに個別の tex ファイルを作成して、
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 % main.tex をコンパイルして確認する。
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 %章分けは個人で違うので下のフォーマットを参考にして下さい。
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 % はじめに
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
75
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
76 \chapter{画面共有を利用したコミュニケーション}
19
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
77 授業やゼミ等で、それぞれが PC 端末を持っている場合では、
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
78 PC の機能を活かしたコミュニケーションが可能である。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
79
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
80 通常の授業では先生の用意した資料、 PC 画面を見ながら授業が進むことが多い。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
81 ゼミでは発表者を切り替えながら発表を行う。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
82
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
83 通常これらの画面を表示するためにプロジェクタが使用されている。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
84 しかし、プロジェクタでは通常の授業の際、参加者はプロジェクタに集中するため、手元の PC をほぼ使用することができない。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
85 更に手元の PC を使う際はプロジェクタと PC を行き来するため、目に負担がかかってしまう。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
86 またゼミの際には発表者を切り替えるたびにプロジェクタにケーブルを差し替える必要がある。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
87 ケーブルの差し替えの際に発表者の PC によってアダプターの種類や解像度の設定によって正常に PC 画面を表示できない場合もある。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
88
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
89 画面配信システム TreeVNC\cite{taninari:2011a}は発表者の画面を参加者の PC に表示する。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
90 そのため、参加者は不自由なく手元の PC を使用しながら授業を受ける事が可能になる。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
91 更に発表者の切り替えの際もケーブルの差し替えずに共有する画面の切替を可能としている。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
92
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
93 Tree VNC は VNC\cite{vnc} を使用した画面配信を行っている。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
94 しかし通常の VNC では配信側に全ての参加者が接続するため、多人数の際の処理性能が落ちてしまう。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
95 Tree VNC では有線でネットワークに接続した参加者をバイナリツリー状に接続し、 配信コストをクライアントに分散させる仕組みになっている。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
96 そのため、授業で先生の画面を表示する際、多人数の生徒が参加しても処理性能が下がらない。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
97 また、ツリーのルートが参照している VNC サーバーを変更することで、共有する画面の切替が可能となる。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
98
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
99 しかし TreeVNC を授業やゼミで使用している中、 様々な問題が発生した。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
100 NATを越えたネットワーク接続に対応しておらず、遠隔地などで授業やゼミに参加することが出来ない。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
101 また、ゼミの際に、マルチディスプレイを使用して画面配信を行う際、すべての画面が配信され、不必要な画面まで表示されてしまう。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
102
24
ad8f3cea4a16 Update prepaper
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
103
19
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
104 そこで、本研究では上記の問題点を解決し、TreeVNCの有用性を評価することで授業やゼミを円滑に行えることを目標とする。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
105
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
106 \label{chap:introduction}
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
107 \pagenumbering{arabic}
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
108
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
109 %序論の目安としては1枚半ぐらい.
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
110 %英語発表者は,最終予稿の「はじめに」の英訳などを載せてもいいかも.
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
111
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
113 \chapter{TreeVNC の概念}
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
114 \label{chap:concept}
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
115
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
116 \section{VNC}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
117 VNC(Virtual Network Computing) は、 RFBプロトコルを用いて遠隔操作を行うリモートデスクトップソフトウェアである。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
118 VNC はサーバー側とクライアント(ビューア)側に分かれている。 サーバを起動し、クライアントがサーバに接続を行い遠隔操作を可能とする。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
119
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
120 \section{RFB プロトコル}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
121 RFB(remote frame buffer)プロトコル\cite{rfbProtocol}とは、自身の画面を送信し、ネットワーク越しに他者の画面に表示するプロトコルである。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
122 ユーザが居る側をRFBクライアント側と呼び、Framebufferへの更新が行われる側はRFBサーバと呼ぶ。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
123 Framebufferとは、メモリ上に置かれた画像データのことである。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
124 RFBプロトコルでは、最初にプロトコルバージョンの確認や認証が行われる。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
125 その後、クライアントに向けてFramebufferの大きさやデスクトップに付けられた名前などが含まれている初期メッセージが送信される。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
126 RFBサーバ側はFramebufferの更新が行われるたびに、RFBクライアントに対してFramebufferの変更部分だけを送信する。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
127 更にRFBクライアントのFramebufferUpdateRequestが来るとそれに答え返信する。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
128 RFBプロトコルは、描画データに使われるエンコードが多数用意されており、また独自のエンコードを実装することもできるプロトコルである。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
129
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
130 \section{多人数で VNC を使用する際の問題}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
131 VNCを使用すればクライアント側にサーバー側の画面を表示することが可能である。
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
132 しかし、図\ref{fig:vnc}のように多人数のクライアントが1つのサーバーに接続してしまうと処理性能が落ちてしまうという問題点がある。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
133
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
134 また、 ゼミ等の発表で画面配信者が頻繁に切り替わる場合、配信者が替わる度にアプリケーションを終了し、接続をし直さないといけないという問題がある。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
135
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
136 \begin{figure}[htbp]
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
137 \begin{center}
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
138 \includegraphics[scale=0.8]{./images/vnc.pdf}
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
139 \end{center}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
140 \caption{VNCの構造}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
141 \label{fig:vnc}
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
142 \end{figure}
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
143
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
144 \section{TreeVNC の構造}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
145 TreeVNC は Java を用いて作成された TightVNC(Tight Virtual Network Computing)\cite{tightvnc} を元に作成されている。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
146
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
147 TreeVNC は クライアント同士を接続させ、画面描画のデータを受け取ったクライアントが次のクライアントにデータを流す方式を取っている。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
148 また、サーバへ接続しに来たクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
149 バイナリツリー状に接続することで、$N$ 台のクライアントが接続しに来た場合、画面配信の画像データをコピーする回数は従来の VNC ではサーバ側で$N$ 回する必要があるが、TreeVNCでは各ノードが2回ずつコピーするだけで済む。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
150
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
151 TreeVNCで通信される画像のデータ量は大きいため、大きなネットワークスループットが必要である。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
152 そのため、有線接続が必須である。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
153
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
154 バイナリツリーのルートのノードを Root Node と呼び、 Root Node に接続されるノードを Node と呼ぶ
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
155 Root Node は子 Nodeにデータを流す機能に加え、各 Node の管理、 VNC サーバーから流れてきた画像データの管理を行う。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
156 Node は 親 Node から送られたデータを 自分の子 Node に流す機能、 逆に子 Node から送られてきたデータを 親 Node に流す機能がある。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
157
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
158 \begin{figure}[htbp]
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
159 \begin{center}
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
160 \includegraphics[scale=0.8]{./images/treeVnc.pdf}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
161 \end{center}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
162 \caption{構成される木構造}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
163 \label{fig:tree}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
164 \end{figure}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
165
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
166 \newpage
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
167
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
168 \section{TreeVNC の原理}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
169 従来の VNC と TreeVNC の構造を比較を図\ref{fig:treeVncTheory}に示す。
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
170
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
171 \begin{figure}[htbp]
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
172 \begin{center}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
173 \includegraphics[scale=0.5]{./images/treeVncTheory}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
174 \end{center}
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
175 \caption{ポート一本にかかる負荷}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
176 \label{fig:treeVncTheory}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
177 \end{figure}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
178
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
179 表\ref{tb:treeVncTheory}はポート一本あたりの通信量である。
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
180 通常の VNC の場合、クライアント数に比例してポート一本あたりの負荷が増えている。
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
181 TreeVNC の場合は1つの Node に対して2台の Node が接続するため、最大でも親から送信されるデータと2つの子に送信するデータ分の負荷になる。
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
182
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
183 送信するデータ量も通常の VNC の場合 Node 数に比例した量のデータを送信する必要があり、 CPU に負荷がかかってしまう。
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
184 それに対して TreeVNC はクライアントが増えても送信するデータはクライアント毎に分散されているため、1台の CPU に掛かる負荷は一定となる。
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
185 そのため、性能が低下せずに画面配信を行うことが出来る。
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
186
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
187 \begin{table}[htbp]
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
188 \begin{center}
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
189 \caption{ポート一本あたりの通信量(N はノード数, d はデータ量)}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
190 \begin{tabular}{|l|l|l|} \hline
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
191 & 通常の VNC & TreeVNC \\ \hline
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
192 通信量 & N * d & (2 + 1) * d \\ \hline
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
193 \end{tabular}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
194 \label{tb:treeVncTheory}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
195 \end{center}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
196 \end{table}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
197
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
198 \newpage
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
199
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
200 \section{圧縮形式}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
201 TreeVNC は ZRLEE\cite{taninari:2012a} というエンコードでデータのやり取りを行う。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
202 ZRLEE はRFB プロトコルで使えるエンコーディングタイプの ZRLE を元に生成される。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
203
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
204 ZRLE は Zlib\cite{zlib} で圧縮されたデータとそのデータのバイト数がヘッダーとして付けて送られてくる。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
205 Zlib は java.util.zip.deflater と java.util.zip.inflater で圧縮と解凍が行える。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
206
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
207 しかし、 java.util.zip.deflater は解凍に必要な辞書を書き出す(flush)ことが出来ない。
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
208 そのため図\ref{fig:zrleFail} のように、 Zlib圧縮されたデータを途中から受け取ってもデータを正しく解凍することが出来ない。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
209
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
210 そこで ZRLEE は 一度 Root Node で受け取った ZRLE のデータを unzip し、 データをupdate rectangle という画面毎のデータに辞書を付けて zip し直すことで初めからデータを呼んでいなくても解凍を行えるようにした(図\ref{fig:zrlee})。
27
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
211 % ZRLEE はupdate rectangle 毎にzip, unzip する
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
212 % 一本は上からくる奴の説明が欲しい 図 はUpdate rectangle
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
213 一度 ZRLEE に変換してしまえば子 Node はそのデータをそのまま流すだけで良い。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
214 ただし、deflater と inflater では前回までの通信で得た辞書をクリアしないといけないため、 Root Node と Node 側では毎回新しく作る必要がある。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
215
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
216 \begin{figure}[htbp]
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
217 \begin{center}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
218 \includegraphics[scale=0.5]{./images/zrleFail.pdf}
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
219 \end{center}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
220 \caption{ZRLEでの問題点}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
221 \label{fig:zrleFail}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
222 \end{figure}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
223
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
224 \begin{figure}[htbp]
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
225 \begin{center}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
226 \includegraphics[scale=0.5]{./images/zrlee.pdf}
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
227 \end{center}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
228 \caption{ZRLEE}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
229 \label{fig:zrlee}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
230 \end{figure}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
231
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
232 \newpage
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
233
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
234 \section{通信経路}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
235 TreeVNC の通信経路として以下が挙げられる
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
236 \begin{itemize}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
237 \item ある Node から Root Node に直接通信を行う send direct message (Node to Root)
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
238 \item Root Node からある Node に直接通信を行う send direct message (Root to Node)
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
239 \item Root Node から木の末端の Node までのすべての Nodeに通信を行う messeage down tree (Root to Node)
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
240 \item ある Node から木構造を上に辿って Root Nodeまで通信を行う message up tree (Node to Root)
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
241 \item Root Node から配信者の VNC サーバーへの通信を行う send message (Root to VNCServer)
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
242 \item VNC サーバーから Root Node への通信を行う send message (VNCServer to Root)
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
243 \end{itemize}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
244
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
245 \section{ノード間で行われるメッセージ通信}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
246 RFBプロトコルで提供されているメッセージに加え、 TreeVNC 独自のメッセージを使用している。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
247 TreeVNC で使用されるメッセージの一覧を表\ref{tb:message}に示す。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
248
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
249 \begin{table}[htbp]
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
250 \caption{通信経路とメッセージ一覧}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
251 \scriptsize
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
252 \begin{tabular}{|l|l|l|} \hline
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
253 通信経路 & message & 説明 \\ \hline \hline
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
254 & FIND\_ROOT & TreeVNC接続時にRoot Nodeを探す。 \\ \cline{2-3}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
255 send direct message & WHERE\_TO\_CONNECT & 接続先をRoot Nodeに聞く。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
256 (Node to Root) & LOST\_CHILD & 子Nodeの切断をRoot Nodeに知らせる。 \\ \hline \hline
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
257
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
258 & FIND\_ROOT\_REPLY & FIND\_ROOTへの返信。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
259 send direct message & CONNECT\_TO\_AS\_LEADER & 左子Nodeとして接続する。接続先のNodeが含まれている。 \\ \cline{2-3}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
260 (Root to Node) & CONNECT\_TO & 右子Nodeとして接続する。接続先のNodeが含まれている。 \\ \hline \hline
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
261
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
262 message down tree & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。\\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
263 (Root to Node) & CHECK\_DELAY & 通信の遅延を測定する。 \\ \hline \hline
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
264
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
265 message up tree & CHECK\_DELAY\_REPLY & CHECK\_DELAYへの返信。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
266 (Node to Root) & SERVER\_CHANGE\_REQUEST & 画面切り替え要求。 \\ \hline \hline
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
267
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
268 & FRAMEBUFFER\_UPDATE\_REPLY & 画像データの要求。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
269 send message & SET\_PIXEL\_FORMAT & pixel値の設定。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
270 (Root to VNCServer) & SET\_ENCODINGS & pixelデータのencodeTypeの設定。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
271 & KEY\_EVENT & キーボードからのイベント。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
272 & POINTER\_EVENT & ポインタからのイベント。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
273 & CLIENT\_CUT\_TEXT & テキストのカットバッファを持った際のmessage。 \\ \hline \hline
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
274
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
275 & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
276 send message & SET\_COLOR\_MAP\_ENTRIES & 指定されているpixel値にマップするRGB値。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
277 (VNCServer to Root) & BELL & ビープ音を鳴らす。 \\ \cline{2-3}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
278 & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
279 \end{tabular}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
280 \label{tb:message}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
281 \end{table}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
282
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
283 図\ref{fig:message}は TreeVNC で 新しいNode が Root Node と通信し、木構造を形成するためのメッセージ通信の流れである。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
284 図\ref{fig:message}の手順として
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
285
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
286 \begin{itemize}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
287 \item 接続を行う Node は Multicast 通信で Root Node に対してFIND\_ROOTを送信する。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
288 \item Root NodeがFIND\_ROOTを受信し、FIND\_ROOT\_REPLYを送信する。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
289 \item Node 側で、どのRoot Nodeに接続するかを選択するパネルが表示される。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
290 \item Node はパネルで接続するRoot Nodeを選択し、Rootに対して接続先を要求するWHERE\_TO\_CONNECTを送信する。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
291 \item 受信した Root Node は Node の接続先をCONNECT\_TOで送信する。 Node 3 が接続する場合、Root Node には既に2台の Node が接続している為、 CONNET\_TO で指定する接続先は Node 1となる。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
292 \item Node は Root の指定した接続先に接続しに行く。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
293 \end{itemize}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
294
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
295 を行い、木構造を形成する。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
296
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
297 \begin{figure}[htbp]
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
298 \begin{center}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
299 \includegraphics[scale=0.5]{./images/message.pdf}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
300 \end{center}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
301 \caption{node 間で行われるメッセージ通信}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
302 \label{fig:message}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
303 \end{figure}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
304
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
305 \section{MulticastQueue}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
306 配信側の画面が更新されると、 VNCServer から画像データがFRAME\_BUFFER\_UPDATE メッセージとして送られる。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
307 その際、 画像データの更新を複数の Node に同時に伝えるため MulticastQueue というキューに画像データを格納する。
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
308
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
309 MulticastQueue は java.util.concurrent.CountDownLatch を用いて実装されている。
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
310 CountDownLatch は java の並列用のAPIで他のスレッドで実行中の操作が完了するまで、複数のスレッドを待機させることが出来るクラスである。
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
311 CountDownLatch を初期化する際にカウントを設定することができる。
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
312 このカウントはスレッドを開放する際に使用し、 await メソッドでカウントが0になるまでメソッドをブロックする事ができる。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
313
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
314 MulticastQueue は put メソッドを使用して データを queue に追加する。
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
315 put の際に CountDownLatch をカウントダウンする。
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
316 poll メソッドを使用することで Queue のデータを取得することが出来る。
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
317 poll メソッドの実行の際に await メソッドが使われているため、 次の put でデータが来るまでスレッドをブロックする。
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
318 スレッドをブロックされた場合 新しいデータが put されると CountDownLatch がカウントダウンされるため、 データの読み込みが再開される。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
319
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
320 \newpage
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
321
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
322 \section{木の再構成}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
323 TreeVNC はバイナリツリーでの接続という特性上 Node が切断されたことを検知できずにいると、Node 同士で構成された木構造が崩れてしまい、新しい Node が接続に来た場合に適切な場所に Node を接続することができなくなってしまう。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
324 木構造を崩さないよう、Node 同士の接続を再構成を行う必要がある。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
325
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
326 TreeVNC の木構造のネットワークトポロジーは Root Node が持っている nodeList というリストで管理している。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
327 つまり、Node の接続が切れた場合、木の再構成を行うため Root Node に知らせなければならない。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
328
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
329 TreeVNC は LOST\_CHILD というメッセージ通信で Node の切断を検知・木の再構成を行っている。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
330
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
331 TreeVNC は VNC サーバーから送られる画像データ(FRAME\_BUFFER\_Update)を MulticastQueue に蓄積しており、
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
332 Node はこのキューから画像データを取得し、画面を描画している。
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
333 LOST\_CHILD の検出方法はこの MulticastQueue を使用している。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
334 ある一定時間 MulticastQueue から画像データが取得されない場合 Memory Over Flow を回避するために Timeout スレッドが用意されている。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
335 Timeout を検知した際、Node との接続が切れたと判断する。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
336
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
337 図\ref{fig:lostChild}は6台の Node が接続してる状態で Node3 が切断した場合の木の再構成を示している。
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
338
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
339 \begin{itemize}
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
340 \item Node3 の切断を検知した Node1 が Root Node へ LOST\_CHILD メッセージを送信する(1: sendLostChild)。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
341 \item LOST\_CHILD メッセージを受け取った Root Node は nodeList から切断した Node を消し、最後尾の Node6 に切断した Node Number を割り当てる(2: updateNodeList)。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
342 \item Root Node は最後尾の Node6 に、切断した子 Node3 が接続していた Node1 に接続する様に CONNECT\_TO メッセージを送信する(3: send ConnectTo (Node1))。
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
343 \item 最後尾の Node が子 Node を失った親 Node へ接続しに行く(4: connect (Node1))。
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
344 \end{itemize}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
345
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
346 \begin{figure}[htbp]
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
347 \begin{center}
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
348 \includegraphics[scale=0.5]{./images/lostChild.pdf}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
349 \end{center}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
350 \caption{LOST\_CHILD を検知・再接続}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
351 \label{fig:lostChild}
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
352 \end{figure}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
353
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
354 LOST\_CHILD によって、 切断された全ての Node を検知することができるため、 nodeList の更新が正しく行われる。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
355 よって、新しく接続に来た Node を適切な場所に接続することが可能となる。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
356
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
357 \newpage
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
358
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
359 \section{共有画面切り替え}
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
360 ゼミでは発表者が順々に入れ替わる。発表者が入れ替わる度に共有する画面の切り替えが必要となる。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
361
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
362 画面の共有にプロジェクタを使用する場合、 発表者が変わる度にケーブルの抜き差しを行う必要がある。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
363 その際に、ディスプレイ解像度を設定し直す必要が出たり、 接続不良が起こる等の煩わしい問題が生じることがある。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
364
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
365 従来のVNCを使用する場合、 画面の切り替えの度に一旦VNCを終了し、発表者の VNC サーバーへと再接続を行う必要がある。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
366
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
367 TreeVNC はユーザが VNC サーバーへの再接続を行うことなく、ビューアの Share Screen ボタンを押すことによって、配信者の切り替えを行うことができる。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
368
3
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
369 TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている。
0fa28652aa74 Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
370 VNC サーバーから画面データを受信し、そのデータを 子 Node へと送信している。
19
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
371 配信者切り替え時に Share Screen ボタンが押されると、 SERVER\_CHANGE\_REQUEST メッセージに Node 番号やディスプレイ情報 を付加し、Root Node に送信する。
25
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
372 SERVER\_CHANGE\_REQUEST メッセージを受け取った Root Node は配信を行う Node の VNC サーバーと通信を始める。
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
373 この切り替え動作は別のスレッドを生成して行うため、 切り替え作業が終了したときに現在配信している画面が切り替わる。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
374
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
375 そのため TreeVNC は配信者切り替えの度に VNC を終了し、再接続する必要がない。
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
376 更にプロジェクタ等も使用しないため、ケーブルの差し替えも行わずとも画面配信を行うことが出来
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
377
25
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
378 \newpage
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
379
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
380 \section{表示画面サイズの調整}
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
381 配信側 PC によって配信される画面サイズが変化する。配信側と Node で画面サイズに差がある場合、画面に入りきらない、表示画面が小さすぎる等の問題が生じる。
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
382
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
383 TreeVNC では ビューワに fit screen ボタンを設置することでこの問題を解決している。
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
384 fit screen ボタンが押されると PC の画面サイズに合わせてフルサイズで拡大・縮小する。
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
385
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
386 \section{複数のネットワークの対応}
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
387 TreeVNC は Root Node が複数のネットワークに接続している場合、 図\ref{fig:multinetworktree}の様に、ネットワーク別に木構造を形成する。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
388
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
389 \begin{figure}[htbp]
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
390 \begin{center}
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
391 \includegraphics[scale=0.5]{./images/multiNetworkTree}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
392 \end{center}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
393 \caption{Multi Network Tree}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
394 \label{fig:multinetworktree}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
395 \end{figure}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
396
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
397 TreeVNC は Root Node が TreeManager というオブジェクトを持っている。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
398 TreeManager は TreeVNC の接続部分を管理している。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
399 TreeManager では木構造を管理する nodeList が生成される。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
400 この nodeList を元に、新しい Node の接続や、切断検出時の接続の切り替え等を行う。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
401
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
402 Root Node の保持しているネットワーク毎にTreeManager を生成する。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
403 新しい Node が接続してきた際、 interfaces から Node のネットワークと一致する TreeManager を取得し、 Node 接続の処理を任せる。
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
404
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
405 \chapter{NAT 対応}
27
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
406 % NAT の説明がいる
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
407 % 基本的にグローバルip は複数のインタフェース
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
408 \section{NAT}
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
409 NAT(Network Address Translation) は ローカルなネットワークではプライベートIPアドレスを設定し、外のネットワークへ接続するときにグローバルIPアドレスに変換する技術のことである。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
410 また、NAT に変換にポート番号を付け加えることで1つのグローバルIPアドレスで複数のホスト間の通信も可能となる。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
411 この変換はNAPT(Network Address Ports Translator) と呼ばれる
27
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
412 % NAT があるとTreeVNCがどうこまるのか
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
413 % マルチキャストが送られないので TreeVNC が見つからない アドレスが重複するなど
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
414 \section{TreeVNC での NAT の問題点}
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
415 TreeVNC は NAT の変換を経由した通信を行う場合様々な問題が発生する。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
416
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
417 まず、Multicast 通信を行うことが出来ないという点である。 Multicast は同一ネットワーク内のマルチキャストアドレスを持っている端末に対してデータを送信することである。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
418 TreeVNC は Root Node を探す際に FIND\_ROOT メッセージをMulticastで送信する。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
419 しかし、NAT を越えたネットワークは同一ネットワークではないので、Root Node を探すことができない。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
420
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
421 また、Root Node の木構造を管理しているnodeList に NAT を越えたネットワークのアドレスを追加していくとIPアドレスが重複する可能性があるため、通常の TreeVNC の構成では NATを越えたネットワークからの接続を行うことが出来ない。
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
422
21
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
423 \section{Direct Connection}
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
424 遠隔地からでもゼミや授業に参加できるよう、 NATを越えたネットワークから TreeVNC への接続を可能\cite{parusu:2016a}にした。
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
425
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
426 図\ref{fig:directConnection} にNATを越えたネットワークからの接続を示す。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
427 別ネットワークからTreeVNCに参加する際、 直接配信側のネットワークの Root Node に接続を行う。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
428 この接続を Direct Connection と呼ぶ。
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
429
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
430 \begin{figure}[htbp]
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
431 \begin{center}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
432 \includegraphics[scale=0.5]{./images/directConnection.pdf}
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
433 \caption{Direct Connection}
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
434 \label{fig:directConnection}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
435 \end{center}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
436 \end{figure}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
437
21
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
438 \newpage
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
439
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
440 \section{Direct Connectionでの木構造}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
441 Direct Connection した Node はそのネットワークの Root Node になり、接続先である TreeVNC の nodeList に追加されない。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
442 つまり、ネットワーク毎に木構造をもつことになる。
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
443
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
444 新しく接続する Node は図\ref{fig:directConnectionTree}のようにそのネットワークの Root Node に FIND\_ROOT メッセージを送信し、接続処理を行う。
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
445
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
446 \begin{figure}[htbp]
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
447 \begin{center}
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
448 \includegraphics[scale=0.5]{./images/directConnectionTree.pdf}
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
449 \caption{新しい Node の接続}
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
450 \label{fig:directConnectionTree}
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
451 \end{center}
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
452 \end{figure}
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
453
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
454 配信側の Root Node はDirect Connection で接続された Node に対して通常の子 Node と同じように FRAMEBUFFER\_UPDATE メッセージで画像データを送信する。
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
455 FRAMEBUFFER\_UPDATE メッセージを受けった Root Node はそのネットワークの Node に対して FRAMEBUFFER\_UPDATE メッセージを送信する。
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
456
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
457 \begin{figure}[htbp]
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
458 \begin{center}
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
459 \includegraphics[scale=0.5]{./images/directConnectionFrameBuffer.pdf}
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
460 \caption{NATを越えたネットワークへの画面配信}
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
461 \label{fig:directConnectionFrameBuffer}
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
462 \end{center}
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
463 \end{figure}
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
464
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
465 \section{NATを越えた共有画面切り替え}
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
466 図\ref{fig:directConnectionServerChange} は Direct Connection での画面切り替えの実装案である。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
467 まず Direct Connection した ネットワークのクライアントから SERVER\_CHANGE\_REQUEST メッセージが送信される。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
468 SERVER\_CHAGEN\_REQUEST メッセージを受け取った そのネットワークの Root Node は Direct Connection した先の Root Node へ SERVER\_CHANGE\_REQUEST を -1 を付加して送信する。
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
469 -1 を送信することで、 受け取った Root Node は別のネットワークからの画面切り替え要求ということを判断することができる。
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
470 別ネットワークからの切り替え要求を受け取った Root Node は読み込み用と書き込み用のソケットを入れ替える。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
471 ソケットを入れ替えることで、 切り替え要求した Root Node のデータを受け取ることが可能となる。
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
472
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
473 \begin{figure}[htbp]
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
474 \begin{center}
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
475 \includegraphics[scale=0.5]{./images/directConnectionServerChange.pdf}
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
476 \caption{NATを越えたネットワークでの画面切り替え}
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
477 \label{fig:directConnectionServerChange}
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
478 \end{center}
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
479 \end{figure}
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
480
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
481
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
482 図\ref{fig:directConnectionServerChange} の実装案ではなく、画面切り替えが起こったネットワークに対して繋がっているネットワークが DirectConnection をすることで 容易に実装することができる。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
483 だが、 NAT を越えた接続のため、再接続する際に接続先が見つからないという問題が発生する。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
484 そのため接続状況を維持したまま送受信状態を入れ替える必要がある。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
485
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
486 しかし、接続状態を維持したままの入れ替えは実装が複雑になっており、今回追加した Direct Connection ではNATを越えたネットワークの画面の配信を行うのみであり、 画面切り替えを行うことが出来ない。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
487
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
488
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
489 \chapter{マルチディスプレイ対応}
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
490 \section{マルチディスプレイ時の問題点}
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
491 画面配信側の PC がマルチディスプレイの場合、 図\ref{fig:multiDisplay}のように VNC サーバーからは複数の画面全体の画像データが送信されてしまう。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
492 授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
493 \begin{figure}[htbp]
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
494 \begin{center}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
495 \includegraphics[scale=0.6]{./images/multiDisplay.pdf}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
496 \end{center}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
497 \caption{マルチディスプレイでの送信}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
498 \label{fig:multiDisplay}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
499 \end{figure}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
500
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
501 \section{ディスプレイの選択}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
502 マルチディスプレイでの問題を解決するため、画面を共有する際にディスプレイを選択させ、画面共有を行う機能を追加した\cite{parusu:2016a}。
21
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
503
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
504 ディスプレイの情報は個々のクライアントでしか取得ができない。
12
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
505 そのため、配信側は画面の切り替えを行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
506 その座標を Root Node への画面切り替えを要求する SERVER\_CHANGE\_REQUEST メッセージに付加させる。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
507 Root Node は 配信側の VNC サーバー に画像データを要求する FRAMEBUFFER\_UPDATE\_REPLY メッセージに送信された座標を付加する。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
508 VNC サーバーは要求された座標内の画像データを FRAMEBUFFER\_UPDATE メッセージで Root Node に送信する。
12
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
509 これにより、一画面のみの表示が可能になる。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
510
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
511 図\ref{fig:multidisplay} は Display1 のみを画面共有する例を示している。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
512
8
a4b118dc9da9 Update Lost Child
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
513 \begin{figure}[htbp]
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
514 \begin{center}
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
515 \includegraphics[scale=0.4]{./images/shareScreenToMultiDisplay.pdf}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
516 \end{center}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
517 \caption{マルチディスプレイへの対応}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
518 \label{fig:multidisplay}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
519 \end{figure}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
520
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
521
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
522 \chapter{共有画面切り替えの安定化}
27
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
523 % もうちょい細かく Tight VNC はシングルthread でやっていた
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
524 % ユーザーが途中でキャンセルされると辛い とかの図を入れると1章分あるか?
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
525 % protoclContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
526 % protocolContext とか connectionPresenter とかのクラスdiagramで書くと良い
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
527 % コード乗っけても問題ない
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
528 \section{画面切り替えの問題点}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
529 TightVNC では VNC サーバーへの接続を 1つのスレッドで行っていた。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
530 そのため、 Tree VNC でも画面切り替えを行う際 配信中の画面を停止した後に VNC サーバーへの接続を行っていた。サーバー
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
531 しかし、 切り替え先の VNC サーバーへの接続に時間がかかったり、 切り替え先のクライアントに共有確認した際にキャンセルすると TreeVNC が停止するという問題があった。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
532
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
533 \section{切り替え用スレッドの生成}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
534 そこで、 画面切り替えを行う際に新しく切り替え用のスレッドを生成し処理する変更を行った。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
535 実際に切り替えのスレッドを生成している inhelitClients メソッドを Code \ref{src:inhelitClients} に示す。
12
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
536
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
537 inhelitClients(Code \ref{src:inhelitClients}) は 3行目でConnectionPresenterクラスを新しく作っている。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
538 ConnectionPresenter クラスは切り替えに必要な情報や処理が入っているクラスである。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
539
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
540 8〜13行目は新しくスレッドを生成して実行している。このスレッドでは ConnectionPresenter クラスの startVNCConnection メソッドを読んでいる。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
541 \lstinputlisting[label=src:inhelitClients, caption=切り替え用スレッドの生成]{src/InhelitClients.java}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
542
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
543
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
544 \section{切り替え用スレッドの動作}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
545 図\ref{fig:serverChangeThread}は画面切り替えの際に切り替え用スレッドを用いたときの通信の流れである。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
546 まず共有先の Node から切り替え用のSERVER\_CHANGE\_REQUEST メッセージが送信される。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
547 メッセージを受け取った Root Node は 切り替え用のスレッドを生成し、切り替えの処理を任せて、現在の配信の続行する。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
548 切り替え用のスレッドではまず切り替えに必要なデータの設定、 VNC サーバー への接続など通常の切り替え処理を実行する。
12
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
549 切り替えが完了した後に、 現在配信中の画面を停止し、画面の切替を行う。
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
550
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
551 \begin{figure}[htbp]
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
552 \begin{center}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
553 \includegraphics[scale=0.5]{./images/serverChangeThread.pdf}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
554 \end{center}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
555 \caption{切り替え用スレッドの動作}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
556 \label{fig:serverChangeThread}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
557 \end{figure}
12
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
558
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
559
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
560 \chapter{各 Node へのエラー通知}
27
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
561
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
562 \section{Root Node へのエラーメッセージの表示}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
563 TreeVNC には接続している各 Node へのエラーの通知を行うことが出来なかった。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
564 そのため、 画面切り替えを行う際に切り替え先が VNC サーバーの共有設定をしていない場合 Root Node に接続エラーのダイアログが表示されるという実装になっており、切り替えを行った Node には一切通知されなかった。
12
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
565
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
566 \section{ERROR\_ANNOUNCE メッセージ}
13
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
567 この問題を解決するために新しくERROR\_ANNOUNCE というメッセージを追加した。
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
568 図\ref{fig:errorAnnounce} は Node3 に対してエラー通知を行っている例を示している。
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
569 ERROR\_ANNOUNCE メッセージは Root Nodeから木構造を辿りながら末端の Node に通信を行うメッセージで、エラー通知したい Node の Node Nuber と エラー内容の文字列を付加して送信する。
13
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
570 付加した Node Number に一致する Node がメッセージを受け取ると、 付加されたエラーの文字列をダイアログで表示する。
12
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
571 エラー通知用のメッセージを追加することで、 各々のクライアントに対して通知を行うことが可能になった。
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
572
13
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
573 \begin{figure}[htbp]
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
574 \begin{center}
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
575 \includegraphics[scale=0.5]{./images/errorAnnounce.pdf}
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
576 \end{center}
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
577 \caption{ERROR\_ANNOUNCE メッセージの挙動}
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
578 \label{fig:errorAnnounce}
13
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
579 \end{figure}
bcd8506cd151 Add errorAnnounce image
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
580
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
581 通知を行えるようになると、ユーザーに対して共有設定の方法などが簡単に通知することができる。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
582
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
583 \chapter{TreeVNC の評価}
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
584 \section{画像データ伝達の遅延}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
585 VNC サーバー から受信する画像データ、 TreeVNC で扱われるメッセージ通信は構成された木を伝って伝達される。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
586 接続する人数が増える毎に木の段数は増えていく。 そこで Root Node から木の末端の Node までの画像データ伝達の遅延を検証する実験を行った。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
587
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
588 \section{実験環境}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
589 授業を受講している学生が TreeVNC を使用した状態で実験を行った。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
590 TreeVNC には最大で17名が接続していた。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
591
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
592 \section{メッセージを使用した実測}
12
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
593 TreeVNC を伝搬するメッセージに、CHECK\_DELAY, CHECK\_DELAY\_REPLYを追加した。
11169ee81923 Add ServerChange thread and ERROR_ANNOUNCE Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
594 CHECK\_DELAY は Root Node から 末端の Node まで伝達するメッセージと画像データ、 CHECK\_DELAY\_REPLY は各 Node から Root Node まで伝達するメッセージである。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
595
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
596 CHECK\_DELAY メッセージは送信時刻を付けて送信する。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
597 Root Nodeから CHECK\_DELAY 送信し、末端の Node まで各 Node を伝いながら伝達して行く。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
598
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
599 CHECK\_DELAY\_REPLY は CHECK\_DELAY から受け取った送信時刻をそのままに、 画像データのサイズを付けて送信する。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
600 CHECK\_DELAY を受け取った各 Node は CHECK\_DELAY\_REPLY を接続している親 Node に送信する。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
601
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
602 CHECK\_DELAY\_REPLY を受け取った Root Node はメッセージと画像データの伝達にどれだけの時間がかかったかを計算する。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
603 データ計算方法を以下の Code \ref{calc}に記述する。 この変数 time は CHECK\_DELAY\_REPLY に付いている CHEKC\_DELAY の送信時刻である。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
604
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
605 \begin{lstlisting}[label=calc, caption=遅延時間の計算方法]
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
606 Long delay = System.currentTimeMillis() - time;
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
607 \end{lstlisting}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
608
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
609 \section{結果}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
610 バイナリツリーで木を構成した場合、 Node 数が17台だと深さが4となる。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
611 各木構造の階層毎に、画像データの伝搬にかかった時間を測定した。
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
612
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
613 図\ref{fig:depth1}, \ref{fig:depth2}, \ref{fig:depth3}, \ref{fig:depth4}は遅延の分布を示した散布図である。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
614 X軸はメッセージ伝達にかかった秒数(ms)、 Y軸は画像データのサイズ(Byte)である。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
615
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
616 画像データの伝達はほぼ1秒以内に収まっているが、容量が小さい場合でも時間がかかる場合がある。
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
617 それはその送信の前に大容量の画像を送信した後の回線の Delay が残っているためだと考えられる。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
618
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
619 また、深さ3で極端に遅い場合がある。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
620 遅い原因として、1つの Node がボトルネックになっていることが判明している。
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
621 このような極端に遅い Node をそのまま木に配置した場合、その Node の子 Node 以下に影響を及ぼすおそれがある。
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
622
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
623 \begin{figure}[htbp]
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
624 \begin{center}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
625 \includegraphics[scale=0.7]{./images/depth1.eps}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
626 \end{center}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
627 \caption{データサイズと遅延の関係 : 深さ1}
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
628 \label{fig:depth1}
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
629 \end{figure}
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
630
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
631 \begin{figure}[htbp]
5
15eff3ba94ce Add images
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
632 \begin{center}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
633 \includegraphics[scale=0.7]{./images/depth2.eps}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
634 \end{center}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
635 \caption{データサイズと遅延の関係 : 深さ2}
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
636 \label{fig:depth2}
4
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
637 \end{figure}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
638
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
639 \begin{figure}[htbp]
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
640 \begin{center}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
641 \includegraphics[scale=0.7]{./images/depth3.eps}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
642 \end{center}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
643 \caption{データサイズと遅延の関係 : 深さ3}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
644 \label{fig:depth3}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
645 \end{figure}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
646
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
647 \begin{figure}[htbp]
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
648 \begin{center}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
649 \includegraphics[scale=0.7]{./images/depth4.eps}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
650 \end{center}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
651 \caption{データサイズと遅延の関係 : 深さ4}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
652 \label{fig:depth4}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
653 \end{figure}
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
654
26
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
655 \newpage
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
656
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
657 \section{ボトルネックになっている Node への対処}
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
658 画像データを受け取る時間が遅い Node をそのまま木構造に配置しているとその子 Node 以下に影響を及ぼす。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
659 そのためネックになっている Node への対処が必要である。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
660
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
661 ボトルネックになっている Node への対処として CHECK\_DELAY\_REPLAY メッセージを使用している。
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
662 図\ref{fig:fixTree}は 6台の Node が接続している状態で Node1 がネックになっている場合の木の再構成を示している。
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
663 CHECK\_DELAY\_REPLAY メッセージを受け取った Root Node はその Node がボトルネックなっているかの判断を行う。
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
664 ボトルネックになっているなら Root Node の nodeList からその Node を削除する。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
665 削除した Node の場所には末端の Node を配置するように CONNECT\_TO メッセージを送信する。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
666 nodeList から削除された Node は接続されたままなので、データの受信は行うが、 木構造には入らないため、ネックになっている Node の下に新しい Node が繋がることはない。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
667 そのためネックになっている Node 以下に影響を及ばすことがない。
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
668
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
669 \begin{figure}[htbp]
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
670 \begin{center}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
671 \includegraphics[scale=0.4]{./images/fixTree.pdf}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
672 \end{center}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
673 \caption{ボトルネックになっている Node への対処}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
674 \label{fig:fixTree}
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
675 \end{figure}
14
84e12a138c37 Add TreeVNC theory
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
676
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
677 % 今後の課題
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
678
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
679 \chapter{結論}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
680 \section{まとめ}
31
d8660bf1da6f Update prepaper
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
681 本研究では画面配信システム TreeVNC での NAT 対応、 マルチディスプレイ対応、共有画面切り替えの安定化、 各 Node へのエラー通知、TreeVNC の評価を行った。
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
682
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
683 NATを越えに対応した Direct Connection という接続方法を確立し実装した。
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
684 これにより、NAT を越えた別ネットワークのユーザーが TreeVNC に参加することが可能となった。
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
685
28
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
686 マルチディスプレイの場合に画面を選択して配信することが可能になった。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
687
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
688 画面切り替えの際に切り替え用のスレッドを用意することでスムーズな画面切り替えが可能。
1e36dc43391b Add En abstract
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
689
31
d8660bf1da6f Update prepaper
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
690 新しく ERROR\_ANNOUNCE メッセージを追加することで各Nodeにエラー通知を行える様になった。
18
c05bc62b50e6 Update directConnection
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
691
26
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
692 今回の画像データの遅延実験を行い、 ボトルネックになっているノードがあることがわかった。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
693 また、ボトルネックになっているノードへの対処を行った。
15
1890002fd43b Add neckNode section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
694
27
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
695 \section{今後の課題}
25
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
696 Direct Conenction により、NAT を越えたの画面配信が可能となった。
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
697 しかし、 遠隔地からゼミや授業等に参加する場合は画面の表示のみではなく、 音声の配信も行いたい。
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
698 そのため音声配信機能の実装を行う必要がある。
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
699
26
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
700 今回実装したマルチディスプレイ選択の画面配信は PC の画面サイズに合わせてフルサイズで拡大・縮小する fit screen ボタンに対応しておらず、一画面のサイズの調節を行えない。
25
004612152453 Add fit screen section
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
701 そのためマルチディスプレイの fit screen 機能を実装する必要がある。
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
702
29
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
703 現在の TreeVNC は TightVNC を直接編集しているため、コードが複雑になっている。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
704 そのため新しい機能を入れるにしてもリファクタリングから始める必要があった。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
705 当研究室で開発している分散フレームワーク Alice\cite{nozomi:2016a} の例題として記述された AliceVNC は TightVNC のコードの変更点を最小限に抑え、 複雑度も低いことがわかっている。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
706 そのため TreeVNC で今回追加した機能を AliceVNC で再設計することが望ましい。
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
707
26
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
708 %\section{Alice での実装}
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
709
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
710 % 参考文献
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
711 \def\line{−\hspace*{-.7zw}−}
10
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
712 \nocite{*}
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
713 \bibliographystyle{junsrt}
c9ee8bc1d913 Add Reference
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
714 \bibliography{reference}
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
715
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
716
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
717 \chapter*{謝辞}
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
718 \thispagestyle{empty}
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
719
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
720 %基本的な内容は以下の通り.参考にしてみて下さい.
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
721 %厳密な決まりは無いので,個々人の文体でも構わない.
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
722 %GISゼミや英語ゼミに参加した人はその分も入れておく.
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
723 %順番は重要なので気を付けるように.(提出前に周りの人に確認してもらう.)
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
724
22
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
725 \hspace{1zw}本研究の遂行,また本論文の作成にあたり、御多忙にも関わらず終始懇切なる御指導と御教授を賜わりました河野真治准教授に深く感謝致します。
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
726
22
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
727 数々の貴重な御助言と細かな御配慮を戴いた小久保翔平さん、 徳森海斗さん、 比嘉健太さん並びに並列信頼研究室の皆様に深く感謝致します。
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
728
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
729 最後に、有意義な時間を共に過ごした情報工学科の学友、並びに物心両面で支えてくれた両親に深く感謝致します。
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
730
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
731 \begin{flushright}
26
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
732 2016年 3月 \\ 伊波立樹
2
2ab5639a8ea7 Update title
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
733 \end{flushright}
0
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
734
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
735 % 付録
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
736
4dc056cecb6c Add templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
737 \end{document}