Skip to content

docs: Describe the gateway as a direct-return load balancer - #749

Merged
privateip merged 4 commits into
mainfrom
fix/issue-720
Oct 6, 2026
Merged

privateip merged 4 commits into
mainfrom
fix/issue-720

Conversation

@privateip

@privateip privateip commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The gateway's docs, diagrams, manifest comments and help text still described the removed Full-NAT gateway, with address translation and a primary gateway node.

They now describe the direct-return load balancer as built, where every gateway node advertises every VIP the same way and nothing rewrites addresses. A History note in the gateway architecture doc names the removed design so it stays findable.

Test plan

  • Build, unit tests and lint pass
  • The gateway's help text describes a DSR load balancer
  • The re-rendered context and container diagrams show anycast VIP advertisement

Fixes #720

🤖 Generated with Claude Code

privateip and others added 3 commits October 6, 2026 12:24
The gateway's docs, manifest comments and CLI help still described the Full-NAT gateway that #427 removed: a "NAT+LB" datapath, an Active-Active BGP local-preference model, and edgenat.c's DNAT/SNAT rewrites.

- Replace "NAT+LB" with "DSR load balancer" in AGENTS.md, README.md, the architecture docs, the gateway configuration guide, the config/galactic-gateway headers, and galactic-gateway's appDesc and --gateway-public-interface help.
- Describe anycast VIP advertisement instead of Active-Active in AGENTS.md and the ruleToGatewayRequests comment.
- Ground the gateway DaemonSet's PERFMON justification in edgedsr.c's own packet-pointer arithmetic (header parsing and the data_end - data byte count) rather than edgenat.c's rewrites. The capability is still required.
- Cut the "unlike the removed Full-NAT design" asides from ARCHITECTURE-GATEWAY.md, edgedsr.c, dropreason.go and the controller tests, and add one History note pointing at #427.
- Drop the dead links to gateway-ingress-packet-trace.md and the stale publishSelfAddress note from docs/gateway/configuration.md.
- Fix README.md's gateway placement to match the base on main (gateway=enabled, no node label).

The "never shares a node with galactic-vrf" wording is left for #718, which changes that placement.

Fixes #720

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first pass missed several places that still described the removed Full-NAT gateway.

- Replace "NAT+LB" and "Active-Active" in the C4 context and container diagrams, and re-render both PNGs.
- Replace "NAT+LB" in the galactic-gateway and galactic-nat Dockerfile comments.
- Point the usidresolver and anycast spike test comments at applyBGPAdvertisements instead of the deleted publishSelfAddress, and rename the spike's gw1/gw2-selfaddr advertisements to gw1/gw2-vip.
- Name the deleted Full-NAT primitives (edgenat.c, AssignPrimaryNode, placement.go, localpref.go, publishSelfAddress) in the ARCHITECTURE-GATEWAY History note so they stay findable, and drop its claim that nothing from that design remains.
- Rewrap the paragraphs the first pass left with over-long lines.

Related to #720

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#747 moved the gateway onto nodes labeled both node=edge and gateway=enabled, so the README's "no node label" placement from this PR's first commit no longer matches the DaemonSet.

Related to #720

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@privateip privateip changed the title docs: Describe the gateway as the DSR load balancer it is docs: Describe the gateway as a direct-return load balancer Oct 6, 2026
Replace all references to rule_table with vip_table in comments and log messages to reflect the DSR architecture redesign. Update the fakeGatewayEngine doc comment to remove the outdated local-pref reference and clarify that tests assert on which rules were included or excluded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Related to #720
@privateip
privateip marked this pull request as ready for review October 6, 2026 16:41
@privateip
privateip requested a review from a team as a code owner October 6, 2026 16:41
@privateip
privateip enabled auto-merge October 6, 2026 16:41
@privateip

Copy link
Copy Markdown
Collaborator Author

First pass (f327b8a): pr-adversary returned merge with no defects and asked for CI to be green; pr-conventions-reviewer returned hold only on landing order against #747, which has since merged.

Second pass (68d8904): pr-rereviewer returned merge. Every applied finding is verified fixed at 68d8904 and the rebase kept main's #745/#747 content. pr-conventions-reviewer returned merge. The changes are comments, docs and help text with no deploy-path change. The only open item was ordering against #738, decided by the user: this PR merges first and #738 rebases afterwards.

pr-rereviewer ran: git rev-parse HEAD, git log --format='%h %G? %GS | %s' 3b22a2c..68d8904, git log --show-signature 3b22a2c..68d8904, git diff --stat 3b22a2c...68d8904, git range-diff 851adaf...f327b8a 3b22a2c...68d8904, git diff f327b8a 68d8904, git diff 29904d5 68d8904, gh pr view 749 --json title,body,statusCheckRollup, gh pr checks 749, grep -rnI "rule_table|local-pref|Full-NAT|NAT+LB" (excluding .git and plans), grep -rnI "never shares a node|carry no", grep -n -A14 "affinity:" config/galactic-gateway/base/daemonset.yaml, go build ./internal/controller/ ./cmd/galactic-gateway/, go vet ./internal/controller/, go test ./internal/controller/.

pr-conventions-reviewer ran: gh pr view 749 --json title,body,commits,files,baseRefName,isDraft, git diff 3b22a2c...68d8904 --stat, git diff 3b22a2c...68d8904 -- config internal/plumbing/ebpf/edgeprog/edgedsr.c cmd, gh pr list --state open --json number,title,headRefName,files, kustomize build config/galactic-gateway (exit 0), git log -1 --format=%B 68d8904, read docs/agents/CONVENTIONS.md.

CI is green: Build, Lint, Unit Tests, Unit Tests (root), license/cla, all publish jobs, E2E Tests passed. One Unit Tests (root) run failed on the flaky unrelated TestPMTU_VethPodLearnsPathMTU and passed on rerun.

Auto-merge is enabled with merge method. The ruleset requires one approval and code owner review, so auto-merge waits for human approval before completing.

@privateip
privateip merged commit fffb635 into main Oct 6, 2026
14 checks passed
@privateip
privateip deleted the fix/issue-720 branch October 6, 2026 16:52
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.

Gateway docs describe removed features

2 participants