Автор Тема: Самый простой способ создать трафик на сетевом интерфейсе  (Прочитано 6229 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн qwertyuser

  • самый главный админ
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 568
  • Karma: +65535/-0
  • кармадрочер
    • Просмотр профиля
    • ufoserver.org
Есть программа iperf, которая позволяет проверять скорость интерфейсов (у меня на тестах из 10G интерфейса она выжимала 9.37 Гбит/с).

Пакет (в дебиане и убунте) так и называется — iperf.

Применение очень простое: на одном сервере запускаете iperf -s X.X.X.X (свой собственный адрес сервера, на котором слушать). Можно запустить просто iperf -s, тогда слушать будет на всех интерфейсах.

На клиентской части пишем iperf -c X.X.X.X (адрес сервера из предыдущего этапа). Клиент подключается, работает 10 с и показывает скорость работы к(пип)а.

Пример: сервер имеет адрес 192.0.2.1, клиент 192.0.2.200. На сервере запускаем iperf -s 192.0.2.1 на клиенте iperf -c 192.0.2.1.

Для того, чтобы сделать много байтов (привет хостерам с соотношениями) нужно просто указать опцию -t (время в секундах). Многие гигабайты трафика в нужном направлении вам обеспечены. С учётом текущих тарифов для дома — можно даже с домашней машины, за 3-4 часика можно выправить любое соотношение с минимальной нагрузкой как на сервер, так и на клиента.

от седова
по вопросам размещения Ваших сайтов на этом сервере пишите info@qwertyuser.ru

Оффлайн qwertyuser

  • самый главный админ
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 568
  • Karma: +65535/-0
  • кармадрочер
    • Просмотр профиля
    • ufoserver.org
Открыл для себя очень удобную утилиту iperf ( http://dast.nlanr.net/Projects/Iperf/ ). Работает под всеми системами, бесплатная, с открытыми исходниками. Под Windows не требует установки. Пример установки на FreeBSD здесь.

Меряет довольно точно - по крайней мере, результаты правдоподобные, и совпадают друг с другом при нескольких измерениях. Программу нужно запускать на двух компьютерах, по обе стороны тестируемого к(пип)а (с одной стороны - в режиме сервера, с другой - в режиме клиента). Скорость (полоса к(пип)а) тестируется при этом только в одном направлении - от клиента к серверу, то есть клиент передает данные, а сервер принимает. Чтобы протестировать полосу к(пип)а в обратном направлении, сервер и клиент меняются местами на концах к(пип)а. iperf может генерить трафик "в никуда", например на несуществующий адрес. С помощью этого можно загрузить к(пип) или сетевой интерфейс на необходимую величину - см. Пример 4. Хорошая инструкция от РТКом по использованию программы здесь. Для получения подсказки об использовании утилиты достаточно набрать iperf –help.

Пример 1
(тестирование по TCP-порту 5001, для другого порта нужно использовать ключ -p).
Запуск сервера (у которого IP 10.50.xx.yy):
>iperf -s
Запуск клиента:
>iperf -c 10.50.xx.yy

Пример 2
(тестирование по UDP-порту 4000):
Запуск сервера (у которого IP 10.50.xx.yy):
>iperf -s -u -p4000
Запуск клиента:
>iperf -c 10.50.xx.yy -u -p 4000
При тестировании UDP лучше задавать полосу к(пип)а, величиной немного более ожидаемой, с помощью ключа -b. Если ключ -b не указать, то предполагается по умолчанию полоса 1 мбит/сек, и скорость при тестировании не будет превышать этой величины. В примере ожидается, что полоса к(пип)а должна быть 2 мегабита:
Запуск сервера (у которого IP 10.50.xx.yy):
>iperf -s -u -p4100
Запуск клиента:
>iperf -c 10.50.xx.yy -u -p 4100 -b 2100000

Пример 3.
Скрипт, который устанавливает iperf на удаленной машине как сервис, и запускает его - с помощью этого можно быстро протестировать к(пип) (без проблем с копированием на удаленный компьютер, запуском его и проч.). Для того, чтобы скрипт отработал, пользователь UserName и пароль Pass должны принадлежать пользователю с правами админа.

'Файл install_iperf.vbs - инсталляция утилиты iperf.exe
' и запуск её на удаленной машине.
Dim RemoteSystem
'IP удаленной машины
RemoteSystem = "10.20.0.35"

'1. Копируем iperf.exe на удаленный компьютер
Set FSO = CreateObject("Scripting.FileSystemObject")
' тут указывается путь до локальной копии iperf.exe
Set File = FSO.GetFile("C:\Distrib\Tools\net\iperf\iperf.exe")
File.Copy "\\" + RemoteSystem + "\ADMIN$\system32\"

'2. Install iperf as service on remote machine
On Error Resume Next
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
UserName = "domain_mame\admin" 'имя пользователя
Pass = "admin_pass"
Set objServices = objSWbemLocator.ConnectServer(RemoteSystem, "root\CIMV2", UserName, Pass, Null, Null, 0)
If Err.Number <> 0 Then
  WScript.Echo Err.Number & ": " & Err.Description
  WScript.Quit
End If
Set objClass = objServices.Get("Win32_Process")
' информация на удаленном компьютере будет выводиться в лог, находящийся
'  в системной папке ADMIN$\system32
Res = objClass.Create("iperf -s -D -o iperflog.txt", Null, Null, PID)
If Res <> 0 Then
  WScript.Echo "error code: " & Res
End If

'3. Start iperf service on remote machine
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & RemoteSystem & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
 ("SELECT IPerfService FROM Win32_Service WHERE State = 'Stopped' and StartMode = " _
 & "'Auto'")
For Each objService in colListOfServices
  objService.StartService()
Next

При желании можно добавить к скрипту другие вкусности - обработку командной строки, где указывается remote IP, порт для тестирования, протокол UDP или TCP и проч.

Пример 4 (загрузка к(пип)а пустым трафиком, с обратной стороны сервера iperf может и не быть):
>iperf -c 192.168.3.125 -u -b 100m -t 60
Здесь в качестве IP адреса (192.168.3.125) может быть даже отсутствующий (невидимый) в сети host, протокол указан UDP (-u), указана полоса загрузки 100 мегабит (-b 100m), время посылки пакетов 60 секунд (-t 60).

Пример 5. На скорость может иногда влиять размер окна TCP (TCP window size). Этот параметр можно задать опцией -w. Если не задавать, то по умолчанию размер окна принимается величиной 8 кБайт.
>iperf -s -p4100 -w1400
Здесь указан размер окна 1400 байт.  Размер окна есть смысл указывать только на сервере, поскольку он является приемником данных. Можно также указывать величину окна в килобайтах, например -w9k, -w10k, -w40k.

Пример 6. Запуск в режиме демона (как служба, она в списке служб будет называться IPerf Service), протокол UDP, порт по умолчанию 5001:
>iperf -D -u -s
Остановка и удаление службы:
>iperf -R -s

Следущая информация по TCP window size взята из хорошей статьи "Оптимизация работы протокола ТСР в распределенных сетях".
В системе Windows NT размер приемного окна может увеличиваться на величину, кратную максимальному размеру сегмента (Maximum Segment Size, MSS). Значение MSS определяется во время установления соединения. По умолчанию приемное окно задает размер данных 8 Кбайт для Windows NT 4.0 и 16 Кбайт для Windows NT 5.0. Такой размер окна выставляется в реестре операционной системы (параметр ТсрWindowSize — столбец 2 табл. 1). Размер окна, устанавливаемый в сетях Ethernet, позволяет передать 8760 байт информации (8 Кбайт, размещенные в шести сегментах по 1460 байт) для операционной системы Windows NT 4.0 и 17520 байт (16 Кбайт, размещенные в 12 сегментах по 1460 байт) для Windows NT 5.0.
« Последнее редактирование: Декабрь 06, 2010, 01:07:45 am от qwertyuser »
по вопросам размещения Ваших сайтов на этом сервере пишите info@qwertyuser.ru