Files
orin-nano-env-setup/docs/impl/reports/MOSQUITTO.md
T
mikkeli 17be962e57 mosquitto: set_tcp_nodelay, raw CAN throughput measured
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
2026-10-12 20:48:41 +09:00

55 lines
1.8 KiB
Markdown

---
type: report
date: 2026-10-12
---
# Mosquitto: the bus on the car Orin
The message bus (project-yukart decision 4), installed on the car unit.
## Install
```bash
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.conf` sets
`persistence 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 true`** turns 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-core `BUS-BENCH.md`).
- Units that use the broker order themselves `After=mosquitto.service` and
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:
```bash
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`.