diff --git a/AGENTS.md b/AGENTS.md index 1d9d4152..a2ebd89d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -478,6 +478,7 @@ UASYNC/LL_QUEUE/MEMORY/TIMING объединены в SYS, NORMALIZER/BBR — в - `timeout_heap.c/h` - Min-heap for timer management (used by u_async) - `mem.c/h` - Memory wrappers with leak tracking (`u_malloc`/`u_free`/`u_calloc`/`u_strdup`) - `serialize.c/h` - Binary serialization utilities +- `reed_solomon.c/h` - Кодирование и восстановление пачки данных Рида—Соломона с настраиваемым числом субблоков и избыточностью - `swm_min.c/h` - Sliding window minimum (for RTT min tracking) - `getmyip.c/h` - Локальный IP, который ОС выберет для UDP к заданному адресу (bind/connect/getsockname) - `myip.c` - My IP helper (no header) diff --git a/doc/.#stream.txt b/doc/.#stream.txt new file mode 120000 index 00000000..58b91339 --- /dev/null +++ b/doc/.#stream.txt @@ -0,0 +1 @@ +user@user-maibookpseries.1345709 \ No newline at end of file diff --git a/doc/stream.txt b/doc/stream.txt index 6f8db257..3705230a 100644 --- a/doc/stream.txt +++ b/doc/stream.txt @@ -1,10 +1,20 @@ Модуль стриминга. Архитектурные нюансы. +главная цель: узлы ищут более оптимальные пути доставки контента от источника до себя. +этап 1. - реализуем в utun отдельным каталогом: src/stream +- источников стриминга может быть несколько в группе. для каждого источника в группе создается свой экземпляр. В этом экземпляре: + - отдельные списки хендлов подключений (ncd) для стриминга. + - узлы откуда берем трафик + - узлы куда отдаём трафик + + +формат передачи: + Источник формирует несколько потоков с разным битрейтом (до 3х штук). + + + +Надо учитывать что узлы могут быть перегружены трафиком. 2 сигнала перегрузки: очередь отправки и поток uasync Не справляется с нагрузкой (uasync thread load). -- создаем отдельные списки подключений (ncd) для стриминга. -главная цель: узлы ищут более оптимальные пути доставки контента от источника до себя. -Надо учитывать что узлы могут быть перегружены трафиком. 2 сигнала перегрузки: очередь отправки и поток uasync Не справляется с нагрузкой. -надо сделать замер нагрузки на uasync. - узлы учавствующие в стриминге анонсируют себя аналогично как сделано в рации. У модуля свой фоновый опросчик связности и поиска хороших линков - он пробует связь с узлами стриминна кроме мобильных, и обновляет их rtt и флаг прямой доступности.