インターネット論文「The Design Philosophy of the DARPA Internet Protocols」を読む(続き)

2006/6/7

4. Survivability in the Face of Failure

インターネットの最も重要な要素は、途中のネットワークやゲートウェイが変になっても通信を行っている2台の機器同士の通信が継続できることです。 継続とは、状態をリセットしたり再接続を行ったりすることが無く通信を続けられることです。

さらに言うと、トランスポート層でsenderとreceiverの間でsynchronizationがlostしたことを認識するための方法がありません。 これは、インターネットアーキテクチャでは2者間でのsynchronizationが絶対にlostしない事を前提としています(ただし、物理的な通信経路が無くなった場合は接続が切れてしまう)。

言い換えると、トランスポート層での唯一のfailureは接続の分断で、完全に通信が失敗したときだけです。 インターネットアーキテクチャは通信路でのfailureを完全に隠蔽します。

この設計目標を実現するには、進行中の通信に関する状態(state)情報を保護しないといけません。 例えば、送信されたパケット数・acknowledgedされたパケットの数などです。

ネットワークによっては、この状態情報はネットワークにより保持されています。 ただ、ネットワーク自体に状態情報を逐一持たせると実現が非常に困難になってしまいます。 インターネットアーキテクチャが採用したモデルは、ネットワーク自体が状態を持つのではなく、endpointが状態を持つ方式です。

生存性を実現する2つの重要な要素として、1)途中経路のswitch/gatewayはon-going connectionsに対する状態情報を持たない、2)末端hostががんばる。

生存性はリストの中では一番重要な設計目標でしたが、実は生存性は全体の中では2番目に重要な設計目標です。 一番重要なのは、存在するネットワーク同士の相互接続です。 単一のネットワークを使う設計ならば、今のインターネットよりも生存性に優れたものが作れたかも知れません。 例えば、インターネットはネットワークがfailしたという通知をくれることを期待していません。 そのため、インターネットレベルでのエラー検知を行わなくてはならず、エラーの発見が遅くなってしかもエラー内容も特定しにくいです。

今日はここまで

続き

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

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