lost and found ( for me ? )

回線エミュレータ WANem ( Wide Area EMulator )

[ WANem とは ? ]

http://wanem.sourceforge.net/

WAN回線のエミュレーションが可能
bandwitdh , パケットロス , jitter , latency の設定が可能。
ブラウザ(GUI)で設定可能。

マニュアルのアーキテクチャの説明をみると、netem , htb , tc , netfilter などを使用しているので、仕組みは CentOSやUbuntuなどの tc と同じ。

マニュアル
http://jaist.dl.sourceforge.net/project/wanem/wanem/WANem%20v2.0/wanemulator_all_about_v2.0.pdf

WANem だと:

・GUIで bandwidth , packet loss などの設定、設定の保存、リストアができる

・WANalyzer
指定したリモートサイトのネットワークの状態(帯域、latency , loss , jitter ) を計測できる。
その結果を tc コマンドでどうやるか表示してくれる

・tc がよくわかなくても設定できる

GUIで bandwidth など設定できるので tc を知らなくても設定可能。
また、設定した内容を表示できるので、tc でどうやったらできるのか確認できる。

・Live CD なので、ハードディスクにインストール不要

tcに精通している人は特にこれを使わずに、WANem使う必要性はないかも。CLI で tcコマンドをたたけば。。

[ どうやって動かす? ]

Live CD 、または VMware Player/Server のイメージが提供されているので、Live CD を起動、またはVMで動かす。

[ ためしに KVM上のVMとしてWANemを起動 ]

KVMマシンスペック

root@hat1:~# cat /etc/lsb-release | tail -1
DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS"
root@hat1:~# uname -r
2.6.32-25-server

KVMのイメージはないので、iso (WANemv2.2.iso.bz2)を  http://wanem.sourceforge.net/ からダウンロード

root@hat1:~# bunzip2 WANemv2.2.iso.bz2
root@hat1:~# ls WAN*
WANemv2.2.iso

iso をマウントして中身をチェック

root@hat1:~# mount -o loop -t iso9660 WANemv2.2.iso tmp

knoppix 5.3.1 だ。

root@hat1:~/tmp# cat version.txt
knx5.3.1CD Wed May 21 14:40:52 JST 2008

カーネル 2.6.24.4 みたい。結構新しい。

root@hat1:~/tmp/boot/isolinux# file linux
linux: Linux kernel x86 boot executable bzImage, version 2.6.24.4 (root@Knoppix) #2 SMP , RO-rootFS, root_dev 0x103, swap_dev 0x2, Video mode 791

インストール

NICを2つアサイン。
Live CD なので、local HDDにインストールできるか ? だけど、とりあえず ディスクも追加 ( 3GB )
メモリは 512MB

OS type Linux , カーネルは 2.6.x kernel を指定。


IPの設定 ( DHCPも可 )


user : perc のパスワードを設定。ユーザ perc は勝手につくられている。


起動した。
コンソール、ssh 、ブラウザで操作可能。

コンソール、ssh は WANem のシステム設定 ( IPアドレス、ルーティング設定など )
ブラウザは bandwidth などの設定。

最初 DHCP で アドレスをもらえる設定で起動したら、IPはもらえているのに外部と通信できなかった。
NICの削除・追加をしたら直った。リブートでもいいかも。

[ 管理操作 ]

root@hat1:~# ssh 192.168.11.18 -l perc
Password:
Welcome to Knoppix!
WANemControl@PERC>

- ネットワークアドレスの確認 + ping

WANemControl@PERC>status

IP Settings
=========================================================================
eth0      Link encap:Ethernet  HWaddr 52:54:00:2d:25:0c
         inet addr:192.168.11.18  Bcast:192.168.11.255  Mask:255.255.255.0
         inet6 addr: fe80::5054:ff:fe2d:250c/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:307 errors:0 dropped:0 overruns:0 frame:0
         TX packets:254 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:30601 (29.8 KiB)  TX bytes:28385 (27.7 KiB)
         Interrupt:10 Base address:0x8000

lo        Link encap:Local Loopback
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:16436  Metric:1
         RX packets:2 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:100 (100.0 B)  TX bytes:100 (100.0 B)

=========================================================================
Route Settings
=========================================================================
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.11.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.11.1    0.0.0.0         UG    0      0        0 eth0
=========================================================================
Apache ..... running
SSH Server ..... up
Enter IP Address to test reachability(q to skip):192.168.11.1
ping: icmp open socket: Operation not permitted
Wrong IPAddress....
WANemControl@PERC>

他使えるコマンドは、assgin ( IPアドレス設定 ) , shutdown , reset ( 設定のクリア ) など。詳細はマニュアルを。

exit2shell とすると shell モードになり、linuxのコマンドがつかえる。

rootでsshにログインできるように、まず、コンソールから root のパスワードを設定する。
root 以外で ssh でアクセスすると、shell モードになれない。

コンソールで root のパスワードを設定


root で ssh ログイン ( 一般ユーザ perc で sshログインすると exit2hell が使えない )

root@hat1:~# ssh 192.168.11.18
Password:
Welcome to Knoppix!
WANemControl@PERC>exit2shell
Type 'wanem' to return to WANem console
root@Knoppix:~# uname -a
Linux Knoppix 2.6.24.4 #2 SMP PREEMPT Tue Mar 25 21:35:28 CET 2008 i686 GNU/Linux

[ WANエミュレーション設定 ]

ブラウザで http://WANemのIP/WANem  にアクセス。


・WANalyzer

リモートサイトのIP を指定すると bandwitdh , latency などを計測してくれる。
ためしに、デフォルトゲートウェイ ( 192.168.11.1 ) でテスト。

測定はping でやっている。
小さいデータから徐々にデータを大きくしているみたい。

   Fragment offset: 1480
   Time to live: 64
   Protocol: ICMP (0x01)
   Header checksum: 0x5e6e [correct]
       [Good: True]
       [Bad : False]
   Source: 192.168.11.1 (192.168.11.1) <- WANem
   Destination: 192.168.11.18 (192.168.11.18) <- remote host
Data (1480 bytes)


start wan emulation を実行すると tc コマンドが実行された。
実行されたコマンドは下記のおしり3行。


これであってるのかは、、??

root@Knoppix:~# tc -s qdisc show dev eth0
qdisc netem 1: root limit 1000
Sent 10317 bytes 76 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc netem 10: parent 1:1 limit 1000
Sent 10317 bytes 76 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc htb 20: parent 10:1 r2q 10 default 1 direct_packets_stat 0
Sent 10317 bytes 76 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0

・Basic Mode

bandwidth の設定

bandwidth を 9600kbps に設定



CLIで設定をチェック。

root@Knoppix:~# tc qdisc show dev eth0
qdisc netem 1: root limit 1000
qdisc htb 10: parent 1:1 r2q 1 default 1 direct_packets_stat 0

root@Knoppix:~# tc -s qdisc show dev eth0
qdisc netem 1: root limit 1000
Sent 31430 bytes 133 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc htb 10: parent 1:1 r2q 1 default 1 direct_packets_stat 0
Sent 31430 bytes 133 pkt (dropped 0, overlimits 42 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0

tc きいていることはきいている。のろい。。( start 07:42:39 , finish 07:43:27 )

root@Knoppix:~# wget 192.168.11.14/1M
--07:42:39--  http://192.168.11.14/1M
          => `1M'
Connecting to 192.168.11.14:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,048,576 (1.0M) [text/plain]

100%[==============================================>] 1,048,576     25.35K/s    ETA 00:00

07:43:27 (21.71 KB/s) - `1M' saved [1048576/1048576]

qdisc 10: にはいってる。

root@Knoppix:~# tc -s qdisc show dev eth0
qdisc netem 1: root limit 1000
Sent 128816 bytes 1207 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc htb 10: parent 1:1 r2q 1 default 1 direct_packets_stat 0
Sent 128816 bytes 1207 pkt (dropped 0, overlimits 801 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0

参考: tc がかかっていないときの結果。 ( start 07:47:05 , finish : 07:47:05 )

root@Knoppix:~# wget 192.168.11.14/1M
--07:47:05--  http://192.168.11.14/1M
          => `1M.1'
Connecting to 192.168.11.14:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,048,576 (1.0M) [text/plain]

100%[==============================================>] 1,048,576     --.--K/s

07:47:05 (10.31 MB/s) - `1M.1' saved [1048576/1048576]

・Advanced mode

細かい設定 ( bandwidth , packet loss duplication reordering corruption , src ip , dst ip , dst port etc ) ができる。
tc でどうのように書くか確認できるのがよい。


設定の保存、リストアも可能

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.