ネットワークスタックの仮想化を実現

ネットワークアライアンス向けの特殊なOSをのぞいて、従来のOSでは、ネットワークスタックはカーネルに1つのインスタンスだけがサポートされている。ようするに、OSで1つのルーティングテーブルを保持しているということだ。これに対してMarko Zec氏は、FreeBSDにおいてネットワークスタックの仮想化を実現する機能を研究開発している。NICやアドレスに対してそれぞれ個別のネットワークスタック、つまりはルーティングテーブルを提供するというものだ。

これは同氏が自身の研究を実施するにあたって、OS上にネットワークを構築して研究のツールとして活用するために開発されたもの。もともとFreeBSD 4系に対して開発されたもので、18日(東部標準時)にBSDCan 2007においてFreBSD 7系に対する実装や基本アイディアなどが紹介された。

同氏が4系に対応した自身の成果物を公開したのが、もはや6系へとシフトした後だったのでマージは実現されなかった。今回7系への実装が進められたことで、同機能のマージへ向けた取り組みが進んだことになる。同氏が提供しているパッチでは、ユーザランドアプリケーションに対するAPIは変更されず、カーネル内に対して多くの変更が実施されることになる。現在の方法ではバイナリのみで提供されているカーネルモジュールなどに対して変更の影響がおよぶ可能性があるため、今後も議論が必要だが、最終的にシステムに取り込まれることは間違いなさそうだ。

時期的にみて最初のマージは次期開発ブランチとなるFreeBSD 8系になるのではないかと考えられる。7系へは8系からMFCするかたちで同機能が取り込まれることになるだろう。