Назад | Перейти на главную страницу

Формирование входящего трафика

Я знаю, что могу формировать выходной трафик с помощью tc или аналогичный инструмент. Однако сейчас я хочу сформировать входной трафик - на самом деле, я хочу установить приоритет загрузки файлов определенного типа через медленное соединение с потерями.

Я знаю причину tc может только формировать выходной трафик: сам хост не имеет прямого контроля над объемом входящего трафика. С другой стороны, TCP имеет некоторые встроенные меры, которые предотвращают переполнение TCP-трафика при медленном соединении. Итак, могу ли я изменить что-то в заголовке TCP, чтобы удаленный хост подумал, что мое соединение медленнее, чем он думает?

Предположим, что я могу поставить соответствующую отметку на обоих типах соединений с iptables. Есть ли способ уменьшить входную полосу пропускания для соединений первого типа, но только при наличии соединений второго типа?

Вы имеете в виду уведомление о явной перегрузке TCP (http://en.wikipedia.org/wiki/Explicit_Congestion_Notification.) Я не думаю, что то, что вы ищете, технически возможно, поскольку к тому времени, когда пакет был получен самим сервером Linux, вы уже получили пакеты и пытаетесь настроить их постфактум. .

На самом деле, если вы хотите QOS или формирование трафика, это должно выполняться у вашего вышестоящего провайдера, а не на принимающей стороне. Другими словами, все формирование трафика выполняется на стороне источника, а не на стороне назначения.

Для этого есть очень хорошие решения, к сожалению, ни одно из них не доступно бесплатно в Linux. Задержка или отбрасывание пакетов работает очень и очень плохо. При необходимости можно, но результат в лучшем случае удовлетворительный. К тому времени, когда вы получили пакет, он уже израсходовал входящую полосу пропускания, которую вы пытаетесь защитить.

Правильный способ сделать это - исказить рекламу исходящих окон TCP, рекламируя меньшее окно на другой стороне. Существуют аппаратные и программные реализации, которые делают это, но, насколько мне известно, ни одна из них не доступна бесплатно в Linux.

это сценарий объясняет один из способов сделать это и содержит очень подробные комментарии, объясняющие теорию и ограничения.