Kodama's home / tips.
これらは, 直接には netstat -ic または cat /proc/net/dev で調べる. ただし /proc 以下の内容は kernel の版によって異なることがある.
$ netstat -ic Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags lo 3584 0 20178 0 0 0 20178 0 0 0 BLRU
$ cat /proc/net/dev Inter-| Receive | Transmit face |packets errs drop fifo frame|packets errs drop fifo colls carrier lo: 20178 0 0 0 0 20178 0 0 0 0 0
上の説明の パケット数, エラ−数, 衝突数などは, ネットワーク インターフェース が有効になってからの総数が出ている. 現状を知るには, 時差をおいてとった 2つの差分を見る必要がある. net-error-view.sh スクリプトはこの発想で書いてみたスクリプトで, 一定時間毎に error数, 流通パケット数, エラ−率 を表示する.
同じようにして, 衝突率を監視するスクリプトも書ける. 但し, 自分から パケットを吐き出さないと colls は出ない. ネットワ−クの混雑度を測るつもりで, 適量のパケットを吐き出すと良い.
使う前に NIC(Network Interface Card) を promiscuous モ−ドにしておく必要がある. promiscuous モ−ドに関しては NET-3-HOWTO とかを読むと良い. 噂では, promiscuous モ−ドを設定できない NIC があるらしいけど, 一体どの NIC なんでしょうか?
どこかの機材が壊れてる! ...の例.
% net-error-view.sh ....略 時刻 ネットワ−クエラ−率 17:34:33 127 / 22 = 577.27% 17:34:40 753 / 39 = 1930.76% 17:34:46 373 / 49 = 761.22% 17:34:53 134 / 34 = 394.11% 17:34:59 147 / 25 = 588.00% 17:35:05 353 / 33 = 1069.69% 17:35:11 189 / 47 = 402.12% 17:35:17 187 / 43 = 434.88% 17:35:23 174 / 38 = 457.89% 17:35:29 253 / 17 = 1488.23% 17:35:35 404 / 16 = 2525.00% ....続く
健全なネットワ−クの例.
15:03:21 0 / 13208 = 0.00% 15:13:21 0 / 9873 = 0.00% 15:23:22 0 / 18691 = 0.00% 15:33:22 0 / 27258 = 0.00% 15:43:22 0 / 22590 = 0.00% 15:53:22 0 / 18359 = 0.00% 16:03:22 0 / 7408 = 0.00% 16:13:23 0 / 5222 = 0.00%
試験のために ネットワ−クに強制的に負荷をかけたいとか, NIC から パケットを吐き出させたいことがある. 近くの(しかし自分自身ではない)マシンに ping や ping -f をかけるか つぎのようにして, ftp を繰り返す. え-と, anonymous ftp サ−バの /pub/test_100M として 100M byte のファイルを作っておく. それから, 作業前に, ネットワ−クやサ−バ−の管理者に 了解を取っておかないと叱られるよ.
#!/bin/sh # K.Kodama Feb.1999 ftpsever=testserver.my.domain.jp while true ; do (time ncftp -ca $ftpserver:/pub/test_100M > /dev/null) 2>&1 | gawk ' /ela/{sub(/^[^ ]* *[^ ]* */,"");sub(/ela.*/,"");sub(/:/," ");sub(/\./," ") printf "%d%s\n", 100/($1*60+$2+$3*0.01), " [Mbyte/sec]" }' done
ncftp の代わりに wget を使う場合の修正.
(time wget -O - -q ftp://$ftpserver/pub/test_100M > /dev/null) 2>&1 | gawk '/real/{gsub(/[ms]/," ");print 100/($2*60+$3)"[Mbyte/sec]"}'
100M のファイルの作成例:
% dd bs=1024 count=102400 if=/dev/urandom of=test_100M % ls -l test_100M -rw-r--r-- 1 kdm users 104857600 6月 11日 22:23 test_100M
tcpdump とか iptraf を使うと良い. tcpdump だと 1パケット毎の概要が分かる. iptraf を使うとプロトコル毎の流量とかの統計がわかる. iptraf は良いですよ.
ところで, 通信経路のメンテナンス時, 等に知った通信の内容を 悪用してはいけないのは当然だけど, 具体的な内容も洩らしちゃ NG だ. これは有線通信関連の法律等で決まってる事だからね. 統計値とかなら OK のはず.
Kodama's home / tips.