Как правильно замедлить трафик на Raspberry?

Ссылка скопирована
1 ответ

Привет.
Подскажите как правильно замедлять трафик на Raspbian?
Использую только проводное соединение.
Делаю так (Raspbian on Raspberry Pi):

0. Проверил скорость записи-чтения до эксперимента:

Как правильно замедлить трафик на Raspberry?

Как правильно замедлить трафик на Raspberry?

1. Установил iptables, iproute2 (с пакетом tc)
2. Установил tcconfig

curl -sSL https://raw.githubusercontent.com/thombashi/tcconfig/master/scripts/installer.sh | sudo bash

curl -sSL https://raw.githubusercontent.com/thombashi/tcconfig/master/scripts/installer.sh | sudo bash

3. Установил ограничение трафика на eth0 командой из примера:
sudo tcset eth0 --rate 100Kbps
4. Проверил эту установку командой из примера:

{     "eth0": {         "outgoing": {             "protocol=ip": {                 "filter_id": "800::800",                 "rate": "100Kbps"             }         },         "incoming": {}     } }

{ "eth0": { "outgoing": { "protocol=ip": { "filter_id": "800::800", "rate": "100Kbps" } }, "incoming": {} } }

5. Проверяю скорость записи-чтения через FTP:

Как правильно замедлить трафик на Raspberry?

Как правильно замедлить трафик на Raspberry?

Ничего не изменилось...

Вопрос к знатокам: что я делаю не так?
Может есть другие рабочие средства для замедления трафика?
Может для Raspberry Pi нужно иное решение?
Спасибо за ответы.

Дополнительно:

Этот трафик для RPi входящий или исходящий?

Входящий трафик нельзя ограничить. Он уже прилетел. Единственное что можно - дропать пакеты, чтобы другая сторона тормозила отправку, пока в пределах TCP-окна пакеты не будут подтверждены. И всё равно это не особо эффективно работает. Искать по словам типа tc ingress policy.

Судя по тому, что слово ingress в доке не нашлось, tcset, скорее всего, умеет шейпить только исходящий.

  • shurshur, я пробовал тягать большой файл и туда и сюда (запись и чтение по FTP). На скринах это видно. Скорость и там и там высокая.
  • Vova316, может ваш фтп по udp передает?

    Ps поробуйте указать dst своего хоста получателя или 0.0.0.0/0 если для всех

  • Ответы:

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

    ethtool enp3s0 -s autoneg on speed 1000 duplex full

    ethtool enp3s0 -s autoneg on speed 1000 duplex full

    вместо enp3s0 поставь нужное сетевое устройство (список ip ad), вместо 1000 подставь 10 станет 10мбит
    список доступных режимов:
    ethtool enp3s0

    • Это решение не работает. Скорость сети остается 100 Мбит.
      Скорость чтения-записи - около 8,5Мбайт в сек.
    • Vova316, странно, у меня работает, возможно косяк в железе? так как эта команда буквально говорит на какой скорости и как работать с сетью.

      что пишет после этой команды в терминал?
      что пишет эта команда ethtool enp3s0 а точнее в строке Speed:?
      последние строчки в dmesg?

      p.s. еще вариант, можно понизить скорость линии на принимающей стороне, в win например это делается в свойствах сетевого адаптера

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ирина WP Ответ

    Для замедления трафика на Raspberry Pi можно воспользоваться утилитой tc (Traffic Control), которая позволяет управлять трафиком на сетевом интерфейсе. Вот как это можно сделать:

    1. Установите пакет iproute2, в котором содержится утилита tc:

    sudo apt-get update
    sudo apt-get install iproute2

    sudo apt-get update sudo apt-get install iproute2

    2. Создайте скрипт с помощью любого текстового редактора (например, nano) и добавьте следующий код, чтобы замедлить весь трафик на интерфейсе eth0 до 1mbit/s входящего и исходящего трафика:

    #!/bin/bash
    tc qdisc add dev eth0 root handle 1: htb default 12
    tc class add dev eth0 parent 1: classid 1:1 htb rate 1000kbit
    tc class add dev eth0 parent 1:1 classid 1:12 htb rate 1000kbit
    tc qdisc add dev eth0 parent 1:12 netem delay 50ms

    #!/bin/bash tc qdisc add dev eth0 root handle 1: htb default 12 tc class add dev eth0 parent 1: classid 1:1 htb rate 1000kbit tc class add dev eth0 parent 1:1 classid 1:12 htb rate 1000kbit tc qdisc add dev eth0 parent 1:12 netem delay 50ms

    3. Сохраните скрипт (например, с названием slow_traffic.sh) и сделайте его исполняемым:

    chmod +x slow_traffic.sh

    chmod +x slow_traffic.sh

    4. Запустите скрипт:

    sudo ./slow_traffic.sh

    sudo ./slow_traffic.sh

    Теперь весь трафик на интерфейсе eth0 будет замедлен до 1mbit/s с задержкой в 50ms. Вы можете настроить скрипт по своему усмотрению, изменяя параметры tc (например, скорость и задержку) или применяя к другим сетевым интерфейсам.

    Помните, что эти настройки будут действовать до перезагрузки Raspberry Pi. Если вам нужно, чтобы они сохранялись после перезагрузки, вы можете добавить запуск скрипта в автозагрузку или использовать другие методы настройки трафика.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно