Как организовать bandwidth Stress Test (легально)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
DANic
Сообщения: 23
ОС: Arch Linux

Как организовать bandwidth Stress Test (легально)

Сообщение DANic »

Доброго времени суток.
Появилась задача провести стресс тест канала на арендуемом оборудование.

Нужно создать нагрузку на оборудование входящего и исходящего трафика по 1 - 3 Gbps (на данном этапе не важно будет это одно соединение или много)

Удерживать такую нагрузку хотя бы 15 - 25 минут каждый час, в течении 2 недель.

Какие сервисы могут предоставить такую услугу, какой порядок цен?
Есть ли какой то вариант бесплатно это сделать, но не создавая например ноду для TOR, чтобы не получить бан от хостинг провайдера?

Python Script Speedtest-Cli Забанили меня после того как я запустил ~1500 одновременных тестов :(

iperf как то странно работает

С 1й машины в облаке канал не загрузить, DO нас уже заблокировали как только я организовал трафик более 700mb/s

Попробовал схему 20 машинок в облаке DigitalOcean и по крону запускать
на машинках в облаке
iperf -c DS -b 50M -u -t 1500 -i 1

На сервере iperf запущен так
iperf -s -u -D

Но при 20 машинах доходит только 2-10 mb/s с машины загружая канал на 100-150 mb/s

Хотя загрузить на >700 mb/s мне удалось когда я гнал этот трафик с 1й машины (после чего Support DO заблокировал нам акк)

я так понимаю iperf не способен обрабатывать много подключений. Чем его можно заменить чтобы гнать на сервер с 40 машин хотя бы по 50 mb/s (и обязательно должны быт опция задать bandwish а то опять схлопочу бан от хост провайдера) по 20-25 минут каждый час?


LOIC Я так понимаю будет просто флудить огромным количеством соединений, да и сомнительна легальность этого способа

ipstresstest.com у них Max boot time 1200 Seconds, и как я понял это на весь месяц

IP Stresser (ссылка реферальная) подобный сервис у них максимум час на месяц.

С исходящим пока решил так
nginx на DS (Dedicated server) + файл размером 1GB
на CS (Clouds servers) по крону wget http://DS/bigfile

правда они выкачивают меньше чем за минуту, но больше пока не рискую запускать. Саппорт очень убедительно простит as a reminder we don’t allow any stress testing of any kind on our system. :)

результат с загрузки с 40 CS iperf+wget
Изображение

В общем пока у меня мысли такие такие запустить много копий iperf на DS и слушать на разных портах, на каждом CS настроить отправку на свой порт, правда мне надо разворачивать и сворачивать настроенные CS автоматизировано (это я сделал с помощью API), проблема в том что они разворачиваются из 1го образа, вручную все их править не правильно, так что займусь еще освоением ansible.

Еще есть мысли попробовать через netperf, вроде там можно как настроить пропускную способность поэкспериментировав с ключами если верить
Spoiler
----- Original Message -----
From: "Rick Jones" <rick.jones2 at hp.com>
To: "Legend Overfiend" <legendoftheoverfiend at technologist.com>
Subject: Re: [netperf-talk] Any way to limit bandwidth?
Date: Wed, 30 Nov 2005 15:28:04 -0800

>
> Legend Overfiend wrote:
> > Net perf is overwhelming the memory allocation routines of my driver
> > during UDP uplink, but I'd still like to see the maximum performance of
> > my connection. If I could limit the transmit speed to something
> > reasonable, like 8MBps, then I should easily get my results. I don't see
> > this option in the man page. Is it possible?
>
> And what happens when your driver memory allocation routines are
> overwhelmed? I would expect the driver to simply discard the packet
> and move-on, and all should be well.
>
> Anyway, if you configure with the intervals support, you can then
> specify a burst size and inter-burst interval that will have the
> effect of pacing the rate at which data is sent by netperf for UDP.
> I'm ass-u-me-ing that you are using netperf 2.4.X - best to state
> the version :)
>
> There may be something about intervals support in the manual rather
> than the manpage - look under doc/
>
> happy benchmarking,
>
> rick jones

Thanks, I see that in the manual. I will compile that in.

I was running on OS X and running out of memory buffers. I didn't care about the discarded transmit packets, but for some reason I had no buffers for receive either.


Еще косвенно нашел что Intel® MPI Benchmarks может помочь, но как им пользоваться не нашел.

Все же буду рад дельным предложениям как это можно реализовать еще
Спасибо сказали:
Аватара пользователя
DANic
Сообщения: 23
ОС: Arch Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение DANic »

Пытаюсь реализовать используя netcat, но возникла проблема
если я просто в консоль пишу /bin/nc -l -p 6601 > /root/cat/6601 & , nc нормально работает гоню на него с клиента /bin/dd if=/dev/zero bs=1M count=3024 | /usr/bin/cpipe -s 10000 -vt | /bin/nc ХОСТ 6601 все хорошо
но если запускаю таким скритом

Код:

#!/bin/sh /bin/nc -l -p 6601 > /root/cat/6601 &


то nc падает как только с клиента соедение пришло
пробовал интрепритатор bash тоже самое
ключ -e тоже самое
в чем может проблема?

делаю в ubunta 14.04
В скриптах в init.d используется интерпритатор #!/bin/sh -e
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение Bizdelnick »

Каталог /root/cat существует? Право на запись есть?
А вообще - зачем Вам сохранять эту кучу нулей в файл?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
DANic
Сообщения: 23
ОС: Arch Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение DANic »

задача все та же, создать загрузку на канал,
все есть, все может писать. И все работает если я просто напишу в консоль /bin/nc -l -p 6601 > /root/cat/6601 &
но если это через скрипт, то он нормально запускается, появляется nc который слушает порт, но как только туда пошел трафик падает... почему не пойму....

Попробовал уже через perl запустить
system ("/bin/nc -l -p 6601 > /root/cat/6601 &")
тоже что и bash/shell
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение Bizdelnick »

Код:

#!/bin/sh (/bin/nc -l -p 6601 > /root/cat/6601) &

Только, всё-таки, зачем это писать в файл? Какой смысл кроме как место на диске тратить и IO нагружать?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
DANic
Сообщения: 23
ОС: Arch Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение DANic »

ну что то же с ним надо делать, если не писать то он через 30-40мб останавливается и все дальше не шлет и консоль не возвращает. То есть куда он складывает и это где то очень небольшое.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение Bizdelnick »

DANic писал(а):
11.03.2015 19:23
ну что то же с ним надо делать, если не писать

В /dev/null отправлять.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
DANic
Сообщения: 23
ОС: Arch Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение DANic »

сделал так

Код:

cat nc.pl system ("/bin/nc -l -p 6601 > /dev/null &");

Запускаю так

Код:

perl nc.pl


но проблема та же и вызывает ее именно &

если сделать так

Код:

cat nc.pl system ("/bin/nc -l -p 6601 > /dev/null");


то все работает, но тогда мне не возвращает консоль, а запустить мне надо много копий nc в бэкграунде :(
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение Bizdelnick »

DANic
Я же выше привёл рабочий вариант.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
DANic
Сообщения: 23
ОС: Arch Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение DANic »

неа, в это варианте nc также крашится как только отправляю на него с клиента

Код:

root@tst-ncat:~# /bin/dd if=/dev/zero bs=1M count=3024 | /usr/bin/cpipe -s 10000 -vt | /bin/nc <DS> 6601 thru: 20.144ms at 6.2MB/s ( 6.2MB/s avg) 128.0kB root@tst-ncat:~#
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение Bizdelnick »

А так?

Код: Выделить всё

#!/bin/sh
sh -c '/bin/nc -l -p 6601 > /dev/null' &
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
DANic
Сообщения: 23
ОС: Arch Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение DANic »

Bizdelnick писал(а):
11.03.2015 19:42
А так?

Код: Выделить всё

#!/bin/sh
sh -c '/bin/nc -l -p 6601 > /dev/null' &

тоже падает

Код:

root@tst-ncat:~# /bin/dd if=/dev/zero bs=1M count=3024 | /usr/bin/cpipe -s 10000 -vt | /bin/nc <DS> 6601 thru: 26.336ms at 4.7MB/s ( 4.7MB/s avg) 128.0kB


так работает, но надо в бэкграунд :(

Код:

#!/bin/sh sh -c "/bin/nc -l -p 6601 > /dev/null"



Код:

root@tst-ncat:~# /bin/dd if=/dev/zero bs=1M count=3024 | /usr/bin/cpipe -s 10000 -vt | /bin/nc <DS> 6601 thru: 25.324ms at 4.9MB/s ( 4.9MB/s avg) 128.0kB thru: 76.113ms at 1.6MB/s ( 2.5MB/s avg) 256.0kB thru: 12.776ms at 9.8MB/s ( 3.3MB/s avg) 384.0kB thru: 12.811ms at 9.8MB/s ( 3.9MB/s avg) 512.0kB thru: 21.372ms at 5.8MB/s ( 4.2MB/s avg) 640.0kB thru: 12.656ms at 9.9MB/s ( 4.6MB/s avg) 768.0kB thru: 12.700ms at 9.8MB/s ( 5.0MB/s avg) 896.0kB thru: 12.713ms at 9.8MB/s ( 5.3MB/s avg) 1024.0kB thru: 12.693ms at 9.8MB/s ( 5.6MB/s avg) 1.1MB

Спасибо сказали:
Аватара пользователя
DANic
Сообщения: 23
ОС: Arch Linux

Re: Как организовать bandwidth Stress Test (легально)

Сообщение DANic »

Вот так заработало

Код:

if ($pid=fork){ } else { open STDOUT, '>', '/dev/null'; exec 'nc', '-l', '-p', '6601'; }


на перле
Спасибо сказали: