Алгоритмы маршритизации — различия между версиями
Строка 31: | Строка 31: | ||
====Недостатки==== | ====Недостатки==== | ||
*проблемы счета до бесконечности | *проблемы счета до бесконечности | ||
+ | |||
+ | ==Маршрутизация с учетом состояния линий== | ||
+ | В основе данного алгоритма лежит простая идея каждый маршрутизатор должен уметь: | ||
+ | *обнаруживать своих соседей и узнавать расстояние до них | ||
+ | *задавать метрику расстояния с каждым из своих соседей | ||
+ | *создавать пакет, содержащий всю собранную информацию | ||
+ | *посылать этот пакет другим маршрутизаторам и принимать от них аналогичные | ||
+ | *вычислять кратчайший путь до всех маршрутизаторов | ||
+ | В результате выполнения всех этих пунктов каждый маршрутизатор будет иметь в своем распоряжении полную топологию сети и может запустить алгоритм Дейкстры для определения кратчайших путей. Рассмотрим эти пункты подробнее. | ||
+ | ====Знакомство с соседями==== | ||
+ | Как только маршрутизатор загружается ему нужно получить информацию от соседей, для этого он посылает специальный пакет <tex>HELLO</tex>. В ответ маршрутизатор на другом конце линии посылает ответ, содержащий свое имя. Имена маршрутизаторов должны быть совершенно уникальными. | ||
+ | В случае соединений <tex>point-to-point</tex> проблем не возникает, но если некоторые маршрутизаторы соединены широковещательной связью ситуация усложняется. Пусть, например, маршрутизаторы <tex>A, B, C</tex> соединены широковещательной связью. Моделирование данной модели в виде связей <tex>point-to-point</tex> будет сильно увеличивать размер топологии, поэтому создает искусственный узел, назовем его <tex>N</tex>, соответствующий самой широковещательной связи. На самом деле роль этого узла будет играть один из маршрутизаторов <tex>A, B, C</tex>. Теперь, передача пакетов от <tex>A</tex> к <tex>C</tex> будет следовать по пути <tex>ANC</tex>. | ||
+ | ====Задание метрики расстояний==== |
Версия 23:33, 25 января 2017
Алгоритмы маршрутизации применяются для нахождения наилучшего пути между хостами сети. При этом сеть рассматривается, как граф, в котором маршрутизаторы - вершины графа, а физические линии соединения между ними - ребра. Каждому ребру присваивается свой вес, который может быть функцией многих параметров, например от количества транзитных участков, расстояния, стоимости связи, измеренной величины задержки и многих других. Все алгоритмы маршрутизации можно разделить на статические, для которых выбор маршрута между каждой парой хостов производиться заранее, в автономном режиме, и не меняется со временем, и динамические - алгоритмы, меняющие решения при выборе маршрута в зависимости от изменения топологии и загруженности линий связи.
Содержание
Заливка(flooding)
Алгоритм заливки является одним из самых простых, в нем каждый приходящий пакет пересылается на все исходящие линии, кроме той по которой он пришел.
Дубликаты пакетов
Этот алгоритм порождает много лишних пакетов, а в сетях с замкнутыми контурами бесконечное число пакетов, поэтому в заголовок пакета помещают счетчик пройденных им транзитных участков, каждый маршрутизатор, при получении этого пакета и пересылкой дальше уменьшает этот счетчик на единицу. Как только значение счетчика достигает нуля пакет дальше не пересылается. Изначально этот счетчик можно задать равным длине максимального пути в сети, или длине пути от отправителя до получателя, если она известна. Тем не менее один и тот же маршрутизатор может отправлять один и тот же пакет несколько раз, если получил его с разных линий. Один из методов борьбы с отправкой одного и того же пакета много раз состоит в том, что каждый маршрутизатор нумерует каждый пакет получаемый от своих хостов и добавляет этот номер в заголовок. Все маршрутизаторы ведут для всех маршрутизаторов-источников счетчик, хранящий максимальный номер полученного от него пакета. Теперь, когда приходит пакет с номером меньшим, чем тот, что храниться в счетчике пакет вместо пересылки просто игнорируется, поскольку этот пакет уже был переслан.
Преимущества
- гарантированно доставляет пакет
- может быть эффективен при широковещательной рассылке
- надежен
- не требует настройки, поэтому может быть использован внутри другого более сложного алгоритма
- удобен для тестирования, так как находит все пути от источника к получателю, в том числа и кратчайшие
Недостатки
- дублирование пакетов
- не практичен, так как увеличивает нагрузку на сеть
Маршрутизация по вектору расстояний(distance vector routing)
Алгоритмы маршрутизации работают опираясь на таблицы(называемые векторами), поддерживаемые всеми маршрутизаторами и содержащие сведения о кратчайших путях к каждому из возможных адресатов и о том, какую линию соединения при этом использовать. Для обновления этих таблиц маршрутизаторы периодически обмениваются информацией с соседними маршрутизаторами.
Каждая запись таблицы состоит из двух частей: предпочитаемые номер линии для данного адресата и предполагаемое расстояние до него. Будем считать, что каждый маршрутизатор знает расстояние до своих соседей(если расстояние изменяется в транзитных участках то оно равно 1, а если же расстояние измеряется временем задержки распространения, то маршрутизатор может измерить его с помощью специального пакета
, в который отправитель помещает время отправления, а получатель отправляет обратно как можно быстрее). Каждые мс все маршрутизаторы посылают свои таблицы всем своим соседям и получают подобные вектора от них. Пусть одна из таких таблиц пришла от соседа и в ней указано расстояние от маршрутизатора до маршрутизатора , обозначим его . Если маршрутизатор знает, что расстояние между ним и маршрутизатором равно , то расстояние до маршрутизатора через маршрутизатор равно . Выполнив такие расчеты для всех своих соседей маршрутизатор может выбрать наилучшие пути и поместить их в соответствующую запись таблицы.Проблема счета до бесконечности
Рассмотрим ситуацию: пусть в сети 5 маршрутизаторов
, соединенных последовательно. Изначально все они включены и расстояние измеряется в количестве транзитных участков. Внезапно связь между маршрутизаторами и теряется, либо просто отключается. При первом обмене пакетами не слышит ответа от , но маршрутизатор сообщает, что он знает путь до длиной 2. Маршрутизатор изменяет запись в таблице и считает, что теперь у него есть путь длиной 3 до маршрутизатора . Аналогично, при следующей рассылке маршрутизатор установит в своей таблице путь до равным 4, так как получит от маршрутизаторов и таблицы, по которым они знают путь до маршрутизатора длиной 3. С каждой следующей итерацией обновления таблиц расстояние до маршрутизатора будет только увеличивается и через какое-то время уйдет в бесконечность.Преимущества
- относительно небольшой объем хранимых каждым маршрутизатором данных
- простой алгоритм пересчета расстояний на каждой итерации
- быстрое распространение хороших новостей
Недостатки
- проблемы счета до бесконечности
Маршрутизация с учетом состояния линий
В основе данного алгоритма лежит простая идея каждый маршрутизатор должен уметь:
- обнаруживать своих соседей и узнавать расстояние до них
- задавать метрику расстояния с каждым из своих соседей
- создавать пакет, содержащий всю собранную информацию
- посылать этот пакет другим маршрутизаторам и принимать от них аналогичные
- вычислять кратчайший путь до всех маршрутизаторов
В результате выполнения всех этих пунктов каждый маршрутизатор будет иметь в своем распоряжении полную топологию сети и может запустить алгоритм Дейкстры для определения кратчайших путей. Рассмотрим эти пункты подробнее.
Знакомство с соседями
Как только маршрутизатор загружается ему нужно получить информацию от соседей, для этого он посылает специальный пакет
. В ответ маршрутизатор на другом конце линии посылает ответ, содержащий свое имя. Имена маршрутизаторов должны быть совершенно уникальными. В случае соединений проблем не возникает, но если некоторые маршрутизаторы соединены широковещательной связью ситуация усложняется. Пусть, например, маршрутизаторы соединены широковещательной связью. Моделирование данной модели в виде связей будет сильно увеличивать размер топологии, поэтому создает искусственный узел, назовем его , соответствующий самой широковещательной связи. На самом деле роль этого узла будет играть один из маршрутизаторов . Теперь, передача пакетов от к будет следовать по пути .