# HG changeset patch # User oc # Date 1414557515 -32400 # Node ID f8cb6edde76fe2d12cc9e3669226e7db65383ba9 # Parent f281e372d8f20a288d0af67d24b0f22edb0b53b6 update diff -r f281e372d8f2 -r f8cb6edde76f .report.tex.swp Binary file .report.tex.swp has changed diff -r f281e372d8f2 -r f8cb6edde76f report.aux --- a/report.aux Wed Oct 29 11:12:27 2014 +0900 +++ b/report.aux Wed Oct 29 13:38:35 2014 +0900 @@ -1,20 +1,19 @@ \relax \@writefile{toc}{\contentsline {section}{\numberline {1}はじめに}{1}} -\newlabel{fig:figure1}{{1}{1}} +\newlabel{fig:treeVNC}{{1}{1}} \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces TreeVNCの図}}{1}} \@writefile{toc}{\contentsline {section}{\numberline {2}VNC}{1}} \@writefile{toc}{\contentsline {section}{\numberline {3}TreeVNC}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {4}TreeVNCのリファクタリング}{1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}port番号の変更}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {4}動的なport番号の指定}{1}} \bibcite{1}{1} \bibcite{2}{2} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Treeの構成の変更}{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 {subsection}{\numberline {4.3}ホスト切り替え時の挙動の修正}{2}} -\@writefile{toc}{\contentsline {section}{\numberline {5}まとめ}{2}} -\@writefile{toc}{\contentsline {section}{\numberline {6}今後の課題}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}画像データの遅延}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}エラーハンドリング}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}音声データの共有}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4}画面の大きさをホスト側で変更できる}{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}} diff -r f281e372d8f2 -r f8cb6edde76f report.dvi Binary file report.dvi has changed diff -r f281e372d8f2 -r f8cb6edde76f report.log --- a/report.log Wed Oct 29 11:12:27 2014 +0900 +++ b/report.log Wed Oct 29 13:38:35 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 11:11 +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 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -145,68 +145,12 @@ (Font) Font shape `JY1/gt/m/n' tried instead on input line 27. File: pic/TreeVNC.eps Graphic file (type eps) -Overfull \hbox (3.57736pt too wide) in paragraph at lines 53--54 - [] - [] - -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 77. -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 77. - -Underfull \hbox (badness 10000) in paragraph at lines 92--106 -[]\JY1/mc/m/n/10 子 \OT1/cmr/m/n/10 node \JY1/mc/m/n/10 が最初に \OT1/cmr/m/n/1 -0 root \JY1/mc/m/n/10 へと通信を行う \OT1/cmr/m/n/10 mes-sage - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 92--106 -\OT1/cmr/m/n/10 (FIND[]ROOT\JY1/mc/m/n/10 、 \OT1/cmr/m/n/10 FIND[]ROOT[]REPLY) -\JY1/mc/m/n/10 、 \OT1/cmr/m/n/10 node \JY1/mc/m/n/10 間の - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 92--106 -\JY1/mc/m/n/10 接続を行う \OT1/cmr/m/n/10 mes-sage (CON-NECT[]TO[]AS[]LEADER\JY -1/mc/m/n/10 、 - [] - - -Underfull \hbox (badness 2376) in paragraph at lines 92--106 -\OT1/cmr/m/n/10 CON-NECT[]TO)\JY1/mc/m/n/10 、 どの \OT1/cmr/m/n/10 node \JY1/m -c/m/n/10 と接続するかを知らせる - [] - - -Underfull \hbox (badness 1057) in paragraph at lines 92--106 -\OT1/cmr/m/n/10 mes-sage (WHERE[]TO[]CONNECT)\JY1/mc/m/n/10 、 親 \OT1/cmr/m/n/ -10 node \JY1/mc/m/n/10 との接続 - [] - - -Underfull \hbox (badness 1418) in paragraph at lines 92--106 -\JY1/mc/m/n/10 しい \OT1/cmr/m/n/10 node \JY1/mc/m/n/10 が接続した場合の \OT1/c -mr/m/n/10 mes-sage (NEW[]NODE)\JY1/mc/m/n/10 、 - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 92--106 -\JY1/mc/m/n/10 クライアントが画面共有ボタンを押した際の \OT1/cmr/m/n/10 mes- - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 92--106 -\OT1/cmr/m/n/10 sage (SERVER[]CHANGE[]REQUEST)\JY1/mc/m/n/10 、 \OT1/cmr/m/n/10 - root \JY1/mc/m/n/10 と \OT1/cmr/m/n/10 node - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 92--106 -\JY1/mc/m/n/10 間の通信における遅延を計測するための \OT1/cmr/m/n/10 mes-sage - [] - +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. +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. File: pic/emblem-bitmap.pdf Graphic file (type eps) - + Package Fancyhdr Warning: \headheight is too small (0.0pt): Make it at least 20.37784pt. @@ -219,18 +163,22 @@ ] File: pic/MultiNetworkTree.eps Graphic file (type eps) -Overfull \hbox (3.57736pt too wide) in paragraph at lines 127--128 +Overfull \hbox (3.57736pt too wide) in paragraph at lines 131--132 [] [] +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) ) Here is how much of TeX's memory you used: - 849 strings out of 493807 - 9540 string characters out of 6151950 + 853 strings out of 493807 + 9589 string characters out of 6151950 73447 words of memory out of 5000000 - 4355 multiletter control sequences out of 15000+600000 - 13576 words of font info for 53 fonts, out of 8000000 for 9000 + 4358 multiletter control sequences out of 15000+600000 + 13884 words of font info for 54 fonts, out of 8000000 for 9000 929 hyphenation exceptions out of 8191 - 25i,16n,43p,250b,366s stack positions out of 5000i,500n,10000p,200000b,80000s + 25i,15n,43p,250b,364s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on report.dvi (2 pages, 12668 bytes). +Output written on report.dvi (2 pages, 12500 bytes). diff -r f281e372d8f2 -r f8cb6edde76f report.pdf Binary file report.pdf has changed diff -r f281e372d8f2 -r f8cb6edde76f report.tex --- a/report.tex Wed Oct 29 11:12:27 2014 +0900 +++ b/report.tex Wed Oct 29 13:38:35 2014 +0900 @@ -26,21 +26,17 @@ \section{はじめに} -% 目的を先に書く -本研究では、 +本研究室では、TreeVNCという画面共有システムを開発している。 ゼミや講義の質を高め、快適にプレゼンテーションを聴講でき、 参加者同士が充分なコミュニケーションを取れることを目的としている。 -%TreeVNCに新たな機能の実装を行う。 -本研究室では、TreeVNCという画面共有システムを開発している。 -TreeVNCに新たな機能の実装を行っていく。 % TreeVNCの負荷分散の話 TreeVNCは、接続しに来たクライアントをバイナリツリー状に接続する。 -多人数で使用する場合でも、各nodeに最大2台分のクライアントしか接続されない。 -従来のVNCの場合、rootに多人数分のクライアントが接続される。 -TreeVNCとVNCとでは、配信する画像データをコピーする回数が違う。 -TreeVNCは、rootへの負担を各nodeに分散するため、 -処理性能の低下を防いでいる。 +バイナリツリーなら、各nodeに最大2台分のクライアントしか接続されない。 +従来のVNCの場合、rootに複数のクライアントが接続される。 +TreeVNCはVNCよりも配信時に画像データをコピーする回数が少ない。 +TreeVNCは、rootへの負荷を各nodeに分散することにより、 +処理性能の向上を計る。 % 画面共有ボタンの話 ゼミで画面共有を行う場合、発表者が頻繁に入れ替わる。 @@ -48,16 +44,15 @@ 入れ替えの度にケーブルを挿し直す必要がある。 TreeVNCには、画面共有ボタンが付いており、 発表者はそれを押すことによって、画面を切り替えをスムーズに行える。 + \begin{figure}[htpb] \begin{center} - \includegraphics[width=90mm]{pic/TreeVNC.eps} + \includegraphics[width=70mm]{pic/TreeVNC.eps} \end{center} - \label{fig:figure1} + \label{fig:treeVNC} \caption{TreeVNCの図} \end{figure} -\newpage - \section{VNC} VNC(Virtual Network Computing)は、 RFBプロトコルを使用し遠隔操作を行うリモートデスクトップソフトである。 @@ -68,59 +63,68 @@ \section{TreeVNC} TreeVNCは、TightVNCのjava版のビューアを元に 作成された画面共有システムである。 - +接続しにきたクライアントは図\ref{fig:treeVNC}の様に、 +ツリー状に構成される。 -\section{TreeVNCのリファクタリング} -TreeVNCをリファクタリングを行い、大幅な変更を加えた。 - \subsection{port番号の変更} - TreeVNCは複雑の分散アルゴリズムを用いたシステムであり、 - デバッグを行う環境を整える必要がある。 +\section{動的なport番号の指定} +TreeVNCは複雑な分散アルゴリズムを用いたシステムであり、 +デバッグを行う環境を整える必要がある。 + +従来のTreeVNCでは、固定長portを複数利用していた。 +port番号は一意なので、1台で複数のTreeVNCを立ち上げることができない。 - 従来のTreeVNCでは、固定長ポートを複数利用していた。 - そのせいで通信プロトコルが複雑になり、 - 1台で複数のTreeVNCを立ち上げることができなかった。 +動的にport番号を割り当てることで、 +1つのnodeに対して複数のTreeVNCを起動することを可能にした。 +最低限のソケットポートを開けることによって、 +メモリの使用量を抑えることにも繋がる。 - ダイナミックにportを変更することによって、 - 1つのnodeに対して複数のTreeVNCを起動することを可能にした。 - 最低限のソケットポートを開けることによって、 - メモリの使用を抑えた。 - - rootと子node間の通信を行うmessageは以下である。 +% messageの説明にportにどんな関係があるのかあとから +以前は固定長portを使用しmessageの通信を行っていたが、 +一意なportを割り当てられているnodeが通信を行うことによって、 +どのport番号が使用されているかを意識する必要がなくなった。 - 子nodeが最初にrootへと通信を行うmessage - (FIND\_ROOT、FIND\_ROOT\_REPLY)、 - node間の接続を行うmessage - (CONNECT\_TO\_AS\_LEADER、CONNECT\_TO)、 - どのnodeと接続するかを知らせるmessage - (WHERE\_TO\_CONNECT)、 - 親nodeとの接続が切れてしまった場合のmessage - (LOST\_PARENT)、 - 新しいnodeが接続した場合のmessage - (NEW\_NODE)、 - クライアントが画面共有ボタンを押した際のmessage - (SERVER\_CHANGE\_REQUEST)、 - rootとnode間の通信における遅延を計測するためのmessage - (CHECK\_DELAY\_REPLY) +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} + +\newpage - \subsection{Treeの構成の変更} +\section{Treeの構成の変更} - TreeVNCを、複数のネットワークインターフェイスで - 使用できるようにリファクタリングを行った。 +従来のTreeVNCには、クライアントの木構造は単一であった。 +そのため、ネットワークインターフェースが違うクライアントが +同じ木に混在している状況が生じた。 +速度の遅いクライアントが木に存在すると、 +そのクライアント以下の通信速度が遅くなってしまう。 - 従来のTreeVNCは、単一のネットワークでしか使用出来なかった。 - 複数のネットワークインターフェースで、 - 別の木構造を形成するように設計し直した。 +この問題を解決するために、 +図2の様に、ネットワークインターフェース別に +木構造を形成するように設計した。 - TreeVNCは、rootがnodeListというリストを持って木構造を管理している。 - 複数のネットワークインターフェースで木構造を形成する場合、 - このnodeListをネットワークインターフェース毎に作成しておく。 - 新しいnodeを接続する際、nodeのネットワークインターフェースを取得し、 - どのnodeListに登録されるかが決まる。 - こうすることによって、TreeVNCを複数のネットワークインターフェイスで - 使用することができる。 +TreeVNCは、rootがnodeListというリストを保持し、木構造を管理している。 +複数のネットワークインターフェースで木構造を形成する場合、 +このnodeListをネットワークインターフェース毎に作成しておく。 +新しいnodeを接続する際、nodeのネットワークインターフェースを取得し、 +どのnodeListに登録されるかが決まる。 +こうすることによって、TreeVNCを複数のネットワークインターフェイス別に +木構造を構成することができる。 \begin{figure}[htpd] \begin{center} @@ -132,23 +136,20 @@ - \subsection{ホスト切り替え時の挙動の修正} - 画面の切り替えを行う際、ホスト側の画面の - ビデオフィードバックが生じてしまい、 - その結果が他のユーザに共有されてしまう問題を解決した。 +\section{ホスト切り替え時の挙動の修正} +画面の切り替えを行う際、新しいホスト側の画面に生じた +ビデオフィードバックが他のユーザに共有されてしまう問題があった。 - ホストを切り替える際にviewerを閉じる様、設計した。 - また、元のホストでは、viewerが立ち上がる様にした。 +ホストの切り替えの際、 +新しいホスト側のviewerを閉じることで問題を解決した。 - ビデオフィードバックが共有されないよう、 - 手動でviewerを最小化する必要がなくなった。 \section{まとめ} -TreeVNCに上記の様なリファクタリングを行うことによって、 -今後の開発環境を整い、 -通信できるネットワークインターフェースの幅が広がり、 -TreeVNCの利便性が向上した。 +TreeVNCにリファクタリングを行うことによって、 +有線LANや無線LANといった +複数のネットワークインターフェイスで通信することができる。 +これは開発環境を整えることや、利便性の向上に繋がる。 @@ -159,15 +160,15 @@ 全画像データの書き換えが立て続けに起こってしまった場合、 データの受け渡し処理で遅延が発生する。 + 送られてきた全てのデータを画面に出力するのではなく、 VNCServerから立て続けに大きい画像データが送信されたことを検知し、 - 送られてきた全てのデータを画面に出力するのではなく、 最新のデータのみを取得し出力するといった実装を行う。 \subsection{エラーハンドリング} -% SeverChange時の子nodeのエラーメッセージがrootに出力される。 - クライアントが画面の切替を行った際に生じた - クライアントのエラーが、rootに出力されるという問題がある。 + クライアントが画面の切替を行う際、 + 接続が確立する前に、通信の段階でエラーが生じた場合、 + そのエラーメッセージがrootに出力されるという問題がある。 クライアントのエラーを検出した際にそのクライアントのIDを取得する。 木構造を下に辿って、 @@ -177,10 +178,6 @@ 一致した箇所でエラーメッセージを出力するような実装を行う。 -%\section{新機能の実装} -%%参加者同士の充分なコミュニケーションを提供するために、以下の機能が考えられる。 -%TreeVNCを使用し、参加者が充分なコミュニケーションを行うために、以下の機能が考えられる。 - \subsection{音声データの共有} 現在TreeVNCが共有しているのは画面のデータのみである。 @@ -195,14 +192,11 @@ 現在のTreeVNCは、ホスト側の画面全体を送信している。 マルチディスプレイを持っているホストだと、 2つの画面が共有されてしまう。 - これでは発表者が切り替わる毎に、 - クライアント側で画面の大きさを手動で変更しなければならない。 - そこで、画面の大きさをホスト側で変更したい。 + 共有する画面をホスト側で指定できる様にする。 ホスト側にviewerの代わりに枠を用意し、 その枠内のデータのみを共有するといった機能を追加する。 この機能を追加することによって、 - 本来共有する必要のないデータを共有することがなくなる。