Mercurial > hg > Papers > 2020 > riono-thesis
changeset 11:357b0da7e417
update chapter2
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 10 Feb 2020 21:49:09 +0900 |
parents | d379cefa7436 |
children | edcd2f53121b |
files | FinalThesis/chapter2.tex FinalThesis/main.pdf |
diffstat | 2 files changed, 21 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/FinalThesis/chapter2.tex Mon Feb 10 20:34:46 2020 +0900 +++ b/FinalThesis/chapter2.tex Mon Feb 10 21:49:09 2020 +0900 @@ -53,7 +53,7 @@ Node間で行われるメッセージ通信にはRFBプロトコルで提供されているメッセージに加え、TreeVNC独自のメッセージを使用している。TreeVNCで使用されるメッセージの一覧を表\ref{tb:messageTable}に示す。 -\begin{table}[htbp] +\begin{table}[tbp] \begin{center} \tblcaption{通信経路とメッセージ一覧} \scalebox{0.7}{ @@ -89,15 +89,31 @@ \label{tb:messageTable} \end{center} \end{table} + \newpage +\section{MulticastQueue} +配信側の画面が更新されると、VNCサーバから画面データがFRAME\_BUFFER\_UPDATEメッセージとして送らる。その際、画像データの更新を同時に複数のNodeに伝えるためにMulticastQueueというキューにデータを蓄積している。 +各Nodeはこのキューから画像データを取得し、画面の描画を行う。 + \section{木の再構成} -TreeVNCはバイナリツリー状での接続のため、Nodeが切断されたことを検知できずにいると構成した木構造が崩れてしまい、新しいNodeを適切な場所に接続できなくなってしまう。そこで木構造を崩さないよう、Node同士の接続の再構成を行う必要がある。TreeVNCの木構造の接続形態はRoot Nodeが持っているnodeListというリストで管理をしている。つまり、Nodeの接続が切れた場合Root Nodeに切断を知らせなければならない。 +TreeVNCはバイナリツリー状での接続のため、Nodeが切断されたことを検知できずにいると構成した木構造が崩れてしまい、新しいNodeを適切な場所に接続できなくなってしまう。そこで木構造を崩さないよう、Node同士の接続の再構成を行う必要がある。 + +TreeVNCの木構造の接続形態はRoot Nodeが持っているnodeListというリストで管理している。nodeList内のtreeNumという値が各Nodeに割り当てられており、これによって木構造のどの位置にNodeが接続されているかの判別が可能である。 +よって、Nodeの接続が切れた場合Root Nodeに切断を知らせなければならない。TreeVNCはLOST\_CHILDというメッセージ通信で、Node切断の検知および木構造の再構成を行っている。 + +LOST\_CHILDの検出方法には、MulticastQueueを用いている。ある一定時間MulticastQueueから画像データが取得されない場合MemoryOverFlowを回避するためにTimeoutスレッドが用意されている。Timeoutを検知した際にNodeとの接続が切れたと判断する。 +LOST\_CHILDの検知と木構造の再構成の手順を以下に示す。 -配信側の画面が更新されるとVNC Serverから画像データが +\begin{itemize} +\item 子Nodeの切断を検知したNodeがRoot NodeへLOST\_CHILDメッセージを送信する +\item LOST\_CHILDメッセージを受け取ったRoot NodeはnodeListの更新を行う +\item 切断したNodeをnodeListから削除し、nodeListの最後尾のNodeに切断したNodeとtreeNumを割り当てる +\item Root Nodeは最後尾のNodeに、切断した子Nodeが接続していた親Nodeに接続するよう、COMMECT\_TOメッセージを送信する +\item 最後尾のNodeが子Nodeを失った親Nodeへ接続を行う +\end{itemize} - - +%lost childの図を持ってきて入れる \section{ShareScreen}