labunix's blog

labunixのラボUnix

debian busterにmtr-tinyを導入してみる。

■debian busterにmtr-tinyを導入してみる。

$ lsb_release -d
Description:	Debian GNU/Linux 10 (buster)

$ apt-file search bin/mtr
frr: /usr/bin/mtracebis                   
libc-dev-bin: /usr/bin/mtrace
mtr: /usr/bin/mtr
mtr: /usr/bin/mtr-packet
mtr-tiny: /usr/bin/mtr
mtr-tiny: /usr/bin/mtr-packet
mtree-netbsd: /usr/bin/mtree
rancid: /usr/lib/rancid/bin/mtrancid

$ apt-cache search mtr-tiny
mtr-tiny - Full screen ncurses traceroute tool

$ sudo apt-get install -y mtr-tiny

$ mtr --version
mtr 0.92

■日本のdebianミラーサイトをターゲットにしてみる。

$ w3m -dump_source https://www.debian.org/mirror/list.ja.html | zcat | \
    awk -F\" '{for(a=1;a<=NF;a++) \
              {if($a ~ /href/&& $(a+1) ~ /http/) \
              {gsub("http.*://|/.*","",$(a+1));print $(a+1) | "sort -uV"}}}' > debian-mirror.list

$ wc -l debian-mirror.list
385 debian-mirror.list

$ grep jp debian-mirror.list > debian-mirror.jp.list
$ wc -l debian-mirror.jp.list
8 debian-mirror.jp.list

■ネットワークの経路と応答を調べる。

$ mtr --help | awk '/-[rcCF],|--tcp/'
 -F, --filename FILE        read hostname(s) from a file
 -T, --tcp                  use TCP instead of ICMP echo
 -r, --report               output using report mode
 -c, --report-cycles COUNT  set the number of pings sent
 -C, --csv                  output comma separated values

$ mtr -r -c 1 --tcp -C -F debian-mirror.jp.list > debian-mirror.jp.list.csv

■CSV出力結果を比較してみる。

$ grep -B 1 ^Mtr_ debian-mirror.jp.list.csv | awk 'NR==1||NR%3==0'
Mtr_Version,Start_Time,Status,Host,Hop,Ip,Loss%,Snt, ,Last,Avg,Best,Wrst,StDev,
MTR.0.92,1592886101,OK,debian-mirror.sakura.ne.jp,11,153.127.75.11,0.00,1,0,26.53,26.53,26.53,26.53,0.00
MTR.0.92,1592886108,OK,ftp.jaist.ac.jp,9,ftp.jaist.ac.jp,0.00,1,0,15.76,15.76,15.76,15.76,0.00
MTR.0.92,1592886114,OK,ftp.jp.debian.org,12,dennou-q.geo.kyushu-u.ac.jp,0.00,1,0,24.12,24.12,24.12,24.12,0.00
MTR.0.92,1592886121,OK,ftp.kddilabs.jp,14,ftp.kddlabs.co.jp,0.00,1,0,8.22,8.22,8.22,8.22,0.00
MTR.0.92,1592886136,OK,ftp.nara.wide.ad.jp,14,ftp.nara.wide.ad.jp,0.00,1,0,16.05,16.05,16.05,16.05,0.00
MTR.0.92,1592886142,OK,ftp.riken.jp,10,riksun.riken.go.jp,0.00,1,0,1035.51,1035.51,1035.51,1035.51,0.00
MTR.0.92,1592886149,OK,ftp.yz.yamagata-u.ac.jp,9,ftp.yz.yamagata-u.ac.jp,0.00,1,0,17.23,17.23,17.23,17.23,0.00

$ awk -F\, '(NR==1){for(a=1;a<=NF;a++){print a,$a}}' debian-mirror.jp.list.csv
1 Mtr_Version
2 Start_Time
3 Status
4 Host
5 Hop
6 Ip
7 Loss%
8 Snt
9  
10 Last
11 Avg
12 Best
13 Wrst
14 StDev
15 

■Average RTT(ms)をキーに並べ替え。
 国内なのであまり差はないけど、ホップ数とパケットロスが少ない方がより良い。

$ grep -B 1 ^Mtr_ debian-mirror.jp.list.csv | \
    awk -F\, '(NR==1||NR%3==0){printf "%-30s %3s %-30s %-3s %10s\n",$4,$5,$6,$7,$11 | "sort -k 5 -n"}'
Host                           Hop Ip                             Loss%        Avg
ftp.kddilabs.jp                 14 ftp.kddlabs.co.jp              0.00       8.22
ftp.jaist.ac.jp                  9 ftp.jaist.ac.jp                0.00      15.76
ftp.nara.wide.ad.jp             14 ftp.nara.wide.ad.jp            0.00      16.05
ftp.yz.yamagata-u.ac.jp          9 ftp.yz.yamagata-u.ac.jp        0.00      17.23
ftp.jp.debian.org               12 dennou-q.geo.kyushu-u.ac.jp    0.00      24.12
debian-mirror.sakura.ne.jp      11 153.127.75.11                  0.00      26.53
ftp.riken.jp                    10 riksun.riken.go.jp             0.00    1035.51