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
★ 関連サイト:
