Narrow bearers

Every byte of the bearer.

A serial telemetry radio at 64 kbit/s, a metered satellite terminal, a congested cell: a narrow bearer has no airtime to waste, and a packet that arrives too late costs the same airtime as one that arrives in time. Atlas treats every byte it commits to a link as a decision taken against that link’s measured state, and withdraws, drops or reshapes before the link is asked to carry something the far end cannot use. This page lists the nineteen measures that enforce it, in the order a packet meets them, each with its mechanism and its measurement.

19 measures · 4 stagesEvery figure labelled Measured
01

Only links that can deliver in time Opt-in Tempo deadlines ↗

Every packet with a deadline is offered only to links that can still deliver it: half the link’s round trip, the serialisation time of the packet on that link, and the wait in that link’s queue must fit inside the budget the packet has left. When links are alive but none can make it, the packet is refused at planning and counted, instead of being sent to die, so a 600 ms satellite never carries a voice frame it would deliver late. With a 64 kbit/s and a 100 Mbit/s link both carrying copies of the video, late drops on the slow link fell from 1 843 to none, and the fast link’s video was unchanged. Measured

02

Links grouped by what they may carry links per class ↗

[[link_group]] names sets of links and [qos.group.<name>] says which classes may ride each set, and how: no video on the satellite, no bulk transfers on the metered modem, commands on the single best link of a group. A class takes its time budget from the links it will actually use, not from the slowest link that exists. When every link a class may use is gone and others still work, the class falls back to them rather than losing its path.

03

Pieces sized to the air sized to the radio ↗

A 1 400-byte video fragment holds a 64 kbit/s link for 175 ms, longer than a voice frame can wait behind it. While a call is on a link, Atlas fragments at that link’s ceiling, about 20 ms of its airtime by default (max_fragment_airtime_ms); with no call on it, video keeps full-size fragments and loses nothing to extra headers.

04

Copies or shares, chosen per class Opt-in Loom policies ↗

Each class decides whether a packet is mirrored, a full copy on several links, or striped, each packet on exactly one link. Mirroring multiplies reliability: three independent links each losing 2% of packets yield 0.0008% effective loss. Striping multiplies capacity: two 20 Mbit/s links delivered 36.5 Mbit/s striped against 19.2 Mbit/s mirrored, 91% of their combined capacity, from changing one policy word. A striped packet keeps all its fragments on one link, because a packet missing one fragment is worth nothing. Measured

05

Every queue the host can show what we can see ↗

A packet can wait in six places on its way out. Atlas reads every one the host can show it: its own class and link queues, the kernel’s socket and device queues, and a serial radio’s tty line. It publishes the wait per link, in milliseconds, on the dashboard and in the metrics export, so a saturated bearer shows up as delay before it shows up as loss.

06

The last queue, inside the radio the radio’s own report ↗

The final buffer belongs to the radio or modem itself. Where its firmware is integrated with Atlas, through a companion adapter or the native serial link, the device reports its own buffer fill in-line with the data, and that queue is read too. On the native serial link, Atlas writes only while the radio’s buffer has room, so the order on air is decided in Atlas’s queue, where voice overtakes video: on 64 kbit/s air beside video, voice that waited about 1.95 seconds unpaced, with 6% of it arriving, crossed in 100.6 ms at the 95th percentile with 97 to 100% delivered. Measured

07

A queue that never drains becomes a cost delay, not length ↗

Thirty packets in a queue are nothing on Ethernet and several seconds on a serial radio, so each link is judged by how long its packets wait, against a target that follows that link’s own round trip. A queue that stands adds its delay to the link’s score, and traffic steers away before any packet is lost. Extra redundant copies are held back while any link to the peer waits more than 250 ms, because copies on a congested link only deepen the queue.

08

The low band, paced to the air paced to the air ↗

Priority inside Atlas is not enough on a slow bearer: video fragments already handed to the kernel sit in the device queue in front of the next voice frame. So the low band, Video, Telemetry and Bulk, is released to the kernel only as fast as the link really drains, with a few milliseconds of airtime in hand, while the high band, Control, Voice and Position, is never held. Beside 1 400-byte video on a 64 kbit/s link, voice crosses in about 30 ms one way against 70–90 ms unpaced; on fast links nothing changes. Measured

09

Commands take the path with room paths with room ↗

Priority at one hop cannot reorder what already sits in a radio’s buffer further along the path; path choice can. Every node advertises the load and the queue delay on each of its links, and Control routes on a second shortest-path map that counts them, so a command steers around a relay busy with video while the video keeps its cheapest path. When a hop fills, Control moves to the path with room within about three seconds, and returns once it drains. Measured

10

Abandoned whole, never half abandoned whole ↗

A packet needs every one of its fragments at the far end. When a link’s send queue refuses one fragment, the rest of that packet is withdrawn from that link, fragments already queued included, so a scarce bearer never spends airtime on a packet that can no longer be reassembled. Other links keep their own copy, so under a duplicating policy the faster link still delivers it.

11

Late is dropped, not delivered Opt-in bends, not breaks ↗

Every packet carries a time budget derived from the live paths. A packet that outlives it is dropped where it waits, at the head of its class queue or in a link’s own send queue, instead of arriving uselessly late and delaying the fresher packets behind it. Stale video never chokes fresh video.

12

The least valuable packet gives way first Opt-in precedence levels ↗

When the shared backlog is full, the lowest-priority lane is shed first: a command arriving behind a backlog of video evicts video, and is never itself the packet refused. Inside a lane, a primary camera outranks a secondary and a tertiary one, so the feed that matters is the last to lose a frame: two 3 Mbit/s streams on a 4 Mbit/s path left the primary with every packet and the secondary with all the loss. Measured

13

Command repeats only when they are needed Opt-in repeated in time ↗

Control is duplicated across links. When a node is down to its last link, each Control packet is sent again in time instead: up to three copies, a third of a round trip apart, all inside its deadline, with the receiver’s replay window discarding the extras. Repeats stop the moment a second link is alive, and never take more than a fifth of the link’s capacity.

14

A lost voice packet costs no word what it costs ↗

Each voice packet also carries the frame before it, delivered at the far end only when the original was lost: over a 128 kbit/s link with 5% loss, the share of voice frames lost fell from 5.4% to 0.2%, with recovered frames no later than the rest. When a class with a deadline has to shed, it drops its oldest queued packet, the one closest to expiry, never the newest. Measured

15

Every drop has a reason the counters ↗

A dropped packet is a decision, and each one is counted where it was taken, by class, by link and by reason: late at the class queue, late at the link, queue full, refused at planning, or abandoned after part of it was sent. That last counter is the waste figure, airtime spent on a packet the far end cannot use, and it tells an operator which class to move off which bearer.

16

Telemetry in step with its video kept in step ↗

Telemetry that describes a video frame can ride the same link plan and the same release buffer as the frame (companion = "Video" on the telemetry class), so an overlay or a gimbal controller gets the record with the frame instead of ahead of it. Telemetry that led its video by 149 ms arrived in step, with a 95th-percentile skew of zero. Measured

17

Metered links stay inside their plan costs, not cut-offs ↗

A satellite or cellular link can be given a daily, weekly or monthly allowance, counted in the wire bytes the carrier bills: framing, probes and duplicate copies included. Once it is spent, the link leaves the scheduler’s candidate set and nothing promotes it while anything else is usable, not duplication and not priority; it still carries traffic when it is the last path left.

18

Routing traffic paced to the radio paced to the bearer ↗

A narrow radio can be given its own, slower routing cadence while a fast link beside it keeps its own. A moving node’s position adverts are coalesced to the newest fix and carried on a narrow bearer only when its interval is due, however fast the node moves. Membership updates are paged, one page per datagram, and measured to fit a 250 kbit tactical bearer. Measured

19

Footage completed later, not resent live how the gaps are filled ↗

The live picture gives up late frames so the link stays usable. The sender keeps every packet of a retained class, the receiver asks for exactly the packets it missed, and only those cross, on the lowest lane, when no live traffic is waiting, during the flight or after landing. Five minutes of video at 5% loss with periodic blackouts was complete about 14 seconds after the loss stopped. Measured

Request an evaluation

Bring the link that has no airtime to spare.

Give us the narrowest bearer in your plan, its rate, its round trip and what has to cross it, and we map what Atlas would send on it, what it would refuse, and which counters show it.