要約

  • 1996年の論文は、運用者がコードを別途ロードするプログラマブル・スイッチと、メッセージ自身が各アクティブノードの処理を選ぶカプセルを区別した。どちらもプログラム可能だが、実行権限の置き場は違う。
  • 著者たちは、安全性、セキュリティー、資源配分を「パンドラの箱」と明記した。一時的な実行環境と限定されたプリミティブは単一ノードを囲えるが、認証、認可、経路全体の消費を完成させるものではなかった。
  • 後のANTSは、全コードを毎回運ぶ方式から暗号学的指紋による参照とキャッシュへ移り、非アクティブノードとの共存も必要とした。信頼機関による認証への後退は、安全と自由な導入の交換条件を可視化した。

到着したメッセージが処理内容まで指定した

通常のIPルーターでは、処理はパケットより先に置かれている。パケットはアドレスとヘッダーを示し、装置は既に実装された検査、検索、更新、送信を行う。パケットが判断材料になることと、新しいプログラムを持ち込むことは別である。

TennenhouseとWetherallが1996年に発表した Towards an Active Network Architecture は、その順序を変えた。最も急進的な方式では、データを含むプログラム断片をカプセルと呼び、通過するアクティブなルーターやスイッチで評価する。論文の比喩はPostScriptプリンターだった。届くものは印刷対象だけでなく、受け手が行う仕事も記述する。

狙いは回線速度そのものではなく、変化の速度だった。アプリケーション固有のマルチキャスト、情報融合、圧縮、変換などを、標準化、ベンダー実装、機器更新の長い列から切り離す。ハードウェアは残し、サービスを必要に応じて導入する。

ただし、これは一般運用の報告ではない。広域ActiveNetは、選んだ地点にアクティブな基盤を置き、通常のインターネットをトンネルで結ぶ研究計画だった。管理された島でコードが動くことは示せる。独立した事業者が同じ言語、資源モデル、責任分担を受け入れることまでは示せない。

同じ「アクティブ」でも入口は二つあった

第一の方式はプログラマブル・スイッチである。大きなプログラムのロードと実行を分離し、管理用の入口を運用者に限定できる。運用者はロード主体を認証し、コードを検査し、承認済み機能だけをトラフィックから呼び出させる。拡張性は高まるが、装置所有者が門を管理する。

第二のカプセル方式では、メッセージと処理選択が接近する。純粋モデルでは、すべてのメッセージが少なくとも一命令を含む。利用者やアプリケーションが流れごとの処理を選べる一方、計算を選ぶ主体とCPU、メモリー、ストレージ、リンクを提供する主体が分かれる。

必要な証拠も異なる。前者では、誰がどの版をロードし、どのトラフィックに公開したかを残す。後者では、メッセージが何を要求し、なぜ呼び出す資格があり、どの環境が実行し、どの予算で止めたかまで必要になる。「プログラマブル」という一語では、この権限差を説明できない。

そのため、カプセルをSDN、OpenFlow、P4、NFV、eBPF、エッジ処理の直接の祖先と断定するのも適切ではない。論文が確かに示したのは、コードをどこでロードし、誰が選び、どこで走らせるかという設計空間である。現代の全方式が一つの系譜に属するという証拠ではない。

サンドボックスの外には資源の請求書が残った

論文は、アクティブネットワークが安全性、セキュリティー、資源配分の「パンドラの箱」を開くと書いた。この自己限定が重要である。コードを運べることは、実行を許されることではない。

提案された境界は一時的実行環境だった。一つのノードが一つのカプセルを評価する間だけ存在し、プログラムに渡すプリミティブを限定する。ストレージや他のノード資源へのアクセスも、操作と範囲の両面で狭める。型安全言語、インタープリター、制御されたコンパイル、サンドボックスが候補に挙がるが、全機種と全攻撃を解く完成品ではない。

メモリーを壊さないコードでも、運用を壊すことはできる。CPUを長く占有し、状態を増やし、余分なトラフィックを発生させ、複数ノードに小さな負荷を分散して大きな総消費を作れる。共通の資源表現、配分、カプセルの認証と認可が必要になる。コードの身元と、他者の機械を使う権利は同じ問いではない。

観測の単位も変わる。パケットの受信と送信だけでは、要求された処理が実行されたか分からない。プログラムまたは参照の識別子、実行環境、公開されたプリミティブ、触れた状態、消費予算、拒否理由を結び付ける必要がある。配送成功が、処理成功を保証しなくなる。

ANTSではコードそのものより指紋が旅をした

ANTSはカプセル型の構想をツールキットにした。David Wetherallの経験論文は、最初の図を守った部分より、変更した部分で価値を持つ。全コードを毎パケットで運ぶ素朴な方式は、参照によるコードへ変わった。暗号学的指紋がカプセル種別を名付け、ノードは必要時にコードを取得し、キャッシュした。

同じコードを何度も送らない利点がある。しかし、コードミスという運用状態が生まれる。最初のパケットは、どこから取得するか、どの供給元を信頼するか、キャッシュが効くほど同じ処理が続くかに左右される。指紋は安定した名前を与えるが、可用性や実行許可までは与えない。

非アクティブなルーターとの共存も必要だった。修正された設計では、カプセルを評価しない装置が通常の転送を続けられる。これは妥協以上に、段階導入の条件である。全経路の同時変更を初期条件にすれば、導入時間を短くする目的そのものが失われる。

Javaで作られたプロトタイプは約10 Mb/sにとどまった。一方、プロファイル測定からは、ソフトウェアルーターが成立する領域なら競争力を持ち得るとされた。10 Mb/sは全カプセル方式の上限ではなく、この実装の測定値である。可能性の分析も、商用運用の証明ではない。

ローカルな制限を足しても経路全体の制限にはならない

暗号学的指紋はコードを識別し、制限環境はノード状態を守る。それでも、複数ノードにまたがって悪いプログラムが資源を独占する問題は残った。各地点で割当内に収まっても、経路全体ではCPU、メモリー、状態、トラフィックが過大になることがある。

通常のインターネットも、利用者が帯域を占有する問題を完全には解いていない。アクティブネットワークでは、そこへ利用者が選んだ計算と保存が加わる。一つのメーターを正しく読むだけでは、分散した請求書を合算できない。

ANTSは当面、信頼できる機関による認証へ戻った。ノードを守る合理的な選択である一方、誰でも新しい機能を導入できるという最初の約束を狭める。標準やベンダーだけを待たなくてよくなっても、コードの承認を待つ。権威は消えず、位置を変えた。

アプリケーション側の証拠も限定的だった。カプセルは実験や難しい拡張の導入に役立ったが、一般利用者に不可欠な用途が大量に確認されたわけではない。Jerome Saltzerはエンドツーエンド原則の側から、アクティブ機能は禁じられていないものの、単純で透明なプログラミング意味論と強い実用例がまだ足りないと整理した。

残ったのは勝利ではなく判断面だった

1999年のMobiCom公式略歴は、TennenhouseをMITから出向したDARPA Information Technology Officeの責任者として紹介し、アクティブネットワークを先駆的研究の一つに挙げた。ACM SIGCOMMは後に1996年論文へTest of Time Awardを授与した。長く残る問いであることの証明であって、商用普及や単独発明の証明ではない。構想はWetherallとの共著で、ANTSには広いチームがいた。

この研究の強さは、柔軟性と支配を同じ転送点に置いたことにある。中間ノードへ新しい計算を入れると、サービスの変更は速くなる。同時に、コードの身元、機械の所有、資源予算、拒否時の動作がネットワーク契約になる。

後年のHeng Luによる「最小初期仕様」は、当時の意図ではなく現在の分析尺度として使える。すべての参加者が共有すべき最小限は何か。安定したコード識別、限定実行、資源意味論、互換性表示、明示的拒否経路が候補になる。共通層が厚すぎれば、革新を選別する門になる。薄すぎれば、利用者の自由がノード所有者の無償リスクになる。

コード実行を求めたパケットは、結局四つの問いを転送速度で突き付けた。何のプログラムか、誰が呼ぶのか、何を消費できるか、ノードが受け入れないとき何が続くのか。現代のプログラマブルネットワークがこの証拠を出せないなら、1996年の野心だけを継ぎ、責任の設計を置き去りにしている。

出典