Kodama's home / tips.
例: ほぼ, 10BASE, 100BASE などの規格に対応すると考えて良い.
例: ファイバの屈折率は約1.5. 真空中での光の速度 3x10^8[m/sec] をこれで割ると, ファイバ中の速度は 2x10^8[m/sec] となります.
例: この速度では, 日本列島の端から端まで(約2000km)を進むのに 10ミリ秒(1/100秒) かかります.
例: 200km 進むのに 1ミリ秒(1/1000秒, 10^(-3) sec)かかります.
例: 200m あたり 1 マイクロ秒(10^(-6) sec) かかります. これはクロックが 1MHz の場合の, 1クロック時間に相当します. (構内配線の距離)
例: 20cm あたり 1 ナノ秒(10^(-9) sec) かかります. これはクロックが 1GHz の場合の, 1クロック時間に相当します. (機器の内部結線の距離)
経路が複数の要素からなるとき, それらの時間遅れの和が経路全体での時間遅れとなる.
例:ストア&フォワード型の SW HUB を通すと, パケット全体を取り込んでから送り出すので時間遅れがある. (...が距離による遅延と比較して無視できる程度.) しかし, 壊れたパケットを通過させてしまう危険は他の方式より少ない.
[データ帯域(bit/s)] = [TCP受信窓サイズ(bit)]/[往復遅延時間(sec)]
変形する.(これを帯域遅延積という)
[TCP受信窓サイズ(bit)] = [データ帯域(bit/s)] [往復遅延時間(sec)]
単位を [TCP受信窓サイズ(Byte)], [データ帯域(Mb/s)], [往復遅延時間(msec)] にすると,
[TCP受信窓サイズ(B)] = 125 [データ帯域(Mb/s)] [往復遅延時間(ms)]
この式は, 距離が遠い(遅延が大きい)ときには, 通信能力は経路のバンド幅とは無関係に距離で決まってしまうと解釈して良い.
転送するデータサイズが大きい場合, TCP受信窓サイズ を大きく設定すると, データ帯域を大きくすることができる. 実際には, エラーによる再転送の効率低下とのトレードオフがあるが, 回線の状況に応じた最適な受信窓サイズがあるはず.
例: 伝書鳩の場合, "1回の文書量" は重量による制限があるためほぼ定数と考えて良い.
[帯域幅]=[1回の文書量]/[配送時間]
つまり, 相手までの距離(遅延時間)で通信能力がきまってしまう.
ここでの評価式は TCP(第4レイヤー,トランスポートレイヤー) の
1つの通信に注目した場合に成り立つ.
IP(第3レイヤー,ネットワークレイヤー)や UDP では,ほぼ, 通信経路の物理的なバンド幅で決まる.
また, TCP も個々の通信ではなく複数の通信を集団としてみると,
経路の物理的なバンド幅で決まる.
GPS 時計 で高精度に時刻をあわせたマシン間でなら 往路と復路を別々に測れそうだ. ミリ秒単位(注. 1 ミリ秒は距離に換算して 200km 程度)までの測定なら基本レベルの演習問題かな? GPS clock の同期精度は安直にサーバを作っても 数micro秒の精度が出る(距離に換算して数百m). (ヒント. RFC で NTP のプロトコルを調べる.) (ヒント. ntp のソースを見よう.)
回線の先に FTP(又は WWW)サーバが必要. LAN の試験なら簡単だが, 外部接続ではこれが一番のネックかも. 試験用ファイルのサイズに拘らないなら, 適当な anonymous FTP サーバ(又は WWW サーバ)から適当なサイズのファイルをダウンロードすると良い.
例えば, 1M bps の回線の場合, 1M byte のファイルでは所要時間は最低でも 8秒程度. 10M byte のファイルだと, その 10倍だから約80秒かかる.
$ dd bs=1024 count=10 if=/dev/urandom of=test_10K $ dd bs=1024 count=100 if=/dev/urandom of=test_100K $ dd bs=1024 count=1024 if=/dev/urandom of=test_1M $ dd bs=1024 count=10240 if=/dev/urandom of=test_10M $ dd bs=1024 count=102400 if=/dev/urandom of=test_100M $ ls -l test_10M -rw-r--r-- 1 kodama users 10485760 8月 2日 01:34 test_10M test_10M は 10M byte のサイズ
$ wget -O - ftp://localhost/pub/test_10M > /dev/null ...略 21:23:08 (69.44 MB/s) - `-' を保存しました [10485760]
この例では, 内的な処理(localhost)だけで, ネットワークは使わないのでこれ(69.44[MB/s]=555[Mb/s])が 今回使用した PC で測定できる最高速を表す. 最近の CPU なら, 内的な処理はもっと速いはず.
実際の測定では上の "localhost" の部分を FTP サーバ名に変えて使う.
10M のファイルのダウンロードを n 回測定して, 速度の平均を表示するスクリプト. wget の起動時間などの影響で少し誤差が出る. ネットワークにかなりの負荷がかかる.
#!/bin/sh # Measure network speed. # Usage: net-speed.sh (resource URL) [iteration] resource=$1 ## e.g. ## ftp://localhost/pub/test_10M ## http://localhost/~test/test_10M count0=$2 if [ -z "$count0" ] ; then count0=3; fi # fill up server cache. wget -O - -q ${resource} > /dev/null LOOP(){ count=0 while [ $count0 -gt $count ]; do count=`expr $count "+" 1` (time wget -O - -q ${resource} > /dev/null)2>&1 done } LOOP | gawk 'END{print "Average: "sum/n}/real/{gsub(/[ms]/," ");n=n+1;s=10/($2*60+$3);sum=sum+s;print s"[M/sec]"}'
以下では, TCP 通信を基準に回線の品質と使用目的について概説してみた. ただし, UDP を使ったビデオ配信などを行うなら,以下とは違った観点で評価する必要がある.
注. 日本の端から端まで約2000km.
インターネットの個人利用については 10Mb 程度までは高速化する意味はあるようだ. 個人向けのブロードバンドサービスもこの辺りが 1つの区切りとなるかも.
メール, ニュースなどでは即時的な通信は不要なので, 問題となるのは, WWW, ftp などのインタラクティブな利用と思われる. これらの国内通信で 1クライアントあたり 10M 程度と見積もれば良いはず.
これ以上の高速回線(100Mb, 1Gb など)は複数で共用する場合や, サーバを置く事を想定した回線の強化と云う事になる. つまり, TCPセッションあたり 10M の利用を, ピーク時にいくつ同時に使うかという方向で計画をたてる. LAN で 1G を使うのは(ネットワークでファイル共有を多く使うなど)簡単だが, インターネットの利用で 1G, 10G などの高速の回線を完全に使うのは結構難しい.
注. 県内の接続程度の距離.
用例. 安価な NAS だと, 近距離の LAN でもこの程度が限界.
用例. 大学のキャンパス間のWAN接続など.
用例. 単一の組織からの外部接続の場合, 1セッションあたり 10Mb と見ても, ピーク時で 10セッション同時に使える. これ以上になると, 同時利用数に反比例して遅くなって行く. 構内 LAN 接続が 100〜1000 クライアント程度でも問題が無いと思われる.
注. 市内の接続程度の距離.
注. 安い構成のサーバでは, NIC の物理的な限界がこの程度. 安価な機器ではカタログ上は対応していても充分な能力が出ない可能性がある.
用例. LAN の ファイルサーバ. 安価な RAID 5 ディスクでは追い付かない. 適切な構成の RAID 0+1 のサーバを考慮する. ホットスペア, ホットスワップ に対応すると管理が楽.
用例. 構内幹線.
用例. 大学などの情報演習室. 100台程度の共用部分(10M/台). カリキュラムやファイル共有の構成に応じて, 1台あたり 1M から 100M 程度で計画する.
用例. 複数の組織で共用するバックボーン. SINET 神戸大ノード近辺の例で見ると,兵庫県内で 100 以上の大学,研究施設などがあり. このうちの多くが神戸大ノードを介して SINET を利用している. つまり, 1G の回線を数十の大学など(数十万人)で共用している事になる.
注. 構内回線程度の距離.
注. 安直な構成の PC サーバや PC を転用したルーターでは使いきれない.
用例. 構内幹線.
用例. 複数の組織で共用するバックボーン.
用例. Super SINET, JGN-II(NICT) などの実験的な回線. 学術情報ネットワーク(2004年の状況)では Super SINET の幹線は 10G, SINET ノードは 数10M〜1G の回線で相互につながり, ネットワークを形成している. Super SINET ノード, SINET ノード をあわせて 54 ある. これらのノード下に国内の ac.jp 系の大学,研究施設などを収容している.
Kodama's home / tips.