Почему я не могу установить приоритет TCP-трафика с помощью полей ToS?

I am trying to prioritize TCP traffic using ToS field in IP header. I am saturating the interface(ethernet) by sending 1GB data through iperf with ToS field set to 0x10 (Minimize-Delay). I then start another TCP client with default ToS (0).

Expectation : My TCP client should not send data till iperf completes sending its data.

Result: The data from my client is sent even tough iperf is sending packets with higher priority.

I also tried to create the same scenario by creating 2 separate clients and allocating 0x10 and 0x08 ToS to respective clients using iptables. I used : iptables -A PREROUTING -t mangle -p tcp --sport 5000 -j TOS --set-tos Minimize-Delay

Я все еще не могу установить приоритет одного клиента над другим.

Я использую Ubuntu (14.04) с iptables версии 1.4.21

Может ли кто-нибудь помочь мне решить проблему?

Спасибо Varun

1
задан 2 December 2016 в 20:49
1 ответ

Поле ToS указывает, как расставлять приоритеты или маршрутизировать пакет, теперь вам нужно указать политику, чтобы объяснить, что вы хотите что делать с этими пакетами. Обратите внимание, что поле ToS будет полезно только в вашей локальной сети, провайдер обычно игнорирует или сбрасывает ToS.

Поскольку вы используете Linux, вам следует взглянуть на tc (управление трафиком). (вот хорошее начало )

Если вам нужен строгий приоритет на основе ToS, вы должны установить планировщик pfifo_fast (у вас, вероятно, есть fq_codel по умолчанию).

tc qdisc add dev eth0 root pfifo_fast

Хотя, если вам нужна большая гибкость , вы можете попробовать hfsc или htb в качестве классного алгоритма, а затем fq_codel / pfifo / sfq в качестве бесклассового алгоритма. Вы по-прежнему сможете сопоставить ToS с iptables или tc.

1
ответ дан 3 December 2019 в 23:37

Теги

Похожие вопросы