Como discriminar entre SSH e SCP para QoS no OpenWRT (e outros sistemas)?

1

Eu carrego regularmente grandes quantidades de dados usando o SCP através da minha conexão DSL upstream, que é limitada a 1kbit / s. Embora eu realmente queira que as sessões SSH interativas tenham a prioridade mais alta, simplesmente configurar o SSH como a prioridade mais alta torna a conexão inutilizável durante os uploads do SCP.

Como posso diferenciar entre SSH e SCP para configurações de Qualidade de Serviço, especialmente em OpenWRT?

    
por Jens Erat 27.06.2015 / 01:05

1 resposta

2

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).

    
por 27.06.2015 / 01:05