17be962e57
Nagle on the broker held small messages to subscribers ~40 ms at CAN rates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
1.8 KiB
1.8 KiB
type, date
| type | date |
|---|---|
| report | 2026-10-12 |
Mosquitto: the bus on the car Orin
The message bus (project-yukart decision 4), installed on the car unit.
Install
sudo apt-get install mosquitto mosquitto-clients # 2.0.11-1ubuntu1.2 on Ubuntu 22.04
/etc/mosquitto/conf.d/yukart.conf:
# Yukart bus. Local only: displays reach it through svc-gw, never directly.
listener 1883 127.0.0.1
allow_anonymous true
set_tcp_nodelay true
systemctl enable --now mosquitto. It listens on 127.0.0.1:1883 only, so
anonymous access is local access; nothing on the LAN, the tailnet or LTE can
reach it.
Behaviour worth knowing
- Retained messages survive a reboot. Ubuntu's
mosquitto.confsetspersistence true(/var/lib/mosquitto/), so after a reboot the broker hands out the last values from before it. svc-gw therefore treats a value known only from a retained copy as stale until a live one arrives. set_tcp_nodelay trueturns Nagle's algorithm off for the broker's sockets. Without it, small messages to subscribers wait for the previous one's ACK: a 40 ms tail at raw CAN rates (svc-coreBUS-BENCH.md).- Units that use the broker order themselves
After=mosquitto.serviceand nothing else, and reconnect by themselves when it restarts. - Startup tier 1 (project-yukart
docs/ORIN-RUNTIME.md).
First use
orin-status (svc-core) publishes the Orin's health on yukart/host/<signal>
once a second; svc-gw subscribes and serves it to the tablet. Watching it:
mosquitto_sub -v -t 'yukart/#'
Throughput
Raw CAN rates are fine: a saturated 500 kbit/s bus (~4,400 frames/s) lost no
frames, per frame or batched; batched it costs the broker about 1 % of a core.
Measured 2026-10-12, svc-core docs/impl/reports/BUS-BENCH.md.