Алгоритм удаленной диагностики локальной сети с помощью анализа потерь пакетов

Ю.А.Семёнов, А.А.Гончаров.


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

Нами был разработан алгоритм, который позволяет с помощью одной рабочей станции, в реальном масштабе времени, круглосуточно оценивать работу удаленных сетевых сегментов. В качестве параметра, характеризующего качество работы сегмента, используется процент пакетов, потерянных в сегменте. Повышение вероятности потерь пакетов особенно сильно влияет на эффективность работы протокола ТСР. Проблемные сегменты возникают в области за перегруженными сетевыми приборами. Если усредненное значение вероятности превышает некоторый порог (например, 1%), следует рассмотреть возможность замены оборудования или изменения топологии сети.

На рис. 1 представлена схема, поясняющая предлагаемый алгоритм измерений.



Рис. 1.


N1, N2, ..., Nn – активные сетевые устройства, т.е. такие приборы, где происходит буферизация пакетов и возможна их потеря.

А, В,…. – это подмножество машин из сетевых сегментов 1, 2,…, n, чьи сетевые интерфейсы не очень загружены (например, слабо загруженные рабочие станции).

Потери в основном происходят из-за переполнения буферов в активных сетевых устройствах.

Если на вход канала в N1 поступило S пакетов, направленных в субсеть n, то из N1 в N2 поступит S < (1-a1), где a1) - вероятность потери пакета в активном устройстве N1.

По аналогии получим выражение для количества пакетов, достигших получателя:


R = S < (1- a1)2< (1-a2)2< …< (1-an)2< (1-a),

где a – процент потерянных пакетов в удаленном сегменте n.

Квадраты возникают из-за того, что пакеты могут теряться в сетевых устройствах как по пути туда, так и обратно. При отправке отклика из машины сегмента n потеря не возможна, по этой причине сомножитель (1-a) представлен в первой степени, На практике мы измеряем величины (1-a1)2, (1-a2)2, ….

Поясним суть метода на примере фрагмента сети, показанного на рис. 2.



Рис.2


Каждое сетевое устройство на пути U1-U2-U3 имеет определенный объем буфера Вi и загрузку (Ii). По этой причине у него имеется определенная вероятность потерь х(Вi, Ii), зависящая от загрузки I=I(t) (i – номер сетевого устройства). Зондирование производилось с помощью пакетов ICMP, но для этих целей можно использовать также ТСР или UDP.

Пусть х1 – вероятность потери пакета на уровне U1 (в CISCO 2948), x2 – вероятность потери пакета на уровне U2, x3 – вероятность потери пакета на уровне U3. Обозначим вероятности потерь в сетевых устройствах слоев 1, 2 и 3 как:


x1 = х(В1,I1), x2 = x(B2,I2), x3 = (B3,I3)


Пусть наша рабочая станция находится на уровне U1 и мы с помощью нее измеряем потери в нижележащих слоях. Зондируя subnet0, определяем усредненную вероятность потерь пакетов на уровне 1 (U1(t)=x1(t)). Будем считать, что послойные вероятности потерь перемножаются. Усредненная вероятность потерь для совокупности ЭВМ на уровне U2 (Subnet1) равна.


U2(t) = x1*x2


Зная U1(t) и U2(t), вычисляем x2=U2(t)/U1(t). Аналогично определяем усредненную вероятность потерь для совокупности машин на уровне U3.


U3(t) = x1*x2*x3


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

Из базы данных мы берем информацию о принадлежности того или иного IP-адреса ЭВМ к интересующему нас сегменту и производим зондирование всех машин субсети. Каждая ЭВМ зондируется последовательно сериями по три пакета. Если все три пакета не дали отклика, машина считается выключенной, и эти данные не учитываются при оценке вероятности потери пакета. Такой подход приводит к определенному занижению вероятности потерь, но эффект незначителен, так как -a3 даже при вероятности потери a =0,1 составляет лишь 0,1%, и его влиянием можно пренебречь. Зато мы не завышаем вероятность потерь за счет отключенных в данный момент ЭВМ.

Рассмотрим реальные экспериментальные данные (рис. 3), которые были нами получены в сети ИТЭФ, насчитывающей более 1000 машин. На диаграммах по вертикальной оси откладывается вычисленное значение xi(t).



Рис. 3.


Данные, полученные с помощью нашей программы, можно посмотреть на сайте http://saturn.itep.ru/trace/losses/index.html.

Из рисунка видно, что в сегменте в корпусах 119 и 120 в четверг процент потерянных пакетов резко вырос и составил 7%, т.е. сеть там работала в эти моменты плохо. Этот сегмент слабо загружен, но потери в нем большие. Ниже приведены графики загрузки 119 и 120 сегментов.



Сегмент119


Сегмент 120


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

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