Моделирование медленного подключения к Интернету

Я знаю, что это довольно странный вопрос. Поскольку я обычно разрабатываю приложения на основе "предположения", что все пользователи имеют медленное подключение к Интернету. Но кто-нибудь думает, что есть способ программно имитировать медленное подключение к Интернету, поэтому я могу "видеть", как приложение работает под различными "скоростями соединения"?

Я не беспокоюсь о том, какой язык используется. И я не ищу образцы кода или что-то еще, просто интересуюсь логикой.

Ответ 1

Если вы используете windows, fiddler - отличный инструмент. У него есть настройка для моделирования скорости модема, и для тех, кто хочет большего контроля, есть плагин чтобы добавить латентность к каждому запросу.

Я предпочитаю использовать такой инструмент, чтобы помещать код задержки в мое приложение, поскольку это гораздо более реалистичная симуляция, а также не заставляя меня создавать или кодировать фактические биты. Лучший код - это код, который мне не нужно писать.

ДОБАВЛЕНО: В этой статье в блоге Павла Дончева "Технологии программного обеспечения" показано, как создавать пользовательские моделированные скорости: Ограничение скорости вашего интернет-соединения с помощью Fiddler.

Ответ 2

Начиная с Chrome 38, вы можете сделать это без каких-либо плагинов. Просто нажмите элемент проверки (или F12 горячая клавиша), затем нажмите "Переключить режим устройства" enter image description here, и вы увидите что-то вроде этого:

enter image description here

Среди многих других функций вы можете имитировать конкретное интернет-соединение (3G, GPRS)

P.S. для людей, которые пытаются ограничить скорость загрузки. К сожалению, в настоящее время это невозможно.

P.S.2 теперь вам не нужно ничего переключаться. Панель "Дросселирование" доступна прямо с сетевой панели. введите описание изображения здесь

Обратите внимание, что при нажатии кнопки Без дросселирования вы можете создавать свои настраиваемые параметры дросселирования.

введите описание изображения здесь

Ответ 4

Я использовал http://www.netlimiter.com/, и он работает очень хорошо. Не только ограничивает скорость для отдельных процессов, но также показывает фактические скорости передачи.

Ответ 5

На машинах Linux вы можете использовать wondershaper

apt-get install wondershaper

$ sudo wondershaper {interface} {down} {up}

the {down} и {up} - пропускная способность в kpbs

Так, например, если вы хотите ограничить пропускную способность интерфейса eth1 до 256 кбит/с для восходящей линии связи и нисходящей линии связи 128 Кбит/с,

$ sudo wondershaper eth1 256 128

Чтобы очистить предел,

$ sudo wondershaper clear eth1 

Ответ 6

Существуют прокси-серверы TCP, такие как iprelay и Sloppy, которые формируют полосу пропускания для имитации медленных соединений. Вы также можете выполнять формирование полосы пропускания и имитировать потерю пакетов с помощью IP-фильтров, таких как ipfw и iptables.

Ответ 7

Вы можете попробовать Dummynet, он может имитировать ограничения очереди и пропускной способности, задержки, потери пакетов и эффекты многолучевости

Ответ 8

Кроме того, для моделирования медленного соединения на некоторых * nixes вы можете попробовать использовать ipfw. Более подробная информация предоставлена ​​ответом Бена Ньюмана на этот вопрос Qua .

Ответ 9

Использовать прокси-сервер отладки веб-сайта с функциями дросселирования, такими как Charles или Fiddler.

Вы найдете их полезным веб-разработкой в ​​целом. Главное отличие заключается в том, что Чарльз является условно-бесплатной, тогда как Fiddler свободен.

Ответ 10

Используйте инструмент, например TCPMon. Это может привести к медленному подключению.

В принципе, вы запрашиваете его точно так же, и он просто перенаправляет то же самое требование на реальный сервер, а затем задерживает ответ только с установленным количеством байтов.

Ответ 11

Вы можете использовать NetEm (сетевая эмуляция) в качестве прокси-сервера для эмуляции многих характеристик сети (скорость, задержки, потери пакетов и т.д.). Он управляет сетью, используя iproute2, и он включен в ядре большинства дистрибутивов Linux.

Он управляется приложением командной строки tc (из пакета iproute2), но для NetEm также есть некоторые графические интерфейсы веб-интерфейса, например PHPnetemGUI2.

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

Для вашего приложения это абсолютно прозрачно, вы можете настроить операционную систему на использование прокси-сервера NetEm, поэтому все соединения с этого устройства будут проходить через NetEm. Или вы можете настроить только ваше приложение, чтобы использовать его в качестве прокси.

Я использую его для тестирования производительности приложения для Android в различных эмулируемых сетях с низкой производительностью.

Ответ 12

Mac OSX с 10.10 имеет приложение под названием Murus Firewall, которое действует как графический интерфейс для pf, заменяет ipfw.

Он отлично работает для системного или доменного регулирования. Я просто смог использовать его, чтобы снизить скорость загрузки от 300 Кбит/с до 30 Мбит/с, чтобы проверить, как настраивается потоковый видеоплеер.

Ответ 13

Существует также еще один инструмент под названием WIPFW - http://wipfw.sourceforge.net/

Это немного старая школа, но вы можете использовать ее для имитации более медленного соединения. Это основано на Windows, и этот инструмент позволяет администратору отслеживать, сколько трафика получает маршрутизатор с определенной машины, или, например, трафик WWW.

Ответ 14

Обновление этого (9 лет после того, как его спросили) как ответ, который я искал, не было упомянуто:

Firefox также имеет предустановки для регулирования скорости соединения. Найдите их на вкладке Network Monitor инструментов разработчика. По умолчанию "Нет регулирования".

Самый медленный - GPRS (скорость загрузки: 50 кбит/с, скорость загрузки: 20 кбит/с, минимальная задержка (мс): 500), от "хорошего" и "обычного" 2G, 3G и 4G до DSL и WiFi (скорость загрузки: 30 Мбит/с, скорость загрузки: 15 Мбит/с, минимальная задержка (мс): 2).

Подробнее в Документах Dev Tools.