У нас есть сетевой коммутатор, и мы можем легко попросить его ограничить полосу пропускания, которую он позволяет, и это хорошо. Было бы здорово, если бы мы могли также попросить его генерировать потери пакетов для нас - это возможно с помощью WANem, но добавляет задержки, и мы имеем дело с приложениями реального времени, поэтому любая задержка, которую мы добавляем, вредна для нас. Кто-нибудь знает о сетевом коммутаторе или маршрутизаторе, который позволяет это или может быть взломан, чтобы приспособиться для этого?
1 ответ
Все коммутаторы с ограничением скорости на порту или vlan должны позволять вам "симулировать" потерю пакетов. Если вашему приложению требуется 1 Мб трафика, установите ограничение чуть ниже этого, и коммутатор должен отбрасывать пакеты.
Помните, что все переключатели, которые имеют эту функцию, должны иметь выборку, чтобы иметь возможность ограничения. Например: порт 1 установлен на ограничение 1 Мб. Порт 1 отправляет трафик 2 Мб за доли секунды. Большая часть этого, вероятно, сделает это. Это связано с тем, что до тех пор, пока коммутатор не сможет обнаружить и измерить объем трафика, он не знает, что отбросить. В зависимости от вашего поставщика это может быть реализовано разными способами, некоторые буферы затем отбрасывают пакеты из буфера, а некоторые просто позволяют моментально входить и выходить, а затем ограничивать.
Если вы ищете, как именно будет реагировать ваше приложение, я бы предложил установить блок BSD прямо перед компьютером, на котором вы тестируете приложение. В BSD (только потому, что я использую их для своих брандмауэров) есть команда ipfw , которая позволит вам напрямую контролировать соединение. Итак, давайте предположим, что ваш текущий сценарий следующий:
+--------------------+ +----------------+ | Application Server | ---> | Client Machine | +--------------------+ +----------------+
Я понимаю, что это было бы чрезмерным упрощением, но оно иллюстрирует концепцию. То, что вы можете сделать, это установить nat в середине и ограничить его
+--------------------+ +-----------------------+ +----------------+ | Application Server | ---> | Rate Limit Box | ---> | Client Machine | | 10.0.0.5 | | 10.0.0.6 192.168.1.1 | | 192.168.1.2 | +--------------------+ +-----------------------+ +----------------+
Еще раз я знаю, что это чрезмерное упрощение. Я добавил IP-адреса, чтобы я мог показать вам, какие команды будут в BSD в поле ограничения скорости. Сначала настройте BSD в качестве обычного маршрутизатора, вы можете использовать pf sense и т.д. Затем вы можете добавить следующие команды в командной строке.
ipfw pipe 1 config bw 101Kbit ipfw add 1 pipe 1 ip from 10.0.0.5 to 192.168.1.2 ipfw add 2 pipe 1 ip from 192.168.1.2 to 10.0.0.5
Это имитирует соединение 101кб с клиентом и сервером. Затем вы можете изменить значение 101 на что угодно, чтобы видеть, что происходит в различных пределах. Настоящее преимущество этого коммутатора по сравнению с коммутатором, который поддерживает ограничивающие функции, заключается в том, что он дешев (простой компьютер с парой интерфейсов) и что при необходимости можно использовать wireshark для захвата трафика, чтобы затем увидеть, что именно отбрасывается, и Сколько. Эта информация может быть очень полезна при разработке лучшего приложения.
по моему мнению