論文「The Design Philosophy of the DARPA Internet Protocols」を読む(5)

2006/6/13

8. Architecture and Implementation

この章は「実現手法(realization)」には色々あるというお話。 実現手法は設計者に委ねられているが、実現方法のガイド(guidance)をどうやって設計者に伝えるかというのも重要な要素だった。

Protocol verifiers(プロトコルチェックツールなど)はプロトコルの整合性を論理的にチェックするには有用だが、パフォーマンス測定はやってくれないものが多い。 プロトコルとしては正しいが性能が出ないという実装が出来上がることがしばしばあった。 でも、結局性能問題はOS(Operating System、オペレーティングシステム)内部の問題に帰着してしまう事が多かった。 結局、実装者ガイドを整える必要性を強く感じた。 (ここらへんの問題からRFCが出来上がったのかも知れませんね。)

設計者を助けるツールとしてシュミレータもあります。 ただ、インターネットの多様性を実現したシュミレータはまだ無い。

アーキテクチャと性能を両立させるのは非常に難しい課題でした。 インターネットアーキテクチャの設計者達はパフォーマンスを無視するのは間違いだと思っていました。 ただ、インターネットの設計目標にパフォーマンスが入っていなかったのと、パフォーマンスを表現する良い手法が見つかりませんでした。

インターネットは軍隊用の標準を作るためのプロジェクトでした。 軍事物資の調達には明確な指標がなければならず、パフォーマンスに関して明確な表現方法がなかったので、インターネットアーキテクチャにはパフォーマンスに関する規定を盛り込めませんでした。 例えば「1秒間に1000パケットの処理ができる」などの表現方法もありますが、それをインターネットアーキテクチャの要求仕様に入れるわけにもいかなかったので結局パフォーマンスを盛り込めませんでした。

9. Datagrams

インターネットの基本構造はデータグラムにより構成されています。 データグラムの重要な点としては、まずは途中経路が状態(state)を持たず再構築の時に通信状態を把握しなくて良い事があげられます。 次に、データグラムは様々なtype of serviceを実現するためのbuilding blockを提供しています。 3つ目は、データグラムがネットワーク機能を実現するための最小限の構成で実現されていることです。 データグラムを使うという判断は非常に成功しました。

データグラムの特性と全く同一のhigher level serviceを実現するためにデータグラムが存在していると勘違いされることが良くあります。 データグラムはサービスを構築するためのbuilding blockであり、サービスそのものではない事を理解するのはとても重要な事です。

10. TCP

この章ではTCPが何故今のようになったかの経緯を説明しています。 ARPANETのhost-to-host protocolは、パケット数とバイト数をもとにflowコントロールを行っていました。 これは複雑だったため、どちらか一方にまとめることにしました。 バイト数の方が採用されました。

バイトの方を採用した理由の一つとしては、control informationとデータを同時に応答として送信できるようにすることがあげられます。

2つ目の理由は、途中経路でTCPパケットが小さく分割されても良いようにする事でした。 ただ、結局この機能はIPレイヤに移りました。 (IPパケットのフラグメンテーション機能)

3つ目の理由は、複数の小さなパケットに対してまとめてack(応答確認)を返せるようにすることでした。 最初はこの機能が重要かどうかわかりませんでしたが、結果として最重要項目であった事がわかりました。

(これ以降も色々細かい話が書いてありましたが、面倒なので割愛。。。)

11. Conclusion

インターネットアーキテクチャは民間と軍事の両方で広く使われるようになった。 ただ、状況によってはユーザの要求を満たせていない。 課金やリソースマネージメントなどが今後必要である。

データグラムは設計の重要項目を解決するには大変良い方法だった。 ただ、プライオリティの低い設計目標を満たすには至っていない。

次世代のアーキテクチャではデータグラムでない方法も良いかも知れない。 途中のゲートウェイが破棄されても大丈夫な状態の持ち方をする(論文には「soft state」と書いてありました)という方法もあり得る。 次世代のbuilding blockの研究はDARPA Internet Programとしてある。

これで全部です

とりあえず、論文を全部読んでみました。 以上のメモが何かのお役にたてば幸いです。

プロフェッショナルIPv6解説動画シリーズ再生リスト

動画で学ぶ「プロフェッショナルIPv6」を作っています。 もしよろしければご覧ください。お楽しみいただければ幸いです!