Agentgateway 评测:功能丰富的全新 AI 网关
Source: Dev.to
介绍
agentgateway 是 Solo 专为 AI 场景开发的数据平面。使用 Rust 编写,可通过 xDS(基于 gRPC 的协议)和 YAML 进行配置。最近它用开源版的 agentgateway 替代了 kgateway 的 AI 数据平面(原基于 Envoy),企业版的 Gloo 预计也会跟进。
网关支持四种 AI 场景:
- MCP
- A2A
- 代理推理请求到 LLM 提供商
- 推理服务的负载均衡
下面是每种场景的概览。讨论重点在开源版的 agentgateway;部分功能可能仅在企业版中提供。
MCP
Agentgateway 最初是为处理有状态的 Model Context Protocol (MCP) 请求而创建的,因为现有的 Envoy 数据平面难以胜任。因此,它的 MCP 支持最为完整。
会话处理
- 默认情况下,MCP 被视为有状态协议。
SessionManager结构体负责会话的创建和维护(代码链接)。SessionManager是进程内存储,所以多个 agentgateway 实例 不 共享会话状态。- 为了实现上游的粘性会话,最简单的方式是对
MCP-Session-ID头部进行 一致性哈希,确保相同的会话 ID 即使在不同实例之间也会路由到同一后端。 - 可以将
SessionManager扩展为使用远程存储,但会增加开销。
默认的有状态处理被部分人认为是错误的;计划将 MCP 默认改为无状态(讨论)。
多路复用
当配置了多个后端时,agentgateway 支持 MCP 多路复用:
- 对于工具列表,它会向每个后端发送
tools/list,随后将工具名称改写为${backend_name}_${tool_name}。 - 随后的工具调用会路由到对应的后端。
- 无法多路复用的方法会返回 “invalid method” 错误。
REST‑to‑MCP 转换
Agentgateway 可以使用 OpenAPI 规范将 RESTful API 转换为 MCP 工具:
- 它可以把整个 OpenAPI 规范当作一个后端。
- 网关仅转发请求,不 管理底层的 RESTful API。
- 当前限制:
- 仅支持
application/json请求体。 - 尚不支持 HTTPS 上游。
- 不支持结构化输出。
- 某些 schema 细节(如
additionalProperties)需要进一步处理。
- 仅支持
认证与授权
- 基于 OAuth 的 MCP 认证:受保护资源的元数据会在类似
/.well-known/oauth-protected-resource/${resource}的路径下暴露。- CORS 头会自动添加到元数据响应中,简化浏览器端 MCP 客户端的使用。
- JWKS 处理:
- 公钥可以从 JWKS URL 或文件路径获取。
- JWKS URL 可以从发行者 URL 与类型推导得到。
- 密钥仅在配置解析期间加载,不会周期性刷新(代码参考)。
- 授权 使用一组 CEL 表达式,根据 JWT 字段和 MCP 属性进行过滤。例如:
mcpAuthorization:
rules:
# 允许任何人调用 'echo'
- 'mcp.tool.name == "echo"'
# 只有 test-user 可以调用 'add'
- 'jwt.sub == "test-user" && mcp.tool.name == "add"'
# 具备 claim nested.key == "value" 的已认证用户可以访问 'printEnv'
- 'mcp.tool.name == "printEnv" && jwt.nested.key == "value"'
在多路复用场景下,
mcpAuthorization在工具名称合并之前执行,因此规则看到的是原始工具名称(没有后端前缀)。
指标
Agentgateway 目前仅提供一个基础的 mcp_requests 计数器,缺少针对单个工具或延迟的细粒度指标。
A2A
针对 Agent‑to‑Agent (A2A) 协议场景,agentgateway 实现了两个主要功能:
- URL 重写 – 将 Agent 卡片的 URL 重写为指向网关,而不是被代理的后端。
- 请求解析 – 解析 A2A JSON 请求并记录请求方法,以便观测。
代理推理请求到 LLM 提供商
Agentgateway 能够代理对大语言模型(LLM)提供商的推理请求,并在单纯转发之上提供额外价值:
- 可观测性 – 为 Server‑Sent Events (SSE) 流收集 token 使用量和首 token 响应时间(TTFT)指标。
- 流式支持 – 专用解析器处理非 SSE 的流式格式,例如 AWS Bedrock 的事件流。
- 限流与提示保护 – (细节将在后续文章中展开)。
与提供商无关的 API 表面
Agentgateway 将部分 LLM 客户端功能提升到网关层,以降低集成成本,提供兼容 OpenAI 的外部 API。当前支持两种路由类型:
| Provider | Route |
|---|---|
| OpenAI | /v1/chat/completions |
| Anthropic | /v1/messages |
两条路由都是聊天式端点;OpenAI 的 /v1/chat/completions 在功能上等同于 Anthropic 的 /v1/messages。分别实现两者可简化仅面向单一提供商的 Agent 上手流程。
限制:
- 结构化输出(例如 OpenAI 的 structured outputs)尚未支持。
- 向量嵌入、批处理等高级特性仍缺失。
推理扩展支持
Gateway API Inference Extension(https://gateway-api-inference-extension.sigs.k8s.io/)通过调度器(EPP)实现分布式推理,调度器使用 Envoy 的 gRPC ext_proc 协议与网关通信。
- 调度器返回
x-gateway-destination-endpoint头部,指示目标上游地址。 - 网关将推理请求转发至该端点,充当轻量代理。
Red Hat 通过 LLMD 项目参与其中,并在 AI 工具(如 vLLM)上的投入表明,推理扩展有望成为 AI 工作负载的标准组件。