diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 41f719ed7..90327f68b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,8 +42,7 @@ jobs: - name: Build silkd (musl static, arm64) # Emulated cargo build via the carrier Dockerfile — byte-consistent # with the image artifact; slow but release-rare. - # Intermediates live outside the worktree: goreleaser refuses a dirty - # git state, and only dist-extra/ is gitignored. + # Intermediates live outside the worktree: goreleaser refuses a dirty git state. run: | docker buildx build --platform linux/arm64 -o type=local,dest=/tmp/silkd-arm64 silkd mkdir -p /tmp/silkd-dist && cp /tmp/silkd-arm64/silkd-static /tmp/silkd-dist/silkd diff --git a/.github/workflows/sandboxd.yml b/.github/workflows/sandboxd.yml index 47463cbf9..5e4c17792 100644 --- a/.github/workflows/sandboxd.yml +++ b/.github/workflows/sandboxd.yml @@ -77,7 +77,7 @@ jobs: env: SANDBOXD_TEST_PG_URL: postgres://postgres:sbxci@localhost:5432/postgres?sslmode=disable run: | - GOWORK=off go test -race -count=1 -v ./tenants/... ./poolset/... ./archives/... ./usage/... ./moves/... | tee "$RUNNER_TEMP/pg-test.log" + GOWORK=off go test -race -count=1 -v ./tenants/... ./poolset/... ./archives/... ./usage/... ./moves/... ./tunnet/pg/... | tee "$RUNNER_TEMP/pg-test.log" GOWORK=off go test -race -count=1 -v -run 'TestTwoNodesOnOneMetaStore|TestNodesOfACell|TestAMetaStoreNodeWithoutACell' ./pool/ | tee -a "$RUNNER_TEMP/pg-test.log" ! grep -- '--- SKIP' "$RUNNER_TEMP/pg-test.log" diff --git a/docs/advanced-network.md b/docs/advanced-network.md index 837ab32b3..f23a12585 100644 --- a/docs/advanced-network.md +++ b/docs/advanced-network.md @@ -25,8 +25,8 @@ This page is the contract between silkd and the host. The host side design is Both modes run at once. silkd keeps the proxy variables in every exec, so a client that honours them still reaches `127.0.0.1:3128` over loopback; all other traffic takes the default route through `tun0`. Loopback never enters -`tun0`, so the guest DNS stub of #472 is unaffected; the tun path does not -intercept DNS. +`tun0`, so the [guest DNS relay](egress.md#name-resolution-dns) on +`127.0.0.153` is unaffected; the tun path does not intercept DNS. ### Turning it on and off @@ -81,7 +81,8 @@ Offload bits are the kernel's `TUN_F_*` values: `0x01` CSUM, `0x02` TSO4, `0x04` TSO6, `0x08` TSO_ECN, `0x20` USO4, `0x40` USO6. Each side probes its kernel (USO needs Linux 6.2) and then enables, with `TUNSETOFFLOAD`, only the offloads both hellos carry; segmentation offloads are dropped when CSUM is not -common. A side never builds a frame whose GSO type the peer did not offer; +common, and USO is enabled only as the USO4 and USO6 pair. The host offers +USO4 alone, so a guest never enables USO. A side never builds a frame whose GSO type the peer did not offer; packets its kernel queued before a reconnect keep their old type, and a receiver may drop one it cannot take. @@ -117,7 +118,6 @@ lost; TCP retransmits. sandboxd needs no TUN, no kernel routes and no NAT rules on the node. It carries each claim's packets over VXLAN, on an ordinary UDP socket, to an **exit**: plain Linux configuration on the same host or on a gateway machine. -The design is [#471](https://github.com/cocoonstack/sandbox/issues/471). ``` guest -> tun0 -> silkd --vsock 2051--> sandboxd --VXLAN--> exit (vxlan0, forward, NAT) -> uplink @@ -129,7 +129,7 @@ guest -> tun0 -> silkd --vsock 2051--> sandboxd --VXLAN--> exit (vxlan0, forward disk write on the claim path; each release is appended to `/tun-freed.log` so its reuse window outlives a restart. A node with a `mesh` must have `meta_store.cell` and allocates it in the cell's - table, one round trip per claim, and stays off (proxy mode only) while the + [table](deploy.md#shared-tun-address-table), one round trip per claim, and stays off (proxy mode only) while the meta store is unreachable. A freed address is reused after `tun.reuse_after_seconds`, so the subnet's size over that window bounds the sustained claim rate: a `/8` with the 5-day default carries about 38 new tun @@ -180,13 +180,16 @@ guest -> tun0 -> silkd --vsock 2051--> sandboxd --VXLAN--> exit (vxlan0, forward usage event with its IP bytes both ways, the destination `ip:port` as its reference, and `upstream` `tun/