Простой и широко поддерживаемый на практике протокол RIP для IP обладает некоторыми недостатками, связанными с тем, что он разрабатывался для локальных сетей. Из-за этого RIP хорошо работает только в малых объединенных IP-сетях с небольшим числом маршрутизаторов.
При использовании RIP таблица каждого маршрутизатора содержит полный список всех сетевых идентификаторов и возможных путей к ним. Она включает сотни или даже тысячи записей для большой объединенной IP-сети с многочисленными путями. Поскольку максимальный размер одного RIP-пакета — 512 байт, для отправки больших таблиц маршрутизации требуется множество RIP-пакетов.
R1 Р-маршрутизаторы объявляют содержимое своих таблиц через широковещание уровня MAC (Media Access Control) во всех подключенных сетях каждые 30 секунд. В больших IP-сетях осуществляется RIP-широковещание больших таблиц маршрутизации. Это иногда создает значительные проблемы для WAN-соединений, где существенные части полосы пропускания будут задействованы для трафика протокола R1P. Маршрутизация, основанная на RIP, не подходит для больших объединенных сетей или глобальных сетей (WAN).
В таблице маршрутизации каждой записи о маршруте, полученном по RIP, назначен 3-минутный тайм-аут (отсчитывается с момента получения), по истечении которого не обновленные записи удаляются. Если маршрутизатор выходит из строя, распространение изменений по объединенной сети может занять несколько минут. Это называется проблемой медленной конвергенции (slow convergence problem)*.
Для успешного администрирования сети необходимо знать состояние каждого ее элемента с возможностью изменять параметры его функционирования. Обычно сеть состоит из устройств различных производителей и управлять ею было бы нелегкой задачей если бы каждое из сетевых устройств понимало только свою систему команд. Поэтому возникла необходимость в создании единого языка управления сетевыми ресурсами, который бы понимали все устройства, и который, в силу этого, использовался бы всеми пакетами управления сетью для взаимодействия с конкретными устройствами.
Подобным языком стал SNMP - Simple Network Management Protocol. Разработанный для систем, ориентированных под операционную систему UNIX, он стал фактически общепринятым стандартом сетевых систем управления и поддерживается подавляющим большинством производителей сетевого оборудования в своих продуктах. В силу своего названия - Простой Протокол Сетевого Управления - основной задачей при его разработке было добиться максимальной простоты его реализации. В результате возник протокол, включающий минимальный набор команд, однако позволяющий выполнять практически весь спектр задач управления сетевыми устройствами - от получения информации о местонахождении конкретного устройства, до возможности производить его тестирование.
Основной концепцией протокола является то, что вся необходимая для управления устройством информация хранится на самом устройстве - будь то сервер, модем или маршрутизатор - в так называемой Административной Базе Данных ( MIB - Management Information Base ). MIB представляет из себя набор переменных, характеризующих состояние объекта управления. Эти переменные могут отражать такие параметры, как количество пакетов, обработанных устройством, состояние его интерфейсов, время функционирования устройства и т.п. Каждый производитель сетевого оборудования, помимо стандартных переменных, включает в MIB какие-либо параметры, специфичные для данного устройства. Однако, при этом не нарушается принцип представления и доступа к административной информации - все они будут переменными в MIB. Поэтому SNMP как непосредственно сетевой протокол предоставляет только набор команд для работы с переменными MIB. Этот набор включает следующие операции:
get-request
Используется для запроса одного или более параметров MIB
get-next-request
Используется для последовательного чтения значений. Обычно используется для чтения значений из таблиц. После запроса первой строки при помощи get-request get-next-request используют для чтения оставшихся строк таблицы
set-request
Используется для установки значения одной или более переменных MIB
get-response
Возвращает ответ на запрос get-request, get-next-request или set-request
trap
Уведомительное сообщение о событиях типа cold или warm restart или "падении" некоторого link'а.
Для того, чтобы проконтролировать работу некоторого устройства сети, необходимо просто получить доступ к его MIB, которая постоянно обновляется самим устройством, и проанализировать значения некоторых переменных.
Важной особенностью протокола SNMP является то, что в нем не содержатся конкретные команды управления устройством. Вместо определения всего возможного спектра таких команд, безусловно загромоздившего бы сам протокол, который считается все-таки простым, определены переменные MIB, переключение которых воспринимается устройством как указание выполнить некоторую команду. Таким образом удается сохранить простоту протокола, но вместе с этим сделать его довольно мощным средством, дающим возможность стандартным образом задавать наборы команд управления сетевыми устройствами. Задача обеспечения выполнения команд состоит, таким образом, в регистрации специальных переменных MIB и реакции устройства на их изменения.