Osamu Sayama's Weblog
crossbow
crossbow が b105 に入ったので使ってみました。とりあえず仮想 nic を一つ作るにはこんな感じ。
# dladm create-vnic -l eri0 vnic0
# dladm show-link
LINK CLASS MTU STATE OVER
eri0 phys 1500 up --
vnic0 vnic 1500 up eri0
でこの仮想 nic を何に使うと便利かというと、Exclusive IP の non-global zone では今まで物理 nic しか使えなかったのですが、crossbow が入って仮想 nic を使えるようになったことだと思います(Xen や VirtualBox からだとすでに内部インターフェースで使っていますが、public interface になったということでしょうか)。以下のような zonecfg ファイルに set ip-type=exclusive, set physical=vnic0 を指定することで Exclusive IP な zone を仮想 nic で構築できます。仮想 nic なので通常の nic 同様に snoop とったり DHCP clieint と構成したりでき、Exclusive IP の non-global zone をたくさん作成することが可能になりました。
# cat zonecfg/jura-z1
create -b
set zonepath=/export/jura-z1
set autoboot=true
set ip-type=exclusive
:
add net
set physical=vnic0
end
また、仮想スイッチを作ってそこにプライベートネットワークを構築したりもできます。とりあえず、etherstub0 という名の仮想スイッチとそこに vnic100, vnic101 という仮想 nic を作成したのが以下。
# dladm create-etherstub etherstub0
# dladm create-vnic -l etherstub0 vnic100
# dladm create-vnic -l etherstub0 vnic101
# dladm show-link
LINK CLASS MTU STATE OVER
eri0 phys 1500 up --
vnic0 vnic 1500 up eri0
etherstub0 etherstub 9000 unknown --
vnic100 vnic 9000 up etherstub0
vnic101 vnic 9000 up etherstub0
さらに以下のような構成で etherstub0 仮想スイッチのプライベートネットワーク上に Exclusive IP の non-global-zone を作ってここから外部ネットワークに接続できるような NAT を構成するには以下のようにします。
外部ネットワーク <--- Host1 ---> etherstub0 仮想スイッチ <--- Host2 (jura-z2)
eri0 vnic100 (192.168.1.1) vnic101 (192.168.1.2)
まず、global zone Host1 に vnic100 を構成する。
# ifconfig vnic100 plumb up
# ifconfig vnic100 192.168.1.1 netmask 255.255.255.0 up
# echo 192.168.1.1 > /etc/hostname.vnic100
それで Exclusive IP の non-global-zone Host2 (jura-z2) を vnic102 で構成する。
# cat zonecfg/jura-z2最後に NAT を構成する。
create -b
set zonepath=/export/jura-z2
set autoboot=true
set ip-type=exclusive
add inherit-pkg-dir
set dir=/lib
end
add inherit-pkg-dir
set dir=/platform
end
add inherit-pkg-dir
set dir=/sbin
end
add inherit-pkg-dir
set dir=/usr
end
add inherit-pkg-dir
set dir=/opt
end
add net
set physical=vnic101
end
# zonecfg -z jura-z2 -f jura-z2
# zoneadm -z jura-z2 install
# zoneadm -z jura-z2 boot
# zlogin -C jura-z2
# routeadm -u -e ipv4-forwarding
# cd /etc/ipf
# vi ipnat.conf
map eri0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto
map eri0 192.168.1.0/24 -> 0/32
# svcadm enable network/ipfilter
# zoneadm -z jura-z2 boot
これで jura-z2 の non-global zone から外部ネットワークにアクセスできるようになります。
また、もう1つ crossbow の重要な新機能でフロー制御があります。たとえば、先ほどの構成の vnic100 に 192.168.1.2 行きのパケットのフローを jura-z2 として作成するには以下のようになります。
# flowadm add-flow -l vnic100 -a remote_ip=192.168.1.2 jura-z2で sftp で実際に 100Mbyte のファイルを転送してみると、
sftp> get dummy_100m.img5.6MB/s = 44.8Mbps ぐらいでした。ここで、この帯域を 10Mbps ぐらいに絞ってみます。
/home/sayama/dummy_100m.img を dummy_100m.img で取得しています
/home/sayama/dummy_100m.img 100% 100MB 5.6MB/s 00:18
# flowadm set-flowprop -p maxbw=10m jura-z2計測してい見ると
sftp> get dummy_100m.img
/home/sayama/dummy_100m.img を dummy_100m.img で取得しています
/home/sayama/dummy_100m.img 100% 100MB 1.2MB/s 01:26
1.2MB/s = 9.6Mbps になり帯域制御がきいているのが実感できます。このへんの Administration Guides に詳しく書いてますので興味のあるかたは試してみてください。
Posted at 10:51午後 1 19, 2009 by sayama in Solaris x86 | 投稿されたコメント[0]