Pelo menos o OpenSSH define diferentes bits de TOS ( 0x16
para sessões interativas, 0x08
para transferências em bloco), como discutidos no quora .
Isso pode ser facilmente explorado usando regras que correspondam a esses bits. Parece que o QoS de correspondência mais alta entra em vigor, certifique-se de não ter uma regra geral para a porta 22 / SSH: o OpenWRT por padrão envia uma regra combinando SSH e DNS juntos. Para essas regras, usei os valores de DSCP sobrepostos de 0x04
e 0x02
, conforme proposto no post de quora vinculado acima.
config classify
option target "Priority"
option ports "22"
option dscp 0x04
option comment "ssh"
config classify
option target "Bulk"
option ports "22"
option dscp 0x02
option comment "scp"
Para configurações "ipt" do iptables, estas são as regras resultantes (os argumentos -m dscp --dscp 0x04
e -m dscp --dscp 0x02
são as partes mais interessantes):
-A qos_Default_ct -p tcp -m mark --mark 0x0/0xf -m tcp -m multiport --ports 22 -m dscp --dscp 0x04 -m comment --comment ssh -j MARK --set-xmark 0x11/0xff
-A qos_Default_ct -p tcp -m mark --mark 0x0/0xf -m tcp -m multiport --ports 22 -m dscp --dscp 0x02 -m comment --comment scp -j MARK --set-xmark 0x44/0xff
Certifique-se de reiniciar a transferência do SCP após recarregar as configurações de QoS usando /etc/init.d/qos restart
. As configurações de QoS são aplicadas apenas a novos fluxos.
Antes de aplicar essas regras (com uma única regra de "prioridade" de SSH), tive um ping de cerca de 200ms durante os uploads de SCP; com a regra aplicada, ela caiu para 70-100ms (em comparação com 30ms por meio de uma linha livre).