Измерение пропускной способности Ethernet канала
Возникла задача измерить пропускную способность Ethernet канала и предоставить отчет, причем измерения нужно проводить 24 часа. Какими способами это можно сделать?
Чем
- Сервис speedtest.net — измеряет ширину канала Интернет до некого сервера. Нам не подходит так как данный сервис меряет не конкретный канал связи, а всю линию до определенного сервера, так же измеряемый канал связи не имеет выхода в Интернет;
- Скачать объемный файл из одного конца канала в другой. Не совсем подходит так как отсутствует необходимая точность измерения;
- Iperf — клиент-серверная утилита, позволяющая проводить измерения заданное время с предоставлением простенького отчета. С ней мы сейчас и поработаем.
Как
Применение инструмента iperf очень простое: с одной стороны канала на компьютере запускается сервер, который ждет соединения от клиента:
d@i:~$ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------
d@i:~$ iperf -c 172.28.0.103 ------------------------------------------------------------ Client connecting to 172.28.0.103, TCP port 5001 TCP window size: 2.50 MByte (default) ------------------------------------------------------------ [ 3] local 172.28.0.103 port 56868 connected with 172.28.0.103 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 32.9 GBytes 28.2 Gbits/sec
Как видим из отчета пропускная способность измерялась 10 секунд и составила 28.2 Гбит/с (скорость такая большая потому что и сервер и клиент запускались на одном компьютере). Отлично, но нам нужно измерять скорость целые сутки. Смотрим параметры iperf —help и находим там кучу полезной информации. В итоге у меня получилось примерно так:
d@i:~$ iperf -c 172.28.0.103 -t 86400 -i 15 ------------------------------------------------------------ Client connecting to 172.28.0.103, TCP port 5001 TCP window size: 2.50 MByte (default) ------------------------------------------------------------ [ 3] local 172.28.0.103 port 56965 connected with 172.28.0.103 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-15.0 sec 58.0 GBytes 33.2 Gbits/sec [ 3] 15.0-30.0 sec 50.4 GBytes 28.9 Gbits/sec [ 3] 30.0-45.0 sec 47.4 GBytes 27.2 Gbits/sec [ 3] 45.0-60.0 sec 51.8 GBytes 29.7 Gbits/sec [ 3] 60.0-75.0 sec 45.5 GBytes 26.1 Gbits/sec [ 3] 75.0-90.0 sec 43.2 GBytes 24.7 Gbits/sec [ 3] 90.0-105.0 sec 54.6 GBytes 31.3 Gbits/sec
Параметр -t 86400 задает время измерения в секундах, а параметр -i 15 говорит выдавать результат каждые 15 секунд. Уже лучше, но не совсем удобно просматривать такой отчет за целые сутки (в таком отчете будет 86400/15=5760 строк). Смотрим help дальше и видим что iperf умеет предоставлять отчет в виде:
-y, --reportstyle C report as a Comma-Separated Values
d@i:~$ iperf -c 172.28.0.103 -t 86400 -i 15 -y C 20141130132436,172.28.0.103,56976,172.28.0.103,5001,3,0.0-15.0,59595292672,31784156091 20141130132451,172.28.0.103,56976,172.28.0.103,5001,3,15.0-30.0,49530142720,26416076117 20141130132506,172.28.0.103,56976,172.28.0.103,5001,3,30.0-45.0,57119866880,30463929002
Отлично! То, что нужно! Теперь iperf выдает статистику удобную для обработки. Параметры в отчете разделены запятыми. Первая колонка — дата и время, потом видны ip адреса и порты клиента и сервера, в конце пропускная способность в битах/с. Перенаправим этот отчет в файл:
d@i:~$ iperf -c 172.28.0.103 -t 86400 -i 15 -y C > stat.txt
Поcле окончания суточного теста в файле stat.txt аккуратно сложены результаты, которые нужно визуализировать в удобном виде для анализа.
И что теперь с этим делать?
Итак, в файле stat.txt собраны результаты тестов пропускной способности канала за нужное время с заданным интервалом. Просматривать глазами каждую из нескольких тысяч строк и делать анализ конечно можно, но когда-то люди придумали компьютеры в первую очередь для облегчения себе труда, а не для просмотра котиков в вконтактиках и мы воспользуется этим изобретением.
В файле отчета лежат данные необходимые и не очень. Избавимся от лишних. Нас интересует дата/время измерения и скорость в эту дату/время. Это первый и последний параметр в каждой строке файла stat.txt.
Я обработал этот файл наспех написанным скриптом на python3, прошу не судить за кривость кода — я ненастоящий сварщик, я маску на стройке нашел.
#!/usr/bin/env python3 import datetime st = open('stat.txt', 'r') res = open('est.txt', 'w') for line in st: w = line.split(',') ti = datetime.time(int(w[0][-6:][0:2]), int(w[0][-6:][2:4]), int(w[0][-6:][4:6])) da = datetime.date(int(w[0][0:8][0:4]), int(w[0][0:8][4:6]), int(w[0][0:8][6:9])) print(" ".format(da, ti, int(w[8])/(1024**2)), file=res) res.close()
Этот скрипт читает строки из файла stat.txt и записывает результаты в файл est.txt. В файле est.txt получается:
d@i:~/project/iperf_graph$ cat est.txt 2014-11-30 13:35:07 4521.25 2014-11-30 13:35:08 3682.875 2014-11-30 13:35:09 2974.75 2014-11-30 13:35:10 2974.625 2014-11-30 13:35:11 2976.375 2014-11-30 13:35:12 2976.25 2014-11-30 13:35:13 2977.0 2014-11-30 13:35:14 2969.75
Уже удобнее. Показана дата, время результат измерения в Мбит/с. Для этого примера взяты результаты измерения за 10 минут с отчетом каждую секунду.
Но всё еще результат в виде текстового файла не сильно удобного для анализа. Надо нарисовать график!
Для рисования графиков есть специальные и крутые программы. Я советую gnuplot за ее супергибкость, бесплатность, кучу примеров в интернете.
После получаса копаний в результатах запроса к гуглу «gnuplot example» у меня родился следующий скрипт:
#! /usr/bin/gnuplot -persist set term png size 1024,768 #set terminal postscript eps enhanced color size 1024, 768 set output "graph.png" set grid set yrange[0:] set xdata time set xlabel "Time" set ylabel "Mbit/s" set timefmt "%Y-%m-%d %H:%M:%S" set format x "%Y-%m-%d %H:%M:%S" set xrange [] noreverse nowriteback set xtics rotate plot "est.txt" using 1:3 title "Bandwith" with filledcurve x1 lt 1 lc 2
Этот скрипт читает файл est.txt, который получился после обработки stat.txt и рисует график в файл graph.png. Запускаем и появляется файл graph.png.
Результат
В результате появилась простая методика измерения пропускной способности канала с визуально удобным отчетом и два скрипта обработки данных.
В эти скрипты можно напихать кучу всего другого для гибкости вроде: отчет за заданный интервал времени, более подробную детализацию графика для более пристального расматривания, прикрутить анализ по времени отклика ping, параллельно с сбором суточных даных снимать с каналообразующего оборудования по SNMP другие данные типа уровней сигнала на радиоканале и показателей BER, но это уже другая история.
Ширина канала Wi-Fi на роутере: 20 МГц, 40 МГц или Авто?
Привет! Сегодня будет годная статья про ширину канала. Что такое ширина канала, какую лучше выбрать – 20 МГц или 40 МГц, и как все-таки правильно? Эти и многие другие вопросы в авторской статье Ботана на WiFiGid.ru.
Если у тебя остались какие-то вопросы или есть интересные идеи, пожалуйста, напиши их в комментарии. Их обработают, ответят, а статью обновят, чтобы у следующих читателей точно все классно получилось с первого раза!
Что нужно установить?
Сначала хотелось бы разобраться с практическим вопросом, а вся теория уже будет ниже, дабы не напрягать читателей, ищущих лучший вариант пеленками текста. Итак, вот основные значения на роутерах 2,4 ГГц:
- 20/40 Мгц (Авто) – рекомендуется установить, если нет никаких проблем.
- 20 МГц – рекомендуется попробовать при подозрении на общие помехи от соседей и плохую работу Wi-Fi.
- 40 МГц – особый случай, если роутер не слушается. Лучше попробовать с Авто.
На новых 5 ГГц роутерах появился еще один режим: 20/40/80 МГц. Использование аналогично.
Чистые режимы вроде 40 МГц не рекомендованы стандартами IEEE 802.11n, т.к. могут вызвать несовместимость старых устройств. Именно поэтому на роутерах иногда присутствуют всего 2 режима – 20 MHz и Авто.
Что такое ширина?
Если очень коротко, ширина канала – это пропускная способность канала.
Но круче самого слова «ширина» здесь и не подберешь. Немного теории. Весь частотный диапазон около частот 2,4 ГГц и 5 ГГц, используемых в Wi-Fi, делится на каналы – небольшие полосы частот, чтобы можно было в рамках одной частоты уместить очень много устройств без сильного влияния друг на друга. В том же 2,4 ГГц их выделено стандартом 13 штук:
Видите эти дуги шириной в 22 МГц? Это и есть ширина канала. При этом обратите внимание, как пересекаются каналы между собой. Так и в жизни, Wi-Fi соседей в нашем доме как-то влияет и на нашу сеть, а в самом худшем случае могут возникнуть такие помехи, что скорость сети провалится просто в дно. Поэтому тема с выбором каналов и переездом в 5 ГГц (где общая ширина и количество каналов больше) становится все актуальнее в последнее время.
Но оказывается, что можно установить ширину в 40 МГц. Т.е. разница будет в том – что канал захватит больше места. Что от этого изменится? Изменится его полоса пропускания. На пальцах – есть проселочная грунтовая дорога. Едет по ней трактор, а все остальные будьте добры провалиться в кювет, т.к. места нет. А есть МКАД – полос больше, в общем машин пропускает больше, но тоже иногда стоит. А теперь представьте, что на МКАДе все снести и проложить там грунтовку…
Какую ширину канала выбрать?
Вот так и с шириной канала – чем он шире, тем больше через него пройдет. Чем уже – тем меньше. Для увеличения скорости лучше поставить 40 МГц.
Но не все так радужно. Взгляните еще раз на рисунок с каналами выше. Если посмотрите, там выделены 3 канала – 1й, 6й и 11й. Смысл их выделения – они не пересекаются. Т.е. при выборе ширины канала в 20 МГц мы получаем 3 непересекающихся каналов. Конечно, использовать можно и пересекающиеся, но здесь больше смысл в свободе общего диапазона от помех – в диапазоне можно разнести 3 устройства, и они абсолютно никак не будут влиять друг на друга.
Другое дело с 40 МГц – такой канал можно разместить лишь один. Все остальные будут пересекаться с ним, создавать помехи, влиять на итоговую скорость – это негативное отличие от узкой полосы. А если все будет совсем плохо, через Wi-Fi даже может пострадать итоговая скорость интернета на конечных устройствах.
Так все-таки, какая ширина канала лучше – 20 или 40 МГц? Как итог:
- Если у вас нет соседей – ставим 40 МГц.
- Если есть соседи – ставим 20 МГц.
- Если до сих пор ничего не поняли – ставим АВТО. Тоже хороший выбор, особой разницы не будет, роутер тоже не большой дурак.
О том же примерно пишется и в справках роутеров:
Можно провести испытания методом тыка – поставили 40 МГц. Проверили работу в течение пары дней. Если что-то не понравилось, поставили 20 МГц на еще пару дней. Сравнили.
Для теоретиков же можно предварительно посмотреть загрузку по каналам перед выбором режима с помощью того же inSSIDer.
Или вот еще интересное видео по выбору канала (а от него и ширины):
Как изменить?
Изменять ширину канала нужно в настройках самой точки доступа. Пусть в нашем случае это будет самый обычный домашненький роутер. Для начала нужно войти в настройки своего роутера и выбрать настройки беспроводной сети.
Как это сделать – тема не этой статьи. Каждый роутер немного отличается друг от друга, рекомендую воспользоваться поиском по нашему сайту и ввести туда свою модель – у нас очень много инструкций по настройке маршрутизаторов почти под любую модель. Там же прочитаете и про вход в веб-конфигуратор.
Ну а там уже все будет выглядеть примерно вот так (на примере своего TP-Link):
На других роутерах нередко называется Bandwidth или Channel Width.
Не забывайте сохранять настройки! А то бывают у нас в вопросах отдельные случаи…
Вот вроде бы и все. Наш портал рассчитан на обычного пользователя, без лишних заумностей, так что рекомендация – смело ставьте 20/40 MHz и не чурайтесь такой автоматики. В 99% случаев это работает идеально. На этом прощаюсь, всем хорошего дня!
Ширина и обозначения каналов
Небольшое дополнение про влияние ширины на обозначение каналов. Если мы используем стандартные 20 МГц, то там все просто – используется один канал. Но если мы переключаемся уже на 40 МГц, то приходится использовать 2 канала. И такие обозначения уже начинают выглядеть интересно: 9+5, 6+1, 1+1, 40-1 и т. д. А если используется ширина 80 МГц или даже 160 МГц? Разумеется, сложность обозначения растет. Более подробно об этом я уже написал в основной статье про каналы Wi-Fi.