Как правильно протестировать пропускную способность услуги
Для того чтобы убедиться, в том, что пропускная способность предоставленного сервиса не хуже оговоренного контрактного значения, клиент может провести тестирование. Для проведения тестов необходимо осуществить пропуск трафика через магистральную сеть с максимально возможной скоростью. Следует понимать, что трафик пропущенный через сеть в ходе тестирования подлежит таррификации.
Методика тестирования требует соблюдения некоторых условий:
- пропускная способность серверной части должна быть не меньше емкости тестируемого порта (сервер iperf.comcor.ru позволяет тестировать каналы до 700Мбит/с, при этом корректно самостоятельно измерять каналы до 200Мбит/с)
- необходимо на время тестов исключить весь трафик, кроме трафика от генераторов
- результаты измерения полосы, полученные от стандартных неспециализированных программных средств (ftp, http и пр.) нельзя считать корректными, поскольку они используют стандартные настройки TCP/IP стека операционной системы, которые, в некоторых случаях не позволяют разгонять полосу пропускания выше определенного значения.
- в качестве программного средства для измерения полосы пропускания рекомендуется использовать свободно распространяемую утилиту Iperf (http://iperf.sourceforge.net)
- измерение максимально допустимой полосы следует проводить с использованием протокола TCP
Iperf работает в режиме клиент-сервер: одно приложение запускается в каччестве серверного, а второе – как клиентское. Клиент открывает соединение с сервером и генерирует трафик на него с максимально-возможной скоростью, возможно запустить двухсторонний тест. После окончания сессии рассчитывается значение пропускной способности, которое является усредненным за период теста.
Для получения подсказки об использовании утилиты достаточно набрать iperf –help, так же информацию по использованию можно получить с сайта
http://sourceforge.net/news/?group_id=128336 или
iperf.fr (с него же можно скачать и версии для Linux b MAC)
.
Измерения рекомендуется производить не менее чем на трехминутном интервале.
Ниже приведен пример использования утилиты.
на клиентской стороне выполняется команда
iperf -c iperf.comcor.ru -w 1M -P 5 -t 180 |
В примере используется 5 TCP сессий, время теста задано в 180 секунд.
Отчет со стороны клиента:
G:\>iperf -c iperf.comcor.ru -w 1M -P 5 -t 180
------------------------------------------------------------
Client connecting to iperf.comcor.ru, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------!
local 82.138.0.102 port 2776 connected with 62.117.87.73 port 5001
local 82.138.0.102 port 2774 connected with 62.117.87.73 port 5001
local 82.138.0.102 port 2775 connected with 62.117.87.73 port 5001
local 82.138.0.102 port 2777 connected with 62.117.87.73 port 5001
local 82.138.0.102 port 2778 connected with 62.117.87.73 port 5001
{ ID} Interval Transfer Bandwidth
{1744} 0.0-180.0 sec 130 MBytes 6.07 Mbits/sec
{1776] 0.0-180.0 sec 130 MBytes 6.08 Mbits/sec
{1792] 0.0-180.0 sec 130 MBytes 6.08 Mbits/sec
{1756] 0.0-180.0 sec 130 MBytes 6.08 Mbits/sec
{1840] 0.0-180.0 sec 130 MBytes 6.07 Mbits/sec
{SUM} 0.0-180.0 sec 652 MBytes 30.4 Mbits/sec
|
Результат нашего теста приведен в нижней строке - {SUM} 0.0-180.0 sec 652 MBytes 30.4 Mbits/sec
Допустимая погрешность измерения до 10%
Почему нельзя полагаться на измерения полосы пропускания, полученные от стандартных программных средств?
На скорость работы приложений может влиять очень много факторов. Один из основных - для передачи данных многие приложения используют протокол TCP, в котором есть ряд параметров, которые могут существенно влиять на скорость его работы, например размер "окна". Данный параметр определяет, сколько данных может передать отправитель без получения подтверждения об их приеме от получателя. В идеальном случае, "окно" должно расти до тех пор, пока не достигнет максимально возможного для данного канала размера. Но в каждой операционной системе этот алгоритм реализован по-разному. В Windows'XX, например, стек TCP/IP оптимизирован под применение в локальных сетях, со скоростями ~10Mbit/s и задержками ~1-70ms. Если RTT превышает указанный промежуток, размер "окна" не увеличивается, а значит остается значение по умолчанию (например MS - 8KB, Solaris - 24KB и т.д.). Даже если "окно" увеличивается, то в Windows 2000 max TcpWindowsSize равно 17520 байт, что при задержке Москва - Владивосток в ~130ms дает максимально возможную скорость передачи для одной TCP сессии между Window's машинами ~135КБ/c(~1Мбит/c). С помощью настроек в реестре Windows можно несколько улучшить ситуацию, но, к сожалению, незначительно. В UNIX-системах ситуация немного лучше.
Тестирование с помощью программы Iperf и использование различных ключей позволяют уйти от параметров по умолчанию для конкретной ОС и протестировать реально возможную пропускную способность каналов.
1 folders, 2 files - Total: 2,80 MB