Як я можу обмежити пропускну здатність для завантаження / завантаження?


77

Як я можу обмежити пропускну здатність для завантаження / завантаження для:

  • Ціла ОС.
  • Один мережевий інтерфейс.
  • Одноразова заявка.

Я подав помилку в wondershaperпроблемі в Ubuntu 17.10, яка може бути схожа на те, що відбувається з @Zeromatiker в Ubuntu 17.04: bugs.launchpad.net/ubuntu/+source/wondershaper/+bug/1745421
aguadopd

Відповіді:


42

Обмежувати єдиний інтерфейс досить просто, але глобальні обмеження швидкості потребують складніших правил, як і правила, засновані на застосуванні. Я не кажу, що це неможливо зробити, але це вимагає трохи заглибитися у внутрішні мережі.

Ось короткий Як встановити ліміт для кожного інтерфейсу

Якщо ви дійсно хочете налаштувати правила, що базуються на додатках, вам слід заглянути в деяку програму брандмауера, наприклад, shorewall , яка має допоміжні функції для налаштування форми. Навіть з цими інструментами, для його розміщення потрібно досить трохи продумати та випробувати. Зробити щось подібне спеціально ще не так просто.


wondershaper не працює Я не знаю чому (навіть wondershaper eth0 1000 1000 немає пропускної здатності в Інтернеті. Мені потрібно обмежити всю пропускну здатність eth0 не лише конкретними програмами. Як це зробити?
Arash

67

Хоча це давнє запитання, я натрапив на це, шукаючи відповіді на те саме питання. Обмеження щодо ОС та інтерфейсу вже розглянуто у попередній відповіді, тому ось спосіб встановити обмеження для конкретних програм. Скористайтеся програмою під назвою трик. Так і робити sudo apt-get install trickle. Ви можете обмежити завантаження / завантаження для певного додатка, запустивши

trickle -u (upload limit in KB/s) -d (download limit in KB/s) application

Це запустить додаток із заданими межами. Ви також можете вказати час "згладжування", щоб випробовувати зразки протягом бажаного періоду часу, якщо у вашій програмі є сплески споживання пропускної здатності, і ви хочете, щоб спали були дозволені до тих пір, поки середнє значення буде в межах ваших умов.


14
Дуже дякую! Це рішення ідеально підходить для контролю пропускної здатності на основі програми. Будь ласка, ніколи не соромтеся опублікувати відповідь, навіть якщо це питання років. Для подальшої довідки. Можливо, вам з’явиться повідомлення про помилку на зразок trickle: Could not reach trickled, working independently: No such file or directory. Ви можете видалити це попередження, виконавши дрібничку в автономному режимі за допомогою trickle -s.
Glutanimate

Як видалити ліміт, обмежений струменем?
Анонімна миша

2
Trickle запустить додаток для вас з дотриманням обмежень. Отже, все, що вам потрібно зробити, - це перезапустити програму без використання команди "струк".
SMeznaric

1
велике спасибі за цю відповідь, це саме те, що я шукав
Алі

1
Саме те, що мені було потрібно, намагаючись імітувати повільне мережеве з'єднання.
Етан Камінський

5

Якщо ви хочете обмежити пропускну здатність для конкретної IP-адреси, ви можете скористатися цим:

tc qdisc add dev eth1 root handle 1: htb default 12
tc class add dev eth1 parent 1: classid 1:10 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:11 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:12 htb rate 5000kbps

tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.105 flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.106 flowid 1:11

4
це було досить заплутано. Кілька # коментарів пройдуть довгий шлях. Наприклад, ви можете додати посилання чи пояснення для qdiscs, classids, htb тощо
oligofren

Отже, за замовчуванням вищезазначене обмежує все до 5000 кбіт / с, якщо не відфільтровано до якоїсь іншої черги? Що робити, якщо ми не хочемо все обмежувати ?
Кен Шарп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.