Незамеченным прошло (http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/netinet/ip_dum...) добавление патчей в MAIN-ветку разработки FreeBSD, изменяющих поведение dummynet.
Ранее, при задании с помощью dummynet пропускной способности канала, он не только ограничивал скорость, но и вносил временные задержки в каждый пакет, проходящий через него, с целью эмуляции заданного канала.
В реальности гораздо более востребован режим, когда ограничивается лишь скорость, но не вводится никаких временных задержек.
И вот 6 и 17 ноября 2007 года в dummynet внесены необходимые изменения. В текущей реализации все пакеты, которые "помещаются" в заданный канал, просто пропускаются мимо dummynet, что даёт сразу несколько преимуществ:
- Уменьшает задержки
- Уменьшает избыточность и за счёт этого - загрузку
- Уменьшает вероятность наступления рекурсии (например, в этом случае):
kldload dummynet
sysctl net.inet.ip.fw.one_pass=0
ipfw pipe 1 config bw 0
for i in `jot 30`; do ipfw add 1 pipe 1 icmp from any to any; done
ping -c 1 localhostСоответственно, появились новые переменные:
- net.inet.ip.dummynet.io_fast - задаёт старое("0", эмуляция канала) или новое поведение dummynet("1", шейпирование канала)
- net.inet.ip.dummynet.io_pkt - пакетов, прошедших через dummynet
- net.inet.ip.dummynet.io_pkt_fast - пакетов, пропущенных мимо dummynet
- net.inet.ip.dummynet.io_pkt_drop - пакетов, отброшенных dummynetURL: http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/netinet/ip_dum...
Новость: http://www.opennet.me/opennews/art.shtml?num=14823
Приятная фишка, вот бы ещё с PF-ом подружили бы dummynet, цены бы не было им...:)
Дык были патчи. http://lists.freebsd.org/pipermail/freebsd-pf/2007-October/0...
Тестируй отписывайся
> Дык были патчи. http://lists.freebsd.org/pipermail/freebsd-pf/2007-October/0...
> Тестируй отписывайсяСпасибо, попробую...:)
действительно, прошлоо незамеченным. а кто знает, в FreeBSD 7.0-Release это уже есть по умолчанию или тоже надо патчить?
судя по отсутствию net.inet.ip.dummynet.io наверное нет
гм, а не пробовали сделать
# kldload dummynet
А вы? :)
# kldload dummynet
kldload: can't load dummynet: File exists=)
Чего-то гонят - в dummnynet всегда можно было задать задержку 0 ms !
AFAIK, пакет, попавший в правило шейпинга, помещался в очередь и отправлялся только при просмотре очередей, т.е. HZ раз в секунду. Средняя задержка была 1/(2*HZ).
Сначала прочитал как "ХЗ раз в секунду". ;-)
>AFAIK, пакет, попавший в правило шейпинга, помещался в очередь и отправлялся только
>при просмотре очередей, т.е. HZ раз в секунду. Средняя задержка была
>1/(2*HZ).Ну хорошо.
Для dummynet рекомендуется HZ=1000
И задержка становится совсем маленькой.
Или у всех внешний канал в Internet работает на полной скорости в >=10 Mbit/sec ?
Сомнительно.Самое главное - если dummynet выполняет ограничение скорости,
то как собственно реализуется это ограничение скорости ?
Да так и релизуется - пакеты ставятся в очередь - то есть пакет может получить (и получает) задержку ...Вообщем IMHO это улучшение имеет смысл только при высоких скоростях >1Mbit/sec - скажем в локальной сети или на магистрали.
Что считаете?
Каждому пакету рассчитывалась временнАя задержка, соответствующая эмулируемому каналу.
Не понял, что-то не вижу этого ни в 6.3, ни в 7.0. dummynet подгружен.
В смысле я хотел сказать, что почему не видно этого в 6.3. и 7.0 если "И вот 6 и 17 ноября 2007 года в dummynet внесены необходимые изменения."? Они же вышли гораздо позже этой даты.
Слабо по ссылке сходить? MFC не было.
наряду с патчем позволяющим крутить думминет из пф начинается казаться что жизнь налаживается ^_^ ещё бы мультипас таблицы.. ))хотя, по-хорошему, конечно, хочется порт HTB на pf :)
пс: надо скорее бежать тестить :)
Объясните пожалуйста как пропачить этот dummynet, ни как не догоняю как это сделать.Буду очень признателен!
Скачиваете предлагаемый патч, затем накладываете его и пересобираете ядро.
Как-то так.
там не пач а .с файл, пробовал менять оригинал на этот, при компиляций ядра выдаёт ошибку
помогите разобраться
mkdir /src_backup
mv /usr/src/sys/net/if_bridge.c /src_backup
mv /usr/src/sys/net/if_bridgevar.h /src_backup
mv /usr/src/sys/net/if_ethersubr.c /src_backup
mv /usr/src/sys/netinet/ip_dummynet.c /src_backup
mv /usr/src/sys/netinet/ip_dummynet.h /src_backup
mv /usr/src/sys/netinet/ip_fw_pfil.c /src_backupfetch -o /usr/src/sys/net/if_bridge.c "http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/net...
fetch -o /usr/src/sys/net/if_bridgevar.h "http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/net...
fetch -o /usr/src/sys/net/if_ethersubr.c "http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/net...
fetch -o /usr/src/sys/netinet/ip_dummynet.c "http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/net...
fetch -o /usr/src/sys/netinet/ip_dummynet.h "http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/net...
fetch -o /usr/src/sys/netinet/ip_fw_pfil.c "http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/net...
Удалить из /usr/src/sys/net/if_bridge.c, 33 строка, "IFCAP_TOE|"
Ссылки в предыдущем сообщении покоцались, вместо
fetch -o ... "http...
нужно будет повставлять нормальные ссылки и закрыть двойную кавычку. Сорри, если обидел таким подробным объяснением :)