вариант 0. М. А. БончБруевича институт непрерывного образования (ино) Контрольная работа
![]()
|
Санкт-Петербургский государственный университет телекоммуникаций им. проф. М. А.Бонч-Бруевича ____________________________________________________________ ИНСТИТУТ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ (ИНО) Контрольная работа Дисциплина: Самоорганизующиеся сети Выполнил: группа: курс: номер зачётной книжки: Проверил: Дата сдачи работы: Санкт-Петербург 2020 Разработка распределенной системы анализа трафика телекоммуникационных сетей Исходные данные
Сбор данных о трафике в сети Для сбора трафика выполняем следующие действия: 1. На компьютере, подключенном к телекоммуникационной сети, открываем Wireshark. 2. В окне Wireshark нажимаем Capture options. 3. В открывшемся окне выбираем интерфейсы для сбора трафика, поле Capture filter оставляем пустым. 4. Нажимаем Start. 5. Дожидаемся появления не менее 5 000 строк. 6. Останавливаем запись нажав соответствующую кнопку в левом верхнем углу на панели инструментов. 7. Экспортируем записанные пакеты путем выбора меню File ->Export ->File… 8. В открывшемся окне выбираем директорию для экспорта, вводим название файла (http), выбираем тип файла CSV (commaseparatedvalue), нажимаем Save. Получаем файл вида: (см. следующую страницу) "1","0.000000","87.240.129.129","192.168.0.98","TLSv1.2","395","Application Data" "2","0.049020","192.168.0.98","87.240.129.129","TLSv1.2","188","Application Data" "3","0.000008","192.168.0.98","87.240.129.129","TCP","188","[TCP Retransmission] 49649 > 443 [PSH, ACK] Seq=1 Ack=342 Win=16396 Len=134" "4","0.018836","87.240.129.129","192.168.0.98","TCP","54","443 > 49649 [ACK] Seq=342 Ack=135 Win=356 Len=0" "5","0.000685","87.240.129.129","192.168.0.98","TLSv1.2","390","Application Data" "6","0.023881","192.168.0.98","87.240.129.129","TLSv1.2","188","Application Data" "7","0.000007","192.168.0.98","87.240.129.129","TCP","188","[TCP Retransmission] 49649 > 443 [PSH, ACK] Seq=135 Ack=678 Win=16312 Len=134" "8","0.059235","87.240.129.129","192.168.0.98","TCP","54","443 > 49649 [ACK] Seq=678 Ack=269 Win=356 Len=0" "9","2.130245","87.240.129.129","192.168.0.98","TLSv1.2","395","Application Data" "10","0.031263","192.168.0.98","87.240.129.129","TLSv1.2","188","Application Data" "11","0.000008","192.168.0.98","87.240.129.129","TCP","188","[TCP Retransmission] 49649 > 443 [PSH, ACK] Seq=269 Ack=1019 Win=16227 Len=134" "12","0.018203","87.240.129.129","192.168.0.98","TCP","54","443 > 49649 [ACK] Seq=1019 Ack=403 Win=356 Len=0" "13","2.422363","fe80::1e5f:2bff:fe86:4f70","ff02::1:ff83:d41","ICMPv6","86","Neighbor Solicitation for fe80::302f:a3c6:4583:d41 from 1c:5f:2b:86:4f:70" "14","0.001910","fe80::302f:a3c6:4583:d41","ff02::1:ff86:4f70","ICMPv6","86","Neighbor Solicitation for fe80::1e5f:2bff:fe86:4f70 from 84:4b:f5:d0:93:01" "15","0.111183","fe80::302f:a3c6:4583:d41","ff02::16","ICMPv6","90","Multicast Listener Report Message v2" "16","0.040468","fe80::302f:a3c6:4583:d41","ff02::16","ICMPv6","90","Multicast Listener Report Message v2" "17","0.015333","fe80::302f:a3c6:4583:d41","ff02::16","ICMPv6","90","Multicast Listener Report Message v2" Программная реализация алгоритма: Порядок действий: 1. Устанавливаем ПО OracleVirtualBox. 2. Импортируем ClouderaQuickStartVM. 3. В папке /home/Cloudera виртуальной машины создаем папку, куда копируем собранный ранее лог Wireshark. 4. Загружаем данную папку в HDFS. Для этого открываем Terminal и вводим команду: Hadoop fs –put /home/Cloudera/QWERTY/ 5. Создаем python-скрипты для реализации шагов Map и Reduce и назваем их, mapper.py и reducer.py. 6. Запускаем задание Map Reduce при помощи команды: yarnjar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar –input QWERTY/* -outputresults1 -file mapper.py -file reducer.py -mapper "python mapper.py" –reducer "python reducer.py" 7. Смотрим результаты при помощи команды: hadoop fs -text results1/* Скрипт__mapper.py'>Скрипт mapper.py #!/usr/bin/python import sys def do_map(packet): splitted = packet.split(",") splitted_key = splitted[3] splitted_key = splitted_key[1:-1] lenght_key = splitted[5] lenght_key = lenght_key[1:-1] yield splitted_key, lenght_key for line in sys.stdin: for key, value in do_map(line): print(key + "\t" + str(value)) Скрипт reducer.py #!/usr/bin/python import sys def do_reduce(address, values): return address, max(values) prev_key = None values = [] for line in sys.stdin: key, value = line.split("\t") if key != prev_key and prev_key is not None: result_key, result_value = do_reduce(prev_key, values) print(result_key + "\t" + str(result_value)) values = [] prev_key = key values.append(int(value)) if prev_key is not None: result_key, result_value = do_reduce(prev_key, values) print(result_key + "\t" + str(result_value)) Результат: 104.26.0.24 1454 104.28.19.183 766 173.194.220.155 1484 173.194.220.156 1484 173.194.73.154 571 173.194.73.95 1039 178.250.0.157 721 178.250.2.130 677 178.250.2.146 670 178.250.2.150 696 178.250.2.151 797 178.250.6.18 867 185.235.84.164 876 192.168.0.1 93 192.168.0.255 243 192.168.0.98 1506 194.226.130.227 571 2.20.254.128 136 2.20.254.89 136 209.85.233.154 577 209.85.233.157 745 217.69.133.145 1464 224.0.0.251 186 224.0.0.252 64 239.255.255.250 216 255.255.255.255 342 2606:4700:20::681a:118 86 2a02:26f0:d0::214:fe59 86 2a02:26f0:d0::214:fe80 86 31.13.72.36 876 5.45.58.214 356 5.62.36.58 1506 54.186.106.198 89 64.233.161.105 1484 64.233.161.95 571 64.233.162.94 1484 64.233.162.97 571 64.233.165.138 636 64.233.165.139 1435 64.233.165.94 571 69.171.250.25 571 77.88.21.119 1464 82.202.192.242 571 87.240.129.129 188 87.240.129.131 1030 87.240.137.139 1464 87.240.185.130 571 87.240.185.134 571 87.240.185.135 571 87.240.185.137 571 87.240.185.138 66 87.240.185.144 571 87.240.185.146 571 87.240.185.147 571 87.240.185.148 571 87.240.185.153 652 87.240.185.159 571 87.240.185.160 571 87.240.185.163 571 87.240.185.167 571 87.240.185.168 571 87.240.190.67 1324 87.240.190.72 1464 87.240.190.78 1464 87.250.251.119 1464 93.186.225.198 1464 93.186.225.201 1464 93.186.225.208 1464 93.186.227.128 571 93.186.227.130 571 93.186.227.131 571 93.186.227.132 571 93.186.227.133 571 93.186.227.134 66 93.186.227.137 571 93.186.227.139 571 93.186.227.140 571 93.186.227.141 571 93.186.227.144 571 93.186.227.146 571 93.186.227.147 571 93.186.227.150 571 93.186.227.154 571 93.186.227.155 571 94.100.180.197 866 Broadcast 42 D-LinkIn_86:4f:70 42 Universa_e3:f9:18 42 fd01::44c3:7a36:e103:c398 134 fd01::851d:20b4:bc1:cadf 134 fe80::1e5f:2bff:fe86:4f70 113 fe80::851d:20b4:bc1:cadf 244 ff02::1 190 ff02::16 90 ff02::1:3 84 ff02::1:ff27:7ede 86 ff02::1:ff83:d41 86 ff02::1:ff86:4f70 86 ff02::fb 206 |