Компьютерные сети

Многоуровневая архитектура Интернета

‘Основы маршрутизации’

Для того чтобы переместить пакеты от хоста-отправителя к хосту-получателю, сетевой уровень должен определить путь, или маршрут, следования пакетов. Независимо от того, какую службу предоставляет сетевой уровень, деитаграммную службу (в этом случае различные пакеты данной пары отправитель-получатель могут двигаться по разным маршрутам) или службу виртуальных каналов (в этом случае все пакеты, передаваемые данным отправителем данному получателю, будут перемещаться по одному и тому же пути), сетевой уровень должен определить путь продвижения пакета. Этим занимается протокол маршрутизации сетевого уровня.
Как правило, хост напрямую подключен к одному из маршрутизаторов, так называемому маршрутизатору по умолчанию, или маршрутизатору первого ретрансляционного участка. Когда хост передает пакет, этот пакет попадает на маршрутизатор по умолчанию. Мы будем называть маршрутизатор по умолчанию хоста-источника маршрутизатором-источником, а маршрутизатор хоста-приемника по умолчанию маршрутизатором-приемником. Задача выбора пути пакета от хоста-источника к хосту-приемнику, очевидно, сводится к задаче выбора пути пакета от маршрутизатора-источника к маршрутизатору-приемнику.
Сердцевиной любого протокола маршрутизации является алгоритм, определяющий путь пакета от маршрутизатора-источника к маршрутизатору-приемнику (алгоритм маршрутизации). Задача алгоритма маршрутизации проста: для заданного множества маршрутизаторов и линий, соединяющих маршрутизаторы, алгоритм маршрутизации находит «оптимальный» путь от маршрутизатора-источника к маршрутизатору-приемнику. Как правило, «оптимальный» означает путь с «минимальной стоимостью». Мы увидим, однако, что на практике в игру часто вступают такие стратегические соображения, как вопросы безопасности (например, такое требование, как «маршрутизатор X, принадлежащий организации Y, не должен переправлять пакеты, исходящие из сети, принадлежащий организации Z»), усложняя концептуально простые и элегантные алгоритмы, на теории которых покоится практика маршрутизации в современных сетях.
Читать далее »

Находится в разделе Основы маршрутизации

Сравнение алгоритмов маршрутизации

Опубликовано 5 апреля, 2008

Перед рассмотрением других алгоритмов маршрутизации дадим краткое сравнение некоторых характеристик алгоритма, основанного на состоянии линий, и дистанционно-векторного алгоритма.

□ Сложность сообщений. Как мы видели, алгоритм, основанный на состоянии линий, требует от каждого узла знания стоимости каждой линии сети. Для этого необходимо отправить 0(пЕ) сообщений, где п представляет собой количество узлов сети, а Е — число линий. Кроме того, каждый раз, когда стоимость линии изменяется, об этом следует известить все узлы. Дистанционно-векторный алгоритм требует обмена сообщениями только между напрямую соединенными узлами на каждой итерации. Как было показано, время, необходимое для схождения алгоритма, может зависеть от многих факторов. Когда изменяется стоимость линии, дистанционно-векторный алгоритм распространяет результаты только в том случае, если это изменение приводит к изменению пути с наименьшей стоимостью для одного из узлов, присоединенного к этой линии.
□ Скорость схождения. Как мы видели, количество вычислений в нашей реализации алгоритма, основанного на состоянии линий, растет пропорционально квадрату узлов сети, требуя передачи 0(пЕ) сообщений. Дистанционно-векторный алгоритм может сходиться медленно (в зависимости от относительной стоимости путей, как было показано в примере на рис. 4.10), и во время схождения могут образовываться маршрутные петли. Кроме того, дистанционно-векторный алгоритм страдает от «приступов» счета до бесконечности.
□ Живучесть. Что может случиться, если маршрутизатор выйдет из строя, «сойдет с ума» или объявит забастовку? В алгоритме маршрутизации, основанном на состоянии линий, маршрутизатор может передать всем остальным маршрутизаторам неверные сведения о стоимости одной из присоединенных к нему линий. Узел может также повредить или потерять один из широковещательных пакетов LS-алгоритма, который он получил. Но узел рассчитывает только собственную таблицу продвижения данных. Остальные узлы сами вычисляют свои таблицы. Это означает, что в алгоритме, основанном на состоянии линий, расчеты маршрутов выполняются в значительной степени раздельно, что предоставляет определенную степень живучести. В случае дистанционно-векторного алгоритма узел может передать другим узлам неверно сосчитанные им значения минимальной стоимости путей. (Такие ситуации встречаются на практике. В 1997 году неисправный маршрутизатор, принадлежащий небольшой компании, занимающейся предоставлением доступа в Интернет, снабжал маршрутизаторы национальной магистрали ошибочной информацией о маршрутах. Это привело к тому, что другие маршрутизаторы завалили трафиком неисправный маршрутизатор, в результате большие фрагменты Интернета в течение нескольких часов были отрезаны.) Обратите внимание, что в дистанционно-векторном алгоритме на каждой итерации результаты вычислений узла непосредственно передаются соседнему узлу, а затем на следующей итерации они попадают к соседу соседа и т. д. Таким образом, в дистанционно-векторном алгоритме некорректно вычисленные данные могут распространиться по всей сети.
Читать далее »

Находится в разделе Основы маршрутизации

Обсуждавшегося выше сценария со счетом до бесконечности (см. рис. 4.9) можно избежать, если использовать метод, называемый обратной коррекцией, или «отравлением» обратного пути (poisoned reverse). Идея этого метода проста — если узел Z направляет пакеты узлу X через узел У, тогда узел Z объявит узлу Y, что его (узла Z) расстояние до узла X равно бесконечности. Узел Z будет продолжать говорить узлу Y эту «маленькую ложь» до тех пор, пока узел Z направляет пакеты узлу X через узел Y. Поскольку узел Y полагает, что у узла Z нет пути к узлу X, узел Уникогда не станет пытаться посылать пакеты узлу X через узел Z, пока узел Z продолжает посылать пакеты узлу X через узел Y (и лгать о том, что у него нет пути к узлу X).
Читать далее »

Другие алгоритмы маршрутизации

Опубликовано 6 марта, 2008

Рассмотренные нами дистанционно-векторный алгоритм и алгоритм, основанный на состоянии линий, представляют собой не просто популярные алгоритмы маршрутизации. По сути, только эти два алгоритма и применяются на практике. Тем не менее за последние 30 лет исследователями было предложено множество других алгоритмов маршрутизации, варьирующихся от крайне простых до очень сложных. Один из простейших предложенных алгоритмов назывался маршрутизацией «горячей картофелины». Своим названием алгоритм обязан поведению маршрутизаторов — каждый маршрутизатор пытается как можно быстрее избавиться (переслать дальше) от пакета данных, передавая его по любой неперегруженной выходной линии, не обращая внимания на то, куда направляется эта линия. В основе другого широкого класса алгоритмов маршрутизации лежит точка зрения на пакетный трафик, как на потоки данных между отправителями и получателями. При таком подходе проблема выбора маршрута может быть сформулирована математически как задача оптимизации при ограничениях, известная как задача сетевых потоков. Еще одно множество алгоритмов маршрутизации, о которых следует сказать здесь несколько слов, обязаны своим происхождением телефонным сетям. Эти алгоритмы маршрутизации коммутируемых каналов представляют интерес для сетей с коммутацией пакетов в ситуациях резервирования ресурсов линии для каждого соединения, таких как пропускная способность части линии связи или объем буферов. И хотя формулировка задачи маршрутизации значительно отличается от ее формулировки для случая определения маршрутов наименьшей стоимости, у подобных алгоритмов маршрутизации есть довольно много общего, по крайне мере в том, что касается алгоритмов определения маршрутов.

Находится в разделе Основы маршрутизации

Когда узел, на котором работает дистанционно-векторный алгоритм, обнаруживает изменение стоимости линии, направляющейся от него к соседу (строка 12), он обновляет свою таблицу расстояний (строка 15) и, если наименьшая стоимость пути изменяется, он извещает об этом своих соседей (строки 23 и 24). Эту ситуацию иллюстрирует рис. 4.8. В данном примере стоимость линии от узла Xrq узла У изменяется с 4 до 1. Здесь мы рассматриваем только записи таблиц расстояний узлов У и Z, содержащие стоимости путей до узла X.
Читать далее »

В отличие от алгоритма, основанного на состоянии линий и использующего глобальную информацию, дистанционно-векторный (Distance Vector, DV) алгоритм является распределенным, итерационным и асинхронным. Он является распределенным, так как каждый узел получает порцию информации от одного или нескольких напрямую соединенных с ним соседей, выполняет вычисления, а затем может разослать результаты своих вычислений своим соседям. Он является итерационным, так как этот процесс продолжается до тех пор, пока соседние узлы не перестанут обмениваться информацией. (Интересно отметить, что, как мы увидим, этот алгоритм сам завершает свою работу — он не получает «сигнала», требующего остановить работу; он просто останавливается.) Алгоритм является асинхронным, так как он не требует, чтобы все узлы работали в жесткой взаимосвязи друг с другом. Как мы увидим, асинхронный, итерационный, самоостанавливающийся, распределенный алгоритм значительно интереснее централизованного!
Читать далее »

Как уже отмечалось, алгоритм, основанный на состоянии линий (Line State, LS), знает стоимость всех линий, то есть все эти данные можно подать на вход LS-алго-ритма. На практике, чтобы собрать эту информацию, каждый узел путем широковещательной рассылки отправляет свой идентификатор и стоимости всех присоединенных к нему линий всем остальным маршрутизаторам сети. Чтобы выполнить эту операцию, узлам не нужно знать идентификаторы всех остальных узлов сети. Узел должен лишь знать идентификаторы своих ближайших соседей, а также стоимости линий, соединяющих его с ними. О топологии остальной сети ему станет известно, когда он получит широковещательные пакеты с информацией о состоянии линий от других узлов. (В главе 5 мы узнаем, как маршрутизатор узнает идентификаторы своих ближайших соседей.) В результате всех этих широковещательных рассылок все узлы сети получают идентичное и полное представление о сети. Затем каждый узел может запустить алгоритм, основанный на состояниях линий, и вычислить пути к каждому из узлов.
Читать далее »