エンドツーエンド原理

エンドツーエンド原理（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年の論文で次のように記している。
歴史.
エンドツーエンド原理の意味は提唱された当初から継続的に再解釈されてきた。また Saltzer, Reed, Clark の1981年の論文より前に、注目すべきエンドツーエンド原理的な概念の明確な表現も見られる。
信頼できない部品群による信頼性の達成.
1960年代、ポール・バランとドナルド・デービスはARPANET以前のネットワークを研究し、信頼性について後のエンドツーエンド原理に通じるコメントを残している。バランの1964年の論文には次のように記している。
同様にデービスはエンドツーエンドの誤り制御について次のように記している。
ARPANETでの体験.
ARPANETは世界初の大規模汎用パケット通信ネットワークであり、バランやデービスが指摘した点を考慮し、エンドツーエンド原理の観点から重要な特徴をいくつか備えていた。
TCP/IP.
インターネットでは、コネクションレスのデータグラムサービスで送達も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アプリケーションの普及、ネットワークゲームの普及などが挙げられる。
エンドツーエンド接続性は時として以下のような実用的理由で意図的に放棄されることがある:
この傾向により、インターネットユーザーは2種類に分かれつつある。一方は実際にインターネット接続が可能な人々で、もう一方は外向きのTCP接続でしかインターネットを利用できない人々である。