Kontext: GeoDNS-Entscheidungsmatrix, MSS/BBR/SSH-p95, Tailscale MagicDNS. Einstieg: Titelseite (inkl. Knotenübersicht), Hilfe, Preise.
1) Jeder parallele scp-Lauf ohne Multiplexing zahlt erneut Handshake über den Pazifik. 2) GeoDNS-Umschaltung während ControlPersist klebt Sessions an den falschen PoP. 3) Artefakt-p95 wird mit SSH-Handshake vermischt, wenn dieselbe ssh_config-Sektion alles trägt.
ControlMaster und ControlPersist: Parameter und ssh_config
Multiplexing amortisiert TCP- und SSH-Negotiation über eine Master-Verbindung. Für Halo-Hosts trennen Sie Steuer-Aliase (halo-ctl-*) von Artefakt-Aliase (halo-art-* ohne ControlMaster).
# ~/.ssh/config — Steuerkanal (Multiplex)
Match host halo-ctl-*
ControlPath ~/.ssh/cm-%r@%h:%p
ControlMaster auto
ControlPersist 8h
ServerAliveInterval 30
ServerAliveCountMax 4
IdentitiesOnly yes
Compression no
# Artefakt-Rückweg (kein Multiplex, hoher Durchsatz)
Match host halo-art-*
ControlMaster no
Compression no
IPQoS throughput
| Parameter | Empfehlung | Wirkung auf Latenz | Risiko |
|---|---|---|---|
| ControlMaster | auto am Bastion-Hop |
Handshake-p95 −40–70 % bei Folgesessions | Stale Socket nach PoP-Wechsel |
| ControlPersist | 4–8 h Ops-Schicht; 30 min CI | Idle-Reconnect vermeidet | > DNS-TTL → falscher PoP |
| ControlPath | Ein Pfad je Kette | Deterministisches Cleanup | Geteilte NFS-Homes: Lock-Konflikt |
| Compression | no auf Artefakt-Host |
CPU-Spitzen vermeiden | Bei Text-Logs optional yes |
JumpHost-Kette und Halo-Routing
Standardkette: Laptop → regionaler Bastion → vpshalo-Builder. Ein ControlMaster pro Kette, nicht pro Builder. Halo-Routing wählt den nächsten PoP per GeoDNS; der SSH-Alias bleibt stabil (halo-ctl-jp), auch wenn der A-Record wechselt.
Host halo-ctl-jp
HostName ssh.jp.example.com
User build
ProxyJump bastion-jp@bastion.vpshalo.internal
IdentityFile ~/.ssh/vpshalo_ed25519
Host halo-art-jp
HostName ssh.jp.example.com
User build
ProxyJump bastion-jp@bastion.vpshalo.internal
ControlMaster no
| Muster | Einsatz | ControlMaster | Artefakt-p95 |
|---|---|---|---|
| Direkt + Multiplex | Interaktive Shell, Port-Forwards | Ja | Getrennt messen |
| ProxyJump 2-Hop | Zero-Trust-Bastion | Nur Hop 1 | +1 RTT im Budget |
| Tailscale Mesh | Kein öffentlicher SSH | Optional | Siehe MagicDNS-Artikel |
| GeoDNS + expliziter Regionalhost | CI deterministisch | Nein (frische Socket) | Matrix |
Session-Stickiness, Health-Checks und DNS-TTL
Stickiness existiert zweifach: Ingress-Cookies am Edge und persistierende ControlPath-Sockets am Client. Beide müssen kürzer leben als autoritative DNS-TTL oder Sie landen auf einem gesunden PoP mit totem Master-Socket.
| Lane | Probe | Timeout | Sticky-Regel |
|---|---|---|---|
| ssh_handshake | time ssh halo-ctl-* true |
10 s | p95 vs. Baseline +20 % |
| bastion_health | TCP :22 + Banner | 3 s | Drain vor GeoDNS-Gewicht |
| builder_health | MOTD mit pop_id |
5 s | Ticket bei ID-Mismatch |
| control_socket | ssh -O check |
— | Nach DNS-Change: -O exit |
Artefakt-Rückweg: p95-Abnahme in fünf Schritten
Messfenster: dieselben fünf Heimatnetze wie in der BBR/MSS-Matrix (JP, KR, HK, SG, US-West). Schwellen sind interne Abnahmeziele.
- Schritt 1: Handshake-Baseline: 30×
time ssh halo-ctl-* true; Median und p95 loggen. - Schritt 2: ControlMaster warm: eine Session offen lassen; Folgeläufe müssen p95 halbieren.
- Schritt 3: Artefakt-Probe:
rsync -av --stats512 MiB überhalo-art-*; Durchsatz-p95 notieren. - Schritt 4: PoP-Drill: nach simuliertem GeoDNS-Shift
ssh -O exit, erneut Schritt 1–3. - Schritt 5: Archivieren: Commit-ID, Resolver,
pop_idaus MOTD, jq-Zeile ins Change-Ticket.
| Signal | Schwelle (Richtwert) | Sicherheit / Stabilität |
|---|---|---|
| SSH handshake p95 | ≤ Baseline × 1,2 nach Warm-up | Erstconnect je Tag aus KPI ausschließen |
| 512 MiB rsync p95 | Team-Budget je Heimatmarkt | Kein Multiplex auf Artefakt-Alias |
| Retransmit-Rate | < 2 % nach MSS-Sonde | Zuerst BBR-Artikel, dann SSH tunen |
# p95 grob (Handshake, Sekunden)
for i in $(seq 1 30); do
(time ssh -o BatchMode=yes halo-ctl-jp true) 2>&1 | awk '/real/{print $2}'
done | sort -n | awk 'NR==int(NR*0.95){print "p95_s="$1}'
Rollout: sieben Schritte für Ops-Teams
- Schritt 1: Aliase
halo-ctl-*/halo-art-*im Team-Repo versionieren. - Schritt 2: Bastion-Inventory mit
pop_idim MOTD ausrollen. - Schritt 3: ControlPath-Verzeichnis (Modus 700) auf jedem Laptop/CI-Runner.
- Schritt 4: GeoDNS-TTL und ControlPersist im selben Runbook-Eintrag.
- Schritt 5: Handshake-p95 aus fünf Regionen; Abnahmetabelle signieren.
- Schritt 6: Artefakt-p95 mit rsync; bei Gelb MSS/BBR-Matrix öffnen.
- Schritt 7: PoP auf Kaufen oder regionale URL buchen.
Drei zitierfähige Leitplanken
- Multiplex nur Steuer: ControlMaster auf
halo-ctl-*, nie auf großen Pulls. - Stickiness = DNS + Socket: Persist-Zeit < TTL oder nach Gewichtswechsel Master beenden.
- p95 getrennt: Handshake-KPI ≠ Artefakt-Durchsatz—zwei Aliase, zwei Dashboards.
FAQ: ControlMaster, GeoDNS und Artefakte
Master hängt nach Failover? ssh -O exit halo-ctl-*, ControlPath löschen, neu verbinden—GeoDNS hat gewechselt, Socket nicht.
CI braucht frische TCP? Dedizierter halo-art-ci ohne Persist; interaktive Ops behalten 8h-Persist.
Tailscale statt Bastion? MagicDNS ersetzt öffentlichen Einstieg, nicht die p95-Disziplin—siehe Tailscale-Leitfaden; GeoDNS bleibt für Artefakt-URLs relevant.
IdentitiesOnly yes, getrennte Keys für Bastion vs. Builder, AllowTcpForwarding nur wo nötig; Audit-Log für ProxyJump-Ketten.Nach grünen Zeilen Region wählen: Tokio, Seoul, Hongkong, Singapur, USA Westen oder Knotenübersicht.
GeoDNS- und BBR-Matrix lesen, dann vpshalo-Region wählen
ControlMaster-Drills auf dedizierten Mac mini M4-Knoten—öffentliche Preise und Knotenliste ohne Login.