O TC pode limitar a largura de banda pelo campo Qos do cabeçalho IP?

O TC pode limitar a largura de banda pelo campo Qos do cabeçalho IP?

Estamos desenvolvendo aplicativos cliente/servidor. Existem três tipos de dados de rede em nosso aplicativo de servidor: dados em tempo real, como os de vídeo/áudio, dados críticos, como os de dados de banco de dados, e dados de BestEfforts, como os de transferência de arquivos comuns.

Planejamos definir o campo QOS de cada pacote IP para indicar a qual tipo de dados dos três acima o pacote IP pertence e, em seguida, usar TC para definir diferentes taxas máximas para esses três tipos de dados.

Até onde eu sei, definir o campo qos é viável, mas me pergunto se podemos limitar a taxa de pacotes IP especificando o valor qos (o valor do campo QOS no cabeçalho IP).

Responder1

Acho que você quer dizer TOScampo de 8 bits no cabeçalho do pacote IPv4. Você já leuCOMO FAZER LARTC? Este é o guia que você definitivamente precisa ler. Resumidamente, você precisa

1) Definir QDISCseCLASSesem que o tráfego é classificado, priorizado e moldado (o tráfego de saída só pode ser moldado !!!). Em geral, qualquer pacote que precise ser enviado é enfileirado na QDISCinterface de rede.

CEIL=10
tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate ${CEIL}mbit ceil ${CEIL}mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 4mbit ceil ${CEIL}mbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 1mbit ceil ${CEIL}mbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 6mbit ceil ${CEIL}mbit prio 2
tc qdisc add dev eth0 parent 1:11 handle 110: sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10

As classes com priocampo inferior são tentadas primeiro. Portanto a classe 1:10 pode ser dedicada para pacotes que requerem, por exemplo, atraso mínimo. As classes 1:11 e 1:12 possuem SFQdisciplina de filas anexadas para garantir um compartilhamento de largura de banda mais justo.

2) Defina FILTROSpara enfileirar um pacote à direita CLASS.

tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 10 fw classid 1:10
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 11 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 12 fw classid 1:12

Isso simplesmente informa que um pacote com marca 10 vai para a classe 10 e assim por diante.

3) Defina regras de iptablesmarcar um pacote para enfileirá-lo à direitaCLASS

iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 0x10
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j MARK --set-mark 0x11
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j MARK --set-mark 0x12

Eu uso toso módulo iptables propositalmente para mostrar como você pode combinar valores específicos de TOScampo e marcá-los de acordo. Para mais informações sobre este módulo, execute

iptables -m tos --help

informação relacionada