# HG changeset patch # User riono # Date 1588339426 -32400 # Node ID c52d91f27041363e2a21ed96ec99bab78009175d # Parent 566fbbc1592683d2f1f64300f1d333ac12a6c5d1 update diff -r 566fbbc15926 -r c52d91f27041 Paper/2020sigos.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/2020sigos.txt Fri May 01 22:23:46 2020 +0900 @@ -0,0 +1,71 @@ +・title +Multicast Wifi VNCの実装と評価 + +・abstract +講義やゼミではPC画面で用意した資料を見ながら進行することが多い。PCごとにアダプターや解像度が異なっており、正常にPC画面を表示できない場合がある。 +当研究室で開発しているTreeVNCは、発表者のPC画面を参加者のPCに表示する画面配信システムである。 + +TreeVNCの画像共有は、送信するデータ量が多いために有線LANでの接続に限られている。 +本稿では無線LANでもTreeVNCを利用可能にするため、Wifi上にシステム制御用の従来の木構造と、画像データ送信用のMulticastの両方を構築を行う。 +Multicastでは、サーバから送信された画像データUpdateRectangleを小さいパケットに分割し送信を行うよう実装した。 + + + +軽い背景 +TreeVNCを開発中 +有線しか動かん +→木構造とMulticastを共存させている +→UpdateRectangleを小さいパケットに分割して送信している + + +これは長すぎる。Wifi上に制御用の木構造オーバーレイネットワークとUpdateRectanhle用のMulticast の両方を構成して、 +UpdateRectangleを小さいパケットに分割して送るって話に集中する感じで書いて。 + +配信環境の向上を目指し + +講義やゼミではPCで用意した資料をプロジェクタに映しながら進行することが多い。 +この場合、発表者が交代するたびにケーブルを差し替える必要があり、PCによっては接続するアダプターの種類や解像度の設定により、正常にPC画面を表示できない場合がある。 +また、参加者もプロジェクタに集中を割く必要があり、同時に手元のPCで作業を行う場合、集中の妨げとなってしまう。 +当研究室で開発している画面配信システムTreeVNCは、発表者のPC画面を参加者のPC画面に表示するソフトウェアである。 +サーバに接続したクライアントをバイナリツリー状に接続し、配信コストを分散させる仕組みを取ることで、多人数が接続しても処理性能が下がらないような設計になっている。 +また、発表者を自由に切り替える仕組みが存在し、発表者の交代もスムーズに行うことができる。 +現在、TreeVNCの画面共有は送信するデータ量が多いために有線LANでの使用に限られている。 +そこで本研究では、Multicastでのデータ通信の考察やデータの分割・圧縮方法の実装、評価を行うことにより、無線LANでの配信環境の向上を目指し、 +TreeVNCの有用性を評価することで講義やゼミを円滑に行えることを目標とする。 + + +また、発表者の画面を自由に切り替える仕組みが存在し,ゼミなどでの発表に便利なものになっている. +現在,TreeVNC 画面共有は送信するデータ量が多いため有線LANでの使用に限られている. +広く使われている無線LANに対応するために +multicast でのデータ通信の実装やデータの分割・圧縮方法の評価を行い,TreeVNC のmulticastの可能性を評価する. + + +この場合、発表者のPCを接続するたびにケーブルを差し替える必要がある。 +発表者のPCによっては接続するアダプターの種類や解像度の設定により、正常にPC画面を表示できない場合がある。 +また、参加者もプロジェクタに集中を割く必要があり、同時に手元のPCで作業を行う場合、集中の妨げとなってしまう。 +当研究室で開発している画面配信システムTreeVNCは、発表者のPC画面を参加者のPC画面に表示するソフトウェアである。 +そのため、参加者は不自由なく手元のPCを操作しながら講義を受けることが可能になる。またjavaで書かれているため、 +物理的な制限に左右されることが少ない。さらに、発表者の交代の際もケーブルを差し替えずに、全体に共有する画面の切り替えが可能になっている。 +TreeVNCはVNCを使用した画面配信を行なっている。 +しかし通常のVNCでは配信側に全ての参加者が接続するため、多人数の際の処理性能が落ちてしまう。 +TreeVNCではネットワークに接続を行なった参加者をバイナリツリー状に接続することで、配信コストをクライアントに分散させる仕組みになっている。 +そのため、授業で先生の画面を表示する際、多人数の生徒が参加しても処理性能は下がらない。 +また、TreeのRootが参照しているVNCサーバを変更することで、共有する画面の切り替えが可能となる。 +しかし、画面共有は送信するデータ量が多いため、無線LANで接続を行なった際に有線接続よりも遅延が大きくなってしまう。 +そこで本研究では、Multicastでのデータ通信の考察やデータの分割・圧縮方法の実装、評価を行うことにより、無線LANでの配信環境の向上を目指し、 +TreeVNCの有用性を評価することで講義やゼミを円滑に行えることを目標とする。 + + + + +講義やゼミではPC画面で用意した資料を見ながら進行することが多い. +参加者もプロジェクタに集中を割く必要があり,手元のPCと相互に参照する場合,負担になる場合がある. +発表者が交代する場合は発表者のPC画面の切り替えでケーブルを差し替えを行う必要があるが, +PCと接続するアダプターによって正常にPC画面を表示できない場合がある. +当研究室で開発しているTreeVNCは,発表者のPC画面を参加者のPCに表示する画面配信システムである. +サーバに接続したクライアントをバイナリツリー状に接続し,配信コストを分散させる仕組みを取ることで, +多人数が接続しても処理性能が下がらないような設計になっている. +また,発表者の画面を自由に切り替える仕組みが存在し,ゼミなどでの発表に便利なものになっている. +現在,TreeVNC 画面共有は送信するデータ量が多いため有線LANでの使用に限られている. +広く使われている無線LANに対応するために +multicast でのデータ通信の実装やデータの分割・圧縮方法の評価を行い,TreeVNC のmulticastの可能性を評価する. diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/Blocking.graffle Binary file Paper/fig/Blocking.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/Blocking.pdf Binary file Paper/fig/Blocking.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/EncodeZRLE.graffle Binary file Paper/fig/EncodeZRLE.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/EncodeZRLE.pdf Binary file Paper/fig/EncodeZRLE.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/EncodeZRLEtoZRLEE.graffle Binary file Paper/fig/EncodeZRLEtoZRLEE.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/EncodeZRLEtoZRLEE.pdf Binary file Paper/fig/EncodeZRLEtoZRLEE.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/FrameUpdateRectangle.graffle Binary file Paper/fig/FrameUpdateRectangle.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/FrameUpdateRectangle.pdf Binary file Paper/fig/FrameUpdateRectangle.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/LostChild.graffle Binary file Paper/fig/LostChild.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/LostChild.pdf Binary file Paper/fig/LostChild.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/MultiNetworkTree.graffle Binary file Paper/fig/MultiNetworkTree.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/MultiNetworkTree.pdf Binary file Paper/fig/MultiNetworkTree.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/TileLoopFlow.graffle Binary file Paper/fig/TileLoopFlow.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/TileLoopFlow.pdf Binary file Paper/fig/TileLoopFlow.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/TreevncStruct.graffle Binary file Paper/fig/TreevncStruct.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/TreevncStruct.pdf Binary file Paper/fig/TreevncStruct.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/coexistence.graffle Binary file Paper/fig/coexistence.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/coexistence.pdf Binary file Paper/fig/coexistence.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/ryukyu.pdf Binary file Paper/fig/ryukyu.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/vncStruct.graffle Binary file Paper/fig/vncStruct.graffle has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/fig/vncStruct.pdf Binary file Paper/fig/vncStruct.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/riono-sigos.bib --- a/Paper/riono-sigos.bib Thu Apr 30 20:13:53 2020 +0900 +++ b/Paper/riono-sigos.bib Fri May 01 22:23:46 2020 +0900 @@ -7,7 +7,7 @@ @Misc{tightvnc, author = "{TightVNC Software}", - howpublished = "{http://www.tightvnc.com}" + howpublished = "\url{http://www.tightvnc.com}" } @Misc{vnc, @@ -20,7 +20,7 @@ @Misc{zlib, author = "{LOUP GAILLY, J., AND ADLER, M.}", title = "zlib: A massively spiffy yet delicately unobtrusive compression library.", - howpublished = "{http://zlib.net}" + howpublished = "\url{http://zlib.net}" } diff -r 566fbbc15926 -r c52d91f27041 Paper/riono-sigos.pdf Binary file Paper/riono-sigos.pdf has changed diff -r 566fbbc15926 -r c52d91f27041 Paper/riono-sigos.tex --- a/Paper/riono-sigos.tex Thu Apr 30 20:13:53 2020 +0900 +++ b/Paper/riono-sigos.tex Fri May 01 22:23:46 2020 +0900 @@ -11,8 +11,10 @@ -\usepackage[dvips]{graphicx} +%\usepackage[dvips]{graphicx} +\usepackage[dvipdfmx]{graphicx} \usepackage{latexsym} +\usepackage{url} \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline} \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\} @@ -27,67 +29,101 @@ \begin{document} -\title{情報処理学会研究報告の準備方法\\ -(2018年10月29日版)} - -\etitle{How to Prepare Your Paper for IPSJ SIG Technical Report \\ (version 2018/10/29)} - -\affiliate{IPSJ}{情報処理学会\\ -IPSJ, Chiyoda, Tokyo 101--0062, Japan} +\title{Multicast Wifi VNCの実装と評価} - -\paffiliate{JU}{情報処理大学\\ -Johoshori Uniersity} +\affiliate{KIE}{琉球大学大学院理工学研究科情報工学専攻} +\affiliate{IE}{琉球大学工学部工学科知能情報コース} -\author{情報 太郎}{Joho Taro}{IPSJ}[joho.taro@ipsj.or.jp] -\author{処理 花子}{Shori Hanako}{IPSJ} -\author{学会 次郎}{Gakkai Jiro}{IPSJ,JU}[gakkai.jiro@ipsj.or.jp] +\author{安田 亮}{Ryo Yasuda}{KIE}[riono210@cr.ie.u-ryukyu.ac.jp] +\author{河野 真治}{Shinji Kono}{IE}[kono@ie.u-ryukyu.ac.jp] \begin{abstract} -本稿は,情報処理学会研究報告に投稿する原稿を執筆する際の注意点等をまとめたものである. -\LaTeX と専用のスタイルファイルを用いた場合の論文フォーマットに関する指針, -および論文の内容に関してするべきこと, -するべきでないことをまとめたべからずチェックリストからなる. -本稿自体も\LaTeX と専用のスタイルファイルを用いて執筆されているため, -論文執筆の際に参考になれば幸いである. +講義やゼミではPC画面で用意した資料を見ながら進行することが多い。PCごとにアダプターや解像度が異なっており、正常にPC画面を表示できない場合がある。 +当研究室で開発しているTreeVNCは、発表者のPC画面を参加者のPCに表示する画面配信システムである。TreeVNCの画像共有は、送信するデータ量が多いために有線LANでの接続に限られている。 +本稿では無線LANでもTreeVNCを利用可能にするため、Wifi上にシステム制御用の従来の木構造と、画像データ送信用のMulticastの両方を構築を行う。 +Multicastでは、サーバから送信された画像データUpdateRectangleを小さいパケットに分割し送信を行うよう実装した。 \end{abstract} - -% -%\begin{jkeyword} -%情報処理学会論文誌ジャーナル,\LaTeX,スタイルファイル,べからず集 -%\end{jkeyword} -% -%\begin{eabstract} -%This document is a guide to prepare a draft for submitting to IPSJ -%Journal, and the final camera-ready manuscript of a paper to appear in -%IPSJ Journal, using {\LaTeX} and special style files. Since this -%document itself is produced with the style files, it will help you to -%refer its source file which is distributed with the style files. -%\end{eabstract} -% -%\begin{ekeyword} -%IPSJ Journal, \LaTeX, style files, ``Dos and Dont's'' list -%\end{ekeyword} - \maketitle -%1 -\section{はじめに} + +\section{画面配信ソフトウェアTreeVNCの活用} +現代の講義や発表、LTなどではPC画面で用意した資料をプロジェクタに移しながら進行することが多い。ゼミでは発表者を交代する際に、PC画面の切り替えを行う必要がある。 + +その場合、発表者のPCを接続するたびにケーブルを差し替える必要がある。発表者のPCによっては接続するアダプターの種類や解像度の設定により、正常にPC画面を表示できない場合がある。また、参加者もプロジェクタに集中を割く必要があり、同時に手元のPCで作業を行う場合集中の妨げとなってしまう。 + +当研究室で開発している画面配信システムTreeVNC\cite{taninari:2011a}は、発表者の画面を参加者のPC画面に表示するソフトウェアである。そのため、参加者は不自由なく手元のPCを操作しながら講義を受けることが可能になる。さらに、発表者の交代もケーブルの差し替えを行わずに、全体に共有する画面の切り替えが可能となっている。 + +しかし、画面共有は送信するデータ量が多いため、無線LAN接続で接続を行なった際に有線接続よりも遅延が大きくなってしまう。そこで本研究では、Multicast通信の実装を行い無線LAN接続でもTreeVNCを利用可能にし、TreeVNCの有用性を評価することで講義やゼミを円滑に行えることを目標とする。 + +\section{TreeVNCの基本概念} +Virtual Network Computing\cite{vnc}(以下VNC)は、サーバ側とクライアント(ビューワー)側からなるリモートデスクトップソフトウェアである。遠隔操作にはサーバを起動し、クライアント側がサーバに接続することで可能としている。また、動作にはRFBプロトコルを用いている。 + +Remote Frame Bufferプロトコル\cite{rfbprotocol}(以下RFB)とはVNC上で使用される、自身のPC画面をネットワーク上に送信し、他人のPC画面に表示を行うプロトコルである。画面が表示されるユーザ側をRFBクライアントと呼び、画面送信を行うためにFrameBufferの更新が行われる側をRFBサーバと呼ぶ。 + +Framebufferとは、メモリ上に置かれた画像データのことである。RFBプロトコルでは、最初にプロトコルのバージョンの確認や認証が行われる。その後、RFBクライアントへ向けてFramebuffferの大きさやデスクトップに付けられた名前などが含まれている初期メッセージを送信する。 + +RFBサーバ側はFramebufferの更新が行われるたびに、RFBクライアントに対してFramebufferの変更部分を送信する。さらに、RFBクライアントからFramebuffer - UpdateRequestが来るとそれに答え返信する。変更部分のみを送信する理由は、更新があるたびに全画面を送信すると、送信するデータ面と更新にかかる時間面において効率が悪くなるからである。 -までお寄せ頂きたい. +TreeVNCはjavaを用いて作成されたTight VNC\cite{tightvnc}を元に作成されている。TreeVNCはVNCを利用して画面配信を行なっているが、従来のVNCでは配信(サーバ)側のPCに全ての参加者(クライアント)が接続するため負荷が大きくなってしまう(図\ref{fig:vncStruct})。 +  +\begin{figure}[htb] %PDF +\begin{center} +\includegraphics[width=8cm]{fig/vncStruct.pdf} +\caption{従来のVNCでの接続構造} +\label{fig:vncStruct} +\end{center} +\end{figure} +そこでTreeVNCではサーバに接続を行なってきたクライアントをバイナリツリー状(木構造)に接続する。接続してきたクライアントをノードとし、その下に新たなノードを最大2つ接続していく。これにより人数分のデータのコピーと送信の手間を分散することができる(図\ref{fig:TreevncStruct})。 + +\begin{figure}[htb] %PDF +\begin{center} +\includegraphics[width=8cm]{fig/TreevncStruct.pdf} +\caption{TreeVNCでの接続構造} +\label{fig:TreevncStruct} +\end{center} +\end{figure} + +通信の数は、送信されるデータは従来の方法だとN個のノードに対してN-1回必要である。これはバイナリツリー状の構造を持っているTreeVNCでも通信の数は変わらない。 -\begin{acknowledgment} -A4横型に対するガイドを基に,本稿を作成した. -クラスファイルの作成においては, -京都大学の中島 浩氏にさまざまなご教示を頂き, -さらにBiB\TeX 関連ファイルの利用についても快諾頂いたことを深謝する. -また,A4横型に対するガイドを作成された当時の編集委員会の担当者に深謝する. -\end{acknowledgment} +バイナリツリー状に接続することで、N台のクライアントが接続を行なってきた場合、従来のVNCではサーバ側がN回のコピーを行なって画面配信する必要があるが、TreeVNCでは各ノードが最大2回ずつコピーするだけで画面配信が可能となる。 + +木構造のルートのノードをRoot Nodeと呼び、そこに接続されるノードをNodeと呼ぶ。Root Node は子Nodeにデータを渡す機能、各Nodeの管理、VNCサーバから送られてきたデータの管理を行なっている。各Nodeは、親Nodeから送られてきたデータを自身の子Nodeに渡す機能、子Nodeから送られてきたデータを親Nodeに渡す機能がある。 + +\section{MulticastQueue} +配信側の画面が更新されると、VNCサーバから画像データがFRAME\_BUFFER\_UPDATEメッセージとして送られる。その際、親Nodeが受け取った画像データを同時に複数の子Nodeに伝えるためにMulticastQueueというキューに画像データを格納する。 + +各NodeはMulticastQueueからデータを取得するスレッドを持つ。MulticastQueueは複数のスレッドから使用される。 + +\section{木の再構成} +TreeVNCはバイナリツリー状での接続のため、Nodeが切断されたことを検知できずにいると構成した木構造が崩れてしまい、新しいNodeを適切な場所に接続できなくなってしまう。そこで木構造を崩さないよう、Node同士の接続の再構成を行う必要がある。 + +TreeVNCの木構造のネットワークトポロジーはRoot Nodeが持っているnodeListで管理している。Nodeの接続が切れた場合、Root Nodeに切断を知らせなければならない。 + +TreeVNCはLOST\_CHILDというメッセージ通信で、Node切断の検知および木構造の再構成を行なっている。LOST\_CHILDの検出方法にはMulticastQueueを使用しており、ある一定時間MulticastQueueから画像データが取得されない場合、MemoryOverFlowを回避するためにTimeoutスレッドが用意されている。そして、Timeoutを検知した際にNodeとの接続が切れたと判断する。 +\section{データの圧縮形式} +TreeVNCでは、ZRLEE\cite{taninari:2012a}というエンコード方法でデータの圧縮を行う。ZRLEEはRFBプロトコルで使用できるZRLEというエンコードタイプを元に生成される。 +ZLRE(Zlib Run-Length Encoding)とは可逆圧縮可能なZlib形式\cite{zlib}とRun-Length Encoding方式を組み合わせたエンコードタイプである。 + +ZLREはZlibで圧縮されたデータとそのデータのバイト数がヘッダーとして付与され送信される。Zlibはjava.util.zip.deflaterとjava.util.zip.inflaterで圧縮と解凍が行える。しかしjava.util.zip.deflaterは解凍に必要な辞書を書き出す(flush)ことができない。従って、圧縮されたデータを途中から受け取ってもデータを正しく解凍することができない。 + +\begin{figure}[htb] %PDF +\begin{center} +\includegraphics[width=8cm]{fig/EncodeZRLE.pdf} +\caption{ZRLEでデータを途中から受け取った場合} +\label{fig:ZRLE} +\end{center} +\end{figure} + +\section{Blockingの実装} + +\section{Multicast用のシステム構成} + +\section{まとめ} \nocite{*} \bibliographystyle{ipsjunsrt}