25.Air H" 最適設定...?
発端は、☆ ぬ〜 ☆さんの記事。なぬ、Air H"での通信がMTU変更で速くなる...。
あらま、というのでいろいろ調べてみた。まずはとにかく、用語の解説。手っ取り早く結果をご覧になりたい方は、こちらを。
ざっと検索した限りでは、Net Lan Do!さんのADSLア・ラ・カ・ル・ト、もしくはIbuki氏のブロードバンドに有効な設定法がわかりやすい。ADSL絡みであちこちで話題になっているので、詳細についてはこれらのサイトをご覧いただくとして、ここでは話の進みに支障がない程度のごく簡単な解説を。
迂闊なことに気づいていなかったのだが、DDI POCKETのAir H"のページに、以下の記述がある。
Windows98/Meをお使いのお客様へこれは、Windows9x/MEの仕様で、MTUの指定そのもの。IPパケットサイズ"大"はMTU値1500、"中"は1000、"小"は576となっている。通常は"自動"に設定され、これだとAir H"の場合は"小"に設定されてしまっている。実際に"自動"のままでPCから、-fオプション(フラグメント禁止)および-lオプション(送信パケットサイズ指定)つきでpingを打つと、549bytesを指定した場合、
「ネット25」、または「つなぎ放題コース」をご契約のお客様は、 ダイヤルアップアダプタの「IPパケットサイズ」を「大」に 設定をお願いします。
Pinging 210.196.3.183 with 549 bytes of data: Packet needs to be fragmented but DF set.が返ってくる。
Pinging 210.196.3.183 with 1472 bytes of data:
Reply from 210.196.3.183: bytes=1472 time=2720ms TTL=240
Reply from 210.196.3.183: bytes=1472 time=2284ms TTL=240
Reply from 210.196.3.183: bytes=1472 time=2320ms TTL=240
Reply from 210.196.3.183: bytes=1472 time=2344ms TTL=240
Ping statistics for 210.196.3.183:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2284ms, Maximum = 2720ms, Average = 2417ms
ADSLの場合、業者によっては最大パケットサイズが1500bytesに満たないところがあり、その場合1472bytesのpingを試行すると"Packet needs to be..."のエラーになる。
一方のRWINは、これまだWindowsの仕様により、自動的にMSSの整数倍に設定される。この値が全般的に小さすぎるため(Win2000/MEを除いて)、ADSL環境においてはこれを変更することがあちこちで推奨されているわけである。
RWINの必要値は前述のとおり計算によって求まるのだが、Air H"環境において計算すると、上のpingの結果を用いるならば、32kbpsX2417msX1.5/8=14502bytes。MMSの約10倍程度ということになり、Win2000/ME(MSSの12倍に設定される)ならまずまず、Win9X(MSSの8倍に設定される)だと足りんということにはなるのだが、さてこの理屈が通用するのかどうか。ADSLとは、帯域幅が違いすぎるのだ。
理論武装はこのあたりで行き詰まってしまったので、とにかく実測。MTU/RWINの変更には定番Dr.TCPを使い、設定内容はSpeedGuide TCP/IP Analyzerで確認した。
測定は、10/19 4:00、10/19 5:30、10/20 5:45、10/21 5:40、10/28 7:15の計5回おこなった。
測定には、memn0ckさんに教えていただいた、インターネット回線速度調査の"低速回線用"を使わせていただいた。画像を3枚表示して平均値を表示してくれる。画像がきれいな写真で、見飽きないのは助かった。
@@niftyとPRIN、双方で実測した結果は次のとおり。単位はKbpsである。
| MTU | ||||
|---|---|---|---|---|
| 1500 | 576 | |||
| @nifty | PRIN | @nifty | PRIN | |
| RWIN大 | 23.2 | 22.5 | 19.0 | 20.3 |
| RWIN中 | 20.4 | 22.2 | 18.1 | 16.5 |
| RWIN小 | 15.9 | 16.6 | 18.1 | 18.9 |
| MTU | ||||
|---|---|---|---|---|
| 1500 | 576 | |||
| @nifty | PRIN | @nifty | PRIN | |
| RWIN大 | 25.0 | 25.0 | 23.0 | 23.0 |
| RWIN中 | 25.0 | 25.0 | 23.0 | 23.0 |
| RWIN小 | 18.0 | 18.0 | 21.0 | 22.0 |
| MTU | ||||
|---|---|---|---|---|
| 1500 | 576 | |||
| @nifty | PRIN | @nifty | PRIN | |
| RWIN大 | 13.0 | 16.0 | 10.0 | 14.0 |
| RWIN中 | 16.0 | 15.0 | 10.0 | 8.0 |
| RWIN小 | 13.0 | 14.0 | 12.0 | 13.0 |
| MTU1500 | MTU576 | |
|---|---|---|
| RWIN大 | 64240(MSSX44) | 65392(MSSX122) |
| RWIN中 | 11680(MSSX8) | 4288(MSSX8) |
| RWIN小 | 2920(MSSX2) | 2880(MSSX5) |
できるだけ回線状態に左右されないで試験したかったため早朝を選んだのだが、それでもこれだけのばらつきが出る。10月末にDDI側の回線増強があり、より安定しているのはたしかだが、それでも状況によってはやはり、これだけかこれ以上のばらつきとなるだろう。MTUだRWINだという以前に、回線状態の方が影響が大きいことはたしかと思われる。最小値を見る限り、どうにも一定の傾向は掴めない。
最大値に注目すると、RWIN小はやはり小さすぎるようである。RWIN大と中では差がなく、MTUは1500の方が成績がよい。このあたりが狙い目か。
この結果で平均値を見ることが妥当かどうか難しいのだが、とにかく値としてはこういうことであって、MTU/RWINともに大きいほどよいという結果である。
で、さて実際の設定をどうするかという話だが、Windows98/MEについては、DDIがいう通りIPパケットサイズを大にするだけでよいと思われる。RWINは、98では8倍の11680、MEでは12倍の17520に自動設定されるが、これをDr.TCPであれこれ変更するほどのことはないだろう。
平均値を見る限り、RWINを大きくした方が成績がいいのだが、一方で無線通信であるAir H"の場合、再送が起こる確率は比較的高いだろうし、そうなった場合RWINが大きすぎるのはかえって危険である。
memn0ckさんによると、MTUを1500にすると時間帯によってはまったくパケットが来ないことがあるそうだ。危険性はあるかもしれないが、どういうわけか私は今のところ体験していない。
それこれ含めて、私のWindowsマシンでは、MTU=1500、RWIN=17520で統一している。
ちなみにZaurusの場合、MTUはデフォルトで1500である。変更可能で、冒頭の☆ ぬ〜 ☆さんの記事はこれに触れているわけだが、少なくとも今回の実測結果からすると、変更の必要はないように思われる。RWINの方は設定項目がなく、SpeedGuide TCP/IP Analyzerにアクセスしても当然ながら結果が出ないので、お手上げ。
実際にパケットがどういう挙動になっているのか、RWINは型通り算出されていいものなのか、などなど謎は多いながら、とにかく実測で語るしかなかったというところで、本稿これまで。
(2001/11/13)