Як я імітую низьку пропускну здатність, високу затримку середовища?


201

Мені потрібно імітувати низьку пропускну здатність, високу затримку підключення до сервера, щоб імітувати умови VPN на віддаленому сайті. Ширина смуги пропускання та затримка повинні бути корисними, тому я можу знайти найкращу комбінацію для запуску нашого програмного пакету.


7
Чудове запитання! Я хотів би почути деякі відповіді, пов'язані з веб-розробкою ASP .NET.
Карл

Відповіді:


79

Для macOS існує кондиціонер Network Link, який моделює налаштовану пропускну здатність, затримку та втрати пакетів. Він міститься в пакеті Додаткові інструменти для Xcode . Знімок екрана


12
Панель уподобань "Network Link Conditioner" є частиною апаратних засобів IO для XCode, які ви можете завантажити з developer.apple.com/downloads
avernet

Схоже, не працює з Genymotion. (Чорний екран)
Бруно

1
Посилання для завантаження нових версій
XCode

@ jstorm31 Дякую Я оновив відповідь поточною назвою пакету та поточним посиланням.
Джон Колверсон

37

Існує відмінна схема налаштування машини FreeBSD, щоб зробити це саме так - взяти свій стандартний старий робочий стіл, закинути додатковий NIC і скласти.

Запис доступний за посиланням http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html .

На кроці 5 вищезазначених інструкцій ви вмикаєте брандмауер. Щоб просто імітувати інше IP-з'єднання, ви можете (наприклад) зробити наступне:

Створіть файл, /etc/rc.firewall.56kякий містить наступне:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

І змінити /etc/rc.conf... замінити рядок

firewall_type="open"

з

firewall_type="/etc/rc.firewall.56k"

перезавантажте, і ви отримали собі 56К міст!

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


27

Раніше я використовував міст, використовуючи функціональність Linux Netem (Network Emulation). Це дуже настроюється - дозволяє запровадити затримки (перший приклад для WAN), втрату пакетів, пошкодження тощо.

EDIT: Існує також веб-інтерфейс MasterShaper для керування налаштуваннями.

Я зазначаю, що Netem дуже добре працював над моїми програмами, але я також кілька разів користувався WANem . Наданий завантажувальний ISO (та віртуальні зображення приладів) зробив це досить зручним.


Ідеально підходить для моїх потреб і доступний з коробки на моєму сервері Ubuntu 14.04!
RobM

21

Карла

Я натрапив на проксі-сервер про налагодження проксі у Чарльза і мав великий успіх у емуляції мережевої затримки. Він працює в Windows, Mac та Linux.

Чарльз на Mac

Дросель пропускної здатності / Симулятор пропускної здатності

Чарльз можна використовувати для регулювання пропускної здатності та затримки вашого Інтернет-з'єднання. Це дає змогу моделювати умови модему за допомогою високошвидкісного з'єднання.

Ширина смуги може бути зменшена до будь-яких довільних байтів за секунду. Це дозволяє імітувати будь-яку швидкість з'єднання.

Затримка також може бути встановлена ​​на будь-яке довільне число мілісекунд. Затримка затримки імітує затримку, що виникає при повільніших з'єднаннях, тобто затримку між поданням запиту та отриманим запитом на іншому кінці.

DummyNet

Ви також можете використовувати vmware для запуску BSD або Linux і спробувати цю статтю (DummyNet) або цю.


2
Чарльз є проксі-сервером HTTP, і тому підходить лише для тестування HTTP-додатків. У кожного свої, але, на мою думку, це, певно, найгірше програмне забезпечення, яке я коли-небудь використовував. Я використовував його лише короткий час, поки мені довелося працювати на Mac. Для користувачів Windows я рекомендую Fiddler, якщо вам потрібен проксі-сервер налагодження HTTP. На жаль, я не знайшов для OSX нічого, крім Чарльза.
Бред

6
Привіт Бреде. Ви можете згадати, які проблеми у вас виникли?
Анте

17

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

Редагувати: інші помітили, що ви не можете обмежувати пропускну здатність незграбно, і це правда. Ви можете додати лише затримку та пару інших помилок, пов’язаних із мережею. Це дискваліфікує цю відповідь як вагому відповідь на питання, однак, оскільки я добре застосував її, коли хотів імітувати погану мережу, тому я залишатиму її до тих пір, поки у неї буде> 0 голосів чи подібних.


Як ви керуєте пропускною здатністю незграбно?
користувач3731622

3
Відмінна програма. Тільки те, що мені було потрібно. Рекомендую. Працює як шарм і його супер легко.
Jh62,

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

13

Спробуйте WANem

WANem - емулятор широкої мережі, призначений забезпечити реальний досвід роботи мережі / Інтернету широкої області під час розробки / тестування додатків у середовищі локальної мережі.


1
Я спробував це і, здається, не змусив його працювати. Він не отримає IP-адресу від нашої мережі з певних причин, поки будь-який інший комп'ютер не має з цим проблем.
Майкл Бек


7

Я б спробував використовувати netem на Linux. З його допомогою ви можете імітувати додаткову затримку, корупцію, втрату пакетів та дублювання. Він працює навіть на пристрої циклу.


Гей, у вас є якась еквівалентна команда для Windows як netem?
Шаші Ранджан

6

Ще одна програма на стороні клієнта (лише для Windows) - NetLimiter - http://www.netlimiter.com


2
Netlimiter хороший, але я думаю, що це лише низька пропускна здатність - він не може змінити затримку?
Натан

У бета-планах для версії v3 перелічено моделювання затримки як заплановану функцію. Він був нещодавно випущений, і я його ще не використовував, щоб побачити, чи
ввійшла

Ця функція не перетворила його на бета-версію 9. Фу.
cacba

4
Навіть поточна бета-версія (NetLimiter 4) не дозволяє змінити затримку.
впливовий

5

Я використовую NetBalancer на своїй машині Windows.

http://seriousbit.com/netbalancer/

Оновлення 2017-10-07 : Остання безкоштовна версія NetBalancer - 9.2.7. Програма має жорсткий термін придатності. Перш ніж запустити послугу NetBalancer, потрібно повернути системний годинник до 2016-10-18. Детальну інформацію див. У цій статті .


Дякую!! NetBalancer - це єдиний інструмент, перелічений на цій сторінці, який мені вдалося приступити до роботи і який може контролювати затримки.
впливовий


4

Я думаю, tcміг би виконати цю роботу на платформі на базі UNIX.

tcвикористовується для налаштування управління трафіком в ядрі Linux
http://lartc.org/manpages/tc.txt


3

Щоб імітувати з'єднання з низькою пропускною здатністю для тестування веб-сайтів за допомогою Google Chrome, ви можете перейти на вкладку «Мережа» в інструментах F12 і вибрати рівень пропускної здатності для імітації або створення власної пропускної здатності для імітації.


1
Дякую! Якщо ви не можете його знайти, це знаходиться на консолі Chrome, вкладка Мережа, у правій частині кнопки «Вимкнути кеш». Значенням за замовчуванням є "Без дроселювання".
Алан Вілмс



1

Існує продукт від http://www.shunra.com під назвою VE Desktop, який можна використовувати для імітації різних мережевих умов. Це дозволяє налаштувати затримки, пропускну здатність та пакетну втрату за допомогою простого інтерфейсу. Тільки застереження є, це не безкоштовно. Сподіваюсь, це допомагає.


1

Я деякий час шукав простий у використанні інструмент для такого типу тестування. Я щойно натрапив на це днями: Симулятор затримки мережі

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



1

Погляньте на мережевий емулятор NE-ONE, який дозволяє налаштувати пропускну здатність, затримку, втрату пакетів, переупорядкування пакетів, дублювання пакетів, фрагментацію пакета, перевантаженість мережі та багато інших погіршень, щоб ви могли створити умови реальної мережі в лабораторії. . Різні порушення можуть бути налаштовані для висхідної та низхідної лінії зв'язку, щоб у вас була справді хороша вихідна лінія, але дійсно поганий досвід низхідній лінії зв'язку, відмінно підходить для того, як додаток обробляє TCP-черги, оскільки аки не повертаються вчасно та загальна затримка тому збільшується!

Тут є оглядове відео http://www.youtube.com/watch?v=DwtqlE7LcrQ, яке спеціально спрямоване на розробників ігор, але воно показує, про що йдеться. NE-ONE налаштований за допомогою веб-браузера, тому його дуже просто встановити та налаштувати - вам не потрібно бути гуру мережі :-)

Існує апаратна версія - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - або ви можете завантажити версію Virtual Appliance (software), яка працює під сервером VMware ESXi. Віртуальний прилад можна завантажити з біржі рішень VMware - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator



0

LANforge ICE - це мережевий емулятор з акцентом на віртуальну маршрутизацію, тремтіння, пошкодження та затримку. Проекти використовували його для емуляції супутникового зв'язку, кабельного та модемного зв’язку та високошвидкісної (10 Гбіт) емуляції. Ви можете використовувати графічний інтерфейс Java для побудови віртуальних мереж та генерування дуже детальних звітів про потік трафіку. Продукти LANforge також надають функції генерації трафіку: фрейм, Ethernet, рівень 3 та стаціонарний трафік (NFS, http). Останні видання для LANforge також мають складні функції тестування WiFi.


0

Ви можете спробувати це: CovenantSQL / GNTE просто напишіть YAML так:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

бігати ./generate scripts/your.yaml

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.