Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

2004 г.

5.1. Сетевая диагностика с применением протокола SNMP

Семёнов Ю.А. (ГНЦ ИТЭФ), book.itep.ru

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

Так как сеть может быть построена с использованием различных физических сред и протоколов, наиболее привлекательным, если не единственным, средством диагностики представляется протокол snmp, который служит для целей управления в ISDN, X.25, FDDI, ATM, TCP/IP и других сетях. Протокол SNMP (std15, RFC-1448, -1592, -1901, 1902-1907, 1908-1910) использует управляющую базу данных mib (RFC-1213, -1158, -1792, -1042; std16, std17), доступ к которой определяется администратором локальной сети или конкретной ЭВМ (ссылки, выделенные полужирным шрифтом, являются стандартами Интернет). Для того чтобы база данных была доступна, необходимо наличие snmp-демона с режимом свободного доступа (поле community = public). Рассмотрим сеть, изображенную на рис. 4.1.1.

Рис. 4.1.1. Пример диагностируемой сети

Для диагностики сегмента, непосредственно связанного с ЭВМ-тестером, можно использовать режим 6 Ethernet-интерфейса ЭВМ-тестера. Этот режим, при котором принимаются все пакеты, следующие по сегменту, позволяет регистрировать распределение пакетов по адресам отправителя и получателя, протоколам, длинам пакетов и т.д.. Запуская определенные программы на ЭВМ 1 или 2 (сегмент С-1), можно получить исчерпывающую информацию о состоянии сегмента. Этот способ диагностики не пригоден для сегментов, к которым подключены ЭВМ 3 (сегмент С-2), 4 и 5 (сегмент С-3). В случае, если все ЭВМ сети поддерживают протокол tcp/ip, возможно применение для целей диагностики протокола icmp (RFC-1256, -1788, -1885, -792). Этот протокол также как и snmp пригоден для диагностики не только локальной сети но и каналов Интернет. Если использовать icmp не только для трассировки маршрутов, но и для измерения процента испорченных пакетов, можно получить весьма полезную информацию, а при длинных сегментах зарегистрировать ухудшение качества сегмента при подключении слишком большого числа ЭВМ. Такая техника может прогнозировать ухудшение пропускной способности канала при подключении дополнительных ЭВМ. Но применение icmp ограничено ЭВМ, поддерживающими протоколы Интернет, да и получаемые данные весьма ограничены.

Следует иметь в виду, что в многопротокольных средах структуры MIB могут заметно отличаться, варьируется несколько и формат SNMP-пакетов. В настоящее время существует достаточно большой выбор коммерческих программ сетевой SNMP-диагностики (их цены лежат в диапазоне 5-45 тыс. дол.). Особую ценность представляют аппаратно-программные комплексы (15-55 тыс. дол.), которые способны диагностировать состояние оборудования и кабельных сегментов. К сожалению, для отечественных пользователей они по причине цены практически недоступны.

Сеть ИТЭФ, которая была зарегистрирована одной из первых в качестве узла Интернет в 1991 году, в настоящее время содержит более 400 ЭВМ при суммарной длине кабельных сегментов около 10 км и обслуживается 6 сотрудниками. В сети используются протоколы TCP/IP, Novell, Arcnet и др.. Проблема диагностики такой сети достаточно актуальна. Мы сначала использовали традиционные программные средства типа ping, traceroute, netstat, arp, snmpi, dig (venera.isi.edu/pub), hosts, nslookup, ifconfig, ripquery, поставляемые со многими сетевыми пакетами. Позднее пытались адаптировать общедоступные диагностические средства типа: netwatch (windom.ucar.edu), snmpman (http:// www.smart.is/pub/mirror-indstate/snmp), netguard (oslo-nntp,eunet.no/pub/msdos/winsock/apps), ws_watch (bwl.bwl.th-harmstadt.de/windows/util). Среди наиболее часто встречающихся проблем: разрывы кабельных сегментов, несанкционированное использование IP-адресов, некачественное питание сетевого оборудования, отказы тех или иных устройств.

Не все ЭВМ имеют активные SNMP-резиденты, это происходит по причине экономии оперативной памяти или по соображениям безопасности. Еще меньше snmp-агентов, доступных в режиме public (поле SNMP-пакета community; формат пакетов описан, например, в книге Семенова Ю.А. "Протоколы и ресурсы Интернет", Москва, "Радио и связь", 1996). Но для контроля ситуации достаточно иметь по одному активному SNMP-резиденту на каждом из кабельных сегментов. При этом не обязательно ставить их в общедоступный режим, можно использовать для получения диагностической информации и пароль.

При написании диагностической программы не нужно пытаться считывать все переменные и таблицы MIB. База данных весьма велика и для целей диагностики не все ее записи представляют интерес. При написании нашей диагностической программы были отобраны 35 переменных (ниже приводится сокращенный список):
interface.iftable.ifentry.ifinucastpktsЧисло полученных обычных пакетов;
interface.iftable.ifentry.ifinnucastpktsЧисло полученных широковещательных и мультикаст-пакетов;
interface.iftable.ifentry.ifinerrorsЧисло ошибок при приеме пакетов;
interface.iftable.ifentry.ifoutucastpktsЧисло посланных обычных пакетов;
interface.iftable.ifentry.ifinnucastpktsЧисло посланных широковещательных и мультикаст-пакетов;
interface.iftable.ifentry.ifinunknownprotosЧисло полученных пакетов с неизвестным кодом протокола;
ip.ipinreceivesПолное число ip-дейтограмм, включая полученные с ошибкой;
ip.ipinhdrerrorsЧисло входных ip-дейтограмм с ошибками в заголовке пакета, включая ошибки контрольной суммы, ttl и т.д.
ip.ipinaddrerrorsЧисло полученных пакетов с ошибкой в адресе;
ip.ipinunknownprotosЧисло входных ip-дейтограмм, с кодами протоколов, которые не поддерживаются данной системой;
ip.ipreasmreqdsЧисло полученных фрагментов, которые требуют сборки;
ip.ipindeliversЧисло ip-дейтограмм, принятых без ошибок (включая icmp);
icmp.icmpinmsgsЧисло полученных icmp-пакетов;(другие 10 контролируемых переменных icmp-группы из соображений экономии места из списка исключены);
udp.udpindatagramsЧисло принятых udp-дейтограмм;
udp.udpoutdatagramsЧисло отправленных udp-дейтограмм;
udp.udpnoportsПолное число udp-дейтограмм, для которых не существует приложения для указанного номера порта;
udp.udpinerrorsЧисло udp-дейтограмм, которые не могут быть доставлены не по причине отсутствия приложения по указанному порту;
tcp.tcpinsegsЧисло принятых tcp-сегментов;
tcp.tcpoutsegsЧисло отправленных TCP-сегментов;
tcp.tcpretranssegsЧисло tcp-сегментов с повторной пересылкой;
tcp.tcpoutrstsЧисло сегментов с флагом rst=1;
tcp.tcpinerrorЧисло tcp-сегментов, полученных с ошибкой.

Выбор определялся тем, что именно эти переменные варьируются динамически в течение суток. Ставилась задача исследования временных вариаций потоков в заданном сегменте и выработки критериев для диагностики потенциально опасных ситуаций. Измерения проводились каждые полчаса в течение недели.

Многие переменные базы MIB не меняются или меняются незначительно, но определяют режим работы и состояние ЭВМ-сервера. Так переменная snmpinbadcommunityuses {snmp 5} может сообщить о попытках несанкционированного доступа к базе mib. Переменные snmpintoobigs {snmp 8}, snmpingenerrs {snmp 12} или ifadminstatus {ifentry 7} и многие другие характеризуют текущее состояние системы и длительное их отслеживание чаще всего не дает полезной информации. Другие переменные, например, ipnettomedianetaddress {ip 22}, ipnettomediaentry или iproutedest и т.д. полезно контролировать при серьезных сбоях и сравнивать их с эталонными значениями. Некоторые переменные важны при анализе эффективности системы, например, ipfragcreate {ip 19} или ipfragfails {ip 18}, последняя переменная говорит о том, сколько встретилось пакетов с флагом, запрещающим фрагментацию, в условиях, когда она необходима, что может свидетельствовать, если ipfragfails велико, о неверном выборе MTU.

Рассмотрим средние значения некоторых переменных за сутки. Так переменные ip.ipinreceives=1379552, ifentryifinucastpkts=1278232, ifentry.ifinnunicastpkts=5083 характеризуют средний поток пакетов на входе сетевого интерфейса. Видно, что широковещательные и мультикастинг-пакеты составляют малую долю потока, что и следует ожидать. Большой поток пакетов типа nonunicast обычно говорит о неисправности в сети. Величины ifentry.ifoutunicastpkts=1369809 и ifentry.ifoutnunicastpkts=90 характеризуют выходной поток пакетов, соотношение обычных и nonunicast-пакетов и здесь нормально. Сравнимое их значение говорило бы о неисправности сетевого интерфейса данной ЭВМ или о порче сетевого программного драйвера. Блок переменных ip.ipinhdrerrors=8, icmp.icmpouterrors=45, icmp.icmpoutdestunreachs=22 и ifentry.ifinunknownprotos=81 указывает на число сбоев в сети, если соотнести эти цифры с входным и выходным потоками пакетов можно сделать вывод о благополучии в данном кабельном сегменте, во всяком случае на протяжении данных суток. Такие ошибки возможны из-за всплеска шумов или наводок (например, по сети переменного тока). Определенное беспокойство может вызвать значение icmpoutdestunreachs, но это может быть результат работы программы ping или traceroute для недоступного узла или опечатка в IP-адресе. Переменная icmp.icmpinsrcquenchs=19 весьма важна, так как она отмечает случаи перегрузки. В данном случае таких ситуаций за сутки случилось мало. Отслеживая эту переменную для разных ЭВМ, можно выявить слабые элементы в сети и скорректировать их параметры (например, увеличить буферную память). Переменные tcp.tcpinsegs=762696, tcp.tcpoutsegs=803676 и tcp.tcpretranssegs=3554 говорят о потоках tcp-пакетов (главного транспортного средства Интернет). Число tcpretranssegs характеризует надежность и правильность настойки параметров сети, чем меньше это число, тем лучше. udp.udpindatagrams=378119, udp.udpoutdatagrams=59429 указывают на входной и выходной потоки UDP-дейтограмм (сравните с потоками TCP-сегментов). Запись в MIB udp.udpnoports является важным диагностическим показателем. Переменные, регистрирующие число тех или иных ошибок, неупомянутые в этом абзаце, оказались равными нулю. Количество пакетов snmp в точности совпадает с их числом, посланным и полученным данной программой-тестером, что говорит об отсутствии какой-либо другой SNMP-активности. Контролировать это время от времени также полезно из соображений сетевой безопасности.

Рис. 4.1.2. Вариации tcpinsegs и udpindatagrams в течение недели

Для защищенных систем доступ к snmp-резиденту в пакетах должно использоваться поле community = паролю. Но даже эта мера не может блокировать вторжение со стороны LAN, так как в результате перехвата snmp-пакетов пароль может быть открыт. При написании таких программ нужно учитывать версии MIB, используемые анализируемыми узлами, а также тот факт, что snmp-отклики могут иметь для разных операционных сред. Рассмотрим, как варьируются некоторые из перечисленных переменных в течении суток и недели. На рис. 4.1.2 видны спады сетевой активности в ночное время и в выходные дни. Левый край диаграммы соответствует понедельнику 9 сентября (ночь), правый - понедельнику, но уже следующей недели. На рис. 4.1.3 приведена диаграмма вариации некоторых переменных за сутки. Сетевая активность захватывает период от 10 часов утра и спадает почти до нуля к 9-10 вечера, хотя бывают и исключения. Для эффективной интерпретации временных зависимостей можно использовать программу мониторинга last (или любой ее эквивалент), которая позволяет отслеживать появление новых пользователей или процессов (например, ftp). Фрагмент распечатки, выданной программой last на ЭВМ, snmp-резидентом которой пользовалась наша программа, приведен ниже.

ms977pts/0vitep5.itep.rutue sep 10 23:49 - 00:16 (00:27)
ms977pts/2vitep5.itep.rutue sep 10 22:20 - 23:46 (01:26)
ostrouhpts/0athene.itep.rutue sep 10 18:30 - 18:43 (00:13)
titovichpts/0athene.itep.rutue sep 10 18:30 - 18:30 (00:00)
vitapts/3athene.itep.rutue sep 10 14:55 - 15:56 (01:00)
chechopts/12itep05.itep.rutue sep 10 13:35 - 13:37 (00:01)
fominpts/10hydra.ifh.detue sep 10 13:16 - 13:22 (00:06)
chechopts/7itep05.itep.rutue sep 10 13:09 13:16 (00:07)
illarionpts/7xt07.itep.rutue sep 10 12:45 12:45 (00:00)
vitapts/9athene.itep.rutue sep 10 11:55 13:03 (01:07)
belypts/12pcx01.itep.rutue sep 10 11:49 12:02 (00:13)
vitapts/13athene.itep.rutue sep 10 11:49 11:52 (00:03)
efrepts/4pcx10.itep.rutue sep 10 10:05 10:24 (00:18)
checho pts/0169-151-147.ipt.tue sep 10 05:07 05:09 (00:01)
ssemenftpclotho.itep.rumon sep 09 20:14 20:15 (00:01)
ssemenftpclotho.itep.rumon sep 09 19:34 19:35 (00:00)
ostrouhpts/3athene.itep.rumon sep 09 19:20 19:40 (00:20)
ozeropts/0athene.itep.rumon sep 09 19:13 22:44 (03:30)
ozeropts/5itep05.itep.rumon sep 09 18:05 18:32 (00:27)
olyalinpts/6itep05.itep.rumon sep 09 16:19 16:27 (00:08)
efreftppcx10.itep.rumon sep 09 16:14 16:15 (00:00)
marapts/1hpl3pur2.cern.chmon sep 09 16:02 16:27 (00:24)
marapts/1hpl3pur2.cern.chmon sep 09 15:50 15:54 (00:04)
itep977pts/21mars.itep.rumon sep 09 15:22 15:23 (00:00)
ozeropts/20aix0.itep.rumon sep 09 15:06 15:36 (00:29)
ozeropts/12itep05.itep.rumon sep 09 14:56 14:56 (00:00)
galypts/16athene.itep.rumon sep 09 14:27 14:31 (00:03)
belypts/15vitep5.itep.rumon sep 09 14:09 10:36 (20:27)
sedpts/5pcx11.itep.rumon sep 09 14:01 14:01 (00:00)
kiselpts/1vxitep.itep.rumon sep 09 13:59 15:22 (01:22)
ozeropts/12itep05.itep.rumon sep 09 13:53 14:55 (01:02)
ozeropts/2193.148.166.214mon sep 09 13:40 13:41 (00:00)
ozeropts/8193.148.166.214mon sep 09 13:32 13:37 (00:04)
vitapts/9aix0.itep.rumon sep 09 13:32 13:32 (00:00)
vitapts/2vitep5.itep.rumon sep 09 13:32 13:32 (00:00)
chechopts/3itep05.itep.rumon sep 09 13:11 13:12 (00:00)
efrepts/3pcx10.itep.rumon sep 09 12:12 12:23 (00:10)
kiselpts/2vxitep.itep.rumon sep 09 12:11 12:43 (00:32)
chechopts/6itep05.itep.rumon sep 09 12:02 12:03 (00:00)
kiselftppcx11.itep.rumon sep 09 11:42 11:43 (00:00)
kiselftpion04.cern.chmon sep 09 10:59 11:06 (00:06)
galypts/1athene.itep.rumon sep 09 10:57 10:58 (00:00)
titovichpts/4athene.itep.rumon sep 09 10:20 10:21 (00:01)
korolpts/0193.124.225.174mon sep 09 05:20 05:57 (00:37)

Первая колонка содержит имена пользователей, вторая - тип задачи (PTS/n - удаленный доступ с терминала с номером n), далее следует имя узла или его IP-адрес, с которого осуществлен доступ, дата, время работы и длительность сессии. Как правило, сессии типа FTP или NFS дают большую сетевую загрузку. Нужно учитывать возможность запуска FTP-сессии или другой информационно-емкой процедуры после входа в систему с помощью telnet (PTS). Рассматривая эту распечатку совместно с временными зависимостями переменных базы данных MIB, можно интерпретировать результаты, определить, какая из сессий загружает данный сегмент сети более других. Рассмотрев, например, результаты работы программы last и рис. 5.1.3а, можно видеть, что максимум в период с 18 до 20 часов связан с активностью пользователей ozero, ostrouh и ssemen. Но даже в отсутствии сессий, зафиксированных last, можно наблюдать заметную сетевую активность. Это может быть доставка почтовых сообщений или зондирование сервера пакетами-роботами со стороны удаленных www-клиентов.

Рис. 5.1.3(а, б). Временная зависимость ifinucastpkts, ifoutucastpkts и ifinnucastpkts

По горизонтальной оси отложено время от начала суток. Кривая, отмеченная треугольниками, соответствует правой шкале диаграммы, это справедливо для всех последующих рисунков. Входной и выходной потоки через данный интерфейс практически равны. На рис. 5.1.4(а,б) показана вариация со временем входных потоков IP-дейтограмм (ipinreceives, ipinreasmreqd и ipindelivers). Пик в правой части рис. 5.1.4а (19:00 - 20:00) показывает, что поток ipinreceives превосходит поток ipindelivers почти в два раза. Можно было бы предположить, что разница определяется числом ошибок, но так как по времени это совпадает с пиком в диаграмме ipinreasmreqd, различие следует интерпретировать, как необходимость сборки сообщений. Сопоставление значений ipinreceives, ipinreasmreqd и ipindelivers подтверждает такое предположение. Если такого рода ситуация в сети повторяется часто, нужно просмотреть корректность выбора mtu для объектов, участвующих в данном обмене. Для областей вне указанного пика значения ipinreceives и ipindelivers почти совпадают, что говорит о низком уровне ошибок (это подтверждается и значением потока icmpouterrors, icmpoutdestunreachs и ifinunknownprotos.

На рис. 5.1.5(а и б) показаны суточные вариации потоков udp-дейтограмм, а на рис. 5.1.6(а и б) представлены аналогичные временные зависимости для TCP-сегментов. Если входные и выходные потоки UDP-дейтограмм отличаются друг от друга временами в несколько раз (что вполне естественно), то входные и выходные потоки TCP-сегментов почти не отличаются (ведь каждому посланному пакету в этом протоколе должен соответствовать пакет-подтверждение).

Рис. 5.1.4(а,б). Временные зависимости входных потоков IP-дейтограмм (ipinreceives, ipinreasmreqd и ipindelivers)

Рис. 5.1.5(а,б). Суточные вариации потоков UDP-дейтограмм.

Рис. 5.1.6(а, б). Суточные вариации потоков TCP-сегментов

Назад: 5. Диагностика локальных сетей и Интернет
Оглавление: Телекоммуникационные технологии
Вперёд: 5.2. Диагностика на базе ICMP

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...