Mercurial > hg > Papers > 2020 > riono-thesis
changeset 21:fa92cb03dac1
update chapter3 and add Blocking UpdateRectangle image
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 13 Feb 2020 21:01:10 +0900 |
parents | 69ef71aaaca6 |
children | 0f95ad78a36c |
files | FinalThesis/chapter2.tex FinalThesis/chapter3.tex FinalThesis/fig/FrameUpdateRectangle.graffle FinalThesis/fig/FrameUpdateRectangle.pdf FinalThesis/main.pdf FinalThesis/main.tex riono-thesis.mm |
diffstat | 7 files changed, 106 insertions(+), 42 deletions(-) [+] |
line wrap: on
line diff
--- a/FinalThesis/chapter2.tex Thu Feb 13 16:31:23 2020 +0900 +++ b/FinalThesis/chapter2.tex Thu Feb 13 21:01:10 2020 +0900 @@ -132,21 +132,19 @@ \begin{figure}[htb] %PDF \begin{center} -\includegraphics[scale=0.7]{fig/EncodeZRLE.pdf} +\includegraphics[scale=0.6]{fig/EncodeZRLE.pdf} \figcaption{ZRLEでデータを途中から受け取った場合} \label{fig:ZRLE} \end{center} \end{figure} -\newpage - -そこでZRLEEは一度Root Nodeで受け取ったZRLEのデータをunzipし、後述するupdate Rectangleと呼ばれる画面ごとのデータに辞書を付与してzipし直すことで、初めからデータを読み込んでいなくても解凍を出来るようになっている(図\ref{fig:ZRLEtoZRLEE})。 +そこでZRLEEは一度Root Nodeで受け取ったZRLEのデータをunzipし、後述するUpdate Rectangleと呼ばれる画面ごとのデータに辞書を付与してzipし直すことで、初めからデータを読み込んでいなくても解凍を出来るようになっている(図\ref{fig:ZRLEtoZRLEE})。 一度ZRLEEに変換してしまえば、子Nodeはそのデータをそのまま流すだけでよい。ただし、deflaterとinflaterでは前回までの通信で得た辞書をクリアしないとけないため、Root Node側とNode側では毎回新しく作る必要がある。辞書をクリアすることにより adaptive compressionを実現していることになり圧縮率が向上する。 \begin{figure}[htb] %PDF \begin{center} -\includegraphics[scale=0.8]{fig/EncodeZRLEtoZRLEE.pdf} +\includegraphics[scale=0.7]{fig/EncodeZRLEtoZRLEE.pdf} \figcaption{ZRLEEへ再圧縮されたデータを途中から受け取った場合} \label{fig:ZRLEtoZRLEE} \end{center} @@ -154,28 +152,9 @@ \newpage -TreeVNCではRFBプロトコルによって配信側の画面の変更部分はFRAME\_BUFFER\_UPDATEメッセージとして送られてくる。メッセージの中には変更部分の原点のx,y座標と縦横の幅が含まれており、長方形として展開される。この長方形をupdate Rectangleと呼ぶ。以下の表\ref{tb:updateRectangle}にupdate Rectangleの構成を示す。 - +TreeVNCではRFBプロトコルによって配信側の画面の変更部分はFRAME\_BUFFER\_UPDATEメッセージとして送られてくる。メッセージの中には変更部分の原点のx,y座標と縦横の幅等が含まれており、長方形として展開される。この長方形をUpdate Rectangleと呼ぶ。 -\begin{table}[hp] - \caption{updateRectangleの構成} - \begin{center} - \begin{tabular}{|rrr|l|} \hline - 1 byte & & & messageID \\ - 1 byte & & & padding \\ - 2 byte & & & n of rectangles \\ \hline - & 2 byte & & U16 - x-position \\ - & 2 byte & & U16 - y-position \\ - & 2 byte & & U16 - width \\ - & 2 byte & & U16 - height \\ - & 4 byte & & S32 - encoding-type \\ - & 4 byte & & U32 datalengths \\ \hline - & & 1 byte & subencoding of tile \\ - & & n byte & Run Length Encoded Tile \\ \hline - \end{tabular} - \end{center} - \label{tb:updateRectangle} -\end{table} +\newpage \section{ShareScreen} ゼミでは発表者が順々に入れ替わる。発表者が入れ替わるたびに共有する画面の切り替えが必要となる。ゼミを円滑に進めるために、画面の切り替えをスムーズに行いたい。
--- a/FinalThesis/chapter3.tex Thu Feb 13 16:31:23 2020 +0900 +++ b/FinalThesis/chapter3.tex Thu Feb 13 21:01:10 2020 +0900 @@ -1,13 +1,63 @@ -\chapter{実験} +\chapter{MalticastのためのBlockingの実装} \label{chap:poordirection} +\section{有線接続と無線LAN接続との違い} +画像配信のデータ量は膨大なため、現在のTreeVNCでVNCサーバに無線LAN接続を行なった場合、画面配信の遅延が大きくなってしまう。 + +この場合でも画面切り替えの機能は有効であるため、VNCサーバ(配信)側が無線LANで接続を行い、クライアント側は有線接続を行うことで画面配信が可能となる。ここで、WifiのMulticastの機能を用いてクライアント側でもWifiを使用することが可能であると考えられる。Root Nodeは無線LANに対して、変更するUpdate RectangleをMulticastで一度だけ送信する。 + +WifiのMulticast Packetのサイズは64KByteが最大となっている。4Kディスプレイを例にとると、4Kディスプレイの大きさの画面更新には8MByte(画素数) \* 8Byte(色情報)で圧縮前で、64MByte程度となる。 + -\section{実験説明} +\section{Update Rectangleの構成} +RFBのUpdate Rectangleは以下の表\ref{tb:updateRectangle}の構成となっている。 -\section{} +\begin{table}[htp] + \caption{UpdateRectangleの構成} + \begin{center} + \begin{tabular}{|rrr|l|} \hline + 1 byte & & & messageID \\ + 1 byte & & & padding \\ + 2 byte & & & n of rectangles \\ \hline + & 2 byte & & U16 - x-position \\ + & 2 byte & & U16 - y-position \\ + & 2 byte & & U16 - width \\ + & 2 byte & & U16 - height \\ + & 4 byte & & S32 - encoding-type \\ + & 4 byte & & U32 datalengths \\ \hline + & & 1 byte & subencoding of tile \\ + & & n byte & Run Length Encoded Tile \\ \hline + \end{tabular} + \end{center} + \label{tb:updateRectangle} +\end{table} -\section{検証結果} +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内部は + + +\begin{figure}[htb] %PDF +\begin{center} +\includegraphics[scale=0.5]{fig/FrameUpdateRectangle.pdf} +\figcaption{Rectangleの分割} +\label{fig:BlockingUpdateRectangle} +\end{center} +\end{figure} + + +Zlibは丁度良い所で圧縮をflushする必要がある。 +このためには -\section{考察} + +\section{TileLoop} + +\section{Packet Lost} +WiftのMulticast Packetは確実に送られることが保証されていない。データに通し番号をつけて、欠落を検出することはできるが、再送処理は複雑であることが予想される。そこで、一定時間ごとに全画面のデータを送信することによってPacket Lostしても画面共有に影響はないと考える。 + +\section{木構造とマルチキャストの共存}
--- a/FinalThesis/main.tex Thu Feb 13 16:31:23 2020 +0900 +++ b/FinalThesis/main.tex Thu Feb 13 21:01:10 2020 +0900 @@ -6,6 +6,7 @@ \usepackage{here} \usepackage{cite} \usepackage{url} +\usepackage{scalefnt}
--- a/riono-thesis.mm Thu Feb 13 16:31:23 2020 +0900 +++ b/riono-thesis.mm Thu Feb 13 21:01:10 2020 +0900 @@ -22,16 +22,39 @@ <node CREATED="1581238785261" ID="ID_1471975800" MODIFIED="1581238795962" TEXT="ZRLE"> <node CREATED="1581517294185" ID="ID_748832937" MODIFIED="1581517312731" TEXT="とは Zlib run length encoding"/> </node> -<node CREATED="1581238796711" ID="ID_1608135079" MODIFIED="1581238799700" TEXT="ZRLEE"/> +<node CREATED="1581238796711" ID="ID_1608135079" MODIFIED="1581238799700" TEXT="ZRLEE"> +<node CREATED="1581581132773" ID="ID_156833284" MODIFIED="1581581144161" TEXT="64*64のTile分割"/> +</node> </node> </node> <node CREATED="1581237491121" ID="ID_1312560790" MODIFIED="1581237502156" TEXT="ShareScreen"/> +<node CREATED="1581580586272" ID="ID_1888266375" MODIFIED="1581580606369" TEXT="複数のネットワーク時の接続"/> </node> <node CREATED="1580927716648" ID="ID_4678920" MODIFIED="1580927734514" POSITION="right" TEXT="Multicastの導入"/> -<node CREATED="1580927735309" ID="ID_457187552" MODIFIED="1580927741703" POSITION="right" TEXT="Blockingの手法"/> -<node CREATED="1581578986016" ID="ID_953146837" MODIFIED="1581578993084" POSITION="right" TEXT="その他やったこと"> +<node CREATED="1580927735309" ID="ID_457187552" MODIFIED="1580927741703" POSITION="right" TEXT="Blockingの手法"> +<node CREATED="1581580704582" ID="ID_1024302905" MODIFIED="1581581055406" TEXT="有線接続と無線接続の違い"/> +<node CREATED="1581581055942" ID="ID_630342983" MODIFIED="1581581076180" TEXT="UpdateRectangleの構成"> +<node CREATED="1581591179689" ID="ID_1334851042" MODIFIED="1581591185747" TEXT="先行研究"> +<node CREATED="1581591189182" ID="ID_194833918" MODIFIED="1581591201877" TEXT="1ラインで半分、半分"/> +</node> +<node CREATED="1581581091049" ID="ID_108796196" MODIFIED="1581581112405" TEXT="Rectangleの個数が1~N個から1~3個になる"> +<node CREATED="1581581176641" ID="ID_1331144395" MODIFIED="1581581193708" TEXT="各Phaseの説明"/> +</node> +</node> +<node CREATED="1581581779321" ID="ID_675537287" MODIFIED="1581581784763" TEXT="TileLoopの説明"> +<node CREATED="1581581832167" ID="ID_535530605" MODIFIED="1581581868617" TEXT="ex: フロー図を描く?"/> +<node CREATED="1581580289617" ID="ID_1404765388" MODIFIED="1581580714225" TEXT="ex:MulticastPutのコード貼る?"/> +</node> +<node CREATED="1581590989597" ID="ID_1277778866" MODIFIED="1581590995262" TEXT="パケットロストについて"/> +<node CREATED="1581581199650" ID="ID_1429909220" MODIFIED="1581581229650" TEXT="木構造マルチキャストの共存"> +<node CREATED="1581581792598" ID="ID_369116373" MODIFIED="1581581803640" TEXT="INITDataはTreeを利用して送信"/> +</node> +</node> +<node CREATED="1581578986016" ID="ID_953146837" MODIFIED="1581582025419" POSITION="right" TEXT="TreeVNCの修正"> <node CREATED="1581579001483" ID="ID_460490271" MODIFIED="1581579012139" TEXT="Gradleの最新版対応"/> -<node CREATED="1581579013064" ID="ID_972768773" MODIFIED="1581579025263" TEXT="RetinaAPIをjava11に対応"/> +<node CREATED="1581579013064" ID="ID_972768773" MODIFIED="1581579025263" TEXT="RetinaAPIをjava11に対応"> +<node CREATED="1581579888471" ID="ID_1588121025" MODIFIED="1581581880187" TEXT="ex: 変更したコードを貼る"/> +</node> <node CREATED="1581579027357" ID="ID_1166848043" MODIFIED="1581579046272" TEXT="-p オプションでデバッグ可能になった"/> </node> <node CREATED="1580927837214" ID="ID_1190992597" MODIFIED="1580927838740" POSITION="right" TEXT="まとめ"/> @@ -89,12 +112,9 @@ </node> </node> <node CREATED="1580972138303" ID="ID_1699294426" MODIFIED="1581006128968" TEXT="今回設計するTreeVNC"> -<node CREATED="1581006132547" ID="ID_1283469608" MODIFIED="1581006165955" TEXT="wifiで接続しているNodeに対してマルチキャストで画面データを送信する"> -<node CREATED="1581006932829" ID="ID_1199079922" MODIFIED="1581006949185" TEXT="有線はこれまで通りTreeStructureで行う"/> -</node> -<node CREATED="1581006166891" ID="ID_1328359305" MODIFIED="1581006647986" TEXT="Blocking"> -<node CREATED="1581006801761" ID="ID_131044893" MODIFIED="1581006813529" TEXT="データが大きいと遅延が起こる"/> -<node CREATED="1581006759051" ID="ID_1942933589" MODIFIED="1581006793797" TEXT="更新部分のRectangleをさらにphaseで分割"/> +<node CREATED="1581006849387" ID="ID_689949897" MODIFIED="1581580842731" TEXT="有線と無線の違い"> +<node CREATED="1581580884370" ID="ID_1614997699" MODIFIED="1581580897837" TEXT="1回で送信できるデータ量に制限がある"/> +<node CREATED="1581585700884" ID="ID_998861523" MODIFIED="1581586054262" TEXT="VNCサーバ側(配信側)が無線で"/> </node> <node CREATED="1581006799890" ID="ID_664832366" MODIFIED="1581006848789" TEXT="パケットロスト"> <node CREATED="1581006851477" ID="ID_440308584" MODIFIED="1581006865847" TEXT="wifiなのでパケットが落ちる可能性がある"/> @@ -102,7 +122,16 @@ <node CREATED="1581006883852" ID="ID_727521301" MODIFIED="1581006902983" TEXT="一定時間で全画面を送信することでパケットロストに対応する"/> </node> </node> -<node CREATED="1581006849387" ID="ID_689949897" MODIFIED="1581006849387" TEXT=""/> +<node CREATED="1581580847680" ID="ID_1957703225" MODIFIED="1581580862176" TEXT="UpdateRectangleの構成を変える"> +<node CREATED="1581006166891" ID="ID_1328359305" MODIFIED="1581006647986" TEXT="Blocking"> +<node CREATED="1581006801761" ID="ID_131044893" MODIFIED="1581006813529" TEXT="データが大きいと遅延が起こる"/> +<node CREATED="1581006759051" ID="ID_1942933589" MODIFIED="1581006793797" TEXT="更新部分のRectangleをさらにphaseで分割"/> +</node> +</node> +<node CREATED="1581006132547" ID="ID_1283469608" MODIFIED="1581006165955" TEXT="wifiで接続しているNodeに対してマルチキャストで画面データを送信する"> +<node CREATED="1581006932829" ID="ID_1199079922" MODIFIED="1581006949185" TEXT="有線はこれまで通りTreeStructureで行う"/> +<node CREATED="1581580751565" ID="ID_1346689312" MODIFIED="1581580769667" TEXT="INITデータはTreeStructureで送信される"/> +</node> </node> </node> <node CREATED="1580926577657" ID="ID_1208584088" MODIFIED="1580926589549" POSITION="left" TEXT="やったこと"> @@ -115,6 +144,11 @@ </node> <node CREATED="1580926503596" ID="ID_897446703" MODIFIED="1580926564774" POSITION="left" TEXT="今後の課題"> <node CREATED="1581006615333" ID="ID_1685770077" MODIFIED="1581006629545" TEXT="なぜきちんと動かなかったのか"/> +<node CREATED="1581580787364" ID="ID_1892578207" MODIFIED="1581580807636" TEXT="MulticastPacketにして送信する"/> +</node> +<node CREATED="1581580212005" ID="ID_1576561703" MODIFIED="1581580215582" POSITION="right" TEXT="付録"> +<node CREATED="1581580229848" ID="ID_1678283284" MODIFIED="1581580246386" TEXT="sigosの論文"/> +<node CREATED="1581580246795" ID="ID_1185515363" MODIFIED="1581580266770" TEXT="卒論発表のスライド資料"/> </node> </node> </map>