SlideShare a Scribd company logo
rumpを使ってみる
NetBSD 7.0編
Dec 5, 2015
Masaru OKI @masaru0714
はじめに
NetBSD上でrumpを使ってみた報告になります。
さわりはじめて2日たったくらいの理解度ですので、ボケてる可能性も大いにあります。
今回はNetBSD 7.0で試しています。(2015年10月8日にリリースされています)
数日前にNetBSD 6.1.5で試したのですが、NetBSDつながりの友人いわく
NetBSD 6.1.5は古すぎてダメ。7.0と-currentもわりと違うかも?
みなさん、これがNetBSDです。覚悟を決めて臨みましょう。
rump?
http://rumpkernel.org/
本来カーネル用に書かれたネットワークスタックやデバイスドライバを
ユーザプログラムで動かすためのフレームワーク? ライブラリ? rumpkernelと、
それを中心にした各種コンポーネントの総称。。
anykernel(元となるカーネルコンポーネント;現在はNetBSD kernel)から
ユーザプログラム用としてビルドしたライブラリ(rumpkernel)を作り、
アプリケーションをrump用バイナリ(unikernelというらしい)としてビルドする。
Linux(CentOS, Fedora, Debian, Ubuntu等), NetBSD, FeeeBSD, Solaris等で動作。
rumpの動かし方いくつか
server-client方式
● rumpkernelをリンクして作られたrump_serverを起動しておく
● rump.clientライブラリをリンクして各種プログラム(lsとかpingとか)をビルド。
● 各種プログラムを実行し、rump_serverのリソースを操作。
unikernel方式
● rumprunを用いて各種プログラムの単一バイナリをビルド。
● rumprun qemuで起動したQEMU上で実行。
● rumprun qemuの各種パラメータでIPアドレスなどを設定する。
こんなかんじ(server-client)
native OS kernel
rump_server rump_client native OS apps
NetBSDカーネルの
機能を提供する。
native OSで実行でき
るNetBSDのアプリ
kernel
userland
socket通信
環境を整える
下記、事前にgmakeをインストールしないと失敗するので注意。
SSL certificate云々言われたときは pkgin insall mozilla-rootcerts-openssl します。
● Building rump_server
git clone http://repo.rumpkernel.org/buildrump.sh
cd buildrump.sh
./buildrump.sh
● Building rump_client binaries (using rumpctrl)
git clone http://repo.rumpkernel.org/rumpctrl
cd rumpctrl
git submodule update --init
./buildnb.sh
rump_serverの起動
全部入りrump_allserverの起動(下記例では2つ起動している)
./buildrump.sh/rump/bin/rump_allserver unix:///tmp/rump1sock
./buildrump.sh/rump/bin/rump_allserver unix:///tmp/rump2sock
バックグラウンド動作する。
個別指定はたとえば下記のようにする。
rump_server -lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpvfs -lrumpdev -
lrumpdev_bpf -lrumpnet_virtif unix:///tmp/rump1sock
ネットワークを使いたいときは(tapを読み書きするので)root権限で起動すること。
rumpctrlによるrump clientの実行
# cd rumpctrl
# . ./rumpctrl.sh
rumpctrl (NULL)$ export RUMP_SERVER=unix:///tmp/rump1sock
rumpctrl (unix:///tmp/rump1sock)$ ifconfig
lo0: flags=0x8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33648
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
rumpctrl (unix:///tmp/rump1sock)$
rump_serverをroot権限で起動した場合、クライアントもroot権限の必要あり。
rumpctrl TIPS
rump clientとして使えるコマンド一覧
rumpctrl_listcmds
rumpctrlモードのままホストのコマンドを実行
rumpctrl_hostcmd コマンド...
わざわざこれを使わなくてもフルパスでコマンドを叩けば普通に実行できる。
rumpctrlモードから通常状態への復帰
rumpctrl_unload
ホストとの通信の方法
1. ホストでtapインタフェースを作る。名前はtapN(Nは任意の数値)
2. rumpctrlでifconfig virtN createすると、tapN (Nが同じtap)とつながる
host
rump_server rump_server
tap0 tap1
virt0 virt1
ifconfig tap0 create
ifconfig virt0 create
1. ホスト上でtap0とtap1をブリッジする
2. virt0に172.21.0.1, virt1に172.21.0.2を付ける
3. pingを投げる
host
bridge
テスト
rump_server rump_server
tap0 tap1
virt0 virt1ping 172.21.0.2
172.21.0.1 172.21.0.2
tap0とtap1のブリッジ
ここでは無理に、Lagopus http://lagopus.github.io の開発版を使ってみます。
普通にやる場合はbridge(4)を使ってください。
$ sudo pkgin install gmp
$ ./configure; gmake; sudo gmake install
$ sudo lagopus -C 2port-tap.dsl
$ sudo pkgin install py27-pip
$ sudo pip27 install ryu
$ ryu-manager port1-2.py
tap0とtap1をLagopus
bridgeに接続する設定
port 1とport 2の間で
パケット転送する設定
IPアドレスの割り当て
$ sudo -s
# cd rumpctrl
# . ./rumpctrl.sh
# rumpctrl (NULL) $ export RUMP_SERVER=unix:///tmp/rump1sock
# rumpctrl(unix:///tmp/rump1sock)$ ifconfig virt0 create
# rumpctrl(unix:///tmp/rump1sock)$ ifconfig virt0 172.21.0.1/24 up
# rumpctrl(unix:///tmp/rump1sock)$ RUMP_SERVER=unix:///tmp/rump2sock
# rumpctrl(unix:///tmp/rump2sock)$ ifconfig virt1 create
# rumpctrl(unix:///tmp/rump2sock)$ ifconfig virt1 172.21.0.2/24 up
server起動した。ifconfigもできた。いざping!
rumpctrl (unix:///tmp/rump1sock)$ ifconfig virt0
virt0: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: b2:0a:8e:0b:0e:00
inet 172.21.0.1 netmask 0xffffff00 broadcast 172.21.0.255
inet6 fe80::b00a:8eff:fe0b:e00%virt0 prefixlen 64 scopeid 0x2
rumpctrl (unix:///tmp/rump1sock)$ ping 172.21.0.2
PING 172.21.0.2 (172.21.0.2): 56 data bytes
64 bytes from 172.21.0.2: icmp_seq=0 ttl=255 time=0.000000 ms
64 bytes from 172.21.0.2: icmp_seq=1 ttl=255 time=0.000000 ms
動く! 動くぞ!!
まとめ
pingだけしか試してないけれど、
NetBSD 7.0であれば比較的素直に動いてくれた。よかった。
おしまい。

More Related Content

What's hot (20)

PDF
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
Kenichiro MATOHARA
 
PDF
hpingで作るパケット
Takaaki Hoyo
 
PDF
ちょっと古いマシンにLinuxを
Kenichiro MATOHARA
 
PDF
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Kenichiro MATOHARA
 
PDF
Ryu+Lagopusで OpenFlowの動きを見てみよう
Masaru Oki
 
PPTX
Trema での Open vSwitch
kazuyas
 
KEY
OpenvswitchでVPS
Daisuke Nakajima
 
PPTX
Hello, systemd
Emma Haruka Iwao
 
PDF
Rps・rfs等最新linux kernel事例
Takuya ASADA
 
PDF
Open vSwitchソースコードの全体像
Sho Shimizu
 
PPTX
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Takuya ASADA
 
PDF
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
Masaru Oki
 
ODP
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
Kenichiro MATOHARA
 
PDF
Open stack+lagopus できるかな
Masaru Oki
 
PDF
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
Kenichiro MATOHARA
 
PDF
Lxc cf201207-presen
Kouhei Maeda
 
PDF
Lagopus 0.2
Masaru Oki
 
PDF
Open flow tunnel extension on lagopus vswitch
Masaru Oki
 
PDF
Ethernetの受信処理
Takuya ASADA
 
PPTX
ラズパイ2で動く Docker PaaSを作ってみたよ
npsg
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
Kenichiro MATOHARA
 
hpingで作るパケット
Takaaki Hoyo
 
ちょっと古いマシンにLinuxを
Kenichiro MATOHARA
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Kenichiro MATOHARA
 
Ryu+Lagopusで OpenFlowの動きを見てみよう
Masaru Oki
 
Trema での Open vSwitch
kazuyas
 
OpenvswitchでVPS
Daisuke Nakajima
 
Hello, systemd
Emma Haruka Iwao
 
Rps・rfs等最新linux kernel事例
Takuya ASADA
 
Open vSwitchソースコードの全体像
Sho Shimizu
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Takuya ASADA
 
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
Masaru Oki
 
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
Kenichiro MATOHARA
 
Open stack+lagopus できるかな
Masaru Oki
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
Kenichiro MATOHARA
 
Lxc cf201207-presen
Kouhei Maeda
 
Lagopus 0.2
Masaru Oki
 
Open flow tunnel extension on lagopus vswitch
Masaru Oki
 
Ethernetの受信処理
Takuya ASADA
 
ラズパイ2で動く Docker PaaSを作ってみたよ
npsg
 

Viewers also liked (20)

PDF
SDNソフトウェアスイッチlagopus for FreeBSD
Masaru Oki
 
PDF
Lagopus+pcap pmd
Masaru Oki
 
PDF
Net bsd advent calendar 2015 bpf
Masaru Oki
 
PDF
Lagopus 0.2.2
Masaru Oki
 
PDF
Lagopus 0.2.4
Masaru Oki
 
PDF
Lagopus as open flow hybrid switch
Masaru Oki
 
PDF
GPD WINが来た!
Masaru Oki
 
PDF
新生Lagopus2017(仮称)
Masaru Oki
 
PDF
Running Applications on the NetBSD Rump Kernel by Justin Cormack
eurobsdcon
 
PPTX
Dracula presentation with answers ok
alexteacherproa
 
PPTX
Myanmar (Political Setting)
Jose Radin Garduque
 
PPTX
Singapore (Political Setting)
Jose Radin Garduque
 
PPT
8 Marks of the Kalki
Jose Radin Garduque
 
PPTX
Historia del Cine
miiikeeelooodiiiuuum
 
PPTX
K overview
Grigore Rosu
 
PDF
Richards key 3
richardskd
 
PPTX
Myanmar: Socio-Cultural Setting
Jose Radin Garduque
 
PPT
8 Colorful Ideas for My Country (The Filipino Youth)
Jose Radin Garduque
 
PPS
Ngfkbm intro for pastor dudley
jentracy2
 
PPTX
Singapore: Economic Setting
Jose Radin Garduque
 
SDNソフトウェアスイッチlagopus for FreeBSD
Masaru Oki
 
Lagopus+pcap pmd
Masaru Oki
 
Net bsd advent calendar 2015 bpf
Masaru Oki
 
Lagopus 0.2.2
Masaru Oki
 
Lagopus 0.2.4
Masaru Oki
 
Lagopus as open flow hybrid switch
Masaru Oki
 
GPD WINが来た!
Masaru Oki
 
新生Lagopus2017(仮称)
Masaru Oki
 
Running Applications on the NetBSD Rump Kernel by Justin Cormack
eurobsdcon
 
Dracula presentation with answers ok
alexteacherproa
 
Myanmar (Political Setting)
Jose Radin Garduque
 
Singapore (Political Setting)
Jose Radin Garduque
 
8 Marks of the Kalki
Jose Radin Garduque
 
Historia del Cine
miiikeeelooodiiiuuum
 
K overview
Grigore Rosu
 
Richards key 3
richardskd
 
Myanmar: Socio-Cultural Setting
Jose Radin Garduque
 
8 Colorful Ideas for My Country (The Filipino Youth)
Jose Radin Garduque
 
Ngfkbm intro for pastor dudley
jentracy2
 
Singapore: Economic Setting
Jose Radin Garduque
 
Ad

Similar to Using rump on NetBSD 7.0 (20)

PDF
OpenStackでつくる開発環境と外道塾
外道 父
 
PDF
RubyConfの話の続きのおはなし
yamanekko
 
PDF
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
 
PDF
Nseg20120825
hiro345
 
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
 
PDF
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
Izumi Tsutsui
 
PDF
sysloadや監視などの話(仮)
Takanori Sejima
 
PPTX
Node.jsで使えるファイルDB"NeDB"のススメ
Isamu Suzuki
 
PDF
Tokyo.R#16 wdkz
Kazuya Wada
 
PDF
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
YASUKAZU NAGATOMI
 
PDF
Getting Started GraalVM (再アップロード)
tamtam180
 
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
PDF
197x Timer with Your Messages
Kuniaki Igarashi
 
PDF
ゆるふわLinux-HA 〜PostgreSQL編〜
Taro Matsuzawa
 
PDF
RでGPU使ってみた
Kazuya Wada
 
PDF
Debian Testing on Windows Tablet T100TA
Netwalker lab kapper
 
PDF
そろそろRStudioの話
Kazuya Wada
 
PDF
自分色のLinuxホームサーバーを作ってみよう
Masahiko Hashimoto
 
PDF
OSS Product feat. Gradle
Yasuharu Nakano
 
PDF
Djangoとweb2pyをapacheに組込む
2bo 2bo
 
OpenStackでつくる開発環境と外道塾
外道 父
 
RubyConfの話の続きのおはなし
yamanekko
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
 
Nseg20120825
hiro345
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
Izumi Tsutsui
 
sysloadや監視などの話(仮)
Takanori Sejima
 
Node.jsで使えるファイルDB"NeDB"のススメ
Isamu Suzuki
 
Tokyo.R#16 wdkz
Kazuya Wada
 
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
YASUKAZU NAGATOMI
 
Getting Started GraalVM (再アップロード)
tamtam180
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
197x Timer with Your Messages
Kuniaki Igarashi
 
ゆるふわLinux-HA 〜PostgreSQL編〜
Taro Matsuzawa
 
RでGPU使ってみた
Kazuya Wada
 
Debian Testing on Windows Tablet T100TA
Netwalker lab kapper
 
そろそろRStudioの話
Kazuya Wada
 
自分色のLinuxホームサーバーを作ってみよう
Masahiko Hashimoto
 
OSS Product feat. Gradle
Yasuharu Nakano
 
Djangoとweb2pyをapacheに組込む
2bo 2bo
 
Ad

More from Masaru Oki (15)

PDF
NetBSD移植の昔話
Masaru Oki
 
PDF
Rust-DPDK
Masaru Oki
 
PDF
Rust-DPDK
Masaru Oki
 
PDF
Lagopusとvagrant
Masaru Oki
 
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
 
PDF
Onieで遊んでみようとした話
Masaru Oki
 
PDF
LagopusでPPPoEを使えるか考えてみた件
Masaru Oki
 
PDF
Lagopus どれだけ速いのか
Masaru Oki
 
PDF
Lagopus 0.2.7
Masaru Oki
 
PDF
Lagopus match improvements
Masaru Oki
 
PDF
Xeon dとlagopusと、pktgen dpdk
Masaru Oki
 
PDF
Running lagopus on Xeon D
Masaru Oki
 
PDF
Using Xeon D 10GBase-T
Masaru Oki
 
PDF
DPDK QoS
Masaru Oki
 
PDF
Xeon d
Masaru Oki
 
NetBSD移植の昔話
Masaru Oki
 
Rust-DPDK
Masaru Oki
 
Rust-DPDK
Masaru Oki
 
Lagopusとvagrant
Masaru Oki
 
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
 
Onieで遊んでみようとした話
Masaru Oki
 
LagopusでPPPoEを使えるか考えてみた件
Masaru Oki
 
Lagopus どれだけ速いのか
Masaru Oki
 
Lagopus 0.2.7
Masaru Oki
 
Lagopus match improvements
Masaru Oki
 
Xeon dとlagopusと、pktgen dpdk
Masaru Oki
 
Running lagopus on Xeon D
Masaru Oki
 
Using Xeon D 10GBase-T
Masaru Oki
 
DPDK QoS
Masaru Oki
 
Xeon d
Masaru Oki
 

Using rump on NetBSD 7.0