科学の箱

科学・IT・登山の話題

IT

Windows 7 <-> Windows 2008 R2でファイル転送が遅い

投稿日:2013年10月18日 更新日:

こちらが続編になります。Windows 7でCIFS遅延が解決した

Windows 7 <-> Windows 2008 R2で通信をする際にWindows 7からWindows 2008 R2 へアップロードするときに極端にパフォーマンスが遅い。

  • ダウンロード: 6.4MB/s
  • アップロード: 150kB/s

パケットをWiresharkで確認してみる。

エラーがいくつか出ている。

  • TCP Dup ACK
  • TCP Fast Retransmission
  • TCP segment of a reassembled PDU
  • TCP Out-of-Order

とりあえずエラーが出ているのはわかったので個別に調べる。

TCP DupACKs and TCP Fast RetransmitsによればTCP Dup ACK, TCP Fast Retransmissionは対で発生するエラーリカバリーの動作だ。このメッセージが出るときにはパケットロスが発生している。その結果受信側は待っているACKを送信者側に送る。これがTCP Dup ACK。このパケットを受け取ると送信者側は優先的に該当パケットを送る。これがTCP Fast Retransmissin。

ではサーバーに対してパケットロスが発生してるかをping -tコマンドで確認してみた。

全く発生していない。。。

TCP Out-of-orderは受信がパケットを順番には受け取れていないことをしめす。ここで順番が守られていないというのはどういう意味か。

  • 順番に受け取れていないけど最終的には受け取れている。
  • そもそも届かない。

どちらかではあるが、ここでDup ACKが発生していることを考えると後者の”そもそも受け取れていない”と考えられる。

結局はパケットロスが発生しているから受け取れないとなってしまい、そもそも原因がわからない。

では、TCP segment of a reassembled PDUはどうか。これはMSSを超えたためにTCPレイヤで分割されたことを意味する。ふむふむ、MSSはTCPで通信する際に格納できるユーザーデータの最大サイズを示す。

MSS = Ethernetのフレームサイズ(1518) – IPヘッダ(20) -TCPヘッダ(20) = 1460

よってサーバー側がサイズ1460以上でデータを送信していると推測される。

ではMSSを超えた通信が発生した可能性を考えていろいろ調べたところ以下の記述を見つけた。

If you turn off the “Allow subdissector to desegment TCP streams” option in the TCP dissector’s options you’ll find that Wireshark interprets this differently:

Why does WireShark think this frame is a TCP segment of a reassembled PDU

設定を変えてみる

確かにretransmissionがなくなり、その代わり Continuationになった。

ただ実際にログを確認するとretransmissionでDup ACKが消えていることがわかったのでこの設定はいらないようだ。

ではこのエラーがWindows 7特有のTCPレイヤ上の問題と考えたらどうだろうか。Windows 7独自のパラメータがあるかもしれない。見つけたのが下記のホームページ。

Windows 7 Network Slow – 6 Easy Ways to Make it Fast

一通り試してみたがやはり結果は変わらない。

では別のレイヤで起きている可能性を考えてみた。pingでは問題が起きていないことから下位のIPレイヤではなく、上位。この場合にはSMBのプロトコルが怪しい。

調べてみるとWindows 7 / Windows 2008になってからSMBのバージョンがV2になったことがわかった。

この辺でWindows上のSMBについての技術情報が詳しい。

ではSMBプロトコルをV1にしてみたらどうか。

To disable SMBv2 and SMBv3 on the SMB server, run the following cmdlet:

Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB2 -Type DWORD -Value 0 -Force

メタ情報

inarticle



メタ情報

inarticle



-IT
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

midiで入力デバイスの一覧を取得する

マイクロフォンを使いmidiで録音をしてみる。下記のページからmidiデバイスの一覧を取得したが、肝心のマイクロフォンが含まれていない。 バイオリンのチューナーを作る – midiをさらに …

no image

VagrantでPrivate keyエラーが出たときの対処方法

Vagrantをsudo経由で利用しているとフォルダパーミッションの矛盾から、セキュリティエラーが出ることがある。 sudo vagrant ssh The private key to connec …

no image

git -commitする前に確認すること

git -commitにより変更はステージングエリアからリポジトリに登録される。この時点で履歴を追うことができる変更として取り扱われる。pull-requestが承認されればgithubにも登録される …

no image

Mahoutで採用されているアルゴリズム

Classifier ロジスティック回帰 ナイーブベイズ ランダムフォレスト クラスタリング K-Means Fuzzy K-Means Canopy レコメンド ユーザーベース アイテムベース NM …

no image

RDPで表示されている画面が小さくて文字が読めない

クライアントサーバーベースのアプリケーションでは管理上の手間を省くために、アプリケーションサーバーを構築しクライアントからRDPで接続する構成をとることがよくある。 ラップトップの入れかえや新しく入っ …

2013年10月
« 9月   11月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

side bar top



アーカイブ

カテゴリー