Как использовать QoS на маршрутизаторе Tomato для равномерного распределения пропускной способности между компьютерами в сети?

0

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

Я использую и роутер RT-N66U под управлением прошивки Tomato r105 от http://tomato.groov.pl/download/K26RT-N/ .

Могу ли я настроить алгоритм QoS, используя tc, без перекомпиляции ядра, для равномерного распределения пропускной способности между компьютерами во внутренней сети?

В частности, я хотел бы иметь одну очередь FIFO для каждого IP-адреса во внутренней сети и обрабатывать пакеты циклически из этих очередей (чтобы в случае, если в сети был только один компьютер, он мог использовать 100% пропускной способности). , но если более активно, никто не сможет использовать все это).

Важно отметить, что доля каждого пользователя в полосе пропускания должна включать входящие и исходящие пакеты.

Похоже, что это возможно с ESFQ, но я бы хотел помочь, если кто-нибудь знает, как этого добиться.

Мейер Джейкобс
источник
2
Я думаю, вы обнаружите, что это не очень хорошо работает, независимо от того, что вы делаете. Ваш Интернет-провайдер решает, какие пакеты поставить вам на провод. Что вы будете делать, если получите нечестные пакеты? Если вы уроните их, они будут просто переданы по вашей драгоценной интернет-ссылке во второй раз. Единственная информация, которую ваш провайдер может использовать для обеспечения справедливости, - это внутренний IP-адрес соединения, и NAT скрывает это от них. Вы можете управлять исходящим трафиком, хотя.
Дэвид Шварц
Неплохо подмечено. Я действительно не думал о том, где было узкое место загрузки. Учитывая это, даже если бы я настроил обработку пакетов так, как я хочу, я бы просто закончил с одной всегда заполненной очередью, а другие более или менее пустыми, в ситуациях, когда один пользователь загружает большой файл или что-то в этом роде. сравнимый?
Мейер Джейкобс
1
Верно. Единственный хороший способ справиться с этой проблемой - отбросить (или задержать) исходящие UDP-пакеты по одному и тому же «соединению» с регулированием входящих UDP-пакетов и «изменить» исходящие TCP-пакеты (чтобы настроить объявленный размер окна) для регулирования входящего TCP. пакеты. Насколько я знаю, нет простого способа заставить Томата сделать это. Есть все виды «не ужасных» решений, но нет хороших. Если вы хотите сохранить задержку, все они требуют, чтобы вы намеренно тратили около 10% вашей входящей пропускной способности. Иначе они никогда не смогут действовать, пока не станет слишком поздно.
Дэвид Шварц
Мейер Джейкобс - Мне было бы интересно любое решение, которое вы могли бы найти. Потеря 10% входящей полосы пропускания болезненна, учитывая нашу скорость передачи, но если один пользователь даже загружает длинную страницу изображений, не говоря уже о загрузке больших файлов или, что еще хуже, торренты, всем остальным пользователям трудно получить единственную простую веб-страницу до завершения загрузки. ,
user66001