Skip to content

router: Move from Host header to explicit headers for actor and atespace - #1333

Open
Keith Mattix II (keithmattix) wants to merge 10 commits into
agent-substrate:mainfrom
keithmattix:no-host-header
Open

router: Move from Host header to explicit headers for actor and atespace#1333
Keith Mattix II (keithmattix) wants to merge 10 commits into
agent-substrate:mainfrom
keithmattix:no-host-header

Conversation

@keithmattix

@keithmattix Keith Mattix II (keithmattix) commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

This PR is purposefully controversial to try and encourage movement on the DNS issue (#445).

There has been an emerging consensus that substrate is not a system that we expect end-users to interact with directly; we can assume a higher level orchestrator is acting on the user's behalf to program substrate. Therefore, our networking scheme does not need to utilize the HOST header to encode the (actor name, atespace) reference tuple. This PR encodes that same tuple as two distinct headers: x-ate-actor-name and x-ate-atespace. We expect the higher order system originating substrate requests to be able to set these headers and remove any need for us to rewrite DNS. Note that this also applies to actor-to-actor requests: atunnel is originating CONNECT to the egress PEP, so when addressing another actor, it can set the requisite headers in the CONNECT request and the PEP can know to forward them to the router.

NOTE: CONNECT vs. direct HTTP (#1208) is a similar conversation; I see no reason not to lean 100% into CONNECT as the standard datapath for tunneling if we expect substrate to be controlled by a higher-order system. I only want to bite off one controversial issue at a time, so I'll save that for later 😄

Breaking change

Clients that previously selected an Actor with Host: <actor>.<atespace>.actors.resources.substrate.ate.dev must now send both X-Ate-Actor-Name: <actor> and X-Ate-Atespace: <atespace>. The custom Actor DNS suffix is removed. Host/:authority remains application metadata, except that CONNECT authority still carries the target port.

  • Tests pass
  • Appropriate changes to documentation are included in the PR

@EItanya Eitan Yarmush (EItanya) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good to me overall. Just a few nits. Also I think we need to figure out how to message this to the community as it will definitely break existing demos and things.

Comment thread benchmarking/locust/tests/counter_demo.py Outdated
Comment thread internal/resources/actor.go Outdated
Comment thread internal/e2e/suites/demo/demo_test.go Outdated
Comment thread internal/atunnel/ingress_test.go
Comment thread docs/threat-model.md Outdated
Comment thread docs/threat-model.md Outdated
Comment thread demos/egress/README.md Outdated
Signed-off-by: Keith Mattix II <keithmattix2@gmail.com>
…tivity in extproc

Signed-off-by: Keith Mattix II <keithmattix2@gmail.com>
Signed-off-by: Keith Mattix II <keithmattix2@gmail.com>
Signed-off-by: Keith Mattix II <keithmattix2@gmail.com>
Signed-off-by: Keith Mattix II <keithmattix2@gmail.com>
Signed-off-by: Keith Mattix II <keithmattix2@gmail.com>
Signed-off-by: Keith Mattix II <keithmattix2@gmail.com>
Signed-off-by: Keith Mattix II <keithmattix2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants