Алгоритм удаленной диагностики локальной сети с помощью анализа потерь пакетов
Ю.А.Семёнов, А.А.Гончаров.
Для любой достаточно большой структурированной локальной сети возникает проблема мониторинга ее состояния и выявления
перегруженных сегментов. Обычно это делается с привлечением возможностей протокола 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-адресов этого сегмента и в каждом из сетевых устройств по пути имеется интерфейс, где можно оценить потери в этом конкретном сетевом устройстве.
Такая ситуация обычно легко реализуется внутри локальной сети, а также в опорных сетях сервис-провайдеров
|