Skip to content

[WIP][Help Wanted] vLLM Router 2026 Roadmap #244

Description

@fake0fan

vLLM Router 2026 Roadmap Issues

Planning date: September 8, 2026
Code baseline: vLLM Router main@1d10e71 (identical to upstream main at the time of review)
Objective: define an actionable roadmap for the remainder of 2026 around vLLM-native integration, lightweight high-performance routing, exact KV awareness, and agent-aware scheduling.
Scope: CPU fast path, exact KV routing, agent-aware scheduling, E/P/D, and Router HA.

Overview

# Roadmap issue Current foundation Priority 2026 target External value
1 Integrate and Optimize the CPU-side Inference Fast Path ◐ Rust tokenizer, streaming utilities, and benchmarks exist, but they do not yet form an end-to-end request fast path P0 Tokenizer cache, request-scoped reuse, and JSON/streaming hot-path optimization Demonstrate the performance advantage of a lightweight Rust router
2 Event-driven Exact KV-aware Routing ○ Exact KV awareness is missing; the current cache-aware policy uses an approximate request-history tree P0 KV Events, an exact index, unified cost, and safe fallback Flagship capability for the year
3 Extend Session Affinity to Agent/Program-aware Scheduling ◐ Session-ID-based consistent hashing exists P1 Program metadata, a program-aware policy, and a KV TTL prototype Differentiate for agentic workloads
4 Extend P/D Routing to E/P/D ◐ P/D, DP-rank routing, and KV connectors exist; the Encode stage does not P1 Encode pool and three-stage routing MVP Extend multimodal scheduling
5 Complete Multi-Router HA and State Recovery ◐ Health checks, retries, readiness, and process-level graceful shutdown exist; multi-Router state HA does not P0 foundation / P1 complete Drain and recovery foundations; active-active as a stretch goal Make stateful routing production-ready

Roadmap principles

  • Do not turn vLLM Router into a broad, all-in-one gateway; its core remains vLLM inference routing.
  • Prioritize CPU optimizations that directly benefit tokenization, routing, and the streaming fast path.
  • Make exact KV state trustworthy before optimizing policy gains.
  • Agent hints must be optional, and ordinary OpenAI-compatible requests must remain compatible.
  • Deliver minimal closed loops for EPD and HA first rather than expanding the initial issues into full platform projects.
  • Base every performance claim on reproducible experiments using the same hardware, model, and trace.

Issue 1: [Roadmap][P0] Integrate and Optimize the CPU-side Inference Fast Path

Background

As GPU inference becomes faster, CPU work such as tokenization, JSON encoding/decoding, and stream processing can become the bottleneck. SMG moves tokenization and detokenization into a Rust gateway and uses an L0 exact-match tokenizer cache, an L1 prefix-aware tokenizer cache, and a gRPC tokens-in/tokens-out path to reduce Python/GIL and serialization overhead.

vLLM Router already includes a Rust tokenizer, chat-template support, streaming decoding utilities, and benchmark infrastructure. However, the tokenizer module is not yet part of a complete CPU pipeline across the main request path, and there is no L0/L1 token-result cache. The worker data plane is currently HTTP; the gRPC/Tonic dependency in Cargo is primarily used for OpenTelemetry and does not constitute a worker gRPC fast path.

The goal of this issue is to integrate and optimize the existing modules into a measurable CPU fast path. It is not to reimplement the Rust tokenizer or to build a complete tool, MCP, or provider gateway.

Scope

  • Establish stable baselines for Router CPU usage, latency, throughput, and memory.
  • Integrate the existing Rust tokenizer, chat template, and streaming decoder into the request paths that need them.
  • Add a bounded L0 exact-match tokenizer cache.
  • Evaluate and implement an L1 prefix token cache aligned to special-token boundaries.
  • Tokenize and apply the chat template once per request, then reuse the result across the KV index, routing policy, and P/D flow.
  • Reduce JSON copies, repeated parsing, and intermediate string allocations in the request path.
  • Optimize incremental streaming decode and stop-sequence detection.
  • Evaluate an optional pre-tokenized/gRPC backend fast path.
  • Add metrics for cache hits, CPU time, allocations, and Router-added latency.

Deliverables

  • CPU fast-path benchmark suite.
  • Request-path integration for the existing tokenizer and streaming modules.
  • Bounded L0/L1 tokenizer cache.
  • Request-scoped tokenization-result reuse.
  • JSON and streaming hot-path optimizations.
  • Design document or experimental implementation for an optional tokens-in/gRPC path.
  • Before-and-after performance report.

Acceptance criteria

  • Token IDs and chat-template results match the target vLLM version.
  • Every cache has a capacity bound, TTL/eviction policy, and memory metrics; unbounded growth is not allowed.
  • Publish CPU, memory, P50/P99 Router-added latency, and throughput results.
  • Preserve existing HTTP behavior when the new fast path is disabled.
  • Do not count the OpenTelemetry gRPC exporter as worker gRPC support.

Non-goals

  • Complete MCP tool orchestration.
  • Provider API translation.
  • Reimplementing every Hugging Face multimodal processor inside the Router.

Issue 2: [Roadmap][P0] Add Event-driven Exact KV-aware Routing

Background

The current cache-aware policy maintains an approximate character-level tree from Router request history. It cannot determine which KV blocks are currently resident on a Worker or DP rank. Dynamo Router combines KV lifecycle events, a prefix index, and active load when selecting a Worker.

Scope

  • Subscribe to vLLM KV Stored, Removed, and Cleared events.
  • Build an exact KV index keyed by model, Worker, DP rank, and block key.
  • Query request prefixes at token/block granularity and calculate actually reusable blocks.
  • Combine uncached prefill, active decode, active requests, and KV transfer cost in a unified cost model.
  • Automatically fall back to approximate cache-aware routing or P2C when KV Events are unavailable or the index is not trustworthy.
  • Emit a structured route receipt and decision metrics.
  • Validate block size, tokenizer compatibility, Worker epoch, and event freshness.

Deliverables

  • vLLM KV Event subscriber.
  • Token/block KV placement index.
  • Unified KV-plus-load cost policy.
  • Exact/approximate/load-aware fallback.
  • Route receipt and Prometheus metrics.
  • Comparative benchmark covering RR, P2C, approximate cache-aware, and exact KV-aware routing.

Acceptance criteria

  • Stored, Removed, and AllBlocksCleared events update the index correctly.
  • DP-rank-level KV placement matches actual Worker state.
  • Requests continue through a fallback policy when events are unavailable.
  • Report KV hit rate, TTFT P99, goodput/GPU, incorrect-routing rate, and Router overhead.
  • Do not claim absolute superiority using competitor data collected in a different environment.

Non-goals

  • A multi-data-center global index is not required in the first phase.
  • Full multi-tier KV-offload orchestration is not required in the first phase.

Issue 3: [Roadmap][P1] Extend Session Affinity to Agent/Program-aware Scheduling

@warriorsniu

Background

Agent workflows contain multiple LLM calls, tool calls, and waiting periods. Per-request scheduling loses program-level context, which can cause session KV eviction, migration of one agent across Workers, and repeated prefill after a tool returns.

The current consistent-hash policy can read headers such as x-session-id, x-user-id, and x-tenant-id and attempts to map the same key to the same Worker. This provides sticky sessions, but it does not understand programs, steps, tool waits, KV TTL, or expected output length.

ThunderAgent introduces an LLM Program abstraction and a program-aware scheduler. Continuum uses a KV TTL based on recomputation/reload cost and eviction-induced queueing cost to selectively retain KV across tool calls.

Scope

  • Define optional program/session/step metadata.
  • Preserve existing x-session-id consistent-hash behavior as the baseline when program metadata is absent.
  • Support program ID, step ID, agent role, priority, deadline, and expected output length.
  • Select Workers using both KV affinity and live load at program scope.
  • Add program-level fairness so long-running agent workflows cannot monopolize a Worker.
  • Design a KV TTL/retention hint for tool-wait periods.
  • Evaluate eviction or offload at TTL expiry and prefetch before a tool returns.
  • Fall back to ordinary KV-aware routing when hints are absent or unsupported by the engine.
  • Evaluate job completion time using real or public agent traces.

Deliverables

  • Agent scheduling metadata contract.
  • Program/session-aware policy evolved from the existing session-affinity policy.
  • KV TTL/retention policy prototype.
  • Optional prefetch/offload hint design.
  • Agent trace replay and benchmark.

Acceptance criteria

  • Ordinary requests do not need to supply agent metadata.
  • Scheduling decisions for one program are explainable and replayable.
  • Compare ordinary KV-aware routing, sticky sessions, and program-aware routing.
  • Report agent job completion time, KV reuse, Worker migrations, and fairness.
  • Router-to-engine KV control must receive explicit accept/reject feedback from the engine; the Router must not assume a hint was executed.

Non-goals

  • The Router does not execute tools.
  • The Router does not manage complete tool runtimes, disks, or network ports.
  • Performance numbers reported by the research papers are not project results.

Issue 4: [Roadmap][P1] Extend P/D Routing to E/P/D

Background

A multimodal request can be decomposed into Encode, Prefill, and Decode stages. SGLang's EPD Router work introduces Encode Workers, a three-stage pipeline, and independent Worker policies. The referenced CI run covers its EPD routing pipeline work.

Scope

  • Add an Encode Worker type, Encode pool, and service discovery.
  • Support a minimal Encode → Prefill → Decode orchestration flow.
  • Support independent policies for Encode, Prefill, and Decode.
  • Carry encoder output and KV-transfer metadata between stages.
  • Remain compatible with vLLM EC Connector/EPD interfaces rather than defining a separate private protocol.
  • Skip Encode for text-only requests and continue using the existing P/D path.
  • Add health, load, and latency metrics for all three stages.

Deliverables

  • Encode Worker type and discovery.
  • E/P/D pipeline MVP.
  • Per-stage policy configuration.
  • Text-only P/D fallback.
  • End-to-end test with one multimodal model.

Acceptance criteria

  • Encode, Prefill, and Decode can be deployed and scaled independently.
  • Text-only requests do not enter the Encode stage.
  • A failure in any stage produces an explicit error; execution must not continue with incomplete intermediate state.
  • Streaming response and client-cancellation behavior are correct.

Non-goals

  • A general-purpose Omni stage graph is not part of the first phase.
  • Complex topology-aware EPD is not part of the first phase.

Issue 5: [Roadmap][P0/P1] Complete Multi-Router HA and State Recovery

Background

Exact KV state, sessions, and active load make the Router stateful. The current Router already has Worker health checks, retries, circuit breakers, liveness/readiness endpoints, and Axum graceful shutdown on SIGTERM or Ctrl+C. It does not have an explicit DRAINING state, readiness-based traffic removal, multi-Router state recovery, or cross-replica HA.

SMG uses SWIM and CRDTs to synchronize Worker, policy, rate-limit, and cache-aware state. llm-d supports leader election, warm standby, and constrained active-active operation. This issue completes multi-Router HA on top of the existing single-process reliability mechanisms rather than reimplementing health checks and retries.

Scope

  • Extend the existing liveness/readiness endpoints and process-level graceful shutdown with an explicit DRAINING state, readiness-based traffic removal, and rolling-upgrade behavior.
  • Add replay for KV Event gaps and a snapshot/rebuild path for cold starts.
  • Provide a basic active-passive/warm-standby mode.
  • Evaluate active-active operation in which exact KV indexes converge independently and only the minimum required state is synchronized.
  • Define explicit EXACT, DEGRADED, and FALLBACK states during recovery.
  • Add fault-injection, RTO, and state-convergence metrics.

Deliverables

  • Graceful drain and readiness gate built on the existing shutdown/readiness implementation. @LOGO127
  • KV-index replay/snapshot foundation.
  • Warm-standby deployment example.
  • Multi-Router recovery tests.
  • Active-active design document as a stretch goal.

Acceptance criteria

  • In a multi-Router deployment, restarting or rolling one Router does not make the service unavailable.
  • A new Router does not perform exact KV routing until its index is trustworthy.
  • Event gaps are detected, and failed recovery triggers safe fallback.
  • Complete Router-kill, Worker-kill, event-loss, and 24-hour steady-state tests.

Non-goals

  • Strong-consistency Raft is not a mandatory dependency in the first phase.
  • The first phase does not synchronize every local counter or transient request state.

Dependencies

Issue 1: CPU Fast Path Integration ─┐
                                    ├─> Issue 3: Agent-aware Scheduling
Issue 2: Exact KV Routing ──────────┤
                 │                  └─> Issue 5: Router HA
                 │
                 └─> Issue 4: E/P/D reuses token/block and load foundations

References

CPU-side inference fast path

Exact KV-aware routing

Agent/program-aware scheduling

E/P/D routing

Router high availability

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

High Priorityissues with high priority and expected to be triaged asaphelp wantedExtra attention is neededomni-modalityissues related to vllm-omni and multi-modality understanding

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions