エンドツーエンド原理

エンドツーエンド原理は、コンピュータネットワークの古典的設計原理であり、1981年に Jerome H. Saltzer、David P. Reed、デービッド・ダナ・クラークらの論文 End-to-end arguments in system design で初めてその概念が提唱された1981年に発表されたこの論文は、改定後1984年にACMのTOCSにて出版された。。通信プロトコルの操作は可能な限り通信システムの終端で行い、また制御対象のリソースになるべく近いところで行うべきであるというもの。

1. 概要
-----

エンドツーエンド原理では、アプリケーション固有の機能がネットワーク終端のホストで「完全かつ正しく」実装できるなら、ネットワーク内の中間ノードではなく終端のホストで実装されるべきだとする。この考え方はバランが1960年代に行った信頼できない部品で信頼性のあるネットワークを構築する研究にまで遡り、ネットワークに機能を追加しようとしたとき、結局は「完全かつ正しい」実装のために終端のホストにも実装しなければならなくなるという知見に基づくSaltzer, Reed, Clark の論文からの完全な引用は次の通り。quote。下層の通信システムの機能の多くは上位層クライアントのために実装されているものの、クライアントがその機能を必要としないこともあり、クライアントが同等機能をエンドツーエンド的に再実装するような冗長な状況が存在し、性能的に無駄が生じるとした。

もう1つの典型的な例としてファイル転送がある。信頼性のあるファイル転送プロトコルやファイル転送プログラムではチェックサム機能を持ち、転送が完了した時だけチェックサムを検証する。ディスク障害やソフトウェア障害を考慮すると、エンドツーエンドのチェックサムが必要となる。ファイル転送でのキーとなるリソースはファイルシステムである。エンドツーエンド原理に従えば、ファイル転送でファイルシステムにアクセスするソフトウェアが転送の進み具合を制御し、最小の遅延で再転送を開始させることになる。

典型例として、それなりの大きさの分散ネットワークで信頼性のある2点間のファイル転送を行う場合が挙げられる。2つの終端が完全な信頼性のあるファイル転送を行うには、転送先の終端でファイル全体のチェックサムを確認して終端間で肯定応答を行う必要がある。そのようなシステムで下位層がファイルより小さな単位でチェックサムと応答のプロトコルを実装することは性能最適化の手段としてのみ正当化され、ファイル転送アプリケーション自体の高い信頼性要求を達成する手段としては不十分である。

ネットワーク中立性での議論では、エンドツーエンド原理は「中立」または「ダムネットワーク」ネットワークを前提として解釈される。

2. 基本的内容
--------

エンドツーエンド原理の背景にある基本的考え方は、2つのプロセスが何らかの通信手段を用いて互いに通信する際、その通信手段の提供する「信頼性」だけでプロセスに要求されている信頼性を完全に達成することは期待できないというものである。特にそれなりの大きさのネットワークに隔てられたプロセス間で通信する際に非常に高い信頼性が求められる場合、そのコストは単純な肯定応答と再送で達成できる信頼性要求を満たす場合より高くなる実際、[[Local Area Network。ある一定のマージンを超えて信頼性を得るには「中間ノード」内の機構よりも「終端ホスト」内の機構の方がずっと容易で扱いやすく経済学用語で言えば、ネットワークに信頼性を追加するための限界費用は、同レベルの信頼性を終端ホストの改良で得るのに必要となる限界費用を越えている。ネットワーク内での信頼性改良の経済的に効率的なレベルは、具体的な状況に依存するが、ゼロ近辺でないことは確かである。quote、特に終端ホストの方が中間ノードよりも制御しやすい場合はそうである。エンドツーエンドで肯定応答と無限に再試行する再送のプロトコルを使うと、データ転送の成功確率がゼロより大きい任意のネットワークで任意の高い信頼性を達成できるより正確には:quote。

エンドツーエンド原理をエンドツーエンドの誤り制御・訂正以外に拡張して適用することは簡単ではない。例えば、レイテンシやスループットといった通信パラメータの向上に直接エンドツーエンド原理で寄与することはできない。Saltzerとの個人的やりとりに基づき、BlumenthalとClarkは2001年の論文で次のように記している。

3. 歴史
-----

エンドツーエンド原理の意味は提唱された当初から継続的に再解釈されてきた。また Saltzer, Reed, Clark の1981年の論文より前に、注目すべきエンドツーエンド原理的な概念の明確な表現も見られる。

3.1. 信頼できない部品群による信頼性の達成
-----------------------

1960年代、ポール・バランとドナルド・デービスはARPANET以前のネットワークを研究し、信頼性について後のエンドツーエンド原理に通じるコメントを残している。バランの1964年の論文には次のように記している。

信頼性と誤り率低減は二次的である。いずれにしてもネットワークは重大な障害が起きることを想定して構築しなければならない。強力な誤り訂正手段は既に存在している。}}

同様にデービスはエンドツーエンドの誤り制御について次のように記している。

3.2. ARPANETでの体験
----------------

ARPANETは世界初の大規模汎用パケット通信ネットワークであり、バランやデービスが指摘した点を考慮し、エンドツーエンド原理の観点から重要な特徴をいくつか備えていた。

パケット交換は、一部の論理機能を通信終端に分担させる。 分散ネットワークがパケット通信を前提とするなら、パケットの順序入れ違えや重複の検出といった機能は必然的に論理的なネットワーク終端の機能となる。結果としてARPANETは機能を2つの階層に分けることを特徴とした。1つは隣接するネットワークノード  間でデータパケットを転送することを扱う下層で、もう1つはデータ転送の終端間の側面を扱う上層であるARPANET FRQ  によれば、ARPANETはある機能群を概念的に分離させていた。BBNの1977年の論文に以下の記述がある。quote。エンドツーエンド原理の論文の筆者の1人クラークは「パケットの発見はエンドツーエンド論の結果ではない。パケットによりエンドツーエンド論が適切なものとなった」 と結論付けている。 終端間の肯定応答と再送の機構がなければ、高信頼データ転送は不可能である。 ARPANETは、コンピュータが周辺機器と入出力チャネルでやりとりするときのように、ネットワークの任意の2終端間で高信頼なデータ転送を提供するよう設計されたこの要件は ARPANET RFQ にも明確に記されている。quote。パケット転送で発生しうる障害に対処するため、通常のARPANETメッセージは隣接ノード間で肯定応答と再送の方式を使って確実に手渡される。手渡しが成功したらそれらが処分されWaldenの1972年の論文に次の記述がある。quote、パケット喪失の際に発信元から宛先まで再送するということはない。しかし多大な努力にもかかわらず、初期のARPANET仕様で想定していた完全な信頼性は、この方式では提供不可能であることが判明した。ARPANETが初期の4ノード構成から成長するにしたがって、そのことがますます明らかとなっていった1973年には、[[
BBNテクノロジーズ。そこでARPANETは隣接ノード間の信頼性機構の持つ本質的制約に対処し真のエンドツーエンド信頼性を追求しようとしたちなみに、ARPANETはまたエンドツーエンド信頼性機構とそれによるコストのトレードオフのよい例でもある。例えば最大8個のメッセージが2終端間のネットワーク上を転送中だと想定すると、エンドツーエンド信頼性を完全に達成することは当時としては非常にコストがかかった。肯定応答が宛先のIMPから全く届かないことを想定すると、タイムアウトして再送するまで送信中の全メッセージをメモリ上に保持しておかなければならないが、当時メモリは高価であり現実的ではなかった。ホストベースのエンドツーエンド信頼性機構を実装した場合、ホストレベルのプロトコル  はかなり複雑になっただろう。ホストレベルの信頼性機構が望ましいということは RFC 1 でも明記されているが、いくらかの議論の後、その方向性は採用しないことになった。当時の議論は Bärwolff 2010に詳しい。。 信頼性、レイテンシ、スループットにはトレードオフの関係がある。 完全な信頼性を追求することは、データ転送の他の重要なパラメータ、特にレイテンシとスループットを低下させる可能性がある。予測可能なスループットと低レイテンシは、対話型のリアルタイム音声アプリケーションなどで重要であり、その場合完全な信頼性は全く必要とされない。そのような用途のため、ARPANETでは低レイテンシのデータ転送サービスをホストに提供するため、各種信頼性保証手段を省いたサービスを提供したパケット通信による音声データ転送は1971年まで遡り、1972年にはARPAが正式な研究を開始している。RFC 660 にある通り、BBNは1974年に音声向けに信頼性を保証しないメッセージサービス  をARPANETに導入したが、音声以外のデータ転送にも利用を認めた。また、Bärwolff 2010,  を参照。。

3.3. TCP/IP
-----------

インターネットでは、コネクションレスのデータグラムサービスで送達もQoSも保証しないIPプロトコルがほとんど全ての通信に使われている。 IP上で任意のプロトコルが動作する。 音声など一部の用途では再送による信頼性は必要とされないので、IPにおける信頼性機構はIPヘッダのチェックサムのみとなっている。 エンドツーエンドの肯定応答と再送は、IPの上に置かれるコネクション指向のTCPで実装している。 IPとTCPで機能的に分割したのは、用途によってエンドツーエンド原理を選択可能にしたためである。 さらにネットワークが適切に機能するためには、輻輳状態となるような負荷を排除するような手段も必要とされる。インターネットのほとんどのアプリケーションが通信にTCPを使っている。バン・ジェイコブソンらがTCP向けのエンドツーエンドの輻輳制御アルゴリズムを考案したのは、TCPが標準化されてから7年後のことである。

4. エンドツーエンド接続性
--------------

エンドツーエンド接続性は、インターネットの特徴であり、ネットワーク上の全ノードが他の任意のノードにパケットを送信できることを意味する。これはTCP/IPの特性である。

しかし、ネットワークを構成する要素や技術は、エンドツーエンド接続性を保持していない。この特性がない場合、新たなプロトコルを使用するにはそれをサポートする新たな機器などが必要となる。このことは、TCPのコネクションを使わないでインターネットを利用する新たなアプリケーションの展開を妨げている。例えば、IPsecの普及、IPv6への移行、Peer to Peerアプリケーションの普及、ネットワークゲームの普及などが挙げられる。

エンドツーエンド接続性は時として以下のような実用的理由で意図的に放棄されることがある:

IPv4 アドレス空間は限りある資源であり、必要と思われるよりIPアドレスが少なくなることは明らかである。
セキュリティのために一種のアドレス変換を行ってルーティング範囲を制限すること。これはつまり、ネットワークアドレス変換を隔てた位置にあるコンピュータは信頼されていない領域から直接アクセスできない。この傾向により、インターネットユーザーは2種類に分かれつつある。一方は実際にインターネット接続が可能な人々で、もう一方は外向きのTCP接続でしかインターネットを利用できない人々である。

5. 脚注
-----

5.1. 注釈
-------

5.2. 出典
-------

6. 外部リンク
--------

[1]
http://web.mit.edu/Saltzer/www/publications/endtoend/endtoend.pdf
http://web.mit.edu/Saltzer/www/publications/endtoend/endtoend.txt
http://web.mit.edu/Saltzer/www/publications/endtoend/ANe2ecomment.html
[2]