Я понимаю, что многие подобные вопросы уже задавались, но до сих пор мне не удалось найти решение моей проблемы.
У меня есть виртуальный сервер Linux (работает под управлением Debian Squeeze), который я использую для тестирования скорости веб-сайтов, чтобы измерить увеличение и уменьшение времени загрузки указанных веб-сайтов. Я пытаюсь ограничить пропускную способность и задержку этого сервера, чтобы иметь возможность приблизиться к реальному времени загрузки веб-сайтов, но пока не удалось.
Что я хочу конкретно, так это следующее:
- Для установки входящей и исходящей задержки 50 мс.
- Чтобы установить ограничение входящей пропускной способности 512 кбит / с.
- Установить ограничение исходящей полосы пропускания в 4096 кбит / с.
Я читал о netem и использовал tc
команду, но это все еще немного над моей головой. Мне удалось собрать эту команду для управления задержкой, которая, кажется, работает, но я даже не уверен, обрабатывает ли она только исходящую задержку или обе:
tc qdisc add dev eth0 root netem delay 50ms
Любые сетевые гуру, которые могут мне помочь?
Редактировать:
После дальнейших исследований я достиг половины своей цели, используя эту команду, весь исходящий трафик ведет себя так, как я хочу:
tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000
Тем не менее, я до сих пор не смог должным образом ограничить входящий трафик. Я узнал, что должен использовать «Фильтр входного ограничителя», который я пытался сделать с помощью приведенной ниже команды, играя с разными значениями, но не повезло.
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop
Тем не менее, команда влияет на полосу пропускания. Приведенные выше значения приводят к тому, что скорость начинается со скоростью 2 МБ / с и, по мере передачи, медленно снижается примерно до 80-90 КБ / с, что достигается примерно через 30 секунд передачи.
Есть идеи, что я делаю не так?
источник
netem delay 50ms
не ограничивает время ожидания Это увеличивает задержку по50ms
сравнению с тем, что было бы иначе.Ответы:
Я, наконец, решил просто установить исходящую пропускную способность / задержку на сервере, а затем сделать то же самое на клиенте, эффективно достигая того же результата.
Это команды, которые я выполнил на сервере и клиенте соответственно для достижения моих целей:
Сервер: 4 Мбит 50 мс
Клиент: 512 кбит 50 мс
источник
Около 80-90 кБайт / с - это то, чего ожидать от
Вы просите, чтобы входящие данные отбрасывались, когда они достигают скорости 1 мбит / с, то есть около 125 кБайт / с. Затем удаленный сервер опустится до значительно более низкого уровня (возможно, наполовину, не уверен). После этого все пакеты проходят, поэтому удаленный конец медленно набирает скорость, пока снова не будет достигнут 125 кБайт / с. Вы получаете среднюю пропускную способность значительно ниже 125 кБайт / с, что типично для формирования входа.
Я немного удивлен, что скорость должна достигать 2 МБ / с с уже установленным фильтром политики доступа. Где вы измеряли - на нисходящем клиенте (программе) или на каком-либо вышестоящем маршрутизаторе? Или, может быть, вы впервые установили соединение и только после этого включили фильтр политики входа?
источник