Por que não consigo priorizar o tráfego TCP usando os campos ToS?

1

Estou tentando priorizar o tráfego TCP usando o campo ToS no cabeçalho IP. Estou saturando a interface (ethernet) enviando dados de 1 GB por iperf com o campo ToS configurado para 0x10 (Minimize-Delay). Em seguida, inicio outro cliente TCP com o padrão ToS (0).

Expectativa: Meu cliente TCP não deve enviar dados até que o iperf complete o envio de seus dados.

Resultado: Os dados do meu cliente são enviados até mesmo difíceis O iperf está enviando pacotes com maior prioridade.

Eu também tentei criar o mesmo cenário criando dois clientes separados e alocando ToS 0x10 e 0x08 aos respectivos clientes usando iptables. Eu usei : iptables -A PREROUTING -t mangle -p tcp --sport 5000 -j TOS --set-tos Minimizar-Atraso

Ainda não consigo priorizar um cliente em detrimento de outro.

Estou usando o Ubuntu (14.04) com o iptables versão 1.4.21

Alguém pode me ajudar a resolver o problema?

Obrigado Varun

    
por Varun 02.12.2016 / 19:49

1 resposta

1

O campo ToS é uma indicação de como priorizar ou rotear o pacote, você agora tem que especificar uma política para explicar o que você quer fazer com esses pacotes. Note que o campo ToS só será útil em sua LAN, o ISP geralmente ignora ou redefine ToS.

Como você está rodando o linux, você deve dar uma olhada no tc (controle de tráfego). (aqui está um bom começar)

Se você quer uma prioridade estritamente baseada em ToS, você tem que configurar o agendador pfifo_fast (você provavelmente tem fq_codel por padrão).

tc qdisc add dev eth0 root pfifo_fast

Embora, se você quiser mais flexibilidade, você pode querer tentar hfsc ou htb como um algoritmo classful, em seguida, fq_codel / pfifo / sfq como um algoritmo classless de folha. Você ainda poderá combinar ToS com iptables ou tc.

    
por 04.12.2016 / 11:53