# HG changeset patch # User e155702 # Date 1550563664 -32400 # Node ID 7361e0e27566cc17273bb95b773716207ca490f8 # Parent db263deb0e75bd378b19176aa7618eed102f5b81 update pretex diff -r db263deb0e75 -r 7361e0e27566 final_main/chapter2.tex --- a/final_main/chapter2.tex Tue Feb 19 14:31:46 2019 +0900 +++ b/final_main/chapter2.tex Tue Feb 19 17:07:44 2019 +0900 @@ -26,8 +26,7 @@ バイナリツリーのルートのノードを Root Node と呼び、そこに接続されるノードを Node と呼ぶ。 Root Nodeは、子 Node にデータを流す機能、各 Node の管理、VNC サーバから流れてきたデータの管理を担っている。各 Node は、親 Node から送られてきたデータを自身の子 Node に流す機能、子 Node から送られてきたデータを親 Node に流す機能を担っている。 -TreeVNC でやり取りする画像データ量は莫大であり、大きなネットワークスループットが必要となるため、多人数で使用する場合は特に有線接続が必要となる。 - + \begin{figure}[htpb] \begin{center} diff -r db263deb0e75 -r 7361e0e27566 final_main/chapter3.tex --- a/final_main/chapter3.tex Tue Feb 19 14:31:46 2019 +0900 +++ b/final_main/chapter3.tex Tue Feb 19 17:07:44 2019 +0900 @@ -2,12 +2,9 @@ -\section{IPv6 アドレス対応} -アドレスを取得する際、IPv4address と IPv6address の両方を表示し、 +\section{VNCServer の暴走} +ReceiverTask 側で正しくデータを受け取れなかったりといった予期しない -\section{hidescreen} -%displaymode の時に viewer が出ないようにしている - - -\section{errordialog} \ No newline at end of file +\section{errordialog} +TreeVNCServer にクライアントとして接続した際に、接続を許可するかどうか確認する authentication のポップアップが Root 側にも表示されてしまっていた問題を修正した。 \ No newline at end of file diff -r db263deb0e75 -r 7361e0e27566 final_pre/Makefile --- a/final_pre/Makefile Tue Feb 19 14:31:46 2019 +0900 +++ b/final_pre/Makefile Tue Feb 19 17:07:44 2019 +0900 @@ -1,6 +1,6 @@ # Created by Daichi Toma on Nov 16, 2011 -TARGET=midterm +TARGET=main LATEX=platex BIBTEX=pbibtex diff -r db263deb0e75 -r 7361e0e27566 final_pre/images/frame-update-rectangle-crop.pdf Binary file final_pre/images/frame-update-rectangle-crop.pdf has changed diff -r db263deb0e75 -r 7361e0e27566 final_pre/images/treevnc-crop.pdf Binary file final_pre/images/treevnc-crop.pdf has changed diff -r db263deb0e75 -r 7361e0e27566 final_pre/images/vnc-crop.pdf Binary file final_pre/images/vnc-crop.pdf has changed diff -r db263deb0e75 -r 7361e0e27566 final_pre/main.pdf Binary file final_pre/main.pdf has changed diff -r db263deb0e75 -r 7361e0e27566 final_pre/main.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/main.tex Tue Feb 19 17:07:44 2019 +0900 @@ -0,0 +1,121 @@ +\documentclass[twocolumn,twoside,9.5pt]{jarticle} +%\usepackage[dvips]{graphicx} +\usepackage[dvipdfmx]{graphicx} +\usepackage{picins} +\usepackage{fancyhdr} +%\pagestyle{fancy} +\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業発表予稿} +\rhead{} +\cfoot{} + +\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} +\setlength{\headheight}{0mm} +\setlength{\headsep}{5mm} +\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} +\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} +\setlength{\textwidth}{181mm} +\setlength{\textheight}{261mm} +\setlength{\footskip}{0mm} +\pagestyle{empty} + +\begin{document} +\title{画面共有システム TreeVNC の拡張} +\author{学籍番号 155702F 氏名 {大城}{由也} 指導教員 : {河野}{真治}} +\date{平成31年 2月 20日} +\maketitle + +%\begin{abstract} +%\end{abstract} + + +\thispagestyle{fancy} + + +\section{研究目的} +講義や発表の場では、資料やスライドを表示するためにプロジェクタが使用されることが多い。プロジェクタを使用していると、発表者を切り替えるたびにケーブルを差し替える必要がある。差し替えの際に発表者の PC によっては正常に画面を表示できない場合がある。 + +当研究室で開発している画面配信システム TreeVNC は、発表者の画面を参加者の PC に表示するソフトウェアである。TreeVNC を使用することで、参加者は不自由なく手元の PC を使用しながら講義を受ける事が可能になる。更に発表者の切り替えの際も、ケーブルの差し替えを行わずに共有する画面の切替を可能としている。 + +しかし、画像配信システムは送信するデータ量が多いため、現在の TreeVNC では無線 LAN 接続の場合、画面の配信に遅延が生じてしまう。そこで本研究では、TreeVNC のマルチキャスト対応の実装や、データの分割方法の評価を行うことにより、無線 LAN での配信環境の向上を目指し、TreeVNC の有用性を評価することで講義やゼミを円滑に行えることを目標とする。 + +\section{VNC} +VNC (Virtual Network Computing) は、RFB プロトコルを用いて PC の遠隔操作を行うことを目的としたリモートデスクトップソフトウェアである。 + +サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている。 + +\section{RFB(Remote Frame Buffer) プロトコル} +RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコルである。 + +ユーザがいる(画面を表示される)側と FrameBuffer への更新が行われる(自身の画面を送信する)側に分かれ、それぞれを RFB クライアント、RFB サーバと呼ぶ。FrameBuffer は、メモリ上に置かれた画像データのことである。 + +\section{TreeVNC の構造} +TreeVNC はサーバーに接続してきたクライアントをバイナリツリー状に接続している。接続してきたクライアントを Node とし、その下に新たなクライアントを接続していくことで、サーバーが画面のデータを配信する回数を抑え、負荷分散している(図\ref{fig:treevnc})。バイナリツリー状に接続することで、画像データのコピーを各 Node に負担させることができ、従来の VNC ではクライアントが N 台接続するとサーバー側が N 回コピーを行なって配信していた(図\ref{fig:vnc})が、この接続方法であれば各ノードが 2 回ずつコピーすることで配信を可能にしている。 + +TreeVNC でやり取りする画像データ量は莫大であり、大きなネットワークスループットが必要となるため、多人数で使用する場合は特に有線接続が必要となる。 + +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.3]{images/treevnc-crop.pdf} + \end{center} + \caption{TreeVNC の構造} + \label{fig:treevnc} +\end{figure} + +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.3]{images/vnc-crop.pdf} + \end{center} + \caption{従来の VNC の構造} + \label{fig:vnc} +\end{figure} + + +\section{TreeVNC の問題点} +TreeVNC には TreeVNCServer にクライアントが接続している状態で、VNCServer 側が何らかの要因で接続を切ってしまった場合、クライアント側が正しく切断されない問題と、VNCServer にクライアントとして接続した際に、画面の操作を許可するかどうか確認する authentication のポップアップが Root 側にも表示されてしまっていた問題が生じており、修正を行った。 + + +\section{画像データの Blocking} +無線 LAN 通信は、有線接続と比較して一度に送信できるデータ量が少ない。そのためサーバー側が送信した更新データが正確にクライアントに送られない可能性がある。 + +対策として、データを分割( Blocking )して送信する手法を実装した。 + +従来の TreeVNC では、配信側の画面が更新された場合、サーバーから FRAME\_BUFFER\_UPDATE メッセージが送信され、更新データは MulticastQueue というキューに格納される。 + +Blocking は、更新データを長方形( Rectangle )で分割し、 MulticastQueue に格納する。MulticastQueue に格納されたデータは、 +%なぜ長方形?? +%サーバーから直接送信されるのか?? + +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.3]{images/frame-update-rectangle-crop.pdf} + \end{center} + \caption{更新データの分割方法} + \label{fig:frame-update-rectangle-crop} +\end{figure} + + +\section{まとめ} + +%1) TreeVNCのbug取り (VNCserver側を止めらると暴走するとか) +%2) Christie を使った実装(現状の実装の通信部分の切り分け +%3) Christie によるNAT越え +%4) Multicast・Broadcast によるWifiでの使用 + +本研究では画面配信システム TreeVNC の改良と Multicast 対応のためのパケットの Blocking を行った。 + +TreeVNCServer にクライアントが接続している状態で、VNCServer 側が接続を切断した場合、クライアントが暴走せず正しく終了する様になった。 + +VNCServer にクライアントとして接続した際に、画面の操作を許可するかどうか確認する authentication のポップアップが Root 側に表示されない様になった。 + +パケットの Blocking を行うことにより、無線 LAN 接続での Multicast 対応を行えるようになった。 + +また今後の課題として、Multicast の実装、Multicast 時の遅延などの評価を行う。 + +% 参考文献 +\def\line{−\hspace*{-.7zw}−} +\nocite{*} +\bibliographystyle{junsrt} +\bibliography{reference} + + +\end{document} \ No newline at end of file diff -r db263deb0e75 -r 7361e0e27566 final_pre/midterm.pdf Binary file final_pre/midterm.pdf has changed diff -r db263deb0e75 -r 7361e0e27566 final_pre/midterm.synctex.gz Binary file final_pre/midterm.synctex.gz has changed diff -r db263deb0e75 -r 7361e0e27566 final_pre/midterm.tex --- a/final_pre/midterm.tex Tue Feb 19 14:31:46 2019 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -\documentclass[twocolumn,twoside,9.5pt]{jarticle} -%\usepackage[dvips]{graphicx} -\usepackage[dvipdfmx]{graphicx} -\usepackage{picins} -\usepackage{fancyhdr} -%\pagestyle{fancy} -\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿} -\rhead{} -\cfoot{} - -\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} -\setlength{\headheight}{0mm} -\setlength{\headsep}{5mm} -\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} -\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} -\setlength{\textwidth}{181mm} -\setlength{\textheight}{261mm} -\setlength{\footskip}{0mm} -\pagestyle{empty} - -\begin{document} -\title{画面共有システム TreeVNC の拡張} -\author{学籍番号 155702F 氏名 {大城}{由也} 指導教員 : {河野}{真治}} -\date{平成30年 11月 16日} -\maketitle - -%\begin{abstract} -%\end{abstract} - - -\thispagestyle{fancy} - - -\section{研究目的} -講義や発表の場では、用意された資料や PC 画面を見ながら進行することが多い。ゼミなどでは発表者を切り替えながら発表を行う。 -通常このような場面では、資料やスライドを表示するためにプロジェクタが使用されている。ゼミの際には発表者を切り替えるたびにプロジェクタにケーブルを差し替える必要がある。ケーブルの差し替えの際に発表者の PC によってはアダプターの種類や解像度の設定により、正常に PC 画面を表示できない場合がある。 - -画面配信システム TreeVNC は発表者の画面を参加者の PC に表示するソフトウェアである。TreeVNC を使用することで、参加者は不自由なく手元の PC を使用しながら講義を受ける事が可能になる。更に発表者の切り替えの際も、ケーブルの差し替えを行わずに共有する画面の切替を可能としている。 - -TreeVNC は VNC(Virtual Network Computing) を使用した画面配信を行っている。しかし、通常の VNC では配信側に全ての参加者が接続するため、多人数の際の処理性能が落ちてしまう。TreeVNC では有線でネットワークに接続した参加者をバイナリツリー状に接続し、 配信コストをクライアントに分散させる仕組みをとっている。そのため、講義で発表者の画面を表示する際、多人数の生徒が参加しても処理性能が下がらない。また、ツリーのルートが参照している VNC サーバーを変更することで、共有する画面の切替が可能となっている。 - -しかし、画像配信システムは送信するデータ量が多いため、現在の TreeVNC では無線 LAN 接続の場合、画面の配信に遅延が生じてしまう。そこで本研究では、マルチキャスト対応の実装やデータの分割・圧縮方法の評価を行うことにより、無線 LAN での配信環境の向上を目指し、TreeVNC の有用性を評価することで講義やゼミを円滑に行えることを目標とする。 - -\section{VNC} -VNC(Virtual Network Computing) は、 RFB プロトコルを用いて遠隔操作を行うリモートデスクトップソフトウェアである。 -サーバー側とクライアント(ビューア)側に分かれており、 -サーバー起動後クライアントがサーバに接続することで遠隔操作を可能としている。 - -\section{RFB(Remote Frame Buffer) プロトコル} -RFB プロトコルは、自身の画面を送信しネットワーク越しに他者の画面に表示するプロトコルである。ユーザがいる側を RFB クライアント、Framebuffer への更新が行われる側を RFB サーバと呼ぶ。Framebuffer とは、メモリ上に置かれた画像データである。 - -プロトコルを起動した際の動作は以下の順である。 -\begin{itemize} - \item プロトコルバージョンの確認や認証を行う。 - \item クライアントに向けて Framebuffer の大きさやデスクトップに付けられた名称などが含まれた初期メッセージが送信される。 - \item RFB サーバ側は Framebuffer の更新が行われるたびに RFB クライアントに対して Framebuffer の変更部分だけを送信する。 - \item RFB クライアントから FramebufferUpdateRequest が来るとそれに返信する。 -\end{itemize} - -\section{TreeVNC の構造} -TreeVNC は Java を用いて作成された TightVNC を元に構成されている。TreeVNC はクライアント同士を接続させ、データを受け取ったクライアントが次のクライアントにそのデータを流す方式を取っている。また、サーバへ接続しにきたクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。バイナリツリー状に接続することで、N 台のクライアントが接続しにきた場合、画面配信の画像データをコピーする回数が従来の VNC ではサーバが N 回コピーする必要があるが、TreeVNC では各ノードが2回ずつコピーするだけで済み、負荷を分散することができる。 - -TreeVNC で送受信される画像データ量は莫大であり、大きなネットワークスループットが必要となるため、現在では有線接続が必須となっている。 - -バイナリツリーのルートのノードを Root Node と呼び、そこに接続されるノードを Node と呼ぶ。Root Node は子 Node にデータを流す機能・各 Node の管理・VNC サーバから流れてきたデータの管理 -を担っている。各 Node は親 Node から送られてきたデータを自身の子 Node に流す機能・子 Node から送られてきたデータを親 Node に流す機能を担っている。 - -\begin{figure}[htbp] - \begin{center} - \includegraphics[scale=0.5]{./images/treeVnc.pdf} - \end{center} - \caption{構成される木構造} - \label{fig:tree} -\end{figure} - -\section{TreeVNC の原理} -従来の VNC と TreeVNC の構造(図\ref{fig:treeVncTheory})の比較を行い、TreeVNC の原理と性能を示す。 - -\begin{figure}[htbp] - \begin{center} - \includegraphics[scale=0.25]{./images/treeVncTheory} - \end{center} - \caption{ポート一本にかかる負荷} - \label{fig:treeVncTheory} -\end{figure} - -表\ref{tb:treeVncTheory}はそれぞれのポート一本あたりの通信量である。 -通常の VNC の場合、クライアント数に比例してポート一本あたりの負荷が増えている。TreeVNC の場合は1つの Node に対して2台の Node が接続するため、最大でも親から送信されるデータと2つの子に送信するデータ分の負荷になる。 - -送信するデータ量も通常の VNC の場合 Node 数に比例した量のデータを送信する必要があり、CPU に負荷がかかってしまう。それに対して TreeVNC はクライアントが増えても送信するデータはクライアント毎に分散されているため、1台の CPU に掛かる負荷は一定となる。そのため、性能が低下せずに画面配信を行うことが出来る。 - -\begin{table}[htbp] - \begin{center} - \caption{ポート一本あたりの通信量(N はノード数, d はデータ量)} - \begin{tabular}{|l|l|l|} \hline - & 通常の VNC & TreeVNC \\ \hline - 通信量 & N * d & (2 + 1) * d \\ \hline - \end{tabular} - \label{tb:treeVncTheory} - \end{center} -\end{table} - -%\section{圧縮形式} -%TreeVNC は ZRLEE というエンコードでデータのやり取りを行う。ZRLEE は RFB プロトコルで使えるエンコーディングタイプの ZRLE を元に生成され、ZRLE は Zlib で圧縮されたデータとそのデータのバイト数がヘッダーとして付けて送られてくる。また Zlib は java.util.zip.deflater と java.util.zip.inflater で圧縮と解凍が行える。 -% -%しかし、java.util.zip.deflater は解凍に必要な辞書を書き出す(flush)ことが出来ない。 -%そのため図\ref{fig:zrleFail} のように、Zlib 圧縮されたデータを途中から受け取ってもデータを正しく解凍することが出来ない。 -% -%そこで ZRLEE は 一度 Root Node で受け取った ZRLE のデータを unzip し、 データを update rectangle という画面毎のデータに辞書を付けて zip し直すことで初めからデータを呼んでいなくても解凍を行えるようになっている(図\ref{fig:zrlee})。 -%一度 ZRLEE に変換してしまえば子 Node はそのデータをそのまま流すだけで良い。ただし、deflater と inflater では前回までの通信で得た辞書をクリアしないといけないため、 Root Node と Node 側では毎回新しく作る必要がある。 -% -%\begin{figure}[htbp] -% \begin{center} -% \includegraphics[scale=0.4]{./images/zrleFail.pdf} -% \end{center} -% \caption{ZRLEでの問題点} -% \label{fig:zrleFail} -%\end{figure} -% -%\begin{figure}[htbp] -% \begin{center} -% \includegraphics[scale=0.4]{./images/zrlee.pdf} -% \end{center} -% \caption{ZRLEE} -% \label{fig:zrlee} -%\end{figure} - -\newpage -\section{課題} - -%1) TreeVNCのbug取り (VNCserver側を止めらると暴走するとか) -%2) Christie を使った実装(現状の実装の通信部分の切り分け -%3) Christie によるNAT越え -%4) Multicast・Broadcast によるWifiでの使用 - -現在の TreeVNC の問題として、 VNC サーバ側を停止することでクライアントとの接続が切断されると error ログをはき続けて暴走してしまう点や、無線接続では動作が安定しない点が挙げられる。今後の方針として、暴走を止めるためのコード修正と、無線接続での安定した動作を確立のために Wi-Fi を利用した Multicast ・ Broadcast の対応を行う。 - -また本研究室では、データ通信に対して信頼性と拡張性の高い通信の提供を目的とした分散フレームワークシステム Christie の開発・設計を行っており、その前身となった Alice で AliseVNC の実装がすでに行われているため、 Christie を使用した TreeVNC の再実装を行う。 -%その際、 Christie による NAT 越えの実装も行う。 - -\section{まとめ} -本研究で Multicast ・ Broadcast による Wi-Fi での使用の対応・ Christie を使用した再実装を行うことで、 TreeVNC の安定した動作を実現することができ、講義などでの使用がより現実的になる。 - - -% 参考文献 -\def\line{−\hspace*{-.7zw}−} -\nocite{*} -\bibliographystyle{junsrt} -\bibliography{reference} - - -\end{document} \ No newline at end of file