Я усвідомлюю, що багато подібних питань вже задавались, але поки що я ще не знайшов рішення своєї проблеми.
У мене є віртуальний сервер Linux (запуск Debian Squeeze), який я використовую для тестування швидкості веб-сайту, щоб виміряти збільшення та зменшення часу завантаження зазначених веб-сайтів. Я намагаюся обмежити пропускну здатність та затримку цього сервера, щоб мати можливість наблизитися до реального часу завантаження на веб-сайтах, але поки що не вдалося.
Що конкретно я хочу, це наступне:
- Щоб встановити вхідну та вихідну затримку 50 мс.
- Для встановлення межі пропускної здатності вхідного каналу 512 кбіт / с.
- Для встановлення вихідної межі пропускної здатності 4096 кбіт / с.
Я читав нетем і використовував 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
Однак я все ще не зміг придушити належний трафік належним чином. Я дізнався, що я повинен використовувати фільтр "Ingress Policer", який я намагався робити саме за допомогою команди нижче, граючи з різними значеннями, але не пощастило.
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
порівнянні з тим, що було б інакше.