@section Сценарии использования
@menu
-* Доступность почтового сервера время от времени: UsecaseMailRU.
-* Легковесная и быстрая замена POP3/IMAP4: UsecasePOPRU.
-* Ненадёжный/дорогой канал связи: UsecaseUnreliableRU.
-* Медленная/дорогая связь для больших объёмов данных, плохой QoS: UsecaseQoSRU.
-* Экстремальные наземные окружающие условия, нет связи: UsecaseNoLinkRU.
-* Односторонняя широковещательная связь: UsecaseBroadcastRU.
-* Спутниковые каналы связи: UsecaseSatelliteLinksRU.
-* Частные, изолированные MitM/Sybil-устойчивые сети: UsecaseF2FRU.
-* Высоко защищённые изолированные компьютеры с воздушным зазором: UsecaseAirgapRU.
-* Обход сетевой цензуры, здоровье: UsecaseCensorRU.
-* Разведка, шпионаж, тайная агентура: UsecaseSpyRU.
-* Дешёвая ночная связь: UsecaseCallerRU.
+* Доступность почтового сервера время от времени: UsecaseMailRU
+* Легковесная и быстрая замена POP3/IMAP4: UsecasePOPRU
+* Ненадёжный/дорогой канал связи: UsecaseUnreliableRU
+* Медленная/дорогая связь для больших объёмов данных, плохой QoS: UsecaseQoSRU
+* Экстремальные наземные окружающие условия, нет связи: UsecaseNoLinkRU
+* Односторонняя широковещательная связь: UsecaseBroadcastRU
+* Спутниковые каналы связи: UsecaseSatelliteLinksRU
+* Частные, изолированные MitM/Sybil-устойчивые сети: UsecaseF2FRU
+* Высоко защищённые изолированные компьютеры с воздушным зазором: UsecaseAirgapRU
+* Обход сетевой цензуры, здоровье: UsecaseCensorRU
+* Разведка, шпионаж, тайная агентура: UsecaseSpyRU
+* Дешёвая ночная связь: UsecaseCallerRU
+* Мультивещательная flooding рассылка: UsecaseMulticastRU
@end menu
@node UsecaseMailRU
пакеты и получить от него. Все прерванные передачи будут автоматически
возобновлены.
+А наличие возможности @ref{MCD, multicast обнаружения} участников сети в
+IPv6 сетях позволяет вообще не возиться с заданием сетевых адресов.
+
@node UsecaseAirgapRU
@subsection Высокозащищённые изолированные компьютеры с воздушным зазором
addr: lan
nice: MAX
onlinedeadline: 3600
- },
+ }
{
cron: "*/10 * * * *"
addr: wan
nice: PRIORITY
xx: rx
- },
+ }
{
cron: "*/1 0-7 * * *"
addr: wan
nice: BULK
onlinedeadline: 3600
maxonlinetime: 3600
- },
+ }
]
}
}
@end verbatim
+
+@node UsecaseMulticastRU
+@subsection Мультивещательная flooding рассылка
+
+Необходимо разослать одно и то же почтовое сообщение или файл многим
+участникам? Например обновления какой либо программы, списка участников
+сети или доступных файлов? Но при этом вы не соединены лично с каждым из
+них:
+
+@verbatim
+ A-------->E---->F A <-> B C E
+ / \ |\ ^ C <-> H J
+ / \ | \ | E <-> D F G
+v v v \v D <-> G
+B C D---->G J <-> K
+ / \ ^ / K <-> D G
+ / \ | /
+ v v v /
+ H J<->K<-
+@end verbatim
+
+В NNCP есть особые @ref{Multicast, мультивещательные} форматы пакетов
+позволяющие организовывать эффективную передачу одно единственного
+пакета сразу нескольким получателям (flooding алгоритм). @strong{A}
+отправляет пакет трём получателям. @strong{C} в свою очередь отсылает
+ещё двум, а @strong{E} трём. Некоторые участники сети получат несколько
+копий одного и того же пакета, как например @strong{D}, @strong{J},
+@strong{G}, @strong{F}, но копии будут просто проигнорированы. Если
+@strong{B} отошлёт пакет единственному ему известному @strong{A}, то
+этот пакет распространится по всей сети подписантов широковещательной
+зоны и дальше.
+
+Более того, мультивещательные пакеты зашифрованы и для прочтения требуют
+знание ключей. Но это не мешает их обрабатывать для дальнейшей пересылки!
+Кроме того, совершенно не обязательно знать ключи отправителя. Таким
+образом можно создать эхоконференцию для передачи файлов или команд
+(например доставки почтовых сообщений).
+
+Создаём ключи для мультивещательной зоны:
+
+@example
+$ nncp-cfgnew -area filelists -nocomments
+areas: @{
+ filelists: @{
+ id: TOU5TKOW4JBIZJBX63D4776C72FMWDAUAUSZNJX4DFOITVYQ5ZQA
+ pub: DSHL5O6BK2R3QKJAIJ7BC4UIGE73EC2LJPOV3VTS44KYOTUQYZLA
+ prv: AYD5FAA4GDDSAD5N65NJLLFS6TG2NSPQ46KAQO5U722JLVG34SOQ
+ @}
+@}
+@end example
+
+и отправляем ключевую пару всем кто может и хочет читать данную зону.
+Посредникам, готовым участвовать в переотправке пакетов подписантам, но
+которым не стоит "читать" пакеты, достаточно отправить только
+идентификатор зоны. Например @strong{A} добавляет себе в конфигурацию:
+
+@example
+areas: @{
+ filelists: @{
+ id: TOU...
+ pub: DSH...
+ prv: AYD...
+ subs: ["B", "C", "E"]
+ incoming: /home/A/areas/filelists
+ @}
+@end example
+
+а @strong{E}, являющимся (как было решено) просто посредником:
+
+@example
+areas: @{
+ filelists: @{
+ id: TOU...
+ subs: ["D", "F", "G"]
+ @}
+@end example
+
+После распространения знания о @code{filelists} мультивещательной зоне
+можно обмениваться @ref{FreqIndex, списками файлов}:
+
+@example
+$ nncp-file tree-of-A-20210715.txt.zst area:filelists:
+$ nncp-toss -node self
+@end example