MacからWin共有フォルダへのアクセスの高速化

Windows のリストアに向けて、データのバックアップをネットワーク越しに行っていたのだが、転送速度がかなり遅い(in/out ともに数十kB/s)。

どちらの機体もルーターの外に対してはそれなりの通信を行えるにもかかわらず、なぜか機体間ではうまくいかない。 smb.confを書き換えて調整しようかとも思ったものの、どうやら現行のOS X (Mountain Lion以降)ではsamba ではないシステムを使って共有フォルダを作り上げているようで、対処できなかった。

そんなとき、google先生のご教授により、同じ問題に悩んでいたymknさんの記事を紹介賜った。

sudo sysctl -w net.inet.tcp.delayed_ack=0

この呪文をたった一言唱えるだけで、Mac からWin の共有フォルダに対するアクセスが劇的に(20倍以上)向上した。

とりあえず、再起動時にもこの設定が使われるように、新たに作成した設定ファイル

/etc/sysctl.conf (通常は存在していない)

net.inet.tcp.delayed_ack=0 

を記載する。

詳細はこちら


どなたかの参考になるかも知れないので、こちらの環境を記載しておく。

ホスト

Inspiron 530 (Dell)

Windows Vista SP2

Intel 82562V-2 10/100 Network Cinnection

WPA/WPA2-Mixed TKIP+AES

クライアント

MacMini (Late 2012)

OS X 10.8.3 (Mountain Lion)

AirMac Extream (標準内蔵のWiFi)

WPA/WPA2-Mixed TKIP+AES

ルーター

WHR-G301N (Buffalo) (Ver. 1.82)

  


追記:2013/11/17

TCP遅延AKT (TCP delayed acknowledgment)

一般的なネットワーク通信(TCP通信)では、データを断片化したパケットとしてサーバー・クライアント間で送受信している。サーバーからのパケットはシーケンス制御と呼ばれる手法で順にクライアントに送られる。ここでパケットの受信を送信側に知らせる信号をACK番号と呼んでいる。

以下の図では、サーバーから送られたパケットを受けとった確認として、クライアントからACK番号がサーバーに毎回送信されている。

ネットワーク入門サイトより転載

一方で、パケット数の大きなデータを送信する場合、このACK番号が膨大な数となることから通信が非効率となるようである。そこで、ACK番号を発する頻度を低下させるシステムが遅延AKTである。

ネットワーク入門サイトより転載


本ページには、Amazon.co.jpアソシエイト・プログラムによるリンクが含まれております。