LINUX.ORG.RU
решено ФорумAdmin

вопрос по шейпингу траффика


0

0

домашняя сеть, выход в интернет через достаточно старую железку D-link (трогать ее не хочется, менять тоже, внутри линукс , но возможностей по шейпингу траффика там нет)
железка обладает неприятным свойством что приоритет траффика перехватывается соединением которое первым все себе возьмет, в итоге если идет закачка чего-то большого - то для всего остального интернет пропадает, даже DNS пакеты могут не проходить

как workaround стоит wondershaper
скрипт - http://pastebin.ca/1515405
обеспечивает достаточно удовлетворительные 950 Kb downstream, ~80-85 Kb upstream

собственно вопрос - как туда добавить исключение на маску домашней сети 192.168.1.0/24 , чтобы полностью убрать ограничение траффика для нее.
вопрос второй - может быть есть варианты лучше чем wondershaper ?

в компьютерах по одной сетевой карте, либо wlan0 либо eth0, прошивку в роутере я менять не хочу, менять его на что-то другое пока тоже не получится, вариант наверное только в том чтобы формировать очередь пакетов локально до роутера.

заранее спасибо за ответы.

★★★★★

>исключение на маску домашней сети 192.168.1.0/24 , чтобы полностью убрать ограничение траффика для нее.

внутренний траффик, между компьютерами локальной сети

Sylvia ★★★★★
() автор топика

>вопрос - как туда добавить исключение на маску домашней сети 192.168.1.0/24 , чтобы полностью убрать ограничение траффика для нее. 

Могу ошибаться (в шейпинге я пока не джедай)

 # start filters
+# Localnet - maximum priority
+tc filter add dev $DEV parent 1: protocol ip prio 9 u32 match ip src 192.168.1.0/24 flowid 1:10
+
 # TOS Minimum Delay (ssh, NOT scp) in 1:10:

Правда, тогда не понятно, чей же трафик режется? Самого хоста?

>вопрос второй - может быть есть варианты лучше чем wondershaper ? 

Могу посоветовать только то, что уже много лет лень сделать самому - сесть, вдумчиво вкурить маны и написать то, что нужно именно в твоем случае :)

nnz ★★★★
()

>внутри линукс , но возможностей по шейпингу траффика там нет

>как workaround стоит wondershaper

Где стоит этот самый wondershaper?

mky ★★★★★
()
Ответ на: комментарий от nnz

Это все равно обрежет локальный трафик до скорости $UPLINK. Нужно создать ещё один класс у которого rate == bandwidth и отправлять туда локальный трафик. И аналогично создать "ingress policer" на скорость локалки, хотя лучше использовать IFB или IMQ.

mky ★★★★★
()
Ответ на: комментарий от mky

>Это все равно обрежет локальный трафик до скорости $UPLINK.

Имхо лучше самостоятельно обрезать себе трафик с запасом в 5-10%, а не оставлять это шейперу прова. Тогда пропускная полоса будет использоваться наиболее эффективно. Так меня учили. Уже не помню, как это аргументировали, но помню, аргументация была убедительна :)

>И аналогично создать "ingress policer"


А еще меня учили, что шейпить входящий трафик - все равно что вытягивать себя из болота за волосы. Он уже занял ваш канал - еще перед тем, как попал на ваш шейпер. Поэтому без машины времени ничего сделать нельзя :) А IMQ имхо корявый костыль.

nnz ★★★★
()
Ответ на: комментарий от mky

А, кажется начал понимать. Общего шлюза нет, и такой шейпер стоит на каждом компе? Но это же безумие! Каждый комп может забить полосу на свои 10 Мбит, и получится хохлосрач!

А для добавления исключения по локалке тогда всю схему перелопачивать надо, начиная с корня зла
tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit
Расширить его до 100 мбит, а его роль (ограничитель внешнего трафика) перекинуть на дочерний класс 1:2. 100mbit повесить на другой дочерний класс 1:1 (класс локального трафика) и завернуть туда локальный трафик через filter u32 match ip src/dst, а тот класс, который там сейчас обозначен 1:1, переименовать, скажем, в 1:5 и прописать как дочерний от 1:2.

В общем, проще написать с нуля :)
Но с чего надо прежде всего начать - с установки нормального шлюза. Имхо, от такого тупого роутера, как у тебя, толку ноль - это просто свич с завышенным ЧСВ :D Нужен либо вменяемый роутер, либо старая железяка в качестве реального шлюза + свич.

И у меня, и у большинства моих друзей и коллег домашняя сеть организована именно так: модем -> шлюз (отслуживший свое десктоп) -> свич -> рабочие компы.

nnz ★★★★
()
Ответ на: комментарий от mky

>Где стоит этот самый wondershaper?

на каждом из хостов локалки, на железку, которая именуется "роутер" его не возрузить ну никак

>Нужно создать ещё один класс у которого rate == bandwidth и отправлять туда локальный трафик. И аналогично создать "ingress policer" на скорость локалки, хотя лучше использовать IFB или IMQ.


еще бы написали как бы это все выразилось в скрипте ;)

Sylvia ★★★★★
() автор топика
Ответ на: комментарий от nnz

шейпер провайдера теперь мало эффективен,
линия ADSL, параметры 7.5 Mbit downstream / 0.6 Mbit upstream
тарифная скорость гораздо выше, до тех пор пока она была ниже - проблема не стояла, а теперь по сути узким местом стала линия и к сожалению тут уже никаких настроек ее параметров не сделать, если поставить выше - будет кидаться.


>А еще меня учили, что шейпить входящий трафик - все равно что вытягивать себя из болота за волосы. Он уже занял ваш канал - еще перед тем, как попал на ваш шейпер.


а что еще остается ? де-факто wshaper работает, достаточно комфортно можно что-то и скачивать и странички смотреть, все честно делится пропорционально числу соединений, все что нужно - добавить исключение чтобы компы локалки между собой обменивались траффиком вне ограничений шейпера.

>Общего шлюза нет

есть, но он очень тупой и нормальную очередь не выстраивает, при этом сама прошивка роутера мало функциональна и не позволяет что-либо сделать по этому поводу, да там linux 2.4 , там есть iptables c минимумом модулей , но нет tc

>такой шейпер стоит на каждом компе


да, а что еще остается? ставить еще железку? Этим конечно все рано или поздно кончится, но пока лучше без этого, на это есть свои причины.

>получится хохлосрач

ну со своими компами я уж сама разберусь как-нибудь

>В общем, проще написать с нуля

боюсь что при моем понимании дисциплин , классов и прочего я в этом не разберусь

> толку ноль - это просто свич с завышенным ЧСВ

я о том же, его дело ADSL, NAT а траффиком он управлять ну никак не умеет

>шлюз (отслуживший свое десктоп)

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


Sylvia ★★★★★
() автор топика
Ответ на: комментарий от Sylvia

ИМХО Самый простой и наиболее рациональный вариант - все-таки тронуть железку (а что за железка то хоть кстати?) Залей туда DD-WRT. У меня например она на ASUS WL-520CG.(фирменная прошивка - убога по сравнению с ней) И это будет проще в итоге и менее БСДМно чем ставить еще одну железку тем самым усложнив все , рискуя приобрести кучу новых проблемм .

ss85
()
Ответ на: комментарий от ss85

если бы он был "простой" вариант
не поддерживается DD-WRT
OpenWRT - WIP, untested, и огромный список проблем


Sylvia ★★★★★
() автор топика
Ответ на: комментарий от Sylvia

Ну, допустим так: 
(можно добавить в конец скрипта, а можно раскидать по логическим блокам в скрипте)


tc class add dev $DEV parent 1: classid 1:2 cbq rate 10mbit \
    allot 3000 prio 8 bounded isolated

tc filter add dev $DEV parent 1: protocol ip prio 5 u32 \
   match ip dst 192.168.1.0/24 flowid 1:2

tc filter add dev $DEV parent ffff: protocol ip prio 5 u32 \
match ip src 192.168.1.0/24 police rate 10mbit burst 10k drop flowid :1

P.S. Надеюсь, что "bandwidth 10mbit" у вас выставлен правильно,
этот параметр должен быть равен скорости среды передачи данных
(10 или 100 Мбит или сколько там wi-fi).

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.