D21HW on FreeBSD 8.0-BETA1 速度と RTT

D21HW の速度とか RTT とかをちょっと調べてみる。

まずは ftp.iij.ad.jp に接続して適当なファイルを取ってくる。
ちなみに取ってきた時刻は午前 4時なのでネットワークは空いているはず。

ftp> pwd
Remote directory: /pub/FreeBSD/releases/amd64/ISO-IMAGES/8.0
ftp> get 8.0-BETA2-amd64-bootonly.iso
local: 8.0-BETA2-amd64-bootonly.iso remote: 8.0-BETA2-amd64-bootonly.iso
200 EPRT command successful. Consider using EPSV.
150 Opening BINARY mode data connection for 8.0-BETA2-amd64-bootonly.iso (47278080 bytes).
100% |*************************************| 46170 KB  699.72 KB/s    00:00 ETA
226 File send OK.
47278080 bytes received in 01:06 (699.17 KB/s)
ftp> quit
221 Goodbye.

窓際とはいえ室内で下り 5.6Mbps 出れば十分でしょう。
FreeBSD 7系では弄らないと速度が出ないという話を聞いたので、進化しているっぽいです。

次は RTT なんだけれども、これが興味深い。

halfrack@halfrack> ping -c 5 www.google.co.jp                                  ~
PING www.l.google.com (66.249.89.104): 56 data bytes
64 bytes from 66.249.89.104: icmp_seq=0 ttl=248 time=339.119 ms
64 bytes from 66.249.89.104: icmp_seq=1 ttl=248 time=286.154 ms
64 bytes from 66.249.89.104: icmp_seq=2 ttl=248 time=293.411 ms
64 bytes from 66.249.89.104: icmp_seq=3 ttl=248 time=281.538 ms
64 bytes from 66.249.89.104: icmp_seq=4 ttl=248 time=299.209 ms

--- www.l.google.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 281.538/299.886/339.119/20.527 ms
halfrack@halfrack> 

何にもしてないと 300ms ぐらいという結果に。

次に、裏で ssh して Enter キーを押しつづけるなどして、てきとーなトラフィックを発生させた直後に ping をするとこうなる。

halfrack@halfrack> ping -c 5 www.google.co.jp
PING www.l.google.com (66.249.89.99): 56 data bytes
64 bytes from 66.249.89.99: icmp_seq=0 ttl=248 time=79.377 ms
64 bytes from 66.249.89.99: icmp_seq=1 ttl=248 time=66.809 ms
64 bytes from 66.249.89.99: icmp_seq=2 ttl=248 time=72.917 ms
64 bytes from 66.249.89.99: icmp_seq=3 ttl=248 time=69.817 ms
64 bytes from 66.249.89.99: icmp_seq=4 ttl=248 time=67.127 ms

--- www.l.google.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 66.809/71.209/79.377/4.639 ms
halfrack@halfrack> 

これだと 70ms ぐらいで戻ってくる。

300ms と 70ms じゃ shell を叩くときに大違いなので、挙動をちょっと詳しく見ることとする。

とりあえず 0.1s 間隔で ping をぶっ放してみるとこんな感じ。

halfrack# ping -i 0.1 -c 30 www.google.co.jp
PING www.l.google.com (66.249.89.99): 56 data bytes
64 bytes from 66.249.89.99: icmp_seq=0 ttl=248 time=327.723 ms
64 bytes from 66.249.89.99: icmp_seq=1 ttl=248 time=334.889 ms
64 bytes from 66.249.89.99: icmp_seq=2 ttl=248 time=421.948 ms
64 bytes from 66.249.89.99: icmp_seq=3 ttl=248 time=500.062 ms
64 bytes from 66.249.89.99: icmp_seq=4 ttl=248 time=587.942 ms
64 bytes from 66.249.89.99: icmp_seq=5 ttl=248 time=674.883 ms
64 bytes from 66.249.89.99: icmp_seq=6 ttl=248 time=752.875 ms
64 bytes from 66.249.89.99: icmp_seq=7 ttl=248 time=1151.535 ms
64 bytes from 66.249.89.99: icmp_seq=8 ttl=248 time=1099.027 ms
64 bytes from 66.249.89.99: icmp_seq=9 ttl=248 time=997.196 ms
64 bytes from 66.249.89.99: icmp_seq=10 ttl=248 time=913.817 ms
64 bytes from 66.249.89.99: icmp_seq=11 ttl=248 time=821.750 ms
64 bytes from 66.249.89.99: icmp_seq=12 ttl=248 time=719.781 ms
64 bytes from 66.249.89.99: icmp_seq=13 ttl=248 time=618.830 ms
64 bytes from 66.249.89.99: icmp_seq=14 ttl=248 time=517.432 ms
64 bytes from 66.249.89.99: icmp_seq=15 ttl=248 time=416.186 ms
64 bytes from 66.249.89.99: icmp_seq=16 ttl=248 time=313.800 ms
64 bytes from 66.249.89.99: icmp_seq=17 ttl=248 time=217.415 ms
64 bytes from 66.249.89.99: icmp_seq=18 ttl=248 time=118.485 ms
64 bytes from 66.249.89.99: icmp_seq=19 ttl=248 time=52.324 ms
64 bytes from 66.249.89.99: icmp_seq=20 ttl=248 time=49.372 ms
64 bytes from 66.249.89.99: icmp_seq=21 ttl=248 time=46.790 ms
64 bytes from 66.249.89.99: icmp_seq=22 ttl=248 time=44.885 ms
64 bytes from 66.249.89.99: icmp_seq=23 ttl=248 time=52.809 ms
64 bytes from 66.249.89.99: icmp_seq=24 ttl=248 time=50.509 ms
64 bytes from 66.249.89.99: icmp_seq=25 ttl=248 time=48.205 ms
64 bytes from 66.249.89.99: icmp_seq=26 ttl=248 time=45.321 ms
64 bytes from 66.249.89.99: icmp_seq=27 ttl=248 time=54.265 ms
64 bytes from 66.249.89.99: icmp_seq=28 ttl=248 time=49.298 ms
64 bytes from 66.249.89.99: icmp_seq=29 ttl=248 time=46.840 ms

--- www.l.google.com ping statistics ---
30 packets transmitted, 30 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 44.885/401.540/1151.535/353.348 ms
halfrack#

icmp_seq=18 あたりで何かが切り替わってる雰囲気。
トラフィック量がある程度を越えると搬送波のチャンネル数が増えるとかそんな感じなんでしょうね。

とりあえず、一度 RTT が 70ms になれば、後は 1s 間隔で ping を投げつづければ 70ms をキープするようなので、 ssh をするときは何らかの方法で 1pps ぐらいのトラフィックを発生させてやると吉。

64 bytes from 66.249.89.99: icmp_seq=98 ttl=248 time=69.306 ms
64 bytes from 66.249.89.99: icmp_seq=99 ttl=248 time=68.033 ms

--- www.l.google.com ping statistics ---
100 packets transmitted, 100 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 63.802/70.124/106.973/6.772 ms
halfrack@halfrack> 

これで快適な emobile 生活が送れるに違いない。