“”/
 

Измеряем скорость трафика с помощью SNMP, Netflow и SPAN

Рады приветствовать вас в новой статье на портале TS University!

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

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

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

Мы с вами рассмотрим:

  • SNMP
  • netflow
  • а также вариант сбора статистики при помощи SPAN

Настройка SNMP

Для начала настройки на сетевом оборудовании необходимо активизировать SNMP-агент.

На оборудовании Cisco для этого достаточно войти в режим конфигурирования и выполнить команду snmp-server community public ro. В примере использовано имя сообщества public, которое используется по умолчанию, однако вы можете указать любое другое имя.

На оборудовании Mikrotik необходимо выполнить команду snmp set enabled=yes. При отсутствии дополнительных настроек будет использоваться сообщество public.

* Для проведения активации SNMP на оборудовании других вендоров смотрите документацию.

Больше на сетевом оборудовании никаких действий проводить не требуется.
Для подключения к сетевым устройствам и сбора с них информации по протоколу SNMP необходимо использовать специализированное ПО: SNMP-менеджер.

Далее мы с вами будем рассматривать и использовать бесплатную утилиту MRTG (Multi Router Traffic Grapher). Она довольно проста в настройке и эксплуатации, а ее функционал позволяет решить поставленную задачу — собрать статистику о скорости трафика за продолжительный период времени.

Однако вы можете использовать и другие утилиты.

Например, бесплатный и более продвинутый, но также более требовательный при установке Cacti. Или платные SolarWinds NPM, ManageEngine SNMP Bandwidth Monitoring Software (у последнего есть возможность использовать бесплатную версию в течение 30 дней).

Установка MRTG
Для начала установки сперва необходимо скачать архив с исходниками утилиты по ссылке.

Из списка файлов на странице выбираем архив с последней доступной версией и скачиваем.
Затем распаковываем его в удобном для нас месте и получаем папку с утилитой:
Рис.1 – Файлы для скачивания
Рис.2 – Скачивание архива
Рис.3 – Содержимое папки с утилитой после распаковки архива
Примечание:
Вы можете заметить, что для каждой из версий mrtg представлено по два архива: один с расширением .zip, другой с расширением .tar.gz. Их содержание идентично, поэтому выбрать можно любой. Главное — иметь возможность распаковать архив с соответствующим расширением. Для пользователей Linux предпочтительным, скорее всего, окажется второй вариант. В то время как на Windows удобнее работать с zip архивом.

Устанавливаем Perl
Большая часть MRTG написана на языке программирования perl. Соответственно, на вашем компьютере должен находиться интерпретатор perl.

На Linux он может быть установлен с помощью стандартного пакетного менеджера (apt, yum). Например, с помощью команды sudo apt install perl.

На нашем рабочем компьютере установлена Windows, поэтому мы установим дистрибутив StrawberryPerl по ссылке. Скачиваем msi файл, запускаем его и проходим стандартную процедуру установки (также есть возможность вместо мастера установки скачать архив и затем просто распаковать его).
Рис.4 – Варианты установки
Рис.5 – Скачивание msi файла
Теперь нам необходимо открыть командную строку Windows и перейти в поддиректорию bin в директории с файлами утилиты MRTG.

Затем выполняем команду perl mrtg. Если все установилось корректно, то должно появиться сообщение о правильном использовании утилиты и информацией о ней.
Рис.6 – Вывод команды perl mrtg
Конфигурация
По выводу команды perl mrtg можно понять, что утилита ждет, что мы передадим ей некоторый конфигурационный файл.

Откуда же его взять?

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

Для этого, находясь все в той же директории, выполняем команду perl cfgmaker public@10.10.41.202 --global «Workdir: D:\mrtgdata» --global «RunAsDaemon: yes» --output mrtg.cfg.

public — это snmp-сообщество (группа устройств) по умолчанию. Если вы устанавливали пользовательское сообщество, то укажите его имя.

адрес 10.10.41.202 — ip маршрутизатора, замените его на ip вашего коммутатора/роутера.

Ключ --global позволяет передать дополнительные параметры:
  • В параметре Workdir указываеся каталог, в котором будут храниться файлы во время работы MRTG
  • Параметр RunAsDaemon со значением yes указывает MRTG начать работу в качестве фонового процесса. Так он останется «висеть» в окне командной строки, пока мы не завершим выполнение скрипта принудительно (командой Ctrl-C, например). При этом программа станет отправлять SNMP запросы каждые 5 мин. Без этого параметра при запуске утилиты она отправит единственный SNMP запрос, а для отправки каждого последующего запроса утилиту придется запускать заново.
После ключа --output указываем, в каком файле сохранить конфигурацию (по умолчанию она выводится в окно командной строки).
Рис.7 – Создание конфигурационного файла
Откроем созданный файл.

В самом его низу должны находится параметры, которые мы передавали с ключом --global.
Выше должны находится конфигурации для каждого из интерфейсов. Они могут оказаться закомментированными, если сетевое устройство не вернуло запрашиваемый параметр ifSpeed.
Тогда необходимо раскомментировать строки для нужных интерфейсов, а в поле MaxBytes указать скорость интерфейса в байтах/с.
Рис.8 – Глобальные параметры
Рис.9 – Конфигурация интерфейса
Конфигурационный файл готов.

Перед запуском необходимо убедиться, что директория, указанная в параметре Workdir, существует (так как при ее отсутствии утилита не создаст ее самостоятельно, а выдаст ошибку). Сохранив файл с конфигурацией, запускаем MRTG командой perl mrtg mrtg.cfg.

При первом запуске, вероятно, возникнет ошибка, связанная с отсутствием логов от предыдущих запусков утилиты. Это ожидаемое поведение, которое НЕ сигнализирует об ошибках установки или конфигурации. Просто не обращайте на это внимание.

Теперь переходим в рабочую директорию (ту самую из параметра Workdir) и открываем html файл. В нем нас ожидают четыре графика, но пока нас интересует только самый верхний из них. Он отображает скорость трафика за последние сутки, а каждая новая точка графика — средняя скорость трафика на интерфейсе за последние 5 минут.

Если открыть данный html файл сразу после запуска MRTG, то все графики будут пустыми, а значения максимальной, средней и последней зарегистрированной скорости трафика (отображаются под графиками) нулевыми.

Для верхнего графика необходимо подождать 5 минут до появления первых значений. Если по прошествии данного времени ничего не изменилось, то стоит убедиться, есть ли трафик на данном интерфейсе. В противном случае мы можем быть уверены, что все настроено верно и утилита работает корректно. Остается только подождать, пока построится график за весь период, который мы хотели бы проанализировать (сутки или рабочие часы), а потом извлечь из него необходимую нам информацию.
Рис.10 – Содержимое рабочей директории
Рис.11 – График скорости трафика за последние сутки

Настройка Netflow

Перед тем как настраивать Netflow на сетевом оборудовании, необходимо развернуть сервер, который будет принимать передаваемые данные и обрабатывать их.

Вы можете найти множество ПО, как платного, так и бесплатного (со вторым чуть тяжелее, в большинстве случаев это просто демо-версии на 30 дней), реализующего данный функционал. Мы будем использовать инструмент Manage Engine Netflow Analyzer, который имеет бесплатную версию.

Скачиваем установщик Manage Engine Netflow Analyzer по ссылке и запускаем его.
Дальше нам предстоит стандартная процедура установки. На этапе выбора портов для веб-сервера и Netflow коллектора оставляем все без изменений. В следующем окне нам предложат пройти регистрацию. Ее можно пропустить, нажав кнопку Skip.

Затем начнется процесс установки, после которого выбираем СУБД и завершаем установку. Сразу после этого сервер запустится, и через некоторое время откроется форма входа. Логин и пароль для входа — admin.
Рис.12 – Окно с выбором портов
Рис.13 – Форма авторизации
Зайдя в веб-интерфейс Manage Engine Netflow Analyzer, переходим к настройке сетевого оборудования Cisco.

Заходим в режим конфигурирования и выполняем команды:
  • ip flow-export destination 10.10.70.53:9996 (вместо 10.10.70.53 указывайте ip вашего компьютера, на который устанавливался Netflow Analyzer)
  • ip flow-export source GigabitEthernet 0/0 (вместо GigabitEthernet 0/0 указывайте интерфейс, с которого вы хотите собирать информацию о трафике)
  • ip flow-export version 9
  • ip flow-cache timeout active 1
  • ip flow-cache timeout inactive 15
  • snmp-server ifIndex persist

Если вы хотите собирать информацию сразу с нескольких интерфейсов, то вы можете выполнить несколько команд ip flow-export source <название интерфейса>. Для каждого интерфейса, указанного в такой команде, необходимо определить: входящий или исходящий трафик необходимо мониторить на данном интерфейсе с помощью команд ip flow ingress и ip flow egress соответственно.

Мы будем смотреть за трафиком в обоих направления с нашего интерфейса GigabitEthernet 0/0, поэтому выполним команды:
  • interface GigabitEthernet 0/0
  • ip flow ingress
  • ip flow egress
Теперь возвращаемся в Netflow Analyzer и переходим в раздел Инвентаризация >> Устройства. В нем должно находиться наше устройство. Кликаем на него и попадаем во вкладку Трафик. Переходим на вкладку Интерфейс и получаем график скорости входящего трафика на интерфейсе. Переключаться между графиками входящего и исходящего подключений можно в правом верхнем углу. Там же есть кнопка обновления графика.
Рис.14 – Раздел Инвентаризация >>Устройства
Рис.15 – Вкладка Интерфейс

Настройка SPAN / RSPAN / ERSPAN

Технология SPAN обычно используется для копирования трафика с одного физического интерфейса коммутатора на другой. Это может быть полезно для отладки сети и перенаправления трафика в некую систему мониторинга сети (например: в NTA-систему).

Span нежелателен для использования при высокой нагрузке на сеть, так как для копирования трафика используются ресурсы коммутатора, и это может сказываться на его производительности. Поэтому важно помнить, что данный способ анализа трафика относится к резервным.

Сама настройка SPAN на коммутаторе, с которого планируется снимать трафик, довольно просто: необходимо указать интерфейс-источник и интерфейс-получатель, а также направление захватываемого трафика (входящий трафик (RX), исходящий (TX) или оба направления (both)).

Примечание:
Важно помнить, чтобы не допустить дуплицирование трафика: при снятии копии с виртуального интерфейса VLAN необходимо снимать трафик либо только входящий (RX), либо исходящий (TX). Ведь, условно выражаясь, трафик, который попал во VLAN-интерфейс (RX) из одного узла, из VLAN же и выйдет (не изменившись из TX-интерфейса по направлению к другому узлу).
  • Switch1# conf t
  • Switch1(config)# monitor session 1 source interface fe0/1 both
  • Switch1(config)# monitor session 1 destination interface ge0/2
В технологии SPAN есть одно существенное ограничение — взаимодействие с трафиком возможно только на коммутаторе, где непосредственно настроен SPAN.

В случае, когда необходимо передать трафик на другой коммутатор для последующего с ним взаимодействия, существуют технологии RSPAN и ERSPAN. Причем технология RSPAN работает на L2 уровне, а ERSPAN — на L3 уровне, заворачивая трафик в GRE-туннель.

Данные технологии нагружают коммутаторы еще сильнее, поэтому они малоэффективны, но в отдельных случаях их можно использовать.

RSPAN работает при помощи передачи зеркалируемого трафика через отдельный VLAN в сторону другого L2-коммутатора и далее до обозначенной конечной точки.

При этом необходимо настроить каждый коммутатор отдельно довольно простым набором команд.

В случае, когда трафик передается через коммутатор-источник во VLAN интерфейс с целью последующей передачи его через другой коммутатор:
  • Switch1(config)# vlan 100
  • Switch1(config-vlan)# remote span
  • Switch1(config)# monitor session 1 source interface fe0/1 rx
  • Switch1(config)# monitor session 1 source interface fe0/2 rx
  • Switch1(config)# monitor session 1 destination remote vlan 100
В случае, когда коммутатор является заключительным звеном в цепи передачи и необходимо вывести трафик на физический порт:
  • Switch2(config)# vlan 100
  • Switch2(config-vlan)# remote span
  • Switch2(config)# monitor session 1 source remote vlan 100
  • Switch2(config)# monitor session 1 destination ge0/2
Для просмотра сессии зеркалирования можно использовать команду:
  • show monitor session
ERSPAN, как уже было сказано, работает на L3 уровне между маршрутизируемыми сегментами сети, и для его работы необходимо назначение IP-адресов при настройке зеркалирования. При настройке коммутатора-источника в параметрах ERSPAN должен быть корректно настроен MTU, чтобы пакеты для захвата передавались дальше по цепочке в полном виде.

В случае начала цепочки передачи необходимо настроить IP-адрес коммутатора получателя командой «ip address» (и IP-адрес коммутатора отправителя, командой «origin ip address»):
  • switch1(config)# monitor session 1 type erspan-source
  • switch1(config-mon-erspan-src)# source interface fe0/1
  • switch1(config-mon-erspan-src)# destination
  • switch1(config-mon-erspan-src-dst)# erspan-id 100
  • switch1(config-mon-erspan-src-dst)# ip address 192.168.100.10
  • switch1(config-mon-erspan-src-dst)# origin ip address 192.168.101.10
Примечание: можно не указывать направление в команде «source interface fe0/1» после названия интерфейса. Тогда будет выбрано направление «both»

В случае конца цепочки передачи необходимо назначить только IP-адрес коммутатора получателя и интерфейс-получатель трафика:
  • switch2(config)# monitor session 1 type erspan-destination
  • switch2(config-mon-erspan-dst)# destination interface ge0/2
  • switch2(config-mon-erspan-dst)# source
  • switch2(config-mon-erspan-dst-src)# erspan-id 100
  • switch2(config-mon-erspan-dst-src)# ip address 192.168.100.10
Примечание: значение «erspan-id» должно быть одинаковым для всех устройств передачи трафика.

После настройки необходимо подключить машину к выбранному интерфейсу. Важно, чтобы на узле была достаточная для обработки трафика сетевая карта. Скорее всего, карты на 1 Гбит/с хватит, но это для каждого случая индивидуальная картина. Возможно, понадобится сетевая карта на 10 Гбит/с.

Когда трафик заведен на машину, остается только установить сниффер Wireshark и оставить узел принимать трафик. Рекомендуем прослушать трафик в течении всего рабочего дня для выявления пиковых нагрузок. Далее необходимо пройти в статистику и просмотреть графики ввода/вывода (рисунок 16).
Рис. 16 – Местонахождение статистики трафика
На данном графике изначально не будет отображена необходимая информация. Нужно убрать флажок отображения TCP ошибок и выбрать отображения байт на оси Y (рисунок 17).
Рис. 17 – Окно статистики трафика

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

До встречи в следующих статьях на TS University!

Авторы статьи: Артём Комаров, Инженер технической поддержки в TS Solution
Михаил Меркулов, Инженер технической поддержки в TS Solution