OpenBSD: Nadawanie priorytetów pustym ACK

0

Istnieje dziki przykład dotyczący PF i nadawania priorytetu pustym pakietom ACK, tak że downstream połączenia asynchronicznego nie traci wydajności, jeśli upstream jest zatkany.

Przykład można znaleźć w różnych miejscach, np .:

http://www.benzedrine.cx/ackpri.html

pass out on $ext_if proto tcp from $ext_if to any flags S/SA \
        keep state queue (q_def, q_pri)

pass in  on $ext_if proto tcp from any to $ext_if flags S/SA \
        keep state queue (q_def, q_pri)

Nie rozumiem, dlaczego ta zasada działa tak, jak ona:

Drugi parametr kolejki umieszcza puste ACK w kolejce priorytetów. Ten dostaję. Dopasowanie flagi pasuje jednak tylko wtedy, gdy jest to pierwszy pakiet w połączeniu. Ze strony man pf.conf:

Because flags S/SA is applied by default (unless no state is
specified), only the initial SYN packet of a TCP handshake will
create a state for a TCP connection.

Jak to wpływa na puste ACK? Nie twierdząc, że wszyscy robią to źle, po prostu chciałbym zrozumieć mechanikę.

Laurel Wolf
źródło

Odpowiedzi:

0

Na PF, gdy ustawisz stan, utworzysz stan do śledzenia stanu, więc nie będziesz musiał później zezwalać na inne pakiety związane z tym połączeniem.

Ponadto, gdy ustawisz kolejkę, będzie ona stosowana do wszystkich pakietów związanych z tym połączeniem, gdy ustawisz drugi parametr kolejki, spowoduje to, że wszystkie pakiety, które mają ustawione opóźnienia ToS lub pakiety ACK bez ładunku, będą powiązane z drugim kolejka, a nie pierwsza.

denisvm
źródło