
〜 IPv6、UML、セキュリティ機能の統合 〜
カーネル2.6にはまだまだ興味深い機能がある。今回はこれらを一気に紹介して、一連の特集をしめくくる。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう。(編集局)
加藤丈治
富士通 ファームウェア開発推進統括部開発部
2003/3/18
2003年1月から続いたこの企画も今回が最終章です。これまで触れられなかったTCP/IP関連機能(IPv6対応強化やSCTPサポートなど)やカーネルレベルプリエンプション、User Mode Linuxやカーネルのセキュリティ機能であるLinux Security Moduleを一気に紹介します。
TCP/IPの機能強化
カーネル2.6では、TCP/IPスタックに以下の改良が加えられています。
- IPv6対応の強化
- SCTP(Stream Control Transmission Protocol)サポート
- IPSec対応
■IPv6対応の強化
カーネル2.6のIPv6実装には、USAGI Project(編注)やヘルシンキ工科大学などの成果が取り入れられ、大幅な機能強化が図られています。いくつかの機能はカーネル2.4でもすでに利用できるようになっていますが、次のような改善が行われています。
- IPv6上のICMP機構(近隣探索/自動設定関連機能)の改善
- 堅牢性の向上
- 経路制御(デフォルト経路)の改善
- エニィキャストへの対応
- モバイルIP機能への対応
- IPv6 Over IPv6(IPv6のパケットをIPv6上でトンネルする機能)
- IPv6 Over ATM(ATM上でIPv6による通信を行う機能)
- ネットフィルタのIPv6サポート
| 編注:USAGIによるIPv6については、Linuxで作るIPv6ネットワーク環境も参照。 |
■SCTPのサポート
カーネル2.6では、SCTP(Stream Control Transmission Protocol)がサポートされます。
SCTPとは、IPなどの信頼性のないプロトコル上で、耐故障性に優れた通信路を提供するトランスポート層のプロトコルの一種です(図4)。
![]() |
| 図4 SCTPによる通信 |
SCTPは、以下のような特徴を持っています。
- メッセージ指向の通信プロトコルである(オクテットストリームではない)
- シーケンス番号とチェックサムからパケットの正統性を検証することで、パケットの多重送信などを回避して信頼性を確保する
- マルチホーミング対応の通信プロトコルであり、1つのストリームに対する通信路を複数持たせることができる
SCTPの最大の特徴の1つがマルチホーミング対応であることです。これは、サーバとクライアントとの通信路を多重化する(クライアントのIPを複数持つ)ことで、いずれかの通信路が通信不能になった場合でも、ほかの通信路を介して通信を続行できるということです。このような特性から、SCTPは主にモバイル環境での利用が期待されています。
■IPSecのサポート
IPSecとは、IP通信のパケットに電子署名や暗号化を施すことで、パケットの盗聴や偽造パケットの送信によるリピート攻撃などを防ぐ機能です。
カーネル2.4系は、IPSecを実装するためにカーネルにパッチを当てる必要がありましたが(編注)、カーネル2.6ではIPSecのサポートが標準カーネルに取り込まれます。カーネル2.6のIPSecはUSAGI Projectの成果物であり、IPv4/IPv6の双方で利用可能です。
| 編注:カーネル2.4でIPSecを利用する手段の1つに、FreeS/WANがある。FreeS/WANについては、FreeS/WANによるIPSecの導入と運用を参照。 |
カーネルレベルプリエンプションの仕組みと効果
■カーネルレベルプリエンプションとは?
カーネル2.6の重要な変更点の1つが、カーネルレベルプリエンプションによる割り込み応答性能の向上です。カーネルレベルプリエンプションは、組み込み系UNIXや近年の主要なUNIX系OS(SolarisなどのSVR4系UNIX)で実現されており、組み込み分野およびエンタープライズ分野の双方において重要な機能の1つといえます。
カーネル2.4までのLinuxでは、伝統的なUNIXと同様にプロセス起床に伴うコンテキスト切り替えは、システムコールの出口処理で行われていました。このため、割り込み処理時に、実行中のプロセスより優先度の高いプロセスを割り込みハンドラから起床しても、プロセス起床に伴うスケジューリングは割り込み発生前に実行していたシステムコールが終了するまで遅延されます(図5)。
![]() |
| 図5 カーネル2.4におけるプロセス起床処理 |
カーネル2.6では、割り込みに対する応答性能を改善するために、システムコールの実行中に割り込みハンドラからスケジュール要求があった場合、即時にスケジューリングを行う(カーネルレベルプリエンプション)ための修正が加えられています(図6)。
![]() |
| 図6 カーネル2.6におけるプロセス起床処理 |
ただし、OSのクリティカルセクション中でスケジューラを呼び出すとデータの一貫性が崩れ、システムがクラッシュしてしまいます。そのため、スケジューラの呼び出しをクリティカルセクションの外側からの呼び出しに限定する機構が必要となります。
カーネル2.6は、SMP時に使用されるスピンロックによる排他区間とプリエンプション不可能区間との同一性に注目し、スピンロックで保護された排他区間から出た時点でスケジューリングを行うことによって、カーネルレベルプリエンプションを実現しています(編注)。
| 編注:カーネルレベルプリエンプション(プリエンプティブルカーネル)については、Linuxカーネル2.5 最新開発動向でも解説している。 |
■カーネルレベルプリエンプションの効果
参考までに、カーネル2.4.20およびカーネル2.5.60環境でファイルシステムに高負荷を掛けた状態でプロセスを20ms周期で1000回起床させた場合のプロセス起床までの時間をグラフ1、グラフ2に示します(注)。 カーネルレベルプリエンプションの効果により、カーネル2.5.60では起床時間のばらつきが小さくなっているのが分かると思います。
![]() |
| グラフ1 カーネル2.4.20のプロセス起床時間 (CPU:Intel Xeon 2.4GHz) |
![]() |
| グラフ2 カーネル2.5.60のプロセス起床時間 (CPU:Intel Xeon 2.4GHz) |
| 注:なお、グラフにおける平均遅延時間の差(カーネル2.4.20:3.4ms、カーネル2.5.60:1ms)は、デフォルトのタイマティックの設定値によるものであり、カーネルレベルプリエンプションの影響によるものではありません。 |
| 第3章へ |
1/2
|
|
||||
|
||||
| Linux Square全記事インデックス |
| Linux Squareフォーラム Linuxカーネル関連記事 |
| 連載:Linux Kernel Watch(連載中) Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします |
|
| 連載:Linuxファイルシステム技術解説 ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する |
|
| 特集:全貌を現したLinuxカーネル2.6[第1章] エンタープライズ向けに刷新されたカーネル・コア ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する |
|
| 特集:/procによるLinuxチューニング[前編] /procで理解するOSの状態 Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する |
|
| 特集:仮想OS「User
Mode Linux」活用法 Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
| Linuxのカーネルメンテナは柔軟なシステム カーネルメンテナが語るコミュニティとIA-64 Linux IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った |
|
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -





