From 09fc6ac659ae212e885cb377a7dfad84db1096fa Mon Sep 17 00:00:00 2001 From: Mikhail Date: Sat, 16 May 2026 12:34:36 +0300 Subject: [PATCH] Smoke test mixed VPN fabric batches --- agents/rap-node-agent/cmd/mesh-live-smoke/main.go | 5 +---- docs/architecture/DISTRIBUTED_FABRIC_NODE_PROTOCOL_PLAN.md | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/agents/rap-node-agent/cmd/mesh-live-smoke/main.go b/agents/rap-node-agent/cmd/mesh-live-smoke/main.go index ebbae05..4b0263d 100644 --- a/agents/rap-node-agent/cmd/mesh-live-smoke/main.go +++ b/agents/rap-node-agent/cmd/mesh-live-smoke/main.go @@ -272,10 +272,7 @@ func smokeFabricVPNPacketOverSession(ctx context.Context, fabricSession *mesh.Fa } bulkPacket := smokeIPv4TCPPacket([4]byte{10, 77, 0, 2}, [4]byte{192, 168, 200, 95}, 51000, 443, 0) controlPacket := smokeIPv4TCPPacket([4]byte{10, 77, 0, 2}, [4]byte{192, 168, 200, 95}, 51001, 3389, 0x02) - if err := transport.SendGatewayPacketBatch(ctx, [][]byte{bulkPacket}); err != nil { - return false, false, err - } - if err := transport.SendGatewayPacketBatch(ctx, [][]byte{controlPacket}); err != nil { + if err := transport.SendGatewayPacketBatch(ctx, [][]byte{bulkPacket, controlPacket}); err != nil { return false, false, err } timer := time.NewTimer(3 * time.Second) diff --git a/docs/architecture/DISTRIBUTED_FABRIC_NODE_PROTOCOL_PLAN.md b/docs/architecture/DISTRIBUTED_FABRIC_NODE_PROTOCOL_PLAN.md index 1264fc0..01d90ac 100644 --- a/docs/architecture/DISTRIBUTED_FABRIC_NODE_PROTOCOL_PLAN.md +++ b/docs/architecture/DISTRIBUTED_FABRIC_NODE_PROTOCOL_PLAN.md @@ -402,6 +402,8 @@ counters for verifying that stream shard cleanup is actually happening. Outgoing VPN packet batches are split by traffic class and selected stream before they are framed, so one gateway batch containing many browser flows does not collapse onto the first packet's logical stream. +`mesh-live-smoke` now sends mixed bulk and interactive VPN packets in a single +fabric-session batch and requires them to remain sharded. Endpoint ranking treats `capacity_limited` observations as a soft pressure penalty instead of a hard recent failure, enabling load spreading without marking the carrier unhealthy.