Добрый день, всем! Есть у нас локальная сеть и сеть соединенная через провайдера в другом городе. Провайдер по договору говорит что предоставляет 256 кбит/сек, но мы не верим и хотим уточнить это. Я проверял скорость с помощью утилиты Iperf, оно показывает 100 кбит/с, но говорят что это утилита не точная. Как определить полосу пропускания канала кто может помочь? Заранее благодарен!
>Добрый день, всем! Есть у нас локальная сеть и сеть соединенная через
>провайдера в другом городе. Провайдер по договору говорит что предоставляет 256
>кбит/сек, но мы не верим и хотим уточнить это. Я проверял
>скорость с помощью утилиты Iperf, оно показывает 100 кбит/с, но говорят
>что это утилита не точная. Как определить полосу пропускания канала кто
>может помочь? Заранее благодарен!Точная или нет, она в 2,5 раза бы не ошиблась.
Я считаю что вам не нужно доказывать ничего провайдеру, нужно чтоб провайдер решил этот вопрос. Скажи, что запуск iperf - это единственное, зачем тебе канал вообще нужен. Пока iperf будет показывать 100 вместо 256, ты будешь платить в 2,5 раза меньше.
В конце концов, пускай их специалист придет с инструментом, который точнее iperf.
Акт выполненных работ им подписывать не нужно :)
Ори в трубку погромче :)
Тоесть по вашему сотни тысяч абонентов должны всё бросить и идти жрать мозг техсаппорту просто потому что делать нехрен? Оставьте тут свой телефончик - пусть лучше вам жрут.
256кбит/с это 32кБайт/с (простая математика). У меня точно такой же канал во внешку. Вы не поверите, но качаю файлы с большинства ресурсов я примерно с этой скоростью (wget'у у меня нет повода не доверять, разумеется с учётом потерть на служебный трафик, ICQ/Jabber и прочие мелочи), в том числе с рапиды, ifolder, deposit и репозитариев. Простейшая такая проверка для таких каналов, без плясок с бубнами, а главное кроссплатформенная =)
вы, я надеюсь, меряете с помощью udp?
измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>вы, я надеюсь, меряете с помощью udp?
>измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь
>показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>конечно же по TCP, по UDP показывает вообще неправильно - 1 Кбит/сек
>>вы, я надеюсь, меряете с помощью udp?
>>измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь
>>показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>>
>
>конечно же по TCP, по UDP показывает вообще неправильно - 1 Кбит/сек
>стоит пропробывать покачать через фтп, конкретный размер файла и засечь время, или можно воспользоваться еще утилитами типо DUMETER, она показывает скорость на интерфейсе под винду.
>[оверквотинг удален]
>>>измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь
>>>показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>>>
>>
>>конечно же по TCP, по UDP показывает вообще неправильно - 1 Кбит/сек
>>
>
>стоит пропробывать покачать через фтп, конкретный размер файла и засечь время,
>или можно воспользоваться еще утилитами типо DUMETER, она показывает скорость на
>интерфейсе под винду.так померить можно конечно,
оно работает по tcp, поэтому результат будет немного ниже, чем реальный размер, это связано с работой qos (ограничение по скорости). Работает оно ведь так: набирает скорость, упирается в верхний предел, железка скидывает пакеты, windows size уменьшается, скорость падает, потом tcp опять понимает, а что если мы поднимимя, и опять та же самая ситуация. Если представить график то будет как пила.Другое дело с UDP, который не требует подтверждения, тем самым можно померить максимальную выжимаемую скорость :)
>>вы, я надеюсь, меряете с помощью udp?
>>измерения основанные на tcp не подходят для измерения "пропускной способности", они лишь
>>показывают эффективную скорость сессии, на которую может влиять большая кипа факторов.
>>
>
>конечно же по TCP, по UDP показывает вообще неправильно - 1 Кбит/сек
>это дефолтное значение, указанное в параметрах запуска.
измените его на то, которое нужно и будет вам счастье.
iperf генерирует udp поток на указанной скорости, дальше смотрите, пролазит ли этот поток в канал.
tcp подстраивает скорость, повторю, параметров очень много, поэтому с помощью tcp (одна - две сессии) не может разогняться под битовую скорость канала передачи данный.
>>
>
>это дефолтное значение, указанное в параметрах запуска.
>измените его на то, которое нужно и будет вам счастье.
>iperf генерирует udp поток на указанной скорости, дальше смотрите, пролазит ли этот
>поток в канал.
>tcp подстраивает скорость, повторю, параметров очень много, поэтому с помощью tcp
>(одна - две сессии) не может разогняться под битовую скорость канала
>передачи данный.Вот я со стороны клиента поставил
iperf -c x.x.x.x -u -i 10 -t 600 - UDPА с сервера:
iperf -s -u - UDPА вы какие параметры предлагаете применить?
>[оверквотинг удален]
>>(одна - две сессии) не может разогняться под битовую скорость канала
>>передачи данный.
>
>Вот я со стороны клиента поставил
>iperf -c x.x.x.x -u -i 10 -t 600 - UDP
>
>А с сервера:
>iperf -s -u - UDP
>
>А вы какие параметры предлагаете применить?-b, --bandwidth n[KM]
man iperf, же
>
>-b, --bandwidth n[KM]
>man iperf, жеУ вас кажется другая версия, можете вашу утилиту дать?
>
>>
>>-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-addressDefaults:
* 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 specifiedUsage 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 parameterThe 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;
}