ns1 な サーバでマルチホーミングを行っており、NICが3枚刺さっている。 1本は、INS側(グローバル)、もう2本はプライベートIPが当たっており、NATの元(Bフレッツ)でサービスが行われている。そこで、Bフレッツ側のスループットがセッション当たり140kb/sで頭打ち。abとかで多重アクセスを行うと25Mbpsぐらいまで出る。そこで、切り分けのために、別に2台サーバを用意してみた。
★ 検証構成:
43.244.xxx.xx 80/TCP -> 192.168.0.6 30080/TCP -> 192.168.0.25 8888/TCP -> 192.168.0.16 ns1 Windows 2000 SP2 + Hotfix + Apache 1.3.33 ThinkPad Windows 2000 SP4 + Hotfix + Apache 1.3.27 Debian Debian GNU/Linux 2.4.24 + Apache 1.3.31 228MB 4.10-RELEASE-i386-miniinst.iso
Internet (43.244.xxx.xx/32) +-------------------------+------------------------+ +----+-----+ | RTX1000 | +----+-----+ (192.168.0.10) | (192.168.0.0/24) +-----+-----------------+-+---------------+--------+ | | | (192.168.0.6) (192.168.0.25) (192.168.0.16) +---+---+ +------+------+ +----------+ | ns1 | | ThinkPadX31 | | Debian | +---+---+ +-------------+ +----------+ (61.213.xxx.33) | +--------------------------------------------------+ (61.213.xxx.xxx/29)
★ 大まかなスループット:
- ns1
- HTTP 140kb/sec (参考: FTP 200kb/sec)
- ThinkPadX31
- HTTP 200kb/sec (参考: AnHTTPD 2Mb/sec)
- Debian
- HTTP 2Mb/sec
- ns1(.6) <-> ThinkPad(.25) のlocal
- HTTP 10Mb/sec
※ wgetを使用
明らかに、遅い。物理的に遅いわけでもない。
ちなみに、ThinkPadから wget にて 192.168.0.6 を指定して、ダウンロードを行うと10Mb/sec位出る。要は、WindowsでNATを越えると上りが激遅になるという事。ルータを変更してみても速度は変化無し。調査をしてみると、
[Microsoft MSDN/CP/IP スタックを強化する方法]AFDバッファサイズのDefaultSendWindow が関係しているようだ。この値を大きくすることにより、スループットが向上した。
フロー制御を適用する前に AFD が接続上でバッファに格納する送信バイトの数。アプリケーションによっては、この値を増やすと、パフォーマンスが若干向上することがあります。ただし、リソースの使用率が大きくなります。アプリケーションからこの値をソケット別に変更するには、SO_RCVBUF ソケット オプションを使用します。
上記の対策を施すに当たり、レジストリの操作が必要になる。事前に十分にバックアップを取るなりして、自己責任にてお願いします。尚、上記の操作を簡単に行うツールも存在する。→ NetTune
★ 関連サイト: