破損したファイルのコピー Windows 2012 -> VPN -> Windows 2012

破損したファイルのコピー Windows 2012 -> VPN -> Windows 2012

Cisco ASA5505 VPN 経由で Wi​​ndows 2012 サーバーから別のサーバーにファイルをコピーするときに問題が発生します。Win2008 サーバーで同様の設定を行ったことがありますが、問題は発生していません (こちら側は同じ ASA5505 です)

約 20 MB 以上のファイルの場合、20 個に 1 個程度 (1 日に 1 回または 2 回) でデータ破損が発生する傾向があります。

破損は、約 5 つの破損領域 (ファイルの 1 MB セクション内にすべて局在する場合もあります) の形で発生する傾向があり、各領域の長さは約 12 バイトで、ファイル全体で約 60 バイトの破損が発生します。ファイル サイズは変わりません。

私はネイティブ SQLServer ログシップ コピーと robocopy でこれを確認しました。

これに関連して、Windows のドラッグ アンド ドロップを使用して 40 GB のファイルをコピーすると、通常、15 ~ 30 GB あたりでコピーが失敗します (または、コピーに何らかの破損が生じます)。Win2012 -> VPN -> SBS2011 をコピーし、次に SBS2011 -> Win2012 をコピーすると、この問題は発生しないようです。

ASA5505 では圧縮が有効になっていないようです。標準の NetMonitor SMBErrors トレースでエラーは検出されませんでした。

答え1

これは Windows の問題ではなく、VPN (またはネットワーク - TBC) の問題でした。

私がそれを見つけた方法は次の通りです。

VPN の両端で Microsoft ネットワーク モニターを実行した後、破損したファイル コンテンツに関連する TCP/IP パケットをキャプチャすることができました。リモート エンドでキャプチャされたパケットには破損はありませんでした。宛先のパケットが破損していました。

不良ネットワーク パケットを見つけるために、ファイルの正常バージョンと不良バージョンを 16 進ダンプし、KDiff3 を使用して 16 進数を比較しました。次に、NetMonitor キャプチャを検索して、ファイルの破損の直前に発生した 4 バイトの 16 進パターンを探しました。このパターンは見つからなかったため、破損の直後に別のパターンを試して見つけ、問題のブロックまでバイトを逆方向にたどりました (最初のパターンはパケット境界を越えました)。

関連情報