SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
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であれば比較的素直に動いてくれた。よかった。
おしまい。

Más contenido relacionado

La actualidad más candente

Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
kazuyas
 
Rps・rfs等最新linux kernel事例
Rps・rfs等最新linux kernel事例Rps・rfs等最新linux kernel事例
Rps・rfs等最新linux kernel事例
Takuya ASADA
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Sho Shimizu
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Takuya ASADA
 

La actualidad más candente (20)

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

Destacado

Dracula presentation with answers ok
Dracula presentation with answers okDracula presentation with answers ok
Dracula presentation with answers ok
alexteacherproa
 
Richards key 3
Richards key 3Richards key 3
Richards key 3
richardskd
 
8 Colorful Ideas for My Country (The Filipino Youth)
8 Colorful Ideas for My Country (The Filipino Youth)8 Colorful Ideas for My Country (The Filipino Youth)
8 Colorful Ideas for My Country (The Filipino Youth)
Jose Radin Garduque
 
Ngfkbm intro for pastor dudley
Ngfkbm intro for pastor dudleyNgfkbm intro for pastor dudley
Ngfkbm intro for pastor dudley
jentracy2
 

Destacado (20)

SDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSDSDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSD
 
Lagopus+pcap pmd
Lagopus+pcap pmdLagopus+pcap pmd
Lagopus+pcap pmd
 
Net bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpfNet bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpf
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
 
Lagopus 0.2.4
Lagopus 0.2.4Lagopus 0.2.4
Lagopus 0.2.4
 
Lagopus as open flow hybrid switch
Lagopus as open flow hybrid switchLagopus as open flow hybrid switch
Lagopus as open flow hybrid switch
 
GPD WINが来た!
GPD WINが来た!GPD WINが来た!
GPD WINが来た!
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack
 
Dracula presentation with answers ok
Dracula presentation with answers okDracula presentation with answers ok
Dracula presentation with answers ok
 
Myanmar (Political Setting)
Myanmar (Political Setting)Myanmar (Political Setting)
Myanmar (Political Setting)
 
Singapore (Political Setting)
Singapore (Political Setting)Singapore (Political Setting)
Singapore (Political Setting)
 
8 Marks of the Kalki
8 Marks of the Kalki8 Marks of the Kalki
8 Marks of the Kalki
 
Historia del Cine
Historia del CineHistoria del Cine
Historia del Cine
 
K overview
K overviewK overview
K overview
 
Richards key 3
Richards key 3Richards key 3
Richards key 3
 
Myanmar: Socio-Cultural Setting
Myanmar: Socio-Cultural SettingMyanmar: Socio-Cultural Setting
Myanmar: Socio-Cultural Setting
 
8 Colorful Ideas for My Country (The Filipino Youth)
8 Colorful Ideas for My Country (The Filipino Youth)8 Colorful Ideas for My Country (The Filipino Youth)
8 Colorful Ideas for My Country (The Filipino Youth)
 
Ngfkbm intro for pastor dudley
Ngfkbm intro for pastor dudleyNgfkbm intro for pastor dudley
Ngfkbm intro for pastor dudley
 
Singapore: Economic Setting
Singapore: Economic SettingSingapore: Economic Setting
Singapore: Economic Setting
 

Similar a Using rump on NetBSD 7.0

OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
外道 父
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
hiro345
 
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
YASUKAZU NAGATOMI
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
Kuniaki Igarashi
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
Masahiko Hashimoto
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
 

Similar a Using rump on NetBSD 7.0 (20)

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

Más de Masaru Oki

Más de Masaru Oki (15)

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

Using rump on NetBSD 7.0