URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 20153
[ Назад ]

Исходное сообщение
"Как определить пропускную полосу канала?"

Отправлено Yerla , 03-Дек-09 05:10 
Добрый день, всем! Есть у нас локальная сеть и сеть соединенная через провайдера в другом городе. Провайдер по договору говорит что предоставляет 256 кбит/сек, но мы не верим и хотим уточнить это. Я проверял скорость с помощью утилиты Iperf, оно показывает 100 кбит/с, но говорят что это утилита не точная. Как определить полосу пропускания канала кто может помочь? Заранее благодарен!  

Содержание

Сообщения в этом обсуждении
"Как определить пропускную полосу канала?"
Отправлено Hawk , 03-Дек-09 06:39 
>Добрый день, всем! Есть у нас локальная сеть и сеть соединенная через
>провайдера в другом городе. Провайдер по договору говорит что предоставляет 256
>кбит/сек, но мы не верим и хотим уточнить это. Я проверял
>скорость с помощью утилиты Iperf, оно показывает 100 кбит/с, но говорят
>что это утилита не точная. Как определить полосу пропускания канала кто
>может помочь? Заранее благодарен!

Точная или нет, она в 2,5 раза бы не ошиблась.
Я считаю что вам не нужно доказывать ничего провайдеру, нужно чтоб провайдер решил этот вопрос. Скажи, что запуск iperf - это единственное, зачем тебе канал вообще нужен. Пока iperf будет показывать 100 вместо 256, ты будешь платить в 2,5 раза меньше.
В конце концов, пускай их специалист придет с инструментом, который точнее iperf.
Акт выполненных работ им подписывать не нужно :)
Ори в трубку погромче :)


"Как определить пропускную полосу канала?"
Отправлено QuAzI , 03-Дек-09 07:49 
Тоесть по вашему сотни тысяч абонентов должны всё бросить и идти жрать мозг техсаппорту просто потому что делать нехрен? Оставьте тут свой телефончик - пусть лучше вам жрут.
256кбит/с это 32кБайт/с (простая математика). У меня точно такой же канал во внешку. Вы не поверите, но качаю файлы с большинства ресурсов я примерно с этой скоростью (wget'у у меня нет повода не доверять, разумеется с учётом потерть на служебный трафик, ICQ/Jabber и прочие мелочи), в том числе с рапиды, ifolder, deposit и репозитариев. Простейшая такая проверка для таких каналов, без плясок с бубнами, а главное кроссплатформенная =)

"Как определить пропускную полосу канала?"
Отправлено chocholl , 03-Дек-09 08:07 
вы, я надеюсь, меряете с помощью udp?
измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.


"Как определить пропускную полосу канала?"
Отправлено Yerla , 03-Дек-09 08:12 
>вы, я надеюсь, меряете с помощью udp?
>измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь
>показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>

конечно же по TCP, по UDP показывает вообще неправильно - 1 Кбит/сек


"Как определить пропускную полосу канала?"
Отправлено dades , 03-Дек-09 09:33 
>>вы, я надеюсь, меряете с помощью udp?
>>измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь
>>показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>>
>
>конечно же по TCP, по UDP показывает вообще неправильно - 1 Кбит/сек
>

стоит пропробывать покачать через фтп, конкретный размер файла  и засечь время, или можно воспользоваться еще утилитами типо DUMETER, она показывает скорость на интерфейсе под винду.


"Как определить пропускную полосу канала?"
Отправлено Александр , 03-Дек-09 09:38 
>[оверквотинг удален]
>>>измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь
>>>показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>>>
>>
>>конечно же по TCP, по UDP показывает вообще неправильно - 1 Кбит/сек
>>
>
>стоит пропробывать покачать через фтп, конкретный размер файла  и засечь время,
>или можно воспользоваться еще утилитами типо DUMETER, она показывает скорость на
>интерфейсе под винду.

так померить можно конечно,
оно работает по tcp, поэтому результат будет немного ниже, чем реальный размер, это связано с работой qos (ограничение по скорости). Работает оно ведь так: набирает скорость, упирается в верхний предел, железка скидывает пакеты, windows size уменьшается, скорость падает, потом tcp опять понимает, а что если мы поднимимя, и опять та же самая ситуация. Если представить график то будет как пила.

Другое дело с UDP, который не требует подтверждения, тем самым можно померить максимальную выжимаемую скорость :)



"Как определить пропускную полосу канала?"
Отправлено chocholl , 03-Дек-09 11:07 
>>вы, я надеюсь, меряете с помощью udp?
>>измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь
>>показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>>
>
>конечно же по TCP, по UDP показывает вообще неправильно - 1 Кбит/сек
>

это дефолтное значение, указанное в параметрах запуска.
измените его на то, которое нужно и будет вам счастье.
iperf генерирует udp поток на указанной скорости, дальше смотрите, пролазит ли этот поток в канал.
tcp подстраивает скорость, повторю, параметров очень много, поэтому с помощью tcp  (одна - две сессии) не может разогняться под битовую скорость канала передачи данный.


"Как определить пропускную полосу канала?"
Отправлено Yerla , 03-Дек-09 11:22 

>>
>
>это дефолтное значение, указанное в параметрах запуска.
>измените его на то, которое нужно и будет вам счастье.
>iperf генерирует udp поток на указанной скорости, дальше смотрите, пролазит ли этот
>поток в канал.
>tcp подстраивает скорость, повторю, параметров очень много, поэтому с помощью tcp  
>(одна - две сессии) не может разогняться под битовую скорость канала
>передачи данный.

Вот я со стороны клиента поставил
iperf -c x.x.x.x -u -i 10 -t  600 - UDP

А с сервера:
iperf -s -u  - UDP

А вы какие параметры предлагаете применить?



"Как определить пропускную полосу канала?"
Отправлено chocholl , 03-Дек-09 13:22 
>[оверквотинг удален]
>>(одна - две сессии) не может разогняться под битовую скорость канала
>>передачи данный.
>
>Вот я со стороны клиента поставил
>iperf -c x.x.x.x -u -i 10 -t  600 - UDP
>
>А с сервера:
>iperf -s -u  - UDP
>
>А вы какие параметры предлагаете применить?

-b, --bandwidth n[KM]
man iperf, же


"Как определить пропускную полосу канала?"
Отправлено Yerla , 03-Дек-09 15:08 

>
>-b, --bandwidth n[KM]
>man iperf, же

У вас кажется другая версия, можете вашу утилиту дать?



"Как определить пропускную полосу канала?"
Отправлено chocholl , 03-Дек-09 15:48 
>
>>
>>-b, --bandwidth n[KM]
>>man iperf, же
>
>У вас кажется другая версия, можете вашу утилиту дать?

у мня такая
andrey@wk4:~$ iperf -v
iperf version 2.0.4+svnr43 (7 Apr 2008) pthreads
andrey@wk4:~$

взято с убутновского репа, также юзаю подобное на centos-ах и bsd.
и оттуда и оттуда можно укачать.

кстати, можно померять даже не прибегая к нему.
используйте нижеприведенный скрипт, в направлении канала п.д.
он создаст односторонний поток, подержите его подольше включенным и посмотрите на статистику интерфейса по ту сторону канала п.д.

#####################################################
# udp flood.
######################################################

use Socket;
use strict;
use Getopt::Long;
use Time::HiRes qw( usleep gettimeofday ) ;

our $port = 0;
our $size = 0;
our $time = 0;
our $bw   = 0;
our $help = 0;
our $delay= 0;

GetOptions(
    "port=i" => \$port,        # UDP port to use, numeric, 0=random
    "size=i" => \$size,        # packet size, number, 0=random
    "bandwidth=i" => \$bw,        # bandwidth to consume
    "time=i" => \$time,        # time to run
    "delay=f"=> \$delay,        # inter-packet delay
    "help|?" => \$help);        # help
    

my ($ip) = @ARGV;

if ($help || !$ip) {
  print <<'EOL';
flood.pl --port=dst-port --size=pkt-size --time=secs
         --bandwidth=kbps --delay=msec ip-address

Defaults:
  * random destination UDP ports are used unless --port is specified
  * random-sized packets are sent unless --size or --bandwidth is specified
  * flood is continuous unless --time is specified
  * flood is sent at line speed unless --bandwidth or --delay is specified

Usage guidelines:
  --size parameter is ignored if both the --bandwidth and the --delay
    parameters are specified.

  Packet size is set to 256 bytes if the --bandwidth parameter is used
    without the --size parameter

  The specified packet size is the size of the IP datagram (including IP and
  UDP headers). Interface packet sizes might vary due to layer-2 encapsulation.

Warnings and Disclaimers:
  Flooding third-party hosts or networks is commonly considered a criminal activity.
  Flooding your own hosts or networks is usually a bad idea
  Higher-performace flooding solutions should be used for stress/performance tests
  Use primarily in lab environments for QoS tests
EOL
  exit(1);
}

if ($bw && $delay) {
  print "WARNING: computed packet size overwrites the --size parameter ignored\n";
  $size = int($bw * $delay / 8);
} elsif ($bw) {
  $delay = (8 * $size) / $bw;
}

$size = 256 if $bw && !$size;

($bw = int($size / $delay * 8)) if ($delay && $size);

my ($iaddr,$endtime,$psize,$pport);
$iaddr = inet_aton("$ip") or die "Cannot resolve hostname $ip\n";
$endtime = time() + ($time ? $time : 1000000);
socket(flood, PF_INET, SOCK_DGRAM, 17);

print "Flooding $ip " . ($port ? $port : "random") . " port with " .
  ($size ? "$size-byte" : "random size") . " packets" . ($time ? " for $time seconds" : "") . "\n";
print "Interpacket delay $delay msec\n" if $delay;
print "total IP bandwidth $bw kbps\n" if $bw;
print "Break with Ctrl-C\n" unless $time;

die "Invalid packet size requested: $size\n" if $size && ($size < 64 || $size > 1500);
$size -= 28 if $size;
for (;time() <= $endtime;) {
  $psize = $size ? $size : int(rand(1024-64)+64) ;
  $pport = $port ? $port : int(rand(65500))+1;

  send(flood, pack("a$psize","flood"), 0, pack_sockaddr_in($pport, $iaddr));
  usleep(1000 * $delay) if $delay;
}