<p><!--
[Metadata]
Schema: IETF-Protocol-Draft-Specification-v1.1
Focus: Agentic AI Communications (A2A Coordination Protocol)
Draft-Status: Proposed Discussion Draft (Individual Submission)
Reference-Key: draft-zhao-agentic-ai-coordination-00
-->本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">IETF Draft: draft-zhao-agentic-ai-coordination-00 – Agentic AI Communicationsにおけるエージェント間調整プロトコル(ACP)仕様</h1>
<h2 class="wp-block-heading">【背景と設計目標】</h2>
<p>自律型AIエージェント間の意思決定、タスク分散、状況認識共有を、既存のHTTP/RESTやWebSocketを超えて最適化する自律協調通信プロトコルの策定。</p>
<p>本プロトコル(Agent Communication Protocol: ACP)は、HTTP/2やHTTP/3などの汎用アプリケーション層プロトコルの上位(L7セマンティック階層)に位置する、新しい協調動作フレームワークです。従来の密結合なクライアント・サーバ型RPC(gRPCなど)や、静的なPub/Sub(MQTT)とは異なり、LLM(大規模言語モデル)をバックエンドに持つエージェント同士が、<strong>動的にタスクを交渉・分散・合意(Negotiation & Consensus)</strong>し、ステートフルなコンテキスト共有を行うために新規設計されました。</p>
<hr/>
<h2 class="wp-block-heading">【通信シーケンスと動作】</h2>
<p>ACPにおけるエージェントの発見、ケイパビリティ交渉、タスク合意、およびコンテキスト同期の一連の通信フローを以下に示します。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
sequenceDiagram
autonumber
participant "A1 as Initiator Agent (Agent-A)"
participant "Registry as Agent Registry (DNS-SD/CoAP)"
participant "A2 as Target Agent (Agent-B)"
A1 ->> Registry: 1. Discover Capable Agents (Query: Capability="Reasoning")
Registry -->> A1: 2. Resolve Agent-B Endpoint (TLS/ALPN: acp-proto)
A1 ->> A2: 3. Protocol Handshake (Client Hello + Cap-Negotiation)
A2 -->> A1: 4. Handshake Response (Agree on Semantics & Security Policy)
A1 ->> A2: 5. Task Proposal (Agentic-AI Message: Frame ID: 0x01)
Note over A1, A2: Multi-turn State Evaluation & LLM-based Negotiation
A2 ->> A1: 6. Proposal Acceptance & Sub-task Status Update
A1 ->> A2: 7. Commitment (State Sync & Session Close)
</pre></div>
<h3 class="wp-block-heading">通信シーケンスの補足</h3>
<ol class="wp-block-list">
<li><p><strong>発見フェーズ</strong>: <code>Agent-A</code>はDNS-SDまたはサービスレジストリを介し、「Reasoning(推論)」や「Code Execution(コード実行)」といった特定のメタデータ属性(ケイパビリティ)を持つエージェントを検出します。</p></li>
<li><p><strong>ネゴシエーション</strong>: ALPN(Application-Layer Protocol Negotiation)識別子 <code>acp-proto</code> を用いて、エージェント間で暗号スイートおよび使用するオントロジー(セマンティック・スキーマ)の合意形成を行います。</p></li>
<li><p><strong>コミットメント</strong>: LLMのマルチターン対話(推論合意)が発生した後に、トランザクションの確証(State Sync)を行い、整合性を保ちます。</p></li>
</ol>
<hr/>
<h2 class="wp-block-heading">【データ構造 / パケットフォーマット】</h2>
<p>ACPメッセージの制御ヘッダおよびペイロードカプセル化構造は以下の通りです。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"> 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Message Type | Sequence Number | Offset: 0:32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID | Offset: 4:32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Context Session ID | Offset: 8:32
| | Offset: 12:32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Semantic Encoding | Payload Length | Offset: 16:32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload (JSON-LD / CBOR / Protobuf) | Offset: 20:Variable
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HMAC-SHA256 (Integrity & Auth) | Offset: Variable:256
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</pre>
</div>
<h3 class="wp-block-heading">各フィールドの定義</h3>
<ul class="wp-block-list">
<li><p><strong>Version (8bit)</strong>: ACPのプロトコルバージョン(例: <code>0x01</code>)。</p></li>
<li><p><strong>Message Type (8bit)</strong>: フレーム種別を定義。</p>
<ul>
<li><p><code>0x01</code>: Discover (発見要求)</p></li>
<li><p><code>0x02</code>: Propose (タスク提案)</p></li>
<li><p><code>0x03</code>: Counter-Propose (対抗提案/交渉)</p></li>
<li><p><code>0x04</code>: Accept/Commit (合意/ステート同期)</p></li>
<li><p><code>0x05</code>: Reject/Teardown (拒否/セッション切断)</p></li>
</ul></li>
<li><p><strong>Sequence Number (16bit)</strong>: 同一セッション内でのメッセージ順序管理用。TCP/IPとは独立したL7順序保証。</p></li>
<li><p><strong>Message ID (32bit)</strong>: 各トランザクションを一意に識別するためのランダムな値。</p></li>
<li><p><strong>Context Session ID (64bit)</strong>: LLMのコンテキスト(チャット履歴、共有メモリ、DAG型タスクグラフ)を識別するためのセッションID。</p></li>
<li><p><strong>Semantic Encoding (16bit)</strong>: ペイロードの構造化スキーマを指定(例: <code>0x0001</code> = JSON-LD, <code>0x0002</code> = CBOR-LD, <code>0x0003</code> = Protocol Buffers)。</p></li>
<li><p><strong>Payload Length (16bit)</strong>: 可変長ペイロードのサイズ。</p></li>
</ul>
<hr/>
<h2 class="wp-block-heading">【技術的な特徴と比較】</h2>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">評価項目</th>
<th style="text-align:left;">ACP (Agent Communication Protocol)</th>
<th style="text-align:left;">HTTP/3 (gRPC over HTTP/3)</th>
<th style="text-align:left;">MQTT v5.0</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;"><strong>主なユースケース</strong></td>
<td style="text-align:left;">自律エージェント間の推論・交渉・協調</td>
<td style="text-align:left;">マイクロサービス間の高速RPC</td>
<td style="text-align:left;">IoTデバイスのメッセージング</td>
</tr>
<tr>
<td style="text-align:left;"><strong>トランスポート層</strong></td>
<td style="text-align:left;">QUIC (UDP) / TCP</td>
<td style="text-align:left;">QUIC (UDP)</td>
<td style="text-align:left;">TCP (WebSockets)</td>
</tr>
<tr>
<td style="text-align:left;"><strong>HOL Blocking</strong></td>
<td style="text-align:left;">回避(QUICストリーム多重化に依存)</td>
<td style="text-align:left;">回避(QUICストリーム多重化)</td>
<td style="text-align:left;">発生あり</td>
</tr>
<tr>
<td style="text-align:left;"><strong>セマンティック統合</strong></td>
<td style="text-align:left;"><strong>ネイティブ統合 (JSON-LD/Ontology)</strong></td>
<td style="text-align:left;">なし(未構造のバイナリ/JSON)</td>
<td style="text-align:left;">なし(バイナリ透過)</td>
</tr>
<tr>
<td style="text-align:left;"><strong>状態同期の性質</strong></td>
<td style="text-align:left;"><strong>ステートフル (LLMコンテキスト連動型)</strong></td>
<td style="text-align:left;">ステートレス (アプリケーション実装依存)</td>
<td style="text-align:left;">セッション状態保持のみ</td>
</tr>
<tr>
<td style="text-align:left;"><strong>0-RTT/セッション再開</strong></td>
<td style="text-align:left;">対応(QUIC連携 & 以前の推論状態維持)</td>
<td style="text-align:left;">対応(TLS 1.3/QUIC 0-RTT)</td>
<td style="text-align:left;">限定的(Session Presentのみ)</td>
</tr>
<tr>
<td style="text-align:left;"><strong>ヘッダ効率</strong></td>
<td style="text-align:left;">非常に高い (可変長セマンティック圧縮)</td>
<td style="text-align:left;">中 (HPACK/QPACKによる固定辞書)</td>
<td style="text-align:left;">極めて高い (固定ヘッダは数バイト)</td>
</tr>
</tbody>
</table></figure>
<hr/>
<h2 class="wp-block-heading">【セキュリティ考慮事項】</h2>
<h3 class="wp-block-heading">1. リプレイ攻撃の防止</h3>
<p>自律エージェントの合意形成は、金銭的取引や重要システムのインフラ操作を伴うため、リプレイ攻撃は重大なインシデントに直結します。ACPでは、すべてのハンドシェイクおよびメッセージ内に <strong>Epochベースのタイムスタンプ(ミリ秒精度)</strong> と、メッセージ送信ごとにインクリメントされる <strong>暗号論的 nonce(使い捨ての乱数)</strong> を内包させ、HMAC-SHA256 で署名します。受信側エージェントはスライディングウィンドウを用いて既知の nonce を破棄し、古いパケットの再注入を完全に遮断します。</p>
<h3 class="wp-block-heading">2. ダウングレード攻撃への耐性</h3>
<p>トランスポート層における TLS 1.3 の使用、および ALPN での <code>acp-proto</code> 指定を厳格な要件として定めています。ネゴシエーション時に暗号化されていない平文または TLS 1.2 以前での接続試行、あるいは脆弱な暗号スイート(Null暗号やRC4等)が検知された場合、エージェントは <code>0x05</code> (Reject/Teardown) メッセージを送信し、ソケットを即時クローズします。</p>
<h3 class="wp-block-heading">3. 前方秘匿性(PFS)の確保</h3>
<p>鍵交換には、静的な秘密鍵による暗号化を禁止し、<strong>ECDHE(楕円曲線ディフィー・ヘルマン一時鍵共有)</strong> を強制します。これにより、万が一、将来的に特定の自律エージェントの永続秘密鍵が漏洩した場合でも、過去に遡ってセッション間の通信ログが解読されるリスク(前方秘匿性の喪失)を防止します。</p>
<hr/>
<h2 class="wp-block-heading">【まとめと実装への影響】</h2>
<p>自律型AIエージェントのインフラ構築・統合に携わるネットワークエンジニアおよびシステム開発者は、以下の3つのポイントに留意する必要があります。</p>
<ol class="wp-block-list">
<li><p><strong>L7での「セマンティックパース」によるCPU/メモリ負荷の上昇</strong>
ACPはJSON-LDなどのグラフ構造のメタデータを高頻度でパースします。LLMとのコンテキスト統合に伴い、パケット受信時のパース処理(特にCBORデコードとオントロジーのマッピング)がボトルネックとなるため、RustやC++などを用いた低レイヤーでのシリアライズエンジンの採用が必須です。</p></li>
<li><p><strong>ステートフルなコンテキスト同期とメモリ管理</strong>
エージェント間の交渉は長時間の対話(Long-Running Session)になる傾向があります。セッション維持に伴うLLMのコンテキスト(履歴)保持が必要となるため、ネットワークレイヤーのタイムアウト値(Keep-Alive)を物理接続とは切り離し、仮想的なセッション(Context Session ID)として管理するアーキテクチャ設計が要求されます。</p></li>
<li><p><strong>認可トークンの自動更新とガバナンス</strong>
エージェント間の協調には、OAuth DPoP (Demonstrating Proof-of-Possession) 等を用いた自律的なトークン要求と検証が必要になります。ネットワーク上のエージェントが「本物のエージェント(改ざんされていないコードベース)」であるかを検証するための「リモートアテステーション(Remote Attestation)」の仕組みを、ハンドシェイク時に統合することが将来的な実装フェーズでの鍵となります。</p></li>
</ol>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
IETF Draft: draft-zhao-agentic-ai-coordination-00 – Agentic AI Communicationsにおけるエージェント間調整プロトコル(ACP)仕様
【背景と設計目標】
自律型AIエージェント間の意思決定、タスク分散、状況認識共有を、既存のHTTP/RESTやWebSocketを超えて最適化する自律協調通信プロトコルの策定。
本プロトコル(Agent Communication Protocol: ACP)は、HTTP/2やHTTP/3などの汎用アプリケーション層プロトコルの上位(L7セマンティック階層)に位置する、新しい協調動作フレームワークです。従来の密結合なクライアント・サーバ型RPC(gRPCなど)や、静的なPub/Sub(MQTT)とは異なり、LLM(大規模言語モデル)をバックエンドに持つエージェント同士が、動的にタスクを交渉・分散・合意(Negotiation & Consensus)し、ステートフルなコンテキスト共有を行うために新規設計されました。
【通信シーケンスと動作】
ACPにおけるエージェントの発見、ケイパビリティ交渉、タスク合意、およびコンテキスト同期の一連の通信フローを以下に示します。
sequenceDiagram
autonumber
participant "A1 as Initiator Agent (Agent-A)"
participant "Registry as Agent Registry (DNS-SD/CoAP)"
participant "A2 as Target Agent (Agent-B)"
A1 ->> Registry: 1. Discover Capable Agents (Query: Capability="Reasoning")
Registry -->> A1: 2. Resolve Agent-B Endpoint (TLS/ALPN: acp-proto)
A1 ->> A2: 3. Protocol Handshake (Client Hello + Cap-Negotiation)
A2 -->> A1: 4. Handshake Response (Agree on Semantics & Security Policy)
A1 ->> A2: 5. Task Proposal (Agentic-AI Message: Frame ID: 0x01)
Note over A1, A2: Multi-turn State Evaluation & LLM-based Negotiation
A2 ->> A1: 6. Proposal Acceptance & Sub-task Status Update
A1 ->> A2: 7. Commitment (State Sync & Session Close)
通信シーケンスの補足
発見フェーズ: Agent-AはDNS-SDまたはサービスレジストリを介し、「Reasoning(推論)」や「Code Execution(コード実行)」といった特定のメタデータ属性(ケイパビリティ)を持つエージェントを検出します。
ネゴシエーション: ALPN(Application-Layer Protocol Negotiation)識別子 acp-proto を用いて、エージェント間で暗号スイートおよび使用するオントロジー(セマンティック・スキーマ)の合意形成を行います。
コミットメント: LLMのマルチターン対話(推論合意)が発生した後に、トランザクションの確証(State Sync)を行い、整合性を保ちます。
【データ構造 / パケットフォーマット】
ACPメッセージの制御ヘッダおよびペイロードカプセル化構造は以下の通りです。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Message Type | Sequence Number | Offset: 0:32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID | Offset: 4:32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Context Session ID | Offset: 8:32
| | Offset: 12:32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Semantic Encoding | Payload Length | Offset: 16:32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload (JSON-LD / CBOR / Protobuf) | Offset: 20:Variable
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HMAC-SHA256 (Integrity & Auth) | Offset: Variable:256
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
各フィールドの定義
Version (8bit): ACPのプロトコルバージョン(例: 0x01)。
Message Type (8bit): フレーム種別を定義。
0x01: Discover (発見要求)
0x02: Propose (タスク提案)
0x03: Counter-Propose (対抗提案/交渉)
0x04: Accept/Commit (合意/ステート同期)
0x05: Reject/Teardown (拒否/セッション切断)
Sequence Number (16bit): 同一セッション内でのメッセージ順序管理用。TCP/IPとは独立したL7順序保証。
Message ID (32bit): 各トランザクションを一意に識別するためのランダムな値。
Context Session ID (64bit): LLMのコンテキスト(チャット履歴、共有メモリ、DAG型タスクグラフ)を識別するためのセッションID。
Semantic Encoding (16bit): ペイロードの構造化スキーマを指定(例: 0x0001 = JSON-LD, 0x0002 = CBOR-LD, 0x0003 = Protocol Buffers)。
Payload Length (16bit): 可変長ペイロードのサイズ。
【技術的な特徴と比較】
| 評価項目 |
ACP (Agent Communication Protocol) |
HTTP/3 (gRPC over HTTP/3) |
MQTT v5.0 |
| 主なユースケース |
自律エージェント間の推論・交渉・協調 |
マイクロサービス間の高速RPC |
IoTデバイスのメッセージング |
| トランスポート層 |
QUIC (UDP) / TCP |
QUIC (UDP) |
TCP (WebSockets) |
| HOL Blocking |
回避(QUICストリーム多重化に依存) |
回避(QUICストリーム多重化) |
発生あり |
| セマンティック統合 |
ネイティブ統合 (JSON-LD/Ontology) |
なし(未構造のバイナリ/JSON) |
なし(バイナリ透過) |
| 状態同期の性質 |
ステートフル (LLMコンテキスト連動型) |
ステートレス (アプリケーション実装依存) |
セッション状態保持のみ |
| 0-RTT/セッション再開 |
対応(QUIC連携 & 以前の推論状態維持) |
対応(TLS 1.3/QUIC 0-RTT) |
限定的(Session Presentのみ) |
| ヘッダ効率 |
非常に高い (可変長セマンティック圧縮) |
中 (HPACK/QPACKによる固定辞書) |
極めて高い (固定ヘッダは数バイト) |
【セキュリティ考慮事項】
1. リプレイ攻撃の防止
自律エージェントの合意形成は、金銭的取引や重要システムのインフラ操作を伴うため、リプレイ攻撃は重大なインシデントに直結します。ACPでは、すべてのハンドシェイクおよびメッセージ内に Epochベースのタイムスタンプ(ミリ秒精度) と、メッセージ送信ごとにインクリメントされる 暗号論的 nonce(使い捨ての乱数) を内包させ、HMAC-SHA256 で署名します。受信側エージェントはスライディングウィンドウを用いて既知の nonce を破棄し、古いパケットの再注入を完全に遮断します。
2. ダウングレード攻撃への耐性
トランスポート層における TLS 1.3 の使用、および ALPN での acp-proto 指定を厳格な要件として定めています。ネゴシエーション時に暗号化されていない平文または TLS 1.2 以前での接続試行、あるいは脆弱な暗号スイート(Null暗号やRC4等)が検知された場合、エージェントは 0x05 (Reject/Teardown) メッセージを送信し、ソケットを即時クローズします。
3. 前方秘匿性(PFS)の確保
鍵交換には、静的な秘密鍵による暗号化を禁止し、ECDHE(楕円曲線ディフィー・ヘルマン一時鍵共有) を強制します。これにより、万が一、将来的に特定の自律エージェントの永続秘密鍵が漏洩した場合でも、過去に遡ってセッション間の通信ログが解読されるリスク(前方秘匿性の喪失)を防止します。
【まとめと実装への影響】
自律型AIエージェントのインフラ構築・統合に携わるネットワークエンジニアおよびシステム開発者は、以下の3つのポイントに留意する必要があります。
L7での「セマンティックパース」によるCPU/メモリ負荷の上昇
ACPはJSON-LDなどのグラフ構造のメタデータを高頻度でパースします。LLMとのコンテキスト統合に伴い、パケット受信時のパース処理(特にCBORデコードとオントロジーのマッピング)がボトルネックとなるため、RustやC++などを用いた低レイヤーでのシリアライズエンジンの採用が必須です。
ステートフルなコンテキスト同期とメモリ管理
エージェント間の交渉は長時間の対話(Long-Running Session)になる傾向があります。セッション維持に伴うLLMのコンテキスト(履歴)保持が必要となるため、ネットワークレイヤーのタイムアウト値(Keep-Alive)を物理接続とは切り離し、仮想的なセッション(Context Session ID)として管理するアーキテクチャ設計が要求されます。
認可トークンの自動更新とガバナンス
エージェント間の協調には、OAuth DPoP (Demonstrating Proof-of-Possession) 等を用いた自律的なトークン要求と検証が必要になります。ネットワーク上のエージェントが「本物のエージェント(改ざんされていないコードベース)」であるかを検証するための「リモートアテステーション(Remote Attestation)」の仕組みを、ハンドシェイク時に統合することが将来的な実装フェーズでの鍵となります。
コメント