FreeBSD Daily Topics

2010年5月13日2010Q1報告(ネットワークスタック):ipfwファイアウォールとdummynet帯域制御機能の新機能追加および改善

heads-up

2010Q1 FreeBSD Status Reportが公開されました。報告されている中から、とくにネットワークサブシステムに関する話題を簡単に紹介します。

ipfw and dummynet enhancements

IPファイアウォールおよびトラフィック制御プログラムipfwおよびトラフィック制御・帯域制御・遅延エミュレータdummynetに大幅な変更が追加されたことが報告されています。この変更で追加された主な新機能は次のとおりです。

  • skipto命令が大幅に高速化されました。これまではO(N)かかっていた処理が、改善以後はO(1)またはO(log N)まで高速化しています。多くのルールやパイプをともなうskipto tablearg命令やpipe tablearg命令を使っている場合には大幅な性能の向上を確認できると説明があります。

  • ユーザランド再設定へのレスポンスにおける費用の高い操作がポインタをスワップすることよりもより多くの時間を必要とするカーネルフィルタリングの処理に対して遅延をもたらすことがないようになりました。

  • テーブルのルックアップの引数としてtosフィールドやポートを指定できるようになりました。この結果いくつけのケースにおいてルール指定が今までよりも簡単になるうえ、実行速度が高速化するケースも現れます。

  • ipfwにおいてipfw0疑似インターフェースに対してlog属性を使ったパケットマッチングルールが使用できるようになりました。これはtcpdumpにおいて追加のフィルタやロギングを実現するために利用できます。

  • さまざまなパフォーマンス要求やサービス保証に対応できるようにdummynetにさまざまな異なるスケジュールタイプが追加されました。現在のスケジューラはFIFO、WF2Q+、Deficit、Round Robin、Priority、QFQです。スケジューラはカーネルモジュールとして実装できると説明されています。

  • カーネルには後方互換性が確保されたインターフェースが残されているため、RELENG_7やRELENG_8のバージョンの/sbin/ipfwを使ってファイアウォールやdummybetを設定することができます。

今後の課題として次の内容が挙げられています。

  • dummynetにおけるアイドルエントリの削除を最適化する作業が進められています。この作業は短い期間で完了するだろうと説明があります。

  • ipfwのダイナミックルールはいまのところ実行時にダイナミックルールを含むハッシュテーブルを排他的ロックする必要があります。長期の目標としてはこうしたダイナミックルールにおけるipfwの命令を並列に処理できるようにすることだとされています。

ipfw(8)/(4)およびdummynet(8)における機能改善や新機能追加、性能向上はFreeBSD 9系の特徴のひとつになると見られます。

おすすめ記事

記事・ニュース一覧