# HG changeset patch # User riono # Date 1581672084 -32400 # Node ID e18aecd1693642b86104ec56e25291800ba861f9 # Parent 0f95ad78a36cafb7a63467e289afe3cc15e1610d add new chapter4 and add coexistence img diff -r 0f95ad78a36c -r e18aecd16936 FinalThesis/chapter3.tex --- a/FinalThesis/chapter3.tex Fri Feb 14 03:36:26 2020 +0900 +++ b/FinalThesis/chapter3.tex Fri Feb 14 18:21:24 2020 +0900 @@ -1,10 +1,22 @@ -\chapter{MalticastのためのBlockingの実装} +\chapter{Multicastに向けたBlockingの実装} \label{chap:poordirection} \section{有線接続と無線LAN接続との違い} -画像配信のデータ量は膨大なため、現在のTreeVNCでVNCサーバに無線LAN接続を行なった場合、画面配信の遅延が大きくなってしまう。 +現在のTreeVNCでは有線接続と無線LAN接続のどちらでも、VNCサーバから画面配信の提供を受けることが可能である。しかし画像配信のデータ量は膨大なため、現在のTreeVNCでVNCサーバに無線LAN接続を行なった場合、画面配信の遅延が大きくなってしまう。 + +無線LAN接続時の場合でも画面切り替えの機能は有効であるため、VNCサーバ側が無線LANで接続を行い、クライアント側は有線接続を行うことで画面配信が可能となる。ここで、WifiのMulticastの機能を用いてクライアント側でもWifiを使用することが可能であると考えられる。Root Nodeは無線LANに対して、変更するUpdate RectangleをMulticastで一度だけ送信する。 + +有線接続の場合は従来通り、VNCサーバ、Root Node、Nodeからなるバイナリツリー状に接続されるため、有線接続時と無線LAN接続時でのVNCサーバの接続方法を分割することが可能である(図\ref{fig:coexistence})。こうすることにより、新しいNodeが無線LAN接続であっても有線接続の木構造には影響を及ぼさない。 -この場合でも画面切り替えの機能は有効であるため、VNCサーバ(配信)側が無線LANで接続を行い、クライアント側は有線接続を行うことで画面配信が可能となる。ここで、WifiのMulticastの機能を用いてクライアント側でもWifiを使用することが可能であると考えられる。Root Nodeは無線LANに対して、変更するUpdate RectangleをMulticastで一度だけ送信する。 +\begin{figure}[htb] %PDF +\begin{center} +\includegraphics[scale=0.35]{fig/coexistence.pdf} +\figcaption{接続方法の分割} +\label{fig:coexistence} +\end{center} +\end{figure} + +\newpage WifiのMulticast Packetのサイズは64KByteが最大となっている。4Kディスプレイを例にとると、4Kディスプレイの大きさの画面更新には8MByte(画素数) \* 8Byte(色情報)で圧縮前で、64MByte程度となる。 @@ -32,12 +44,12 @@ \label{tb:updateRectangle} \end{table} -1つのUpdate Rectangleには複数のRectangleが入っており、さらに1つ1つのRectangleにはx,y座標や縦横幅、encoding type が含まれているRectangle Headerを持っている。ここではZRLEで圧縮されたRectangleが1つ、VNCサーバから送られてくる。RectangleにはZlib圧縮されたデータが、datelengthsと呼ばれる指定された長さだけ付いてくる。このデータは、さらに64x64のtileに分割されている\ref{fig:BlockingUpdateRectangle}中 Tile)。 +1つのUpdate Rectangleには複数のRectangleが入っており、さらに1つ1つのRectangleにはx,y座標や縦横幅、encoding type が含まれているRectangle Headerを持っている。ここではZRLEで圧縮されたRectangleが1つ、VNCサーバから送られてくる。RectangleにはZlib圧縮されたデータが、datelengthsと呼ばれる指定された長さだけ付いてくる。このデータは、さらに64x64のtileに分割されている(図\ref{fig:BlockingUpdateRectangle}中 Tile)。 \newpage tile内はパレットなどがある場合があるが、通常はRun Length encodeされたRGBデータである。 -これまでのTreeVNCではVNCサーバから受け取ったRectangleを分割せずにZRLEEへ再構成を行なっていた。これをMluticastのためにデータを64KByteに収まる最大3つのRectangleに再構成する(図\ref{fig:BlockingUpdateRectangle})。この時に、tile内部は +これまでのTreeVNCではVNCサーバから受け取ったRectangleを分割せずにZRLEEへ再構成を行なっていた。これをMluticastのためにデータを64KByteに収まる最大3つのRectangleに再構成する(図\ref{fig:BlockingUpdateRectangle})。この時にtile内部は変更する必要はないが、Rectangleの構成は変わる。ZLREを展開しつつ、Packetを構成する必要がある。 \begin{figure}[htb] %PDF @@ -49,10 +61,16 @@ \end{figure} -Zlibは丁度良い所で圧縮をflushする必要がある。 -このためには +Zlibは丁度良い所で圧縮をflushする必要がある。このためには、ZlibのAPIを用いて、適当なタイミングでflushを呼ぶ。この時に1tileずつflushしてしまうと圧縮率を下げる可能性がある。 + +64KByteのPacketの中には複数のtileが存在するが、連続してRectangleを構成する必要がある。3つの +Rectangleの構成を下記に示す。 - +\begin{itemize} +\item 行の途中から始まり、行の最後までを構成するRectangle(図\ref{fig:BlockingUpdateRectangle}中 Phase0) +\item 行の初めから最後までを構成するRectangle(図\ref{fig:BlockingUpdateRectangle}中 Phase1) +\item 行の初めから、行の途中までを構成するRectangle(図\ref{fig:BlockingUpdateRectangle}中 Phase2) +\end{itemize} \section{TileLoop} @@ -60,4 +78,4 @@ \section{Packet Lost} WiftのMulticast Packetは確実に送られることが保証されていない。データに通し番号をつけて、欠落を検出することはできるが、再送処理は複雑であることが予想される。そこで、一定時間ごとに全画面のデータを送信することによってPacket Lostしても画面共有に影響はないと考える。 -\section{木構造とマルチキャストの共存} + diff -r 0f95ad78a36c -r e18aecd16936 FinalThesis/chapter4.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FinalThesis/chapter4.tex Fri Feb 14 18:21:24 2020 +0900 @@ -0,0 +1,10 @@ +\chapter{TreeVNCのソースコードの修正改善} +\label{chap:otherInplementation} + +\section{Gradle 6.1対応} + + +\section{java9以降のRetinaAPI対応} + + +\section{デバッグ環境の構築} diff -r 0f95ad78a36c -r e18aecd16936 FinalThesis/fig/FrameUpdateRectangle.graffle Binary file FinalThesis/fig/FrameUpdateRectangle.graffle has changed diff -r 0f95ad78a36c -r e18aecd16936 FinalThesis/fig/FrameUpdateRectangle.pdf Binary file FinalThesis/fig/FrameUpdateRectangle.pdf has changed diff -r 0f95ad78a36c -r e18aecd16936 FinalThesis/fig/coexistence.graffle Binary file FinalThesis/fig/coexistence.graffle has changed diff -r 0f95ad78a36c -r e18aecd16936 FinalThesis/fig/coexistence.pdf Binary file FinalThesis/fig/coexistence.pdf has changed diff -r 0f95ad78a36c -r e18aecd16936 FinalThesis/main.pdf Binary file FinalThesis/main.pdf has changed diff -r 0f95ad78a36c -r e18aecd16936 FinalThesis/main.tex --- a/FinalThesis/main.tex Fri Feb 14 03:36:26 2020 +0900 +++ b/FinalThesis/main.tex Fri Feb 14 18:21:24 2020 +0900 @@ -62,12 +62,12 @@ % 基礎概念 \input{chapter2.tex} -% 実験 +% Blockingの実装 \input{chapter3.tex} % 他の論文との比較 -%\input{chapter4.tex} +\input{chapter4.tex} % 今後の課題 \input{future.tex} diff -r 0f95ad78a36c -r e18aecd16936 riono-thesis.mm --- a/riono-thesis.mm Fri Feb 14 03:36:26 2020 +0900 +++ b/riono-thesis.mm Fri Feb 14 18:21:24 2020 +0900 @@ -32,7 +32,9 @@ - + + + @@ -46,9 +48,6 @@ - - -