仮想ネットワークに作ったネットワークネームスペース内でシェルまたはコマンドを実行する。
$ ./bin/trema netns ネットワークネームスペース名 [コマンド]
仮想ネットワーク設定で host1
, host2
という名前の 2 つのネットワークネームスペースをそれぞれ次のように定義し、コントローラを実行したとする。
trema.conf
vswitch { dpid 0x1 }
netns('host1') {
ip '192.168.1.2'
netmask '255.255.255.0'
route net: '0.0.0.0', gateway: '192.168.1.1'
}
netns('host2') {
ip '192.168.1.3'
netmask '255.255.255.0'
route net: '0.0.0.0', gateway: '192.168.1.1'
}
link '0x1', 'host1'
link '0x1', 'host2'
コントローラの実行
$ ./bin/trema run my_controller.rb -c trema.conf
このときネットワークネームスペース host1
内でシェルを起動するには、trema netns
の引数にネットワークネームスペース名を次のように渡す。実行したシェルは exit
または kbd:[Ctrl + d] で停止できる。
$ ./bin/trema netns host1 [sudo] password for yasuhito: (パスワードを入力) $ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 23642: host1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 6e:59:cb:51:86:db brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global host1 valid_lft forever preferred_lft forever inet6 fe80::6c59:cbff:fe51:86db/64 scope link valid_lft forever preferred_lft forever $ exit
シェルに入らずに直接コマンドを実行したい場合には、次のようにネットワークネームスペース名の後に実行したいコマンドを指定する。
$ ./bin/trema netns host1 ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 23642: host1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 6e:59:cb:51:86:db brd ff:ff:ff:ff:ff:ff
実行したいコマンドにオプションがある場合は、次のように'--'をつけて実行する。
$ ./bin/trema netns host1 -- ping -c1 192.168.1.3 PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data. 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.448 ms --- 192.168.1.3 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.448/0.448/0.448/0.000 ms