Практическое занятие 5. Протокол SNMP (Простой протокол управления сетью)
Простой протокол управления сетью (SNMP — Simple Network Management Protocol) – это структура для управления устройствами в сети Интернет, c использованием набора протоколов TCP/IP. Он обеспечивает ограниченный набор функций контроля и управления над параметрами устройств сети Интернет — например, мостами, маршрутизаторами и другими сетевыми устройствами Он поддерживает слежение за состоянием сетевых устройств и сетевого трафика.
Концепция
SNMP использует концепцию менеджера и агента. То есть менеджер, обычно хост, управляет и контролирует набор агентов, обычно это – маршрутизаторы. SNMP — протокол прикладного уровня, в котором несколько станций менеджера управляют набором агентов. Протокол разработан для прикладного уровня так, чтобы он мог управлять устройствами, выпущенными различными изготовителями и установленными на различных физических сетях. Другими словами, SNMP освобождает задачи управления и от физических характеристик управляемых устройств, и от основной технологии организации сети. Это может использоваться в неоднородной сети Интернет, образованной из различных локальных сетей LAN и общедоступных телекоммуникационных сетей широкого назначения (WAN), которые связаны маршрутизаторами, выпущенными различными изготовителями.
Менеджеры и агенты
Станция управления, названная менеджером, является хостом, который выполняет SNMP-программу клиента. Управляемая станция, названная агентом, является маршрутизатором (или хостом), который выполняет SNMP-программу сервера. Управление достигается с помощью простого взаимодействия между менеджером и агентом.
Агент сохраняет характеристики информации в базе данных. Менеджер имеет доступ к содержимому базы данных. Например, маршрутизатор может хранить число полученных и отправленных пакетов. Менеджер может вызвать и сравнить значения этих двух переменных, чтобы увидеть, переполнен ли маршрутизатор или нет.
Менеджер может также заставить маршрутизатор выполнить некоторые действия. Например, маршрутизатор периодически проверяет значение счетчика перезапуска, чтобы увидеть, когда он должен перезапуститься сам. Маршрутизатор может перезапуститься сам, например, когда значение счетчика равно нулю. Менеджер может использовать это свойство, чтобы перезапустить агента дистанционно в любое время. Он просто посылает пакет для принудительной установки нуля в счетчике.
Агенты могут также внести вклад в процесс управления. Управляемая программа сервера, выполняемая агентом, может проверить внешнюю среду, и если она замечает что-то необычное, она может послать сообщение предупреждения (названное ловушкой) менеджеру.
Другими словами, управление с SNMP базируется на трех основных идеях:
1. Менеджер проверяет агента, запрашивая информацию, которая отражает поведение агента.
2. Менеджер вынуждает агента выполнить задачу повторно, переустановив значения базы данных агента.
3. Агент вносит вклад в процесс управления, предупреждая менеджера о необычной ситуации.
Компоненты управления
Чтобы выполнить задачи управления, SNMP использует другие два протокола: структура управляющей информации (SMI – Structure of Management Information) и база управляющей информации (MIB – Management Information Base).
Другими словами, управление сетью Интернет осуществляется при взаимодействии трех протоколов: SNMP, SMI и MIB.
Рассмотрим взаимодействие между этими протоколами.
Задачи SNMP
SNMP выполняет некоторые конкретные задачи в управлении сетью. Он определяет состояния устройств сети и сетевого трафика, содержание формата пакета, который будет послан от менеджера агенту и наоборот. Он также интерпретирует и высылает результаты статистики характеристик управляемых объектов (часто с помощью другого программного обеспечения управления). Пакеты обмена содержат имена объектов (переменные) и их состояние (значения). SNMP отвечает за чтение и изменение этих значений в процессе управления.
Задачи SMI
Чтобы использовать SNMP, нам нужны правила описания объектов управления и правила присвоения имен объектам. Это особенно важно, потому что объекты в SNMP формируют иерархическую структуру (объект может иметь объект-родителя и некоторые объекты-детей), и часть имени может быть унаследована от родителя. Нам также нужны правила для того, чтобы определить тип объектов. Какие типы объектов обрабатываются SNMP? SNMP может обрабатывать простые или структурированные типы. Какие простые типы он может обрабатывать? Каковы размеры этих типов? Каков диапазон этих типов? Кроме того — как каждый из этих типов закодирован?
Так как неизвестна архитектура компьютеров, которые посылают, получают или хранят эти значения, нам нужны некие универсальные правила. Отправитель может быть мощным компьютером, в котором целое число сохраняется как 8-байтовые данные; приемник может быть маленьким компьютером, который хранит целое число как 4-байтовые данные.
SMI — протокол, который определяет правила формального описания объектов. Однако мы должны понять, что SMI определяет только правила. Он не задает конкретную архитектуру набора объектов, сколько объектов управляется данным объектом или какой объект используется каким типом. SMI — совокупность общих правил для присвоения имен объектам и перечисления типов.
Задачи MIB
Представляет информационную базу для SNMP об управляемых и контролируемых объектах сети, в которой информация об объектах сформирована по категориям. Для каждого управляемого объекта протокол MIB должен определить число объектов, присвоить им имена согласно правилам, определенным SMI, и присвоить тип каждому из названных объектов.
Аналогия
Перед обсуждением каждого из этих протоколов более подробно проведем аналогию. Три компонента управления сетью подобны тем трем компонентам, что необходимы для написания программы на компьютерном языке.
Прежде чем составлять программу, должен быть предопределен синтаксис языка (типа C или C++). Язык также определяет структуру переменных (простой, структурированный, указатель и так далее) и имена переменных. Например, имя переменной должно быть представлено символами от 1 до N по длине и начинаться с буквы, сопровождаемой алфавитно-цифровыми символами. Язык также определяет тип используемых данных (целое число, с плавающей запятой, символ и т. д.). В программировании правила описания переменных определены языком. В управлении сетью правила описания управляемых и контролируемых устройств определены SMI.
Большинство компьютерных языков требует, чтобы переменные были объявлены в каждой программе. Декларация называет каждую переменную и определяет предопределенный тип. Например, если программа имеет две переменные (целое число, названное счетчик, и массив, названный степень типа символ), они должны быть объявлены в начале программы:
int счетчик;
char степень [40];
Заметим, что декларации называют переменные (счетчик и степень) и определяют тип каждой переменной. Поскольку типы предопределены в языке, программа знает диапазон и размер каждой переменной.
MIB исполняет эту обязанность при управлении сетью. MIB называет каждый объект и определяет тип объектов. Поскольку тип задается по правилам SMI, SNMP знает диапазон и размер этого типа.
В программировании после декларации программа должна написать операторы, чтобы сохранить значения переменных и изменять их, если необходимо. SNMP решает ту же задачу при управлении сетью. SNMP накапливает, изменяет и интерпретирует значения объектов, уже объявленных MIB, согласно правилам, определенным SMI.
Мы можем сравнить задачу управления сетью и задачу написания программы:
Обе задачи нуждаются в правилах. В управлении сетью правила устанавливает SMI.
Обе задачи нуждаются в декларациях (объявлении) переменных. В управлении сетью это делает MIB.
Обе задачи выполняют действия операторами. В управлении сетью это делается SNMP.
Общие замечания
Прежде чем обсуждать детально каждый компонент, рассмотрим простой общий сценарий их совместной работы, а затем развернем более детально это сценарий. Менеджер станции (SNMP-клиент) посылает сообщение к агенту (SNMP-серверу), чтобы получить от агента число UDP-дейтаграмм. Рис 5.1. показывает в общем виде шаги этого процесса.
Рис. 5.1.Общий процесс управления
MIB находит объект, чтобы сохранить полученное в сообщении число пользовательских дейтаграмм UDP. SMI, с помощью других вложенных в него протоколов, кодирует имя объекта. SNMP создает сообщение, называемое GetRequest, и инкапсулирует его в закодированное сообщение. Конечно, реальный процесс более сложен, чем этот общий процесс, поэтому сначала рассмотрим каждый протокол отдельно.