Существует широко используемый пример, касающийся PF и приоритезации пустых пакетов ACK, так что нисходящий поток асинхронных соединений не теряет производительность, если восходящий поток засорен.

Пример можно найти в разных местах, например:

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)

Я не понимаю, почему это правило работает так:

Второй параметр очереди помещает пустые ACK в приоритетную очередь. Это я получаю. Но соответствующий флаг соответствует, только если это первый пакет в соединении. Со страницы руководства 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.

Итак, как это влияет на пустые ACK? Не утверждая, что все делают это неправильно, я просто хотел бы понять механику.

1 ответ1

0

На PF, когда вы устанавливаете Keep State, вы создадите состояние для отслеживания с отслеживанием состояния, поэтому вам не нужно будет впоследствии разрешать другие пакеты, связанные с этим соединением.

Кроме того, когда вы устанавливаете очередь, она будет применяться ко всем пакетам, связанным с этим соединением, когда вы устанавливаете второй параметр очереди, она будет связывать все пакеты, которые имеют низкую задержку ToS или пакеты ACK без полезной нагрузки. очередь и не первая.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .