Files
Pluto-SDR/docs/COMPARISON.md
Maxim 7f508b6fd7
All checks were successful
01-smoke / smoke (push) Successful in 0s
02-guardrails / guardrails (push) Successful in 0s
03-gftest / gftest (push) Successful in 6s
04-cross-build / cross-build (push) Successful in 3s
Доработка документации
2026-07-17 10:16:10 +03:00

154 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# COMPARISON.md — pluto-link vs коммерческие MANET-радио (Silvus SC4200EP, Sinosun MIMOMesh)
Дата: 2026-07-15. Сравнение измеренных характеристик pluto-link (README.md,
BENCHMARK.md) с публичными данными двух коммерческих COFDM-радио. Данные
pluto-link — из фактических прогонов на плате (§12 README, docs/BENCHMARK.md).
Данные конкурентов — маркетинговые материалы вендоров, без независимой
верификации.
Источники:
- Silvus Technologies, StreamCaster 4200 Enhanced Plus:
https://silvustechnologies.com/products/streamcaster-4200-enhanced-plus/
- Sinosun, Data Radio MIMOMesh (multiple handheld series):
https://www.sinosunmesh.com/quality-43320224-data-radio-mimomesh-wireless-mesh-data-link-multiple-handheld-series
## 1. Почему именно эти два продукта
Sinosun MIMOMesh построен на **AD936x + Zynq (7Z020/7Z030/7Z035/7Z100)**
той же паре чипов, что и Pluto+ (README §1: Zynq-7020, AD9361). По сути это
серийное изделие на буквально той же платформе, что и наш прототип, только
модем вынесен из ARM в программируемую логику (PL) того же Zynq. Silvus —
не совпадает по платформе, но того же класса (тактический MANET COFDM) и
задаёт верхнюю планку рынка.
## 2. Сводная таблица
| Параметр | pluto-link (измерено) | Sinosun MIMOMesh | Silvus SC4200EP |
|---|---|---|---|
| Платформа | AD9361 + Zynq-7020, **PHY на ARM Cortex-A9** (liquid-dsp, софт) | AD936x + Zynq 7Z020…7Z100, **PHY в FPGA (PL)** | проприетарная, не раскрыта |
| Waveform | OFDM M=64/CP=16, **QPSK фиксированная** | TD-COFDM, адаптивная BPSK…1024QAM | MN-MIMO COFDM, адаптивная |
| Полоса | 1.5 МГц (rate 1.92 MSPS — потолок ARM-синхронизатора, README §2) | 1.2580 МГц | 1.2520 МГц |
| Goodput | **~120 КБ/с ≈ 0.96 Мбит/с** (`-p 3000`, §12.6); ~95 КБ/с лосслесс с group-FEC (`-p 4000`, §12.7) | 170 Мбит/с @20 МГц … до 350 Мбит/с @80 МГц | не публикуется |
| MIMO | SISO (софт); AD9361 физически 2R2T, канал не задействован | 2×2, space-time coding + TX/RX beamforming | 2×2, eigen-beamforming |
| Топология | точка-точка, **симплекс** | MANET, 256+ узлов, multi-hop | MANET, до 559 узлов |
| Дуплекс | нет (FDD 868/915 — roadmap §10 п.7) | TDD | TDD, single-frequency |
| Надёжность/FEC | RS(255,223) внутрикадрово + **group-FEC 16+2** (эрейжер, GF(256), overhead 12.5%), измеренный PER 0.260.36%, 10 МБ соук байт-в-байт (§12.7) | адаптивная модуляция под канал (заявлено) | адаптивная модуляция под канал (заявлено) |
| ARQ | ✅ есть на FDD (селективный ретрансмит по NACK + END/COMPLETE, §12.9, техдолг #6 закрыт); на симплексе — group-FEC без обратного канала, ARQ там недоступен принципиально | есть (MAC-уровень) | есть (MAC-уровень) |
| Латентность | не нормируется отдельно; эфир кадра 5.33 мс + пауза TX 34 мс (§12.6/12.7) | ~6 мс/хоп (заявлено) | ~7 мс/хоп (заявлено) |
| TX-мощность | AD9361 без внешнего УМ, рабочая точка gain 20 дБ (единицы мВт на разъёме, §12.4) | 2×2 / 4×2 / 5×2 Вт | до 10 Вт (20 Вт эфф. с beamforming) |
| Диапазон | 915 МГц (тест); AD9361 tunable 70 МГц6 ГГц, но без фильтров/УМ под конкретный банд | заказные банды 225 МГц 5.85 ГГц | dual-band, конкретные частоты не раскрыты |
| Шифрование | нет; в заголовке кадра зарезервирован байт флагов, формат допускает AEAD +16 Б/кадр (README §10 п.6, техдолг-примечание) | AES-128/256, DES, опционально SM4/SNOW3G/ZUC | AES-256, FIPS 140-3 Level 2 |
| Сертификация | нет (прототип ОКР «R-Link») | не указана в источнике | Blue UAS, NDAA/DoD cybersecurity |
| Цена | ~$200250 за плату (2 шт. для линка) | $34504050/шт. | не публикуется (класс рынка — от $10k+) |
## 3. Где pluto-link уже сопоставим
- Работающий COFDM-линк на том же трансивере (AD9361), что и Sinosun.
- Все характеристики — **измеренные**, а не заявленные: PER, EVM, throughput,
предел CPU сняты прогонами на плате (docs/BENCHMARK.md, README §12), а не
взяты из datasheet.
- **Групповой стирающий FEC 16+2 без обратного канала** (README §10 п.6,
§12.7) — у обоих конкурентов эквивалентный слой не описан в публичных
материалах; они полагаются на ARQ поверх MAC, что требует дуплекса.
У pluto-link это единственный механизм, спасающий целостность на симплексе.
- Подтверждённый лосслесс: 10 МБ байт-в-байт на `-p 4000` (§12.7) — не
демо-цифра, а воспроизводимый соук-тест.
- GF(256)-кодек самопроверен формальным тестом (`make gftest`,
774 400 кейсов, 0 ошибок) — уровень верификации, обычно не публикуемый
вендорами вообще.
- Цена железа на 12 порядка ниже при сопоставимом чипсете.
## 4. Разрыв и его причина
Главная развилка — **PHY на ARM (софт) vs PHY в FPGA**. Наши же измерения
это объясняют: синхронизатор liquid на Cortex-A9 тянет **1.65 Msps на
сплошном потоке** — это 0.86× от целевых 1.92 MSPS (BENCHMARK.md,
«пересмотр 14-07», README §12.5), то есть одно ядро 667 МГц — это и есть
потолок пропускной способности порядка ~1.5 Мбит/с. У Sinosun тот же
Zynq-7020 выдаёт 70 Мбит/с при 20 МГц полосы, потому что модем реализован
в программируемой логике, а ARM в их изделии занят только управлением и
MAC — ровно то разделение труда, которое мы не можем себе позволить без
переноса PHY в PL.
Второй разрыв — RF-обвязка: у нас голый AD9361 без внешнего усилителя
мощности, фильтров под конкретный диапазон и диплексера для полного
дуплекса; у конкурентов это Вт-класса УМ + LNA + TDD-свитчинг.
Третий — MAC/сетевой уровень: TDD-слоттинг, mesh-маршрутизация на 250+
узлов, ARQ. У pluto-link это точка-точка без MAC вообще.
## 5. Горизонт 1 — потолок Pluto+ как есть (без нового железа)
Софтовые шаги в рамках текущего roadmap (README §10):
- **п.7 FDD 868/915 + ARQ** — закрывает «молчаливые дыры» техдолга #6,
даёт двусторонность. В сочетании с уже реализованным group-FEC получается
гибрид (стирающий FEC + ARQ по обратному каналу), которого по отдельности
ни у одного конкурента в описании нет — у них это либо ARQ, либо ничего.
- **п.8 UDP-туннель + web-настройка** — паритет по «IP-прозрачности» с
Ethernet-мостом конкурентов.
- **п.9 видео raw UDP ≤1472 Б** — тот же сценарий использования, что у
конкурентов декларируется как основной (потоковое видео).
- **Адаптивная модуляция QPSK↔16QAM** по телеметрии EVM/RSSI, которая уже
снимается (§12.4) — дешёвый шаг к «auto link adaptation» уровня
конкурентов; перед внедрением обязателен прогон `ofdm_bench` (правило
CLAUDE.md №6/README §5.6, PHY-параметры меняются).
- **M=32/CP=8** — единственный обнаруженный резерв поднять предел
синхронизатора выше 1.65 Msps (BENCHMARK.md, «неисследованные резервы»);
требует нового бенчмарка перед принятием.
- **2R2T Pluto+**: второй RX/TX-канал AD9361 физически присутствует и не
используется. Реалистичная цель на ARM — RX-diversity (не полноценный
2×2 MIMO с пространственным мультиплексированием — MRC/STC на ARM в
реальном времени, скорее всего, не влезает в оставшийся бюджет CPU;
требует отдельного ofdm_bench-прогона, прежде чем закладывать в план).
- AEAD-резерв под шифрование уже заложен в формате кадра (byte 11) —
реализация зависит от требования ОКР.
**Честный потолок горизонта 1**: порядок ~1.5 Мбит/с, точка-точка (2 узла),
симплекс/FDD-полудуплекс, TX-мощность в единицах мВт без внешнего УМ.
Mesh на ARM-PHY недостижим — нет свободного CPU одновременно на
многопоточный синхронизатор и MAC-маршрутизацию.
## 6. Горизонт 2 — что нужно для класса Sinosun ($3.54k/шт.)
- **Перенос модема в PL Zynq** (HLS или RTL OFDM-модем) — главный и самый
трудоёмкий шаг; именно это меняет потолок с 1.92 MSPS/ARM на 2080 МГц
полосы. По объёму разработки это ядро того, что стоит за продуктом
Sinosun — не спринт, а отдельная многомесячная инженерная программа.
- **RF-тракт**: усилитель мощности 210 Вт, LNA, фильтры под целевой
диапазон, TDD-переключение приём/передача.
- **MIMO 2×2**: пространственное кодирование/beamforming в FPGA (на ARM
нереалистично при текущем бюджете CPU).
- **MAC-уровень**: TDD-слоттинг, mesh-маршрутизация, multi-hop, ARQ —
сетевой стек, которого у pluto-link сейчас нет вообще (точка-точка).
- **Регуляторика/сертификация**: диапазоны 868/915 в нашем регионе уже
выявленное ограничение (docs/NOTES.md — 868 SRD, 915 не свободен в ETSI);
для заказных вендорских бандов (как у Sinosun) нужен отдельный частотный
допуск.
**Позиционирование**: pluto-link на этом этапе — верифицированный прототип
waveform-а, формата кадра и FEC-стека (group-FEC 16+2, CRC-поверх-RS) с
воспроизводимой методикой измерений. Путь к изделию уровня Sinosun — это
миграция PHY с ARM на FPGA того же Zynq с сохранением формата кадра и
group-FEC слоя, а не переписывание протокола с нуля.
## 7. Приоритеты (рекомендация)
1.**Завершить §10 п.7** (FDD + ARQ) — **выполнено 2026-07-16** (README §12.9,
техдолг #6 закрыт на FDD). Полная приёмочная матрица пройдена на железе:
гибрид group-FEC+ARQ на 10 МБ вытягивает 51/51 потерю всего 6 ретрансмитами
(паритет закрывает 45 из них немедленно, без обратного канала) — то самое
сочетание «стирающий FEC + ARQ», которого по отдельности нет ни у одного
конкурента в §2. На симплексе (без обратного канала) техдолг закрыт
group-FEC-ом, ARQ там принципиально недоступен — так и задумано.
2. Адаптивная модуляция (QPSK↔16QAM) — измеримый шаг к паритету по
«auto link adaptation» с минимальными изменениями кода.
3.**§10 п.8** (UDP-туннель) — **выполнено 2026-07-17** (README §12.10).
Переводит pluto-link из «демо передачи файла» в «сетевой линк», ближе к
тому, как позиционируются оба конкурента. `udp_gw` — record-слой поверх
существующего байтового потока, ядро тракта не изменено ни строкой.
Радио-смоук на антеннах (два прогона): md5 == байт-в-байт, 0 дропов/
ресинков/дыр. Web-настройка (хвост п.8) осталась нереализованной.
4. Решение о горизонте 2 (перенос PHY в FPGA) принимать по факту завершения
пп. 79 roadmap — раньше данных для оценки трудоёмкости недостаточно.