Децентрализованный алгоритм Форда-Фолкирсона
Впервые был использован в сети ARPANet. В настоящее время являтся технологической основой сетиInternet. В каждом узле связихраняться две таблицы. Расширенныя таблица маршрутизации и матрица стоимостей.
|
Получатель |
Смежный |
Стоимость доставки до получ |
|
… |
… |
… |
|
Получатель |
w1 |
w2 |
… (смежные с тек.) |
|
|
Минимальная стоимость доставки, если пакет пойдет через узел w1 |
|
|
Кроме того в текущем узле храняться
стоимости каналов со смежными узлами.
Обозначим Cd(v,w)
– минимальная стоимость доставки из
текущего узлаvдо
получателяdчерез
смежный узелw(смежный
с текущим, сv).Dd(v)
– минимальная стоимость доставки из
текущего узлаvдо
получателяd, т.е.
.
Величиныc,v,wявляются содержанием
матрицы стоимостей.Dd(v)
– третий столбец маршрутной таблицы,l(v,w)
– стоимость канала. Все управление
алгоритмом и узлами строиться на
событиях.
Событие1. В сеть дополнен канал (v,m) между текущим узломvи смежным с ним узломm. Его стоимостьl(v,m). Возможно, что узелmявляется новым. Появление узла = появление канала. Такое событие инициируется администратором.
Шаг1. В текущем узлеvв матрице стоимостей в строке для получателя с номеромmи в столбце для смежного узла с номеромmфиксируется значениеCm(v,m) =l(v,m).
Шаг2. Для получателя с номеромmпересчитывается минимальная стоимость
доставки из узлаv,
,w– смежный узел.
Сравниваем его с имеющимся значением
маршрутной таблицы. Если значения
различны, то новое значениеDm(v)
заносится в таблицу (m,p,Dm(v)),
гдеp– номер узла, на
котором достигнут минимум (в матрице
стоимостей это номер столбца). Как
правилоp=m,
иначе нет смысла во введении нового
канала. Всем смежным узлам посылается
сообщение [m,Dm(v)],
в котором текущий узелvинформирует соседей, что стоимость
доставки из узлаmдо
текущего узлаvизменилась.
Шаг3. Из текущего узлаvв смежный узелmполылается сообщение [p,Dp(v)] для всех получателейp(узелvпересылает в узелmсвою маршрутную таблицу без второго столбца в виде сообщений).
Событие2. Изменилась стоимость канала (v,m) на величину(v,m). Если< 0, то произошло улучшение связи, иначе снижение, вплоть до выхода канала из строя.
Шаг1.Cd(v,m) =Cd(v,m) +(v,m) для всех получателейd. Весь столбецmматрицы стоимостей изменится на величину(v,m).
Шаг2. Для всех получателей расчитываются новые значенияDd(v). Если для какого-либо получателяpизменилась стоимость доставкиDp(v), то в маршрутной таблице формируется новая строка (p,w,Dp(v)) – стоимость доставки до получателяpчерез узелw. Всем смежным узлам посылаются сообщения [p,Dp(v)].
Событие3. В текущий узелvиз смежного узлаwпришло сообщение [p,Dp(w)], которое говорит, что стоимость доставки до узлаpчерезwизменилась. Еслиp=v, то сообщение игнорируется.
Шаг1. pv, тогда в матрице стоимостей в строке с номеромpв столбцеwзаписывается новое значениеCp(v,w) =Dp(w) +l(v,w).
Шаг2. Для получателя pрассчитываются новая минимальная стоимость доставкиDp(v). Если это значение изменилось, то в маршрутной таблице формируется новая строка (p,m,Dp(v)),m– номер узла, через который достигнуто минимальное расстояние. Всем смежным узлам посылается сообщение [p,Dp(v)].
Формат сообщения [v,w,p,Dp(v),t,flag].
|
|
v = 1 |
2 |
4 |
смж |
ст |
v = 2 |
1 |
3 |
4 |
см |
ст | |||
|
2 |
1 |
5 |
2 |
1 |
1 |
1 |
7 |
5 |
1 |
1 | ||||
|
3 |
4 |
4 |
4 |
4 |
3 |
5 |
3 |
5 |
3 |
3 | ||||
|
4 |
4 |
2 |
4 |
2 |
4 |
3 |
5 |
3 |
4 |
3 | ||||
|
v = 3 |
2 |
4 |
смж |
ст |
v = 4 |
1 |
2 |
3 |
см |
ст | ||||
|
1 |
4 |
4 |
2 |
4 |
1 |
2 |
4 |
6 |
1 |
2 | ||||
|
2 |
3 |
5 |
2 |
3 |
2 |
3 |
3 |
5 |
2 |
3 | ||||
|
4 |
6 |
2 |
4 |
2 |
3 |
6 |
6 |
2 |
3 |
2 | ||||

