Как я могу имитировать плохое интернет-соединение для целей тестирования?
Я разрабатываю онлайн-многопользовательскую игру. Он работает хорошо, когда я тестирую его в локальной сети, но прежде чем я его выпущу, я хотел бы проверить, как работает пользовательский опыт для тех, у кого нет такого хорошего соединения с сервером. Как я могу имитировать плохое интернет-соединение с высокой задержкой, низкой пропускной способностью, дрожанием и случайной потерей пакетов в локальной среде?
6 ответов
Я думаю, Dummynet - это то, что вы ищете. Dummynet - это инструмент сетевой эмуляции, который может имитировать ограничения пропускной способности, задержки, потери пакетов и многое другое. Вы можете легко выбрать, какой трафик вы хотите перехватить и настроить ограничения, например. чтобы ограничить весь входящий трафик TCP до 2 Мбит /с, вы делаете
ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s
Вы видите, что выбор трафика выполняется известным брандмауэром ipfw, а в каналах предусмотрены ограничения.
Он доступен для FreeBSD, Linux и Windows.
Сетевой концентратор
Если вы находитесь на Mac, вы можете использовать Network Link Conditioner.
Вы можете моделировать различные случаи плохих интернет-соединений, включая Edge и 3G.
Кроме того, вы можете создавать свои собственные профили со своими настройками:
Это бесплатная загрузка в Xcode (перейти к Xcode â † 'Open Developer Tool â † «Дополнительные инструменты для разработчиков» и загрузить Hardware IO Tools для Xcode ).
Если вы используете linux, вы можете использовать netem , чтобы имитировать все возможные проблемы с сетью, например высокая латентность, низкая пропускная способность, потери пакетов и многие другие.
Существует опция для окон под названием NetLimiter , но я не использовал ее, поэтому не могу ручаться за нее.
Просто нашел приложение Mac под названием SlowlyApp .
Как смоделировать плохое интернет-соединение с высокой задержкой, низкой пропускной способностью, дрожанием и случайной потерей пакетов в локальной среде?
Если вы находитесь в Windows, вы можете попробовать SoftPerfect Connection Emulator . Это в основном драйвер, который внедряет себя между вашим приложением и сетевым уровнем (аналогичным Wireshark /WinPCAP) для выбранного сетевого адаптера и может имитировать ограниченную пропускную способность, задержку, потерю пакетов и другие вещи. Пользовательский интерфейс прост и понятен.
Это коммерческий продукт, но пробная версия позволяет вам делать 30-секундные всплески «помех», которые должны быть достаточно хороши для того, чтобы вы могли судить, делает ли этот инструмент то, что вы хотите.
Другой кросс-платформенный вариант DummyNet , который ведет себя аналогичным образом (через ipfw), но немного менее прост в использовании.
Я хотел бы проверить, как пользовательский опыт работает для тех, у кого нет такого хорошего соединения с сервером.
Я думаю, что эту часть вопроса можно было бы переформулировать как «как мне заниматься сетевой латентностью в моем приложении?» Одним из наиболее часто используемых и эффективных методов является Dead Reckoning . Связанная статья объясняет это лучше, чем я могу, но основная идея заключается в том, что ваши клиенты «имитируют», где каждый объект должен быть и что он должен делать по алгоритму. Всякий раз, когда объект отклоняется от этого алгоритма (т. Е. Вход игрока, серверное событие и т. Д.), Он отправляет обновление каждому клиенту.
Я не использовал его некоторое время, но я использовал Charles для тестирования этого. Это приложение с различными инструментами диагностики сети, включая моделирование проблем, о которых вы говорили: «плохое подключение к Интернету с высокой задержкой, низкая пропускная способность, джиттер и случайная потеря пакетов»