
Алгоритмы выбора кратчайшего пути.
Эти алгоритмы позволяют определить кратчайший путь между каждой парой источник-получатель. Стоимость пути равна сумме стоимостей линий этого пути. Длина или стоимость каждой линии может измеряться или числом пакетов, ожидающих передачи, или средней задержкой пакета в линии. В простейшем случае длина пути может измеряться числом транзитных участков.
Алгоритм Беллмана-Форда.
Предположим, что требуется найти кратчайшие пути от узла источника до всевозможных узлов адресатов. Без ограничения общности будем полагать, что узлом источником является первый узел.
Идея алгоритма в том, чтобы сначала найти кратчайшие пути содержащие не более одной дуги. Затем – найти кратчайшие пути, содержащие не более двух дуг, затем – трех дуг и т.д. Таким образом, алгоритм итерирует числом дуг (или числом транзитных участков).
Формальная запись алгоритма Беллмана-Форда версии А имеет вид:
где h – число дуг пути;
N – число узлов (маршрутизаторов) сети;
Dih – длина кратчайшего пути от 1-го узла до i узла, при условии, что путь включает не более h дуг;
dji – длина линии между двумя смежными j i узлами (расстояние от j узла до i узла).
Версия А алгоритма Беллмана-Форда подходит для централизованных вычислений.
Рассмотрим алгоритм Беллмана-Форда версии В, который хорошо подходит для распределенных вычислений (это когда узлы вычисляют кратчайшие пути самостоятельно и при этом узлы обмениваются необходимой маршрутной информацией). Этот алгоритм позволяет найти кратчайшие пути от всех узлов до узла-адресата. Без ограничения общности будем полагать, что узлом-адресатом является первый узел.
Алгоритм
работает не регламентировано, выполняя
время от времени итерацию. При этом
используются последние оценки Dj,
полученные
от соседей jN
(i), и
последние длины dij
и статусы
уходящих от i-узла
линий.
Формальная запись алгоритма Беллмана-Форда версии В имеет вид:
где N (i) – множество соседей-узлов i-узла, соединенных с i-узлом исходящей от i-узла линией;
Dih – длина кратчайшего пути от i-узла до 1-го узла, при условии, что путь включает не более h дуг;
Dij – расстояние от i узла до j узла.
Алгоритм Беллмана-Форда версии В хорошо подходит для распределенных вычислений. В маршрутизаторах он реализуется в асинхронном виде:
Алгоритм в асинхронном виде (*) выполняется в маршрутизаторах не регламентировано, т.е. время от времени. Таким образом, алгоритм может начинать работу с любых начальных условий. В любом случае, алгоритм сводится к нахождению кратчайших путей.
Алгоритм Дейкстра.
По Дейкстре, топология сети представляется в виде неориентированного графа с указанными для каждого ребра значениями показателей. Этим показателем, например, может быть расстояние между двумя соседними узлами. В процессе работы алгоритма происходит оценка меток, присвоенных каждому узлу графа. По меньшему значению метки определяется оптимальный путь между узлами. В результате совокупной оценки путей между узлами графа определяется общий оптимальный маршрут.
Пусть требуется найти кратчайшие пути от 1-го узла до остальных узлов. Идея алгоритма в том, чтобы находить пути в порядке возрастания длины пути, т.е. алгоритм итерирует длиной пути.
Сначала определяется кратчайший из кратчайших путей, этот путь соединяет 1-ый узел с ближайшим соседним узлом. Следующий кратчайший путь – это либо путь из 1-ой дуги к следующему ближайшему узлу, либо путь из 2-х дуг, но обязательно проходящий через узел, выбранный на первом шаге и т.д.
На k - шаге мы имеем множество P из k-узлов ближайших к 1-му узлу. Тогда на (k+1) шаге путь к следующему ближайшему узлу должен проходить по узлам из множества P и стоимость этого пути определяется как
где Di – длина кратчайшего пути от 1-го узла до i-узла;
dij – стоимость связи между смежными ij узлами.
Формальная запись алгоритма Дейкстра имеет вид:
-
Начальные условия
-
Поиск следующего ближайшего узла. Найти узел i
P такой, что
Положить
P=P.
Если P
содержит
все узлы сети, то алгоритм заканчивает
работу, в противном случае осуществляется
переход к пункту 3.
-
Обновление меток
После этого осуществляется переход к пункту 2.
Следовательно, протоколы маршрутизации могут быть построены на основе разных алгоритмов, отличающихся способами построения таблиц маршрутизации, способами выбора наилучшего маршрута и другими особенностями своей работы.