Измерение пропускной способности 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, но это уже другая история.
2.1.2 Расчет пропускной способности сети
Величина пропускной способности зависит от скорости передачи информации и количества абонентов, которые используют данную скорость. Количество абонентов, которым необходимо предоставить услуги сети широкополосного доступа, составляет 550. Но также надо учесть и объекты, расположенные на территории поселка: детский сад, поликлиника, магазин, центральный офис управляющей компании, автомойка, пост охраны.
Количество абонентов и предоставляемые им услуги представлены в таблице 2.1.
Taблицa 2.1 – Количество абонентов и предоставляемые им услуги
Интернет (12288/6144кбит/с) + VoIP
Интернет (12288/6144кбит/с) + VoIP + IPTV
Скорость в линии для передачи речевого сигнала составит 64 кбит/c, для реализации услуги IPTV требуется связь со скоростью 20 Мбит/с.
Максимальная групповая скорость (V) потока данных, при соответствующей скорости на абонента определяется по формуле (3.1).
V = Na * Vaб кбит/с, (3.1), где
Na – количество абонентов, которым предоставлена определенная скорость передачи данных;
Vaб – скорость передачи данных для абонента.
1. Групповая скорость потока данных (4096/2048 кбит/с).
Скорость нисходящего потока:
V= 960 * 12288 = 11976 Мбит/с;
Скорость восходящего потока:
2. Групповая скорость, необходимая для предоставления услуги VoIP (64 кбит/с).
Скорость нисходящего потока:
3. Групповая скорость, необходимая для предоставления услуги IPTV (20480 кбит/с).
V= 550 * 20480 = 11264 Мбит/с.
Полученные результаты отображены в таблице 2.2.
Taблицa 2.2 – Пропускная способность по числу пользователей на каждую услугу
Общее число пользователей
Получаем, что проектируемая сеть должна обеспечивать скорость 23301Mбит/c (24 Гбит/с), для полного удовлетворения потребностей пользователей.
2.2 Выбор и характеристика среды передачи ( какой среды?? Если все в технологии выбрали
2.2.2 Выбор оптического кабеля
ДПОм — кабель для подвеса на опорах воздушных линий связи, линий электропередач, столбах освещения, между зданиями и сооружениями, в кабельной канализации, в трубах, в блоках, в тоннелях, в коллекторах, по мостам и эстакадам, внутри зданий и сооружений. Кабель содержит сердечник модульной конструкции с центральным силовым элементом из диэлектрического стержня, вокруг которого скручены оптические модули со свободно уложенными волокнами. Свободное пространство в оптических модулях и в сердечнике кабеля заполнено гидрофобным гелем. В качестве подвесного элемента используется стальной трос. На сердечник и подвесной элемент накладывается оболочка из полиэтилена средней плотности.
Рисунок 2.2 – Конструкция кабеля ДПОм-П
Конструкция ВОК состоит из:
- полиэтиленовая оболочка;
- стальной трос;
- кордель заполнения;
- оптический модуль;
- оптическое волокно;
- центральный силовой элемент (стеклопластиковый пруток);
- гидрофобный гель.