OpenBSD: Priorizando ACKs vazios

0

Existe um exemplo muito usado sobre o PF e a priorização de pacotes ACK vazios, para que um downstream de conexões assíncronas não perca desempenho, se o upstream estiver entupido.

O exemplo pode ser encontrado em vários lugares, por exemplo:

link

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)

Eu não entendo porque essa regra funciona da seguinte maneira:

O segundo parâmetro da fila coloca ACKs vazios na fila de prioridades. Aquele que eu recebo. Mas a correspondência de sinalizador corresponde apenas se for o primeiro pacote na conexão. Na página man do 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.

Então, como isso afeta os ACKs vazios? Não alegando que todo mundo está fazendo errado, eu só gostaria de entender a mecânica.

    
por Laurel Wolf 13.07.2014 / 21:16

1 resposta

0

No PF, quando você define keep state, você cria um estado para rastreamento com monitoração de estado, portanto, não será necessário permitir outros pacotes relacionados a essa conexão posteriormente.

Além disso, quando você definir a fila, ela será aplicada a todos os pacotes relacionados a essa conexão; quando você definir o segundo parâmetro da fila, todos os pacotes com conjuntos de atraso mínimo ou pacotes ACK sem carga útil serão associados. com a segunda fila e não a primeira.

    
por 19.07.2014 / 22:19