エンドツーエンド原理

エンドツーエンド原理（End-to-End Principle）は、コンピュータネットワークの古典的設計原理であり、1981年に Jerome H. Saltzer、David P. Reed、デービッド・ダナ・クラークらの論文 End-to-end arguments in system design で初めてその概念が提唱された。通信プロトコルの操作は可能な限り通信システムの終端で行い、また制御対象のリソースになるべく近いところで行うべきであるというもの。 エンドツーエンド原理では、アプリケーション固有の機能がネットワーク終端のホストで「完全かつ正しく」実装できるなら、ネットワーク内の中間ノードではなく終端のホストで実装されるべきだとする。この考え方はバランが1960年代に行った信頼できない部品で信頼性のあるネットワークを構築する研究にまで遡り、ネットワークに機能を追加しようとしたとき、（ネットワークでの実装のレベルによらず）結局は「完全かつ正しい」実装のために終端のホストにも実装しなければならなくなるという知見に基づく。下層の通信システムの機能の多くは上位層クライアントのために実装されているものの、クライアントがその機能を必要としないこともあり、クライアントが同等機能をエンドツーエンド的に再実装するような冗長な状況が存在し、性能的に無駄が生じるとした。 もう1つの典型的な例としてファイル転送がある。信頼性のあるファイル転送プロトコルやファイル転送プログラムではチェックサム機能を持ち、転送が完了した時だけチェックサムを検証する。ディスク障害やソフトウェア障害を考慮すると、エンドツーエンドのチェックサムが必要となる。ファイル転送でのキーとなるリソースはファイルシステムである。エンドツーエンド原理に従えば、ファイル転送でファイルシステムにアクセスするソフトウェアが転送の進み具合を制御し、最小の遅延で再転送を開始させることになる。 典型例として、それなりの大きさの分散ネットワークで信頼性のある2点間のファイル転送を行う場合が挙げられる。2つの終端が完全な信頼性のあるファイル転送を行うには、転送先の終端でファイル全体のチェックサムを確認して終端間（エンドツーエンド）で肯定応答を行う必要がある。そのようなシステムで下位層がファイルより小さな単位でチェックサムと応答のプロトコルを実装することは性能最適化の手段としてのみ正当化され、ファイル転送アプリケーション自体の高い信頼性要求を達成する手段としては不十分である。 ネットワーク中立性での議論では、エンドツーエンド原理は「中立」または「ダム（英語版）」ネットワークを前提として解釈される。 エンドツーエンド原理の背景にある基本的考え方は、2つのプロセスが何らかの通信手段を用いて互いに通信する際、その通信手段の提供する「信頼性」だけでプロセスに要求されている信頼性を完全に達成することは期待できないというものである。特にそれなりの大きさのネットワークに隔てられたプロセス間で通信する際に非常に高い信頼性が求められる場合、そのコストは単純な肯定応答と再送（ARQなど）で達成できる信頼性要求を満たす場合より高くなる。ある一定のマージンを超えて信頼性を得るには「中間ノード」内の機構よりも「終端ホスト」内の機構の方がずっと容易で扱いやすく、特に終端ホストの方が中間ノードよりも制御しやすい場合はそうである。エンドツーエンドで肯定応答と無限に再試行する再送のプロトコル（PAR、Positive Acknowledgment with Re-transmission プロトコル）を使うと、データ転送の成功確率がゼロより大きい任意のネットワークで任意の高い信頼性を達成できる。 エンドツーエンド原理をエンドツーエンドの誤り制御・訂正以外に拡張して適用することは簡単ではない。例えば、レイテンシやスループットといった通信パラメータの向上に直接エンドツーエンド原理で寄与することはできない。Saltzer（最初のエンドツーエンド原理に関する論文の主著者）との個人的やりとりに基づき、BlumenthalとClarkは2001年の論文で次のように記している。 当初から、エンドツーエンド論は終端で要求仕様を正しく実装できると仮定してきた。ネットワーク内に実装する以外に要求を達成する手段がないなら、そもそもエンドツーエンド論は不適切である。(p. 80) エンドツーエンド原理の意味は提唱された当初から継続的に再解釈されてきた。また Saltzer, Reed, Clark の1981年の論文より前に、注目すべきエンドツーエンド原理的な概念の明確な表現も見られる。 1960年代、ポール・バランとドナルド・デービスはARPANET以前のネットワークを研究し、信頼性について後のエンドツーエンド原理に通じるコメントを残している。バランの1964年の論文には次のように記している。 信頼性と誤り率低減は二次的である。いずれにしてもネットワークは重大な障害が起きることを想定して構築しなければならない。強力な誤り訂正手段は既に存在している。(p. 5) 同様にデービスはエンドツーエンドの誤り制御について次のように記している。 ネットワークの全てのユーザーは自ら何らかの誤り制御手段を用意でき、それによってパケット消失を検知できるだろう。したがって、パケット消失が十分稀な現象なら、許容される。(p. 2.3) ARPANETは世界初の大規模汎用パケット通信ネットワークであり、バランやデービスが指摘した点を考慮し、エンドツーエンド原理の観点から重要な特徴をいくつか備えていた。 パケット交換は、一部の論理機能を通信終端に分担させる。 分散ネットワークがパケット通信を前提とするなら、パケットの順序入れ違えや重複の検出といった機能は必然的に論理的なネットワーク終端の機能となる。結果としてARPANETは機能を2つの階層に分けることを特徴とした。1つは隣接するネットワークノード (IMP) 間でデータパケットを転送することを扱う下層で、もう1つはデータ転送の終端間（エンドツーエンド）の側面を扱う上層である。エンドツーエンド原理の論文の筆者の1人クラークは「パケットの発見はエンドツーエンド論の結果ではない。パケットによりエンドツーエンド論が適切なものとなった」(slide 31) と結論付けている。 終端間（エンドツーエンド）の肯定応答と再送の機構がなければ、高信頼データ転送は不可能である。 ARPANETは、コンピュータが周辺機器と入出力チャネルでやりとりするときのように、ネットワークの任意の2終端間で高信頼なデータ転送を提供するよう設計された。パケット転送で発生しうる障害に対処するため、通常のARPANETメッセージは隣接ノード間で肯定応答と再送の方式を使って確実に手渡される。手渡しが成功したらそれらが処分され、パケット喪失の際に発信元から宛先まで再送するということはない。しかし多大な努力にもかかわらず、初期のARPANET仕様で想定していた完全な信頼性は、この方式では提供不可能であることが判明した。ARPANETが初期の4ノード構成から成長するにしたがって、そのことがますます明らかとなっていった。そこでARPANETは隣接ノード間の信頼性機構の持つ本質的制約に対処し真のエンドツーエンド信頼性を追求しようとした。 信頼性、レイテンシ、スループットにはトレードオフの関係がある。 完全な信頼性を追求することは、データ転送の他の重要なパラメータ、特にレイテンシとスループットを低下させる可能性がある。予測可能なスループットと低レイテンシは、対話型のリアルタイム音声アプリケーションなどで重要であり、その場合完全な信頼性は全く必要とされない。そのような用途のため、ARPANETでは低レイテンシのデータ転送サービスをホストに提供するため、各種信頼性保証手段を省いたサービスを提供した。 インターネットでは、コネクションレスのデータグラムサービスで送達もQoSも保証しないIPプロトコルがほとんど全ての通信に使われている。 IP上で任意のプロトコルが動作する。 音声など一部の用途では再送による信頼性は必要とされないので、IPにおける信頼性機構はIPヘッダのチェックサムのみとなっている（低品質の経路でパケットを送信する際のビット誤り検出に必須である）。 エンドツーエンドの肯定応答と再送は、IPの上に置かれるコネクション指向のTCPで実装している。 IPとTCPで機能的に分割したのは、用途によってエンドツーエンド原理を選択可能にしたためである。 さらにネットワークが適切に機能するためには、輻輳状態となるような負荷を排除するような手段も必要とされる。 インターネットのほとんどのアプリケーションが通信にTCPを使っている。 バン・ジェイコブソンらがTCP向けのエンドツーエンドの輻輳制御アルゴリズムを考案したのは、TCPが標準化されてから7年後のことである。 エンドツーエンド接続性（End-to-End Connectivity）は、インターネットの特徴であり、ネットワーク上の全ノードが（途中のネットワークで変換を加えることなく）他の任意のノードにパケットを送信できることを意味する。これはTCP/IPの特性である。 しかし、ネットワークを構成する要素や技術（例えばネットワークアドレス変換）は、エンドツーエンド接続性を保持していない。この特性がない場合、新たなプロトコルを使用するにはそれをサポートする新たな機器などが必要となる。このことは、TCPのコネクションを使わないでインターネットを利用する新たなアプリケーションの展開を妨げている。例えば、IPsecの普及、IPv6への移行、Peer to Peerアプリケーションの普及、ネットワークゲームの普及などが挙げられる。 エンドツーエンド接続性は時として以下のような実用的理由で意図的に放棄されることがある: IPv4 アドレス空間は限りある資源であり、必要と思われるよりIPアドレスが少なくなることは明らかである。 セキュリティのために一種のアドレス変換を行ってルーティング範囲を制限すること。これはつまり、ネットワークアドレス変換(NAT)を隔てた位置にあるコンピュータは信頼されていない領域から直接アクセスできない。 この傾向により、インターネットユーザーは2種類に分かれつつある。一方は実際にインターネット接続が可能な人々で、もう一方は外向きのTCP接続でしかインターネットを利用できない人々である。