# HG changeset patch # User oc # Date 1414574245 -32400 # Node ID 3275b58829c7d878954d2164e5d05f74d7873e31 # Parent f8cb6edde76fe2d12cc9e3669226e7db65383ba9 update diff -r f8cb6edde76f -r 3275b58829c7 pic/MultiNetworkTree.bb --- a/pic/MultiNetworkTree.bb Wed Oct 29 13:38:35 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -%%Title: ./MultiNetworkTree.pdf -%%Creator: extractbb 20140317 -%%BoundingBox: 38 653 392 795 -%%CreationDate: Tue Oct 28 17:17:57 2014 - diff -r f8cb6edde76f -r 3275b58829c7 pic/TreeVNC.bb --- a/pic/TreeVNC.bb Wed Oct 29 13:38:35 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -%%Title: ./TreeVNC.pdf -%%Creator: extractbb 20140317 -%%BoundingBox: 35 639 211 795 -%%CreationDate: Tue Oct 28 17:17:54 2014 - diff -r f8cb6edde76f -r 3275b58829c7 report.aux --- a/report.aux Wed Oct 29 13:38:35 2014 +0900 +++ b/report.aux Wed Oct 29 18:17:25 2014 +0900 @@ -5,15 +5,19 @@ \@writefile{toc}{\contentsline {section}{\numberline {2}VNC}{1}} \@writefile{toc}{\contentsline {section}{\numberline {3}TreeVNC}{1}} \@writefile{toc}{\contentsline {section}{\numberline {4}動的なport番号の指定}{1}} -\bibcite{1}{1} -\bibcite{2}{2} +\newlabel{tb:message}{{4}{2}} +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces 通信経路とmessage一覧}}{2}} \@writefile{toc}{\contentsline {section}{\numberline {5}Treeの構成の変更}{2}} \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces マルチネットワークに対応したTreeVNCの図}}{2}} \newlabel{fig:figure2}{{2}{2}} \@writefile{toc}{\contentsline {section}{\numberline {6}ホスト切り替え時の挙動の修正}{2}} \@writefile{toc}{\contentsline {section}{\numberline {7}まとめ}{2}} -\@writefile{toc}{\contentsline {section}{\numberline {8}今後の課題}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}画像データの遅延}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}エラーハンドリング}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {8.3}音声データの共有}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {8.4}画面の大きさをホスト側で変更できる}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {8}画像データの遅延}{2}} +\bibcite{1}{1} +\bibcite{2}{2} +\bibcite{3}{3} +\bibcite{4}{4} +\bibcite{5}{5} +\@writefile{toc}{\contentsline {section}{\numberline {9}クライアントのエラーメッセージの通知}{3}} +\@writefile{toc}{\contentsline {section}{\numberline {10}音声データの配信}{3}} +\@writefile{toc}{\contentsline {section}{\numberline {11}画面の大きさの制御}{3}} diff -r f8cb6edde76f -r 3275b58829c7 report.dvi Binary file report.dvi has changed diff -r f8cb6edde76f -r 3275b58829c7 report.log --- a/report.log Wed Oct 29 13:38:35 2014 +0900 +++ b/report.log Wed Oct 29 18:17:25 2014 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.14159265-p3.5-130605-2.6 (utf8.euc) (TeX Live 2014) (preloaded format=platex 2014.10.23) 29 OCT 2014 13:35 +This is e-pTeX, Version 3.14159265-p3.5-130605-2.6 (utf8.euc) (TeX Live 2014) (preloaded format=platex 2014.10.23) 29 OCT 2014 18:13 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -110,6 +110,9 @@ \f@ncyO@olf=\skip51 \f@ncyO@orf=\skip52 ) +(/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/lscape.sty +Package: lscape 2000/10/22 v3.01 Landscape Pages (DPC) +) LaTeX Warning: Unused global option(s): [9.5pt]. @@ -117,38 +120,44 @@ (./report.aux) \openout1 = `report.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 20. -LaTeX Font Info: ... okay on input line 20. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 20. -LaTeX Font Info: ... okay on input line 20. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 20. -LaTeX Font Info: ... okay on input line 20. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 20. -LaTeX Font Info: ... okay on input line 20. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 20. -LaTeX Font Info: ... okay on input line 20. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 20. -LaTeX Font Info: ... okay on input line 20. -LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 20. -LaTeX Font Info: ... okay on input line 20. -LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 20. -LaTeX Font Info: ... okay on input line 20. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 22. +LaTeX Font Info: ... okay on input line 22. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 22. +LaTeX Font Info: ... okay on input line 22. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 22. +LaTeX Font Info: ... okay on input line 22. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 22. +LaTeX Font Info: ... okay on input line 22. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 22. +LaTeX Font Info: ... okay on input line 22. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 22. +LaTeX Font Info: ... okay on input line 22. +LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 22. +LaTeX Font Info: ... okay on input line 22. +LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 22. +LaTeX Font Info: ... okay on input line 22. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <12> on input line 24. +(Font) <12> on input line 26. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <8> on input line 24. +(Font) <8> on input line 26. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <6> on input line 24. +(Font) <6> on input line 26. LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 27. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 30. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 27. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 30. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 40. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 40. File: pic/TreeVNC.eps Graphic file (type eps) LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <10> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 92. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 125. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <10> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 92. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 125. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <9> on input line 138. File: pic/emblem-bitmap.pdf Graphic file (type eps) @@ -162,23 +171,16 @@ ] File: pic/MultiNetworkTree.eps Graphic file (type eps) - -Overfull \hbox (3.57736pt too wide) in paragraph at lines 131--132 - [] - [] + [2] [3 -LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <12> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 158. -LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <12> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 158. -[2] (./report.aux) ) +] (./report.aux) ) Here is how much of TeX's memory you used: - 853 strings out of 493807 - 9589 string characters out of 6151950 - 73447 words of memory out of 5000000 - 4358 multiletter control sequences out of 15000+600000 - 13884 words of font info for 54 fonts, out of 8000000 for 9000 + 883 strings out of 493807 + 9983 string characters out of 6151950 + 82636 words of memory out of 5000000 + 4380 multiletter control sequences out of 15000+600000 + 14953 words of font info for 58 fonts, out of 8000000 for 9000 929 hyphenation exceptions out of 8191 - 25i,15n,43p,250b,364s stack positions out of 5000i,500n,10000p,200000b,80000s + 25i,15n,43p,224b,366s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on report.dvi (2 pages, 12500 bytes). +Output written on report.dvi (3 pages, 18152 bytes). diff -r f8cb6edde76f -r 3275b58829c7 report.pdf Binary file report.pdf has changed diff -r f8cb6edde76f -r 3275b58829c7 report.tex --- a/report.tex Wed Oct 29 13:38:35 2014 +0900 +++ b/report.tex Wed Oct 29 18:17:25 2014 +0900 @@ -2,6 +2,8 @@ \usepackage[dvips]{graphicx} \usepackage{picins} \usepackage{fancyhdr} +\usepackage{lscape} +%\usepackage{multicol} %\pagestyle{fancy} \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}} 琉球大学主催 工学部情報工学科 中間発表予稿} \rhead{} @@ -18,33 +20,46 @@ \pagestyle{empty} \begin{document} -\title{授業やゼミ向けの画面共有システムTreeVNCの機能拡張} +\title{授業やゼミ向けの画面配信システムTreeVNCの機能拡張} \author{115747H 大城美和 {}{} 指導教員 : 河野真治} \date{} \maketitle \thispagestyle{fancy} + \section{はじめに} -本研究室では、TreeVNCという画面共有システムを開発している。 +本研究室では、TreeVNCという画面配信システムを開発している。 ゼミや講義の質を高め、快適にプレゼンテーションを聴講でき、 参加者同士が充分なコミュニケーションを取れることを目的としている。 +% どこまでできてて今回の研究でなにをするか % TreeVNCの負荷分散の話 TreeVNCは、接続しに来たクライアントをバイナリツリー状に接続する。 バイナリツリーなら、各nodeに最大2台分のクライアントしか接続されない。 -従来のVNCの場合、rootに複数のクライアントが接続される。 -TreeVNCはVNCよりも配信時に画像データをコピーする回数が少ない。 +$N$台のクライアントが接続しに来た場合、 +画面配信の画像データをコピーする回数は、 +従来のVNCでは$N$回、TreeVNCでは$log N * 2$回となる。 TreeVNCは、rootへの負荷を各nodeに分散することにより、 -処理性能の向上を計る。 +処理性能が向上している。 % 画面共有ボタンの話 -ゼミで画面共有を行う場合、発表者が頻繁に入れ替わる。 +ゼミで画面配信を行う場合、発表者が頻繁に入れ替わる。 プロジェクタを使用している場合、 入れ替えの度にケーブルを挿し直す必要がある。 -TreeVNCには、画面共有ボタンが付いており、 +TreeVNCには、画面配信ボタンが付いており、 発表者はそれを押すことによって、画面を切り替えをスムーズに行える。 +既に、クライアントがツリー状に接続する設計や画面切り替え等の、 +基本機能はできていた。 + +しかし、画面切り替えのプロトコルに不備があり、 +リファクタリングをすると共に、port番号の割り当てや、 +その他のプロトコルの見直しを行ってきた。 +今研究では、更にTreeVNCに新しい機能を実装していく。 + + + \begin{figure}[htpb] \begin{center} \includegraphics[width=70mm]{pic/TreeVNC.eps} @@ -62,7 +77,7 @@ \section{TreeVNC} TreeVNCは、TightVNCのjava版のビューアを元に -作成された画面共有システムである。 +作成された画面配信システムである。 接続しにきたクライアントは図\ref{fig:treeVNC}の様に、 ツリー状に構成される。 @@ -84,33 +99,84 @@ 以前は固定長portを使用しmessageの通信を行っていたが、 一意なportを割り当てられているnodeが通信を行うことによって、 どのport番号が使用されているかを意識する必要がなくなった。 +通信しているmessageの一覧を表1に示す。 -rootと子node間の通信を行うmessageは以下である。 +%\begin{description} +% \setlength{\parskip}{0cm} % 段落間 +% \setlength{\itemsep}{0cm} % 項目間 +% \item[CONNECT\_TO\_AS\_LEADER、CONNECT\_TO]\mbox{}\\ +% node間の接続を行うmessage +% \item[WHERE\_TO\_CONNECT]\mbox{}\\ +% どのnodeと接続するかを知らせるmessage +% \item[LOST\_PARENT]\mbox{}\\ +% 親nodeとの接続が切れてしまった場合のmessage +% \item[NEW\_NODE]\mbox{}\\ +% 新しいnodeが接続した場合のmessage +% \item[SERVER\_CHANGE\_REQUEST]\mbox{}\\ +% クライアントが画面共有ボタンを押した際のmessage +% \item[CHECK\_DELAY\_REPLY]\mbox{}\\ +% rootとnode間の通信における遅延を計測するためのmessage +%\end{description} + +messageの通信経路一覧は以下である。 \begin{description} \setlength{\parskip}{0cm} % 段落間 \setlength{\itemsep}{0cm} % 項目間 - \item[CONNECT\_TO\_AS\_LEADER、CONNECT\_TO]\mbox{}\\ - node間の接続を行うmessage - \item[WHERE\_TO\_CONNECT]\mbox{}\\ - どのnodeと接続するかを知らせるmessage - \item[LOST\_PARENT]\mbox{}\\ - 親nodeとの接続が切れてしまった場合のmessage - \item[NEW\_NODE]\mbox{}\\ - 新しいnodeが接続した場合のmessage - \item[SERVER\_CHANGE\_REQUEST]\mbox{}\\ - クライアントが画面共有ボタンを押した際のmessage - \item[CHECK\_DELAY\_REPLY]\mbox{}\\ - rootとnode間の通信における遅延を計測するためのmessage + \item[send direct message]\mbox{}\\ + 直接メッセージを送信する + \item[message down tree]\mbox{}\\ + ツリー状に下りながらメッセージを送信する + \item[message up tree]\mbox{}\\ + ツリー状に上りながらメッセージを送信する + \item[send message]\mbox{}\\ + メッセージを送信する \end{description} -\newpage + +\begin{table*}[htb] + \small + \begin{tabular}{|l|l|l|} \hline + 通信経路 & message & 説明 \\ \hline \hline + & FIND\_ROOT & 子node接続時にrootを探す。 \\ \cline{2-3} + send direct message & WHERE\_TO\_CONNECT & どのnodeに接続すれば良いかを聞く。 \\ \cline{2-3} + (child to root) & LOST\_PARENT & 親nodeの接続が切れた時にrootに知らせる。 \\ \hline + + & FIND\_ROOT\_REPLY & FIND\_ROOTへの返信。 \\ \cline{2-3} + send direct message & CONNECT\_TO & nodeとnodeの接続をする。 \\ \cline{2-3} + (root to child) & CONNECT\_TO\_AS\_LEADER & 左子nodeとして、nodeとnodeの接続をする。 \\ \hline + + message down tree & FRAMEBUFFER\_UPDATE & TreeVNC用に圧縮されている、画面の差分の画像データ。\\ \cline{2-3} + (root to child) & CHECK\_DELAY & 通信の遅延を測定するmessage。 \\ \hline + + message up tree & CHECK\_DELAY\_REPLY & CHECK\_DELAYへの返信。 \\ \cline{2-3} + (child to root) & SERVER\_CHANGE\_REQUEST & 画面切り替えのリクエスト。 \\ \hline + + & FRAMEBUFFER\_UPDATE\_REPLY & FRAMEBUFFER\_UPDATEのリクエスト。 \\ \cline{2-3} + send message & SET\_PIXEL\_FORMAT & pixel値の設定。 \\ \cline{2-3} + (root to VNCServer) & SET\_ENCODINGS & pixelデータのencodeTypeの設定。 \\ \cline{2-3} + & KEY\_EVENT & キーボードからのイベント。 \\ \cline{2-3} + & POINTER\_EVENT & ポインタからのイベント。 \\ \cline{2-3} + & CLIENT\_CUT\_TEXT & テキストのカットバッファを持った際のmessage。 \\ \hline + + & FRAMEBUFFER\_UPDATE & 画面の差分の画像データ。 \\ \cline{2-3} + send message & SET\_COLOR\_MAP\_ENTRIES & 指定されているpixel値にマップするRGB値。 \\ \cline{2-3} + (VNCServer to root) & BELL & ビープ音を鳴らす。 \\ \cline{2-3} + & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline + + \end{tabular} + \label{tb:message} + \caption{通信経路とmessage一覧} +\end{table*} + + \section{Treeの構成の変更} -従来のTreeVNCには、クライアントの木構造は単一であった。 +従来のTreeVNCは、クライアントの接続する木構造が単一であった。 そのため、ネットワークインターフェースが違うクライアントが 同じ木に混在している状況が生じた。 + 速度の遅いクライアントが木に存在すると、 そのクライアント以下の通信速度が遅くなってしまう。 @@ -126,9 +192,9 @@ こうすることによって、TreeVNCを複数のネットワークインターフェイス別に 木構造を構成することができる。 -\begin{figure}[htpd] +\begin{figure}[!h] \begin{center} - \includegraphics[width=90mm]{pic/MultiNetworkTree.eps} + \includegraphics[width=80mm]{pic/MultiNetworkTree.eps} \end{center} \caption{マルチネットワークに対応したTreeVNCの図} \label{fig:figure2} @@ -138,7 +204,7 @@ \section{ホスト切り替え時の挙動の修正} 画面の切り替えを行う際、新しいホスト側の画面に生じた -ビデオフィードバックが他のユーザに共有されてしまう問題があった。 +ビデオフィードバックが他のユーザに配信されてしまう問題があった。 ホストの切り替えの際、 新しいホスト側のviewerを閉じることで問題を解決した。 @@ -147,66 +213,73 @@ \section{まとめ} TreeVNCにリファクタリングを行うことによって、 -有線LANや無線LANといった -複数のネットワークインターフェイスで通信することができる。 +開発環境を整え、 +複数のネットワークインターフェイスでの通信が遅い問題を解消し、 これは開発環境を整えることや、利便性の向上に繋がる。 -\section{今後の課題} - \subsection{画像データの遅延} - 現在のTreeVNCでは、 - 全画像データの書き換えが立て続けに起こってしまった場合、 - データの受け渡し処理で遅延が発生する。 +\section{画像データの遅延} +現在のTreeVNCでは、 +全画像データの書き換えが立て続けに起こってしまった場合、 +データの受け渡し処理で遅延が発生する。 - 送られてきた全てのデータを画面に出力するのではなく、 - VNCServerから立て続けに大きい画像データが送信されたことを検知し、 - 最新のデータのみを取得し出力するといった実装を行う。 +送られてきた全てのデータを画面に出力するのではなく、 +VNCServerから立て続けに大きい画像データが送信されたことを検知し、 +最新のデータのみを取得し出力するといった実装を行う。 +\newpage - \subsection{エラーハンドリング} - クライアントが画面の切替を行う際、 - 接続が確立する前に、通信の段階でエラーが生じた場合、 - そのエラーメッセージがrootに出力されるという問題がある。 +\section{クライアントのエラーメッセージの通知} +クライアントが画面の切替を行う際、 +接続が確立する前に、通信の段階でエラーが生じた場合、 +そのエラーメッセージがrootに出力されるという問題がある。 - クライアントのエラーを検出した際にそのクライアントのIDを取得する。 - 木構造を下に辿って、 - エラーメッセージを含むデータを - クライアントに送信する。 - 下へと降る際、各nodeでIDの確認をし、 - 一致した箇所でエラーメッセージを出力するような実装を行う。 +クライアントのエラーを検出した際にそのクライアントのIDを取得する。 +木構造を下に辿って、 +エラーメッセージを含むデータを +クライアントに送信する。 +下へと降る際、各nodeでIDの確認をし、 +一致した箇所でエラーメッセージを出力するような実装を行う。 - \subsection{音声データの共有} - 現在TreeVNCが共有しているのは画面のデータのみである。 - 遠隔からプレゼンテーションや授業を聴講したい場合、 - 画面のデータに加えて音声データが欲しい。 +\section{音声データの配信} +現在TreeVNCが配信しているのは画面のデータのみである。 +遠隔からプレゼンテーションや授業を聴講したい場合、 +画面のデータに加えて音声データが欲しい。 - TreeVNCに、画像データと共に音声データを追加する。 +TreeVNCに、画像データと共に音声データを追加する。 - \subsection{画面の大きさをホスト側で変更できる} - 現在のTreeVNCは、ホスト側の画面全体を送信している。 - マルチディスプレイを持っているホストだと、 - 2つの画面が共有されてしまう。 - 共有する画面をホスト側で指定できる様にする。 +\section{画面の大きさの制御} +現在のTreeVNCは、ホスト側の画面全体を送信している。 +マルチディスプレイを持っているホストだと、 +2つの画面が配信されてしまう。 +配信する画面をホスト側で指定できる様にする。 - ホスト側にviewerの代わりに枠を用意し、 - その枠内のデータのみを共有するといった機能を追加する。 - この機能を追加することによって、 +ホスト側にviewerの代わりに枠を用意し、 +その枠内のデータのみを配信するといった機能を追加する。 +この機能を追加することによって、 \begin{thebibliography}{9} -\bibitem{1} - TightVNC: VNC-Compatible Free Remote Control / Remote Desktop Software\\ - \verb|http://www.tightvnc.com/| -\bibitem{2} - 谷成雄, 河野真治, 授業やゼミ向けの画面共有システムTreeVNCの設計と実装 A Screen Sharing System using Tree Structure for Seminar and Classwork 平成25年度 学位論文(修士) + \bibitem{1} + TightVNC: VNC-Compatible Free Remote Control / Remote Desktop Software\\ + \verb|http://www.tightvnc.com/| + \bibitem{2} + RFB Protocol - rfbproto.pdf\\ + \verb|http://www.realvnc.com/docs/rfbproto.pdf| + \bibitem{3} + 谷成雄, 河野真治, 授業やゼミ向けの画面共有システムTreeVNCの設計と実装 A Screen Sharing System using Tree Structure for Seminar and Classwork 平成25年度 学位論文(修士) + \bibitem{4} + 谷成雄, 大城信康, 河野真治. VNCを用いた授業用画面共有システムの設計・開発 Design and implementation of Screen Sharing System with VNC for lecture 情報処理学会論文誌 Vol.53 No.2 (Feb. 2012) + \bibitem{5} + 谷成雄, 大城信康, 河野真治. VNC を用いた授業用画面共有システムの設計と実装. 日本ソフトウェア科学会第 28 会大会(2011 年度) 講演論文集 \end{thebibliography}