# セッションアーキテクチャ
## 定義
セッションアーキテクチャとは、合成的ネットワークアーキテクチャ(compositional network architecture)においてセッション(session)——分散システムやオーバーレイネットワークの利用者から見て意味的にひとまとまりのメッセージ群——がどのように識別され、状態を持ち、合成されるかを規定する枠組みである。ゴールは一般性(generality)と直交性(orthogonality)であり、直交性とはセッションの各側面(識別・状態・合成の仕方など)が互いに独立に変化できることを指す。セッションはそのメッセージを一意に識別する「セッション識別(session identification)」を持ち、これはセッション識別子フィールド単体、またはそれとエンドポイント名の組で構成される。ネットワークのメンバーはセッションに参加している間「エンドポイント」であり、そのセッションを認識するための状態(セッション状態)を持つ。セッションは自律的・動的(初期化メッセージにより形成)、または別のメカニズムによる静的な構成の2通りで形成される。あるセッションのすべてのメッセージが同じ経路・同じミドルボックス列・同じエンドポイントを通るとき、そのルーティングはそのセッションに対して「セッションアフィニティ」を持つという。(Source: [[@2024__PrincetonUP__The Real Internet Architecture - Chapter 5 Patterns for Enhanced Network Services]] ch.5 §5.4, §5.4.1)
## セッション合成の3形態
セッションアーキテクチャは、単純な1対1セッションを超えて拡張する3つの形態を持つ。
- **allcast(broadcast/multicastの総称)セッションとリンク**: グループ通信では送信者集合と受信者集合が定義され、その関係によってanycast(送受信者が排他的)・broadcast(送受信者集合が構造的に一致)・multicast(制約なし)に分かれる。すべてのメッセージがallcast配送を使うセッションを「allcastセッション」と呼ぶ。合成的ネットワークアーキテクチャの形式モデルではリンクは一方向でなければ到達可能性を解析できないため、allcastサービスは送信者ごとに1本のセッション/リンクの集合として実装される。allcastセッションはミドルボックスまたは送信者でのメッセージ複製により実現され、受信者ごとに異なる状態を送信者が保持することは許されない(必要なら点対点セッションに分割する)。(Source: ch.5 §5.4.2)
- **合成セッション(compound session)**: 最も基本的な形はプロキシで端点結合された2つの単純セッションの連鎖である。end-to-end信号処理(プロキシがプロトコル的には受動的、例: NAT)と、piecewise信号処理(プロキシが両方のセッションで能動的なエンドポイントになる)の2通りがある。ブリッジングが可能な場所ではどこでも単純セッションと同様に合成セッションもネットワーク境界をまたげる。プロキシがセッションを合成する目的自体が、しばしばプライバシー保護(経路上の全区間で送受信者名の両方が見えないようにする)を兼ねる。(Source: ch.5 §5.4.3, §5.5.2.1)
- **プロトコル埋め込み(protocol embedding)とサブセッション**: 1つのセッションが複数のセッションプロトコルの恩恵を同時に受ける仕組みで、各パケットは1つのネットワークヘッダと1組の送受信元ペアしか持たない点でレイヤリングと区別される。内側プロトコルに最も近いメッセージ列が、複数の外側「サブセッション」に分かれて運ばれることがある(例: 証券取引のOUCH/SOUP/TCPの入れ子で、SOUPはTCP障害をまたいでOUCHセッションを維持する)。埋め込みの順序には制約があり、順序配送に依存するプロトコル(TLS)は順序保証を提供する側(TCP)に埋め込まれ、持続すべきプロトコル(SOUP、プライバシー保護プロトコル)はサブセッションプロトコルの内側に置かれる。ESPやQUICのように、IPのフォワーダ/ミドルボックスがTCP/UDP以外のセッション識別を認識できないという実務上の理由だけでUDPに埋め込まれる例もある。(Source: ch.5 §5.4.4)
## 横断的知見
- (現時点ではこの concept に触れたソースが1件のみのため、複数ソース間の横断的知見はまだない。今後、他章・他書籍がセッション/コネクションの概念を扱う際にここへ蓄積する。)
## 未解決の問い
- 本章はvoice-over-IPのような「不規則な多エンドポイントセッション(セッションが分裂・合流しうる)」を、合成的ネットワークアーキテクチャの形式的基盤から意図的に除外し、ネットワークと見なされない分散システムの管理に委ねている(§5.4.3)。この除外がセッションアーキテクチャの一般性の主張とどこまで整合するか、あるいはどこまでが実用上の妥協かは本章だけでは判断できない。
- allcastセッションが「受信者ごとに異なる状態を送信者が保持してはならない」という制約を課す一方、実際のアプリケーション要求(受信者ごとの品質調整など)がこれと衝突する場合、点対点セッションへの分割以外にセッションアーキテクチャ内で解決する方法はあるか。
- プロトコル埋め込みの順序制約(TLS/TCP、ESP/QUICのUDP埋め込み)は歴史的経緯(ミドルボックスの実装の遅れ)による「人為的で不要な制約」だと本章自身が明言する(§5.4.4.4)。この種の制約が将来のセッションプロトコル設計でどう解消されうるかは、本章の範囲外。
- [[QUIC]]・[[トランスポートプロトコル設計]]が扱う個々のトランスポートプロトコルの設計判断は、本concept が定義するセッション識別・アフィニティ・合成の語彙でどこまで再記述できるか。今後の突き合わせ課題。
## 関連
- ソース: [[@2024__PrincetonUP__The Real Internet Architecture - Chapter 5 Patterns for Enhanced Network Services]](§5.4 セッションアーキテクチャの中心章)
- 概念: [[オーバーレイネットワーク]](セッションアフィニティが必要とする特殊用途ルーティングの受け皿) / [[エンドツーエンド論]](end-to-end信号処理との対比) / [[トランスポートプロトコル設計]] / [[QUIC]](セッション識別子のみによる識別の実例)
- 関連章: [[@2024__PrincetonUP__The Real Internet Architecture - Chapter 2 Describing Networks and Services]](セッション性質の定義の初出) / [[@2024__PrincetonUP__The Real Internet Architecture - Chapter 3 Composing Networks and Services]](ブリッジング・レイヤリングとの関係)
## 出典
- Pamela Zave, Jennifer Rexford, *The Real Internet Architecture*, Princeton University Press, 2024, Chapter 5, §5.4.