[GGW3.2.1] クライアントドライブ機能で GGW3.2.0.4203 ではプロトコルエラー (Connection broken) が発生しなかったが,GGW3.2.1.4510 へアップグレードしたところプロトコルエラーが発生するようになった.どのような原因が考えられるか?
技術ノート
2016/10/05
[番号]
技術ノート KGTN 2016092102
[現象]
[GGW3.2.1] クライアントドライブ機能で GGW3.2.0.4203 ではプロトコルエラー (Connection broken) が発生しなかったが,GGW3.2.1.4510 へアップグレードしたところプロトコルエラーが発生するようになった.どのような原因が考えられるか?
[説明]
GGのサーバーとクライアント間の通信は全て Component SDK を使用して行われ,通信はコンポーネント (API) 毎に処理されます.サーバー側からクライアント側へコピーされた場合, Windows API の CopyFile が実行され,それに対するコンポーネント上でサーバー側からクライアント側へファイルの内容のデータ転送が行われます.比較的大きなファイルをコピーした場合,コンポーネント上で多量のデータ転送 (多数のパケット転送) の発生するため, Component SDK の処理で輻輳が発生します.この結果,操作や描画のコンポーネントの通信が正常に処理されず,画面操作等で反応が無いという状況が発生します.輻輳によって致命的な異常な状態に陥った場合は,この後クライアントのフリーズが発生します.そうでない場合は,ファイルの内容のデータ転送が終わることで輻輳が終了し,画面操作等が可能となります. CopyFile の処理には,比較的大きなファイルをコピーした場合に EOF を検出できないという不具合があるため,ファイルの内容のデータ転送が終わった後もファイルのロックが解除されません.しかし,数分~10分ほど経過すると Component SDK が異常を検知しコンポーネントの処理を強制終了させるため,ファイルのロックが解除されます.
GGW3.2.0.4226 では,クライアントドライブ機能の修正は行われておりませんが,新たに通信異常時に自動的にセッションを再接続する機能 (セッション再接続機能) が実装されました.この機能を実現するためにプロトコルの異常を検知する処理が加わったため,輻輳の発生がプロトコルエラーとして認識されるようになりました.後継の GGW3.2.1.4510 にもセッション再接続機能がありますので,同じ原因でプロトコルエラーとなります.
[Automatic Reconnect] GO-Global for Windows version 3.2.0.4226 allows users to automatically reconnect to their session after the client's connection to the server has been broken. When the client's connection to the server is broken, the user is presented with the following dialog: <<Your connection to server [server name] has been broken. Would you like to reconnect?>>
なお,クライアントドライブ機能の不具合は,GraphOn社の調査でアーキテクチャーに起因しているという結論となり,バージョン4.0で全く新しいアーキテクチャーでクライアントドライブ機能が再実装 (修正) されております.
[CASE#8252] Development did some investigation into this issue today. They have said that the CopyFile function in GGW3.2 is a very complicated function. As a result, it will be difficult and risky to fix this bug in GGW 3.2. The target milestone for this issue to be resolved is version 4.0 since it will be fixed by design.