Какое хорошее программное решение для замедления интернет-соединения на Mac для тестирования и моделирования?
Моя основная потребность заключается в тестировании кода в симуляторе iPhone/iOS, поэтому замедление соединения для определенных приложений или процессов было бы здорово.
Официальный инструмент Apple для замедления сетевых подключений на вашем Mac в целях тестирования — это Network Link Conditioner .
Кроме того, в iOS есть аналогичная функция, доступная из Xcode и iOS 6 или более поздней версии.
В более старые версии Xcode до версии 4.3.2 была встроена копия этого инструмента. Этот поток SO документирует некоторую историю инструмента аналогично симуляторам iOS и документации для разработчиков.
Существует 11 встроенных профилей от сети Lossy Edge с задержкой 400 мс до кабельного модема. Если вам нужны другие ограничения, вы можете создавать пользовательские профили со своими собственными настройками или вы также можете использовать себя ipfw
, как описано в статье Крейга Хокенберри « медленная езда , упрощайте » . чем Xcode, но имеет меньше возможностей, чем инструмент Apple.
Это замедляет работу всего сетевого стека, поэтому вы не можете дросселировать отдельно для каждого приложения, не выполняя таких действий, как установка lion на виртуальной машине и настройка этой виртуальной машины с регулируемым стеком.
OS X 10.9 и более ранние версии предоставляют ipfw
и позволяют вам определять пользовательские правила брандмауэра. Создайте канал с ограниченной пропускной способностьюipfw
, и вы сможете запускать свои тесты и симуляции.
Создайте канал «1» с ограничением скорости 500 КБ/с через
sudo ipfw pipe 1 config bw 500KByte/s
Направьте весь сетевой трафик порта 80 через канал «1», используя
sudo ipfw add 1 pipe 1 src-port 80
Когда труба вам больше не нужна, удалите ее из порта с помощью
sudo ipfw delete 1
MByte/s
80
: стандартный порт для незашифрованного http
трафика. Этот порт используется для большинства просмотров и загрузок. Вы должны быть в порядке с этим в большинстве случаев.443
: стандартный порт для зашифрованного SSL - https
трафика.Ограничение скорости — это панель Системных настроек для преднамеренного и выборочного замедления определенных портов и доменов.
Чтобы добавить к принятому ответу: похоже, вам не нужен XCode, просто учетная запись на веб-сайте Apple Developer (проще, чем сначала загрузить пакет XCode объемом 2 ГБ, если у вас его еще нет).
Перейдите на https://developer.apple.com/downloads и найдите «Кондиционер сетевых ссылок» или «Дополнительные инструменты для XCode», причем последнее является названием пакета, в котором он находится.
Чтобы загрузить его через Xcode 8.x:
Если вам нужен дроссель только для веб-разработки, я могу искренне порекомендовать Чарльза . В любом случае, это отличный инструмент для отладки HTTP-приложений, и среди его многочисленных функций есть опция Throttle. Программное обеспечение не из дешевых, но оно отлично справляется со своей задачей.
Пользователям Mac OS X 10.10+ необходимо использовать dnctl
, pfctl
но найти задокументированные примеры использования непросто.
# Configure `pfctl` to use `customRule`.
(cat /etc/pf.conf && echo "dummynet-anchor \"customRule\"" && echo "anchor \"customRule\"") | sudo pfctl -f -
# Define `customRule` to pipe traffic to `pipe 1`.
# Note this is the actual port definition, not a textual comment
echo "dummynet in quick proto tcp from any to any port 443 pipe 1" | sudo pfctl -a customRule -f -
# Define what `pipe 1` should do to traffic
sudo dnctl pipe 1 config delay 10000
sudo dnctl pipe 1 config bw 10Kbit/s
# DO NOT FORGET to undo these when you're done
sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf
Если вы хотите сделать все возможное и сформировать все, что вы можете использовать:
echo "dummynet in quick proto tcp from any to any pipe 1" | sudo pfctl -a customRule -f -
Я считаю, что это также влияет на локальные каналы, которые замедляют мою отладку кода, так что помните об этом.
sudo pfctl -E
сначала запустить, чтобы включить pfctl. Я также убедился, что мой брандмауэр включен в «Системные настройки»> «Безопасность и конфиденциальность»> «Брандмауэр», но я не уверен, что это необходимо.Вы также можете использовать ipfw piping для замедления вашей сети.
Во-первых, настройте виртуальную «трубу», чтобы ограничить пропускную способность до 800 КБит/сек:
ipfw pipe 1 config bw 800Kbit
Затем вы можете настроить правила для пропуска трафика через этот канал (канал 1). (порты 6881-6890 — битторрент-трафик)
ipfw add 10 pipe 1 tcp from any to me 6881-6890
ipfw add 11 pipe 1 tcp from any 6881-6890 to me
Вот еще один пример ограничения трафика до 10 Кбит/с с определенного IP-адреса:
ipfw pipe 2 config bw 10Kbit
ipfw add 15 pipe 2 ip from me to 64.81.84.114
Я нашел эту команду терминала полезной в моем случае
Установка:
Откройте терминал Mac и введите эту команду
sudo npm install @sitespeed.io/throttle -g
Применение:
Откройте терминал и введите нужную команду
Запустить дроссель (предположим, нам нужна скорость загрузки и выгрузки 5000 кбит/с)
throttle --up 5000 --down 5000
Остановить дроссельную заслонку
throttle --stop
Также есть готовые профили.
--profile Premade profiles, set to one of the following
3g: up:768 down:1600 rtt:150
3gfast: up:768 down:1600 rtt:75
3gslow: up:400 down:400 rtt:200
2g: up:256 down:280 rtt:400
cable: up:1000 down:5000 rtt:14
dsl: up:384 down:1500 rtt:14
3gem: up:400 down:400 rtt:200
4g: up:9000 down:9000 rtt:85
lte: up:12000 down:12000 rtt:35
edge: up:200 down:240 rtt:35
dial: up:30 down:49 rtt:60
fois: up:5000 down:20000 rtt:2
Использование профилей
throttle 4g
В XCode 12 вам необходимо установить дополнительные инструменты для XCode 12 вместо аппаратных инструментов ввода-вывода.
Для XCode 10.2 в разделе Дополнительные инструменты разработчика — Дополнительные инструменты для XCode 10.2 вы найдете Network Link Conditioner.
Джейсон Салаз
Майк Веллер
Рэнди Л
Пирс
dnctl
/ipfw
dummynet через егоnlcd
демона (см.: newosxbook.com/bonus/vol1ch16.html )