Netnice / The OS Approach in Network QoS

Netnice version 2

[Japanese| English]

News
Aug 8, 2003   新しいサイト へと移動しました。

Dec 31,2002   利用目的をわかりやすく説明した解説ページ を作成しました。

Dec 31,2002   Apache用トラフィック制御モジュール(試験版)が含まれるスナップショットを公開しました。

Dec 10,2002   FreeBSD 4.7用の アルファ版が公開されました。(shやinetdも付属しています!)

Nov 21,2002   FreeBSD 4.7用の スナップショットが公開されました。

Aug 07,2002   ホームページが見やすくなりました。


What is it?
Netnice は、エンドホストOSにおけるネットワーク制御機構です。 Version 2では、ネットワークインターフェースの仮想化を通じて、 さまざまなトラフィック制御とシステム資源の保護を実現します。

Netniceを利用すれば、プロセスのネットワークI/Oに仮想ネットワークインターフェース(VIF)を取り付け、プロセスのネットワーク入出力を制御できます。このインターフェースは、何段にも接続することができ、プロセスに対してだけではなく、ソケットやプロセスグループに対しても取り付けることが可能です。これにより、柔軟な粒度での制御が行えます。

仮想ネットワークインターフェースには、利用帯域やキューイング制御方式、重みや優先度などが自在に設定できます。これにより、パケットシェーパーとしての利用に加えて、帯域の有効利用を行ったり、プレミアムサービスを行ったりするなどの多様な制御が簡単に実現できます。

さらに、いったん取り付けた仮想ネットワークインターフェースは子プロセスにも引き継がれ、ネットワーク資源の保護が自動的に行われます。

今までにも、エンドホストOS上で動作するいくつかのトラフィック制御機構が提案されてきました。しかしながら、既存の実装は制御に柔軟性が無く、資源保護モデルを備えていないなど、OSによる基礎サービスとして問題が多いものでした。Netniceは、OSサービスとして理想的な多くの特徴を備えており、さまざまなOSに実装が可能です。


Applications
Netnice version 2パッケージには、仮想ネットワークインターフェース機構 を利用したさまざまなトラフィック制御アプリケーションが付属しています。




mod_netnice

mod_netniceは、もっとも良く利用されているウェブサーバであるApache HTTP Serverのためのトラフィック制御モジュールです。簡単な設定をするだけで、ウェブサイトのトラフィックを制御することが可能となります。

このApacheモジュールは、以下のような症状に悩んでいるウェブサーバ管理者を幸せにしてくれます。


  • バーチャルホストを利用しているのだが、一部の人気ホストにアクセスが集中していて、他のホストへのアクセスが遅くなっている

  • いくつも大きな動画データを置いているのだが、ADSLなどの高速回線からダウンロードされるときに他のユーザーに迷惑が掛かっている

  • ECサイトを運営しているのだが、広告を打った日にはアクセスが集中してしまい、画面表示の遅さにお客が逃げてしまっている

 

Sample

mod_netniceの設定は、RootVIF、HostVIF、DirectoryVIFという、それぞれのVIFにたいして利用帯域などのパラメータを記述することで行われます。 VIFは、パケットシェーパーとして、利用帯域の上限を設定できるだけでなく、Fair Queuingモードで動作させることもでき、従来の帯域制御モジュールと比して、より高度なトラフィック制御を可能にします。

上述したようなケースは、mod_netniceを利用することで、次のように解消されます。


  • Host VIF を、fair queuingモードに設定する。人気のあるホストは、他のサイトの利用者がいないときには全帯域を消費できますが、他ホストの利用者が現れたときには、自動的に、利用帯域が公平に分配されます。

  • 動画像のあるディレクトリに対して、Directory VIFを設定し、帯域制限を行うことで解決できます。

  • 顧客がアクセスする最初のページと、閲覧や購入などのためのページを別ディレクトリに分け、最初のページに対してより多くの帯域を割り当てることで、ある程度軽減が可能です。

 

Documents

  • mod_netnice README (txt)





sh (1)

netniceエンハンスドshを使うと、ネットワークアプリケーションのトラフィックを簡単に制御することが可能です。

このshは、以下のような問題にたいして有効です。

  • cvsupなどで定期的に行っているファイル転送のトラフィックが重い

  • rcやcronなどのシェルスクリプトで、ネットワークアプリケーションの利用帯域を明示的に指示したい

  • scpなどのネットワークアプリケーションを同時にいくつも利用するときに、それぞれに別々の優先順位を付けたい

 

Sample

$ ftp ftp.foo.com @128K
このように、実行するコマンドに@を付け利用帯域を記述することで、 指定した帯域を有した仮想ネットワークインターフェースを作成し、 実行プログラムのネットワークI/Oを制御できます。

Documents






netnice (8)

netniceは、トラフィック制御用コマンドです。プロセスのネッ トワークI/Oをコンソールより簡単に制御できます。このコマンドにより、大 きなファイルのダウンロードなどにより帯域を消費しているプロセスを隔離す る、といった操作が簡単に行えます。

このコマンドは、以下のような症状に悩んでいる人を幸せにしてくれます。

  • ファイルをfetchしようとしたら、思った以上に大きくて、ネットワークが一時的に遅くなった

 

この図では、帯域を消費している左側のプロセスに対して、netniceコマンド が新たなVIFを取り付け、トラフィックを隔離している様が示されています。

Sample

root# netnice -c -i fxp0 32Kbps $$
fxp0:       32 Kbps
root# netnice
fxp0:       32 Kbps
fxp1:      128 Kbps
ti0:       128 Kbps
lo0:       128 Kbps
ppp0:      128 Kbps
sl0:       128 Kbps
faith0:    128 Kbps
1行目: 現在のシェルのfxp0に向けたネットワークI/Oに対して、32KbpsのVIFを作成して挿入する
3行目: 現在のシェルに接続されている、それぞれのネットワークインターフェースに対してのVIFのリストを返す

Documents






inetd (8)

netniceエンハンスドinetdを使うと、各種ネットワークサービス系デーモンのトラフィックを簡単に制御することが可能です。

このコマンドは、以下のような症状に悩んでいるネットワーク管理者を幸せにしてくれます。

  • 共同利用している計算サーバが、ファイルサーバーと共用なので、ファイルアクセスが多いときに端末が遅くなってしまう

  • FTPなどのトラフィック制御を行いたいのだが、専用のハードウェアを購入する予算がない

 

Sample

%cat /etc/inetd.conf
ftp     stream  tcp     /usr/local/libexec/ftpd ftpd -l @128K/sec
telnet  stream  tcp     /usr/libexec/telnetd    telnetd @32K/sec
shell   stream  tcp     /usr/libexec/rshd       rshd

%inetd
%
この他にも、帯域の公平な割り当てなどのさまざまなトラフィック制御が可能です。 詳しい設定については、マニュアルを参照してください。

Documents






netniced (8)

netnicedは、帯域管理用のQoSマネージャです。

このデーモンは、以下のような症状に悩んでいる人を幸せにしてくれます。

  • バーチャルホスティングのためのウェブクラスターを運用しているのだが、それぞれのバーチャルホストに対して帯域制御を行いたい

  • 無線LAN環境に慣れたのは良いが、他人のトラフィックでネットワーク品質が大きく変わってたいへん

  • クラスタのためのトラフィック制御研究をやっているのだが、新しく考えたアルゴリズムをすぐに検証することができずに困っている


 

Sample

netnicedは、システム上のプロセスを監視し、設定ファイルに記されたポリシにしたがって、同一セグメント上の他のnetnicedと協調しながら、ネットワークI/Oを制御します。

制御ポリシは、Javaに似た独自のイベントハンドラ言語により表現されます。また、ホスト上でのネットワーク制御を行うためのクラスライブラリが付属しており、QoSマネージャの挙動を簡潔に表現できます。

Documents


Download

Package

  • Version 2.05   (For FreeBSD 4.7, SNAP-12-31-2002 [tgz]
  • Version 2.04   (For FreeBSD 4.7, Alpha Release) [tgz]

    Netnice 2の実装は、FreeBSD用パッケージとして提供されています。 また、Linuxへの移植作業も、細々と行われています。

Change Log

  • 2.05   (Dec 31, 2002)   SNAP with mod_netnice.c
  • 2.04   (Dec 10, 2002)   Alpha Release
  • 2.03   (Dec 05, 2002)   SNAP version with netnice applications.
  • 2.02   (Nov 21, 2002)   SNAP version with a stable kernel patch.


Documents

Manuals

Publication


Copyright 2001-2002 asahikawa.wide.ad.jp all rights reserved.