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

Есть ли инструмент ограничения скорости для Linux, который может ограничивать скорость для каждого процесса или сокета?

Я нашел tc, который позволяет фильтровать по ip, порту и т.д., а затем ограничивать скорость. Но мне было интересно, есть ли что-нибудь, что может фильтровать по приложению или ограничивать скорость с учетом сокета другого процесса ...

Спасибо!

хорошо похоже

Я могу использовать каналы lsof -iTCP и ipfw ... интересно, насколько это эффективно ...

lsof -iTCP: http://danielmiessler.com/study/lsof/

ipfw: http://www.macgeekery.com/hacks/software/traffic_shaping_in_mac_os_x

ipfw в C: http://psb.sbras.ru/cgi-bin/www/unix_help/unix-man?ipfw+4

с ограничением скорости (dummynet): http://www.opensource.apple.com/source/network_cmds/network_cmds-115.2/ipfw.tproj/ipfw.c

Netfilter (iptables) имеет owner (а также socket, если вы хотите использовать этот) модуль. С его помощью вы можете применять стандартные правила брандмауэра, если идентификатор пользователя или идентификатор группы совпадает, и, при необходимости, совпадать, если пакет связан с сокетом.

iptables -t mangle -A PREROUTING -m owner -u some_user --socket-exists -j MARK --set-mark 100

Тогда просто используйте tc так, чтобы он ловил mark 100:

tc filter add dev eth0 parent ffff: protocol ip prio 10 u32 match mark 100 ...

Это был всего лишь мой образ мыслей, и я понятия не имею, работает ли это, но попробуйте. :)