From b10e5fb0c14f386504b38eff80f4842daa3cf86c Mon Sep 17 00:00:00 2001
From: bol-van <none@none.none>
Date: Sat, 29 Jan 2022 17:41:42 +0300
Subject: [PATCH] readme: UDP stream notes

---
 docs/readme.eng.md |  3 +++
 docs/readme.txt    | 11 +++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/docs/readme.eng.md b/docs/readme.eng.md
index bc7ed9a..191ef1e 100644
--- a/docs/readme.eng.md
+++ b/docs/readme.eng.md
@@ -323,6 +323,9 @@ It can be fed with unidirectional or bidirectional packets.
 
 A SYN or SYN,ACK packet creates an entry in the conntrack table.
 
+First seen UDP packet creates UDP stream. It defines the stream direction. Then all packets with the same
+src_ip,src_port,dst_ip,dst_port are considered to belong to the same UDP stream. UDP stream exists till timeout.
+
 That's why iptables redirection must start with the first packet although can be cut later using connbytes filter.
 
 A connection is deleted from the table as soon as it's no more required to satisfy nfqws needs or when a timeout happens.
diff --git a/docs/readme.txt b/docs/readme.txt
index 2d6f622..f654047 100644
--- a/docs/readme.txt
+++ b/docs/readme.txt
@@ -368,11 +368,14 @@ CONNTRACK
 nfqws оснащен ограниченной реализацией слежения за состоянием tcp соединений (conntrack).
 Он включается для реализации некоторых методов противодействия DPI.
 На текущий момент это параметры --wssize и --dpi-desync-cutoff.
-conntrack способен следить за фазой соединения : SYN,ESTABLISHED,FIN , количеством пакетов в каждую сторону, sequence numbers.
-conntrack способен "кормиться" пакетами в обе или только в одну сторону.
+conntrack способен следить за фазой соединения : SYN,ESTABLISHED,FIN , количеством пакетов в каждую сторону,
+sequence numbers. conntrack способен "кормиться" пакетами в обе или только в одну сторону.
 Соединение попадает в таблицу при обнаружении пакетов с выставленными флагами SYN или SYN,ACK.
-Поэтому если необходим conntrack, в правилах перенаправления iptables соединение должно идти на nfqws с самого первого пакета,
-хотя затем может обрываться по фильтру connbytes.
+Для UDP инициатором попадания в таблицу является первый UDP пакет. Он же и определяет направление потока.
+Считается, что первый UDP пакет исходит от клиента к серверу. Далее все пакеты с совпадающими
+src_ip,src_port,dst_ip,dst_port считаются принадлежащими этому потоку до истечения времени неактивности.
+Поэтому если необходим conntrack, в правилах перенаправления iptables соединение должно идти на nfqws с самого первого
+пакета, хотя затем может обрываться по фильтру connbytes.
 conntrack - простенький, он не писался с учетом всевозможных атак на соединение, он не проверяет
 пакеты на валидность sequence numbers или чексумму. Его задача - лишь обслуживание нужд nfqws, он обычно
 кормится только исходящим трафиком, потому нечувствителен к подменам со стороны внешней сети.