Linux чем ограничить скорость

tc, ограничение скорости

Дайте plz готовый скрипт, который бы просто ограничивал скорость в N кбайт/с на таком-то интерфейсе. Без приоритетов, без распределения по адресам и т.д.

Re: tc, ограничение скорости

Re: tc, ограничение скорости

tc=`which tc` $tc qdisc del dev eth0 root

$tc qdisc add dev $lan root handle 1: htb $tc class add dev $lan parent 1: classid 1:6 htb rate 1024kbit ceil 2048kbit $tc filter add dev $lan protocol ip parent 1: prio 1 u32 match ip dst 192.168.0.0/24 flowid 1:6

На что влияет ceil я так и не понял, выше установленного в rate прыгнуть не получилось никак.

Re: tc, ограничение скорости

Злое факин форматирование.

$tc qdisc del dev eth0 root

$tc qdisc add dev $lan root handle 1: htb

$tc class add dev $lan parent 1: classid 1:6 htb rate 1024kbit ceil 2048kbit

$tc filter add dev $lan protocol ip parent 1: prio 1 u32 match ip dst 192.168.0.0/24 flowid 1:6

Re: tc, ограничение скорости

> На что влияет ceil я так и не понял, выше установленного в rate прыгнуть не получилось никак.

rate — минимально гарантированная скорость;
ceil — максимально возможная

Немного не понял смысла всех этих твоих движений. Если нужно просто жёстко ограничить скорость, то можно посмотреть в сторону других более приспособленных для этого дисциплин:

#!/bin/sh
lan=eth0
tc=`which tc`
$tc qdisc del dev $lan root
$tc qdisc add dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate 2048kbps

Если же нужно зарезервировать канал для сети 192.168.0.0/24 (при этом есть ещё сети), то нужно поменять правила htb, ибо в таком виде, как сейчас при нагруженном канале только 1024kbit и будет.

В данном примере сеть 192.168.0.0/24 имеет приоритет перед остальными адресами. Причём приоритет практически полный:

#!/bin/sh
lan=eth0
tc=`which tc`
$tc qdisc del dev $lan root
$tc qdisc add dev $lan root handle 1: htb default 3

$tc class add dev $lan parent 1: classid 1:1 htb rate 2048kbit

$tc class add dev $lan parent 1:1 classid 1:2 htb rate 2024kbit ceil 2048kbit prio 1

$tc class add dev $lan parent 1:1 classid 1:3 htb rate 24kbit ceil 2048kbit prio 2

Читайте также:  Secure boot astra linux

$tc filter add dev $lan protocol ip parent 1: u32 match ip dst 192.168.0.0/24 flowid 1:2

P.S. только не забывай, что максимальная скорость, используемая в tc, должна быть немного меньше реальной пропускной способности канала. Иногда с этим «немного меньше» приходится ограничивать макс.скорость до 70% от реальной.

Re: tc, ограничение скорости

> tc qdisc add dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate 2048kbps

И всё, одна строчка, без filter и class?

> В данном примере сеть 192.168.0.0/24 имеет приоритет перед остальными адресами. Причём приоритет практически полный:

С классами этими и дисциплинами мозг вывихнуть можно. Всё равно спасибо за советы 🙂

Re: tc, ограничение скорости

>> tc qdisc add dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate 2048kbps
>И всё, одна строчка, без filter и class?

И всё. TBF — это безклассовая дисциплина. То есть конечная, или, краевая дисциплина. Поэтому больше ничего и не нужно прописывать.

> С классами этими и дисциплинами мозг вывихнуть можно.

Ну. дисциплина — это фактически название алгоритма «нарезки» канала.
Класс — это правило «нарезки» внутри алгоритма.

Re: tc, ограничение скорости

> И всё. TBF — это безклассовая дисциплина. То есть конечная, или, краевая дисциплина. Поэтому больше ничего и не нужно прописывать.

> Ну. дисциплина — это фактически название алгоритма «нарезки» канала. Класс — это правило «нарезки» внутри алгоритма.

Чёрт, так просто. Спасибо ещё раз. 🙂

Re: tc, ограничение скорости

а нет какой нибудь GUI утилиты для генерирования таких скриптов?

Re: tc, ограничение скорости

Для упрощения лепил своё. перловое и негуёвое :). Конфиг в XML, на выходе даёт готовый к запуску bash-скрипт. Похоже на tcng. Велосипед сделал, но свой велосипед, какой мне надо. 🙂
Кому интересно — выложу где-нить.

Re: tc, ограничение скорости

наверное было бы интересно.
Хотя запрос у меня будет примерно такой наверное

локальные порты 2106 7777 8085 — максимальный приоритет
для того что на них висит

LAN 192.168.1.0/24
с низким приоритетом, без ограничения скорости

подсети провайдера, несколько разных блоков 91.122 89.110 92.100 и чего-то там еще — наименьший приоритет, ограничение на upstream

исходящие на last.fm (87.117.0.0/16) — максимальный приоритет
исходящие на порт 22 — тоже максимально

остальное — поровну между всеми соединениями класса

Re: tc, ограничение скорости

Это на файрволле будет настраиваться? Сколько сетевых на нём?

Сейчас подготовлю архив и куда-нить выложу.

Re: tc, ограничение скорости

./bin/ — исполняемые файлы
ethloop — генератор трафика
gnutc-cgi — формирует страничку с графиками.
gnutc-make-diagram
gnutc-parce-config
gnutc-prepare-test
gnutc-show-trafic-table
Из названий примерно понятно для его оно всё. 🙂

./cfgs/ — конфиги
main.conf — общий конфиг (пути и т.д.); tc.conf — основной конфиг для tc. Там заданы общие для всех переменные. tc-.conf — конфиги для каждого интерфейса.

Читайте также:  Astra linux fly samba

./cgi-bin/
gnutc-cgi — формирует страничку с графиками. дублирует gnutc-cgi из bin. Руки не дошли в порядок привести 🙂

./contrib/
htb_ethloop_ex.tgz — исходники генератора трафика

./doc/
readme.txt — мнэ. «хочешь сильно наказать программера — посади его описывать свои поделки. » Про меня 🙂

./img/
В этом каталоге создаются графики по результатам тестов.

./out/
Сюда валятся все файлы, которые создаются. По идее временный каталог.

./tests/
Набор правил для формирования тестового трафика

./.htaccess
Если обратиться браузером к нашему каталогу, то отображаем страницу с результатами тестов.

./start.sh
Непосредственно для запуска всего этого добра

./tests.sh
Для запуска тестов.

У меня оно всё лежит в каталоге /var/www/html/gnutc (ЦГИшка в /var/www/cgi-bin). Набираю в браузере http://127.0.0.1/gnutc и вижу результаты тестов. На роутере оно в другом месте, соответственно. запускается только start.sh Оно всё пока не приведено в божеский вид, но если «пойдёт в массы» — сделаю нормально, а не «достаточно для меня».

Пока всё. По созданию XML-конфига под конкретные нужды обращайтесь — либо расскажу, либо пофиксю 🙂

Re: tc, ограничение скорости

> локальные порты 2106 7777 8085 - максимальный приоритет для того что на них висит Это доступ к самому роутеру? Трафик к нему и так выделится в отдельный канал. Ну представим, что: - ширина канала у тебя из инета 2048к - сетевуха eth0 - это сетевуха в локалку. - ширина канала в инет 1024к - сетевуха к модему: eth1 - адрес роутера, на котором всё это пускается: 192.168.1.254 - провайдер жёстко ограничил скорости на всё(у меня в инет жёстко ограничено, а на внутренние ресурсы провайдера - на максимально возможной для ADSL). Тогда: cfgs/tc.conf: $PERCENT_DOWN=16% $eth0_ADSL_RATE=2048kbit $eth1_ADSL_RATE=1024kbit $PROVIDER_IP=192.168.91.122, 192.168.89.110, 192.168.92.100 $LAN_NETWORK=192.168.1.0/24 Include tc-eth0.conf Include tc-eth1.conf cfgs/tc-eth0.conf: name=eth0 lan_interface=true description="Сетевая карта в LAN" queue_length=30 mtu=1500 name=ROOT description="корневая дисциплина" default=OTHER name=LAN description="Канал 'жирных' хостов" rate=80mbit ip = 192.168.1.254  name=INTERNET description="Интернет-трафик" rate=$eth0_INET_RATE name=SUPERCHANNEL description="Рабочий канал с высоким приоритетом" rate=($eth0_INET_RATE/2) ceil=$eth0_INET_RATE prio=1 # маленькие пакеты и приоритетные порты и last.fm size = :100 port = tcp:22, 53 src_ip = 87.117.0.0/16  name=LAN_NETWORK description="Канал локальной сети" rate=$eth0_INET_RATE/4 ceil=$eth0_INET_RATE prio=2 dst_ip = $LAN_NETWORK name=LAN_NETWORK_esfq description="Справедливая раздача канала" qdisc=true type=esfq params=perturb 10 hash dst  name=OTHER description="Канал остальных" rate=$eth0_INET_RATE/4 ceil=$eth0_INET_RATE prio=3 name=OTHER_esfq description="Справедливая раздача канала" qdisc=true type=esfq params=perturb 10 hash dst  name=PROVIDER description="Канал от хостов провайдера" rate=0 ceil=$eth0_INET_RATE prio=4 src_ip = $PROVIDER_IP name=OTHER_esfq description="Справедливая раздача канала" qdisc=true type=esfq # трафик поровну между хостами провайдера params=perturb 10 hash dst # трафик поровну между "качателями" # params=perturb 10 hash src    cfgs/tc-eth1.conf: По аналогии с cfgs/tc-eth0.conf. Лениво расписывать. Примерно так. Если что не понял - уточни. P.S. Вместо esfq можно использовать и sfq (если нету esfq), но sfq делит поровну между потоками, а esfq - между хостами. Разница в том, что кто-то один может качать в *надцать потоков и перебьёт всем канал.

Источник

Как ограничить скорость загрузки файлов с помощью Wget в Linux

Команды LINUX «от A до Z» — настольная книга с примерами

Как ограничить скорость загрузки файлов с помощью Wget в Linux

Wget — широко используемая неинтерактивная утилита командной строки для загрузки файлов из Интернета. Как и большинство подобных инструментов, Wget в Linux поддерживает ограничение скорости загрузки, что позволяет установить максимальный лимит. Это нужно для того, чтоб можно было распределить скорость загрузки между несколькими программами, особенно если вы используете несколько сетевых приложений на вашем компьютере.

В этой короткой статье мы покажем вам, как ограничить скорость загрузки c Интернета для конкретного файла с помощью команды wget в Linux.

Как ограничить скорость загрузки файлов с помощью Wget

При использовании wget вы можете ограничить скорость получения файлов с помощью ключа –limit-rate. Значение может быть выражено в байтах, килобайтах с суффиксом k или мегабайтах с суффиксом m.

В следующих примерах показано, как ограничить скорость загрузки файла до 50 КБ/с с помощью команды wget.

Для получения дополнительной информации о том, как реализовано ограничение скорости загрузки файлов, смотрите справочную страницу wget и прочтите о параметре –limit-rate.

Курсы Python с нуля до DevOps на практике за 1,5 часа

Спасибо за уделенное время на прочтение статьи о том, как ограничить скорость загрузки файлов с помощью Wget в Linux!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.

  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.

Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Источник

Оцените статью
Adblock
detector