annotate FinalMid/FinalMid_165729B.tex @ 37:f7a79686256d default tip

update mid
author riono <e165729@ie.u-ryukyu.ac.jp>
date Mon, 17 Feb 2020 00:04:06 +0900
parents a2a82eead86f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 \usepackage{picins}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 \usepackage{fancyhdr}
18
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
4 \usepackage{abstract}
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
5 \usepackage[dvipdfmx]{graphicx}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
6 \usepackage{multirow}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
7 \usepackage{here}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
8 \usepackage{cite}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
9 \usepackage{url}
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
10 \usepackage{geometry}
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
11
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
12 \usepackage{caption}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
13
18
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
14
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 \pagestyle{fancy}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 \rhead{}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 \cfoot{}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 \setlength{\headheight}{0mm}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 \setlength{\headsep}{5mm}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 \setlength{\textwidth}{181mm}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 \setlength{\textheight}{261mm}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 \setlength{\footskip}{0mm}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 \pagestyle{empty}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
25
f98010ed4fa9 add TileLoop flow img
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
30
f98010ed4fa9 add TileLoop flow img
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
31 \renewcommand{\abstractname}{Abstract}
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 \begin{document}
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
33 \title{画面配信システム TreeVNC のMulticast 導入}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
34 \author{165729B 氏名 {安田}{亮} 指導教員 : 河野真治}
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 \date{}
18
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
36 \twocolumn [
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 \maketitle
18
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
38 \centering
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
39 \begin{onecolabstract}
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
40 In lectures and seminars,the materials prepared on the PC screen is used.
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
41 Participants need to concentrate on the projector,which can be a burden when cross-referencing with the PC at hand.
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
42 When the presenter is replaced,the cable needs to be replaced by switching the presenter's PC screen,
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
43 depending on the adapter connected to the PC,the PC screen may not be displayed properly.
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
44 TreeVNC,which is being developed in our laboratory,is a screen distribution system that displays the presenter's PC screen on the participant's PC.
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
45 By connecting clients connected to the server in the form of a binary tree and distributing the delivery cost,
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
46 It is designed so that the processing performance does not decrease even if many people connect.
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
47 In addition,there is a mechanism for freely switching the screen of the presenter,which is convenient for presentations at seminars and the like.
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
48 Currently,TreeVNC screen sharing is limited to wired LANs because of the large amount of data.
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
49 To support widely used wireless LAN,
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
50 we evaluate the implementation of data communication in multicast and the data division
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
51 and compression method,and evaluate the possibility of multicast in TreeVNC.
18
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
52 \end{onecolabstract} ]
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
53
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 \thispagestyle{fancy}
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
18
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
56
c62e7b4ffa54 fix finalMid abstract
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
57
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
58 \section{画面配信ソフトウェアTreeVNCの活用}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
59 現代の講義やゼミではPC画面で用意した資料をプロジェクタに映しながら進行することが多い。
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
60 発表者のPCを接続するたびにケーブルを差し替える必要があり、発表者のPCによっては接続するアダプターの種類や解像度の設定により、正常にPC画面を表示できない場合がある。また、参加者もプロジェクタに集中を割く必要があり、同時に手元のPCで作業を行う場合、集中の妨げとなってしまう。
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
62 当研究室で開発している画面配信システムTreeVNC\cite{taninari:2011a}は、発表者のPC画面を参加者のPC画面に表示するソフトウェアである。サーバに接続したクライアントをバイナリツリー状に接続することで、配信コストをクライアントに分散させる仕組みになっている。
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
63 しかし、画面共有は送信するデータ量が多いため、無線LANで接続を行なった際に有線接続よりも遅延が大きくなってしまう。そこで本研究では、Multicastでのデータ通信の考察やデータの分割・圧縮方法の実装、評価を行う。
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
65 \section{TreeVNCの基本概念}
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
66 Virtual Network Computing\cite{vnc}(以下VNC)は、サーバ側とクライアント(ビューワー)側からなるリモートデスクトップソフトウェアである。遠隔操作にはサーバを起動し、クライアント側がサーバに接続することで可能としている。特に画面送信の動作にはRemote Frame Buffer(以下RFB)プロトコル\cite{rfbprotocol}を用いている。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
67
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
68 TreeVNCはjavaを用いて作成されたTight VNC\cite{tightvnc}を元に作成されている。 TreeVNCはVNCを利用して画面配信を行っているが、従来のVNCでは配信(サーバ)側のPCに全ての参加者(クライアント)が接続するため負荷が大きくなってしまう。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
69
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
70 そこでTreeVNCではサーバに接続を行ってきたクライアントをバイナリツリー状(木構造)に接続する。接続してきたクライアントをノードとし、その下に新たなノードを最大2つ接続していく。これにより人数分のデータのコピーと送信の手間を分散することができる(図\ref{fig:TreevncStruct})。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
71
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
72 \begin{figure}[htb] %PDF
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
73 \begin{center}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
74 \includegraphics[scale=0.28]{pic/TreevncStruct.pdf}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
75 \caption{TreeVNCでの接続構造}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
76 \label{fig:TreevncStruct}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
77 \end{center}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
78 \end{figure}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
79
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
80
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
81 %\thispagestyle{fancy}
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
82
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
83
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
84 バイナリツリー状に接続することで、N台のクライアントが接続を行ってきた場合、従来のVNCではサーバ側がN回のコピーを行って画面配信する必要があるが、TreeVNCでは各ノードが最大2回ずつコピーするだけで画面配信が可能となる。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
85
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
86
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
87
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
88 TreeVNCはZRLEE\cite{taninari:2012a}というエンコードタイプでデータのやり取りを行う。ZRLEEはRFBプロトコルで使用できるZLREというエンコードタイプを元に生成される。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
89
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
90 ZLRE(Zlib Run-Length Encoding)とは可逆圧縮可能なZlib形式\cite{zlib}とRun-Length Encoding方式を組み合わせたエンコードタイプである。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
91
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
92
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
93 ZLREはZlibで圧縮されたデータとそのデータのバイト数がヘッダーとして付与され送信される。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
94
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
95
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
96 Zlibはjava.util.zip.deflaterとjava.util.zip.inflaterで圧縮と解凍が行える。しかしjava.util.zip.deflaterは解凍に必要な辞書を書きだす(flush)ことが出来ない。従って、圧縮されたデータを途中から受け取ってもデータを正しく解凍することが出来ない。
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
97
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
98
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
99
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
100 そこでZRLEEは一度Root Nodeで受け取ったZRLEのデータをunzipし、Update Rectangleと呼ばれる画面ごとのデータに辞書を付与してzipし直すことで、初めからデータを読み込んでいなくても解凍を出来るようになっている(図\ref{fig:ZRLEtoZRLEE})。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
101
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
102 \begin{figure}[htb] %PDF
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
103 \begin{center}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
104 \includegraphics[scale=0.5]{pic/EncodeZRLEtoZRLEE.pdf}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
105 \caption{ZRLEEへ再圧縮されたデータを途中から受け取った場合}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
106 \label{fig:ZRLEtoZRLEE}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
107 \end{center}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
108 \end{figure}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
109
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
110
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
111 \section{Multicatに向けたBlockingの実装}
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
112 画像配信のデータ量は膨大なため、現在のTreeVNCでVNCサーバに無線LAN接続を行なった場合、画面配信の遅延が大きくなってしまう。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
113
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
114 無線LAN接続時の場合でも画面切り替えの機能は有効であるため、VNCサーバ側が無線LANで接続を行い、クライアント側は有線接続を行うことで画面配信が可能となる。ここで、WifiのMulticastの機能を用いてクライアント側でもWifiを使用することが可能であると考えられる。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
115
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
116 WifiのMulticast Packetのサイズは64KByteが最大となっている。4Kディスプレイを例にとると、4Kディスプレイの大きさの画面更新には8MByte(画素数) \* 8Byte(色情報)で圧縮前で、64MByte程度となる。これを圧縮しつつ、64kbye毎のパケットに変換して送る必要がある。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
117
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
118
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
119 VNCサーバから受け取ったZRLEで構成された画像データをZRLEEに変換、再構成するためにTileLoopというルーチンで再構成を行う。
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
120
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
121 TileLoopはVNCサーバから受け取ったZRLEを図\ref{fig:BlockingUpdateRectangle}のようにRectangleを分割し、ZRLEEに再圧縮を行ったPacketを生成する。
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
122
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
123 \begin{figure}[htb] %PDF
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
124 \begin{center}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
125 \includegraphics[scale=0.4]{pic/FrameUpdateRectangle.pdf}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
126 \caption{Rectangleの分割}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
127 \label{fig:BlockingUpdateRectangle}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
128 \end{center}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
129 \end{figure}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
130
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
131
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
132
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
133 Tile内はパレットなどがある場合があるが、通常はRun Length encodeされたRGBデータである。
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
134 これまでのTreeVNCではVNCサーバから受け取ったRectangleを分割せずにZRLEEへ再構成を行なっていた。これをMluticastのためにデータを64KByteに収まる最大3つのRectangleに再構成する(図\ref{fig:Packet})。この時にTile内部は変更する必要はないが、Rectangleの構成は変わる。ZLREを展開しつつ、Packetを構成する必要がある。
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
135
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
136 \begin{figure}[htb] %PDF
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
137 \begin{center}
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
138 \includegraphics[scale=0.3]{pic/Blocking.pdf}
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
139 \caption{ZRLEEのPacketの構成と分割されたRectangle}
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
140 \label{fig:Packet}
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
141 \end{center}
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
142 \end{figure}
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
143
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
144
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
145
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
146 64KByteのPacketの中には複数のTileが存在するが、連続してRectangleを構成する必要がある。3つの
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
147 Rectangleの構成を下記に示す。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
148
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
149 \begin{itemize}
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
150 \item 行の途中から始まり、行の最後までを構成するRectangle(図\ref{fig:BlockingUpdateRectangle}中 Phase0)
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
151 \item 行の初めから最後までを構成するRectangle(図\ref{fig:BlockingUpdateRectangle}中 Phase1)
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
152 \item 行の初めから、行の途中までを構成するRectangle(図\ref{fig:BlockingUpdateRectangle}中 Phase2)
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
153 \end{itemize}
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
154
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
155 ZRLEとjava.util.zip.deflaterを使用した圧縮では、圧縮後のデータ長を予測することができない。Packetが満杯になってしまうと、圧縮書き込みの途中であっても圧縮書き込みが中断する。そのため、Packetのサイズを余分に確保する必要がある。したがって最初から最大の64KByteではなく、42KByteに制限を行っている。
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
156
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
157
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
158 java.util.zip.deflaterには下記の3種類の圧縮方法がある。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
159
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
160 \begin{itemize}
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
161 \item NO\_FLUSH : Streamに格納されたデータを最高率で圧縮を行う。Streamにある入力データが規定量に満たない場合は圧縮されない
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
162 \item SYNC\_FLUSH : これまでにStreamに格納されたデータの圧縮を行う。ただし圧縮率が低下する可能性がある
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
163 \item FULL\_FLUSH : SYNC\_FLUSH同様、これまでにStreamに格納されたデータの圧縮を行う。異なる点はこれまでの辞書情報がリセットされるため、圧縮率が極端に低くなる可能性がある
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
164 \end{itemize}
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
166 TileLoopではデータの圧縮にNO\_FLUSHを利用していたが、圧縮後のデータがPacketの上限である64KByteを超えてしまうことが多発した。
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
167
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
168 これは圧縮されるための入力データの規定量が想定以上に多く、圧縮後のデータ長がMulticast Packetの上限を越えてしまったためである。
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
169
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
170 そこで圧縮率は悪くなるが、1Tile毎に確実にPacketに書き込まれるSYNC\_FLUSHを利用し、ZRLEEの生成を行う。また各行末ではFULL\_FLUSHを行い、Packetへの書き込みを行なっている。
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
171
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
173 \section{TreeVNC開発環境やソースコードの修正改善}
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
174 jarファイルの生成や、アプリケーションの生成を行なっているGradleのバージョンが4.8であったため、これを現行の最新バージョンである6.1でBuildできるよう対応を行なった。
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
175 また、Javaで使用しているRetinaディスプレイのAPIがJava8以前のものを使用していた。これはJava9以降で非推奨となってしまったため、Java9以降に対応できるようAPIの書き換えを行なった。
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
176
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
177 TreeVNCのデバッグにはこれまで、1つのPC上でサーバ側とクライアント側を同時に起動してデバッグを行なっていた。本来はこれを1つのプロセスでデバッグできる-pオプションがあるが、TreeVNCの仕様変更などにより、使用不可となっていた。Blockingデバッグは非常に多く行う必要があったため、-pオプションの修正を行い、1つのプロセスでデバッグを可能とした。
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
178
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
179 \section{まとめ}
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
180 本研究ではTreeVNCにWifi上のMulticast Packetを用いる手法の考察と実装と、Gradle6.1対応、java9以降のRetinaAPI対応、デバッグオプションの修正を行った。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
181
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
182 画面圧縮にHardware supportedなMPEG4などを用いることができればより効率的な転送が可能であるが、ここではJava上で実装できる安易な方法をあえて選択した。Wifiの速度とMulticastの信頼性が高ければこれでも実用になる可能性がある。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
183
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
184 Blocking後のMulticast 送信は実装中であるが、Multicast PacketのPacket loss率は、接続環境に依存すると思われるのでさらなる実験が必要だと思われる。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
185
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
186 有線接続時よりも、画面共有の質が落ちるのはある程度はやむを得ないが、再送が必要である場合には、必要なプロトコルを実装する。
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
187
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
188 VNCサーバへの接続方法の分割についても、Node接続時のNetwork Interfacesから有線接続か無線LAN接続かを完全に区別できない。接続時にユーザが選択するか、接続時にある程度区別する処理を実装する必要がある。
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
189
37
f7a79686256d update mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 36
diff changeset
190 Blockingでは1Tile毎にSYNC\_FLUSHを行なっているが、NO\_FLUSHを利用した時と比べて、圧縮率が下がってしまっているため、圧縮率の向上の手法を考察する必要がある。
36
a2a82eead86f add new Imanges
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 35
diff changeset
191
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
192
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 \thispagestyle{fancy}
35
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
195 \nocite{*}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
196 \bibliographystyle{junsrt}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
197 \bibliography{reference}
a95ea8f61214 update Slide and mid
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
198 %\addcontentsline{toc}{chapter}{参考文献}
1
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199
c1f1f84bb7b6 add template
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 \end{document}