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