//あとで書く

です・ます調が記事によって違ったりするブログ

netmapを触ってみる(導入編)

先日の「第35回ネットワークパケットを読む会」にてnetmapについての話があり,面白そうだったので導入してみました.今回は導入編(というか設定しただけ)です.次回以降にnetmapを用いたソケットプログラミングについて記事を書いていきたいと思います.

はじめに
netmapについて知見を得るためにこの記事を開いた方には申し訳ありません.残念ながら当記事から得られるものは何もないので,以下のような素晴らしいスライド・記事を参照していただいた方が良いかと思います.

パケットジェネレータipgenから見るnetmap
超高速なパケットI/Oフレームワーク netmap について - ゆううきブログ


netmapについて
高速パケットIOフレームワークと呼ばれています.従来のソケットの送受信を高速化することができるそうです(ユーザプロセスとNIC間で様々な効率化がはかられている).netmapはユーザランドドライバです.また,現段階ではIntel製以外のNICには対応していません.

NICの種類を確認する方法としては,$dmesg | grep インタフェース名 等があります(適当)

環境
仮想マシン上で作業を行いました.

VirtualBox 5.0.12
FreeBSD 10.3(x86_64)

カーネル再構築
導入といっても,netmapは既に機能としてFreeBSDに取り込まれています.しかし,GENERICカーネル(FreeBSDをインストールした時点で動いているカーネル)には取り込まれていないのでカーネルを再構築します.カーネル再構築の一連の流れについて,次の記事に詳しく記載されているのでそちらを参照下さい.iij/ipgenを試してみる - Qiita

GENERICファイル(コンフィグレーションファイル)を適当に開き,最終行に一行追記した後にコンパイルします.以下の例では,GENERICファイルをコピーしてから追記しています.

$curl -O http://ftp.jaist.ac.jp/pub/FreeBSD/releases/amd64/10.3-RELEASE/src.txz
$tar Jxvf src.txz
$cd ./usr/src/sys/amd64/conf
$cp -p GENERIC hoge
$vim hoge

#最終行に追加
device         netmap

$config hoge
$cd ../compile/hoge
$make cleandepend
$make depend
$make
$sudo make install 


おわりに(次回以降の記事について)
最初にも触れましたが,次回以降は実際に既存のソケット通信との速度比較等を行いたいと思っています.(次回があるかはわかりませんが><)