У меня есть встроенное приложение, которое соответствует этому требованию: один исходящий сетевой поток TCP должен иметь абсолютный наивысший приоритет над всем остальным исходящим сетевым трафиком.Если есть какие-либо пакеты, ожидающие передачи в этом потоке, они должны быть следующими отправленными пакетами.Период.
Мой показатель успеха выглядит следующим образом: Измерьте задержку с высоким приоритетом при отсутствии фонового трафика.Добавьте фоновый трафик и измерьте снова.Разница в задержке должна заключаться во времени отправки одного пакета с низким приоритетом.При соединении со скоростью 100 Мбит / с mtu = 1500, это примерно 150 долларов США.Моя тестовая система имеет два linux-бокса, соединенных перекрестным кабелем.
Я перепробовал много, много вещей, и хотя я значительно улучшил задержку, я не достиг цели (в настоящее время я вижу добавочную задержку 5 мс сфоновый трафик).Я уже опубликовал другой, очень специфический вопрос, но подумал, что мне следует начать с общего вопроса.
Первый вопрос: возможно ли это в Linux?Второй вопрос: Если да, что мне нужно сделать?
- tc?
- Какой qdisc мне следует использовать?
- Настроить параметры сети ядра?Какие из них?
- Что еще мне не хватает?
Спасибо за вашу помощь!
Эрик
Обновление от 04.10.2010:Я настроил tcpdump как на стороне передачи, так и на стороне приема.Вот что я вижу на передающей стороне (где вещи кажутся перегруженными):
0 us Send SCP (low priority) packet, length 25208
200 us Send High priority packet, length 512
На приемной стороне я вижу:
~ 100 us Receive SCP packet, length 548
170 us Receive SCP packet, length 548
180 us Send SCP ack
240 us Receive SCP packet, length 548
... (Repeated a bunch of times)
2515 us Receive high priority packet, length 512
Проблема, кажется, заключается вдлина пакета SCP (25208 байт).Это разбито на несколько пакетов на основе mtu (который я установил на 600 для этого теста).Тем не менее, это устраивает на более низком сетевом уровне, чем управление трафиком, и, таким образом, моя задержка определяется максимальным размером передаваемого пакета tcp, а не mtu!Arghhh ..
Кто-нибудь знает хороший способ установить максимальный размер пакета по умолчанию для TCP в Linux?