Skip to content

feat(global-router): resolve MCS pool models and live frontends - #17276

Draft
sachalmalick wants to merge 1 commit into
global-router-v2from
codex/global-router-mcs-routing-metadata
Draft

sachalmalick wants to merge 1 commit into
global-router-v2from
codex/global-router-mcs-routing-metadata

Conversation

@sachalmalick

Copy link
Copy Markdown
Contributor

Summary

Closes #17275 (discovery metadata prerequisite).

Global Ingress polls /pools, but the MCS backend previously returned no model or frontend addresses. Add optional --routing-config model/location bindings and join them with ready imported frontend EndpointSlices by source cluster, namespace, and DGD name. Frontend addresses remain dynamic; a ready Relay is still required for pool membership. Existing constructors and unconfigured behavior remain compatible.

This is the first PR in a stack; the deployment and validation example follows separately.

Validation

  • 75 targeted tests passed across global-discovery-client, global-discovery-service, global-router, and global-ingress.
  • Added coverage for frontend replacement/readiness, Relay withdrawal, identity isolation, IPv6 URLs, and invalid configuration.
  • Targeted Rust formatting, diff whitespace, and strict changed-file CODEOWNERS checks passed.

@copy-pr-bot

copy-pr-bot Bot commented Oct 25, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions github-actions Bot added the feat label Oct 25, 2026
atchernych added a commit that referenced this pull request Oct 27, 2026
In MCS mode the Global Discovery Service now accepts POST /pools, and lists
a pool only while MCS shows a Ready PoolRelay for it and the pool's
registration is live. The registration gives the model, capabilities,
capacity and location. MCS gives the Relay and frontend addresses; the
frontends come from the `<dgd>-frontend` Service, as in #17276.

Instances share registrations: each polls the others' GET /registrations
twice per heartbeat interval, finding them through the service's own MCS
export (--peer-service), and keeps copies for the time they have left. Only
registrations a PoolRelay made locally are shared, so copies are never
passed on. Sharing goes through a RegistrationExchange contract, which the
memory store implements. A new instance is ready only after it has asked
the others once, and with --peer-service the lease must be more than two
heartbeat intervals. Instances ask each other over plain HTTP, so
--peer-service is refused with --tls-cert-path for now. A pool that only
one side lists for two lease durations is logged once.

This replaces #17282, which targeted the global-router-v2 test branch.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
atchernych added a commit that referenced this pull request Oct 27, 2026
In MCS mode the Global Discovery Service now accepts POST /pools, and lists
a pool only while MCS shows a Ready PoolRelay for it and the pool's
registration is live. The registration gives the model, capabilities,
capacity and location. MCS gives the Relay and frontend addresses; the
frontends come from the `<dgd>-frontend` Service, as in #17276.

Instances share registrations: each polls the others' GET /registrations
twice per heartbeat interval, finding them through the service's own MCS
export (--peer-service), and keeps copies for the time they have left. Only
registrations a PoolRelay made locally are shared, so copies are never
passed on. Sharing goes through a RegistrationExchange contract, which the
memory store implements. A new instance is ready only after it has asked
the others once, and with --peer-service the lease must be more than two
heartbeat intervals. Instances ask each other over plain HTTP, so
--peer-service is refused with --tls-cert-path for now. A pool that only
one side lists for two lease durations is logged once.

This replaces #17282, which targeted the global-router-v2 test branch.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
atchernych added a commit that referenced this pull request Oct 27, 2026
In MCS mode the Global Discovery Service now accepts POST /pools, and lists
a pool only while MCS shows a Ready PoolRelay for it and the pool's
registration is live. The registration gives the model, capabilities,
capacity and location. MCS gives the Relay and frontend addresses; the
frontends come from the `<dgd>-frontend` Service, as in #17276.

Instances share registrations: each polls the others' GET /registrations
twice per heartbeat interval, finding them through the service's own MCS
export (--peer-service), and keeps copies for the time they have left. Only
registrations a PoolRelay made locally are shared, so copies are never
passed on. Sharing goes through a RegistrationExchange contract, which the
memory store implements. A new instance is ready only after it has asked
the others once, and with --peer-service the lease must be more than two
heartbeat intervals. Instances ask each other over plain HTTP, so
--peer-service is refused with --tls-cert-path for now. A pool that only
one side lists for two lease durations is logged once.

This replaces #17282, which targeted the global-router-v2 test branch.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
atchernych added a commit that referenced this pull request Oct 27, 2026
In MCS mode the Global Discovery Service now accepts POST /pools, and lists
a pool only while MCS shows a Ready PoolRelay for it and the pool's
registration is live. The registration gives the model, capabilities,
capacity and location. MCS gives the Relay and frontend addresses; the
frontends come from the `<dgd>-frontend` Service, as in #17276.

Instances share registrations: each polls the others' GET /registrations
twice per heartbeat interval, finding them through the service's own MCS
export (--peer-service), and keeps copies for the time they have left. Only
registrations a PoolRelay made locally are shared, so copies are never
passed on. Sharing goes through a RegistrationExchange contract, which the
memory store implements. A new instance is ready only after it has asked
the others once, and with --peer-service the lease must be more than two
heartbeat intervals. Instances ask each other over plain HTTP, so
--peer-service is refused with --tls-cert-path for now. A pool that only
one side lists for two lease durations is logged once.

This replaces #17282, which targeted the global-router-v2 test branch.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
atchernych added a commit that referenced this pull request Oct 27, 2026
In MCS mode the Global Discovery Service now accepts POST /pools, and lists
a pool only while MCS shows a Ready PoolRelay for it and the pool's
registration is live. The registration gives the model, capabilities,
capacity and location. MCS gives the Relay and frontend addresses; the
frontends come from the `<dgd>-frontend` Service, as in #17276.

Instances share registrations: each polls the others' GET /registrations
twice per heartbeat interval, finding them through the service's own MCS
export (--peer-service), and keeps copies for the time they have left. Only
registrations a PoolRelay made locally are shared, so copies are never
passed on. Sharing goes through a RegistrationExchange contract, which the
memory store implements. A new instance is ready only after it has asked
the others once, and with --peer-service the lease must be more than two
heartbeat intervals. Instances ask each other over plain HTTP, so
--peer-service is refused with --tls-cert-path for now. A pool that only
one side lists for two lease durations is logged once.

This replaces #17282, which targeted the global-router-v2 test branch.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Anna Tchernych <atchernych@nvidia.com>

This branch has not been deployed

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant