42. Принципы маршрутизации в сетях передачи данных.
Маршрутизация в сетях передачи данных строится на основе различных алгоритмов выбора маршрута.
Алгоритмы выбора маршрута являются частью программного обеспечения сетевого уровня, который ответственнен за маршрутизацию пришедшего пакет. Если подсеть использует дейтограммную службу, выбор маршрута для каждого пакета должен производиться заново, т.к. оптимальный маршрут мог измениться. Если подсеть использует виртуальные каналы, маршрут выбирается только при создании нового виртуального канала. После этого все информационные пакеты следуют по выбранному маршруту. Последний случай иногда называют сеансовой маршрутизацией, т.к. маршрут остается в силе на протяжении всего сеанса пользователя.
Алгоритм выбора маршрута должен обладать определенными свойствами: правильностью, простотой, надежностью, устойчивостью, справедливостью и оптимальностью. За период работы большой сети постоянно происходят различные отказы аппаратуры и изменения топологии. Алгоритм маршрутизации должен уметь справляться с изменениями топологии и трафика без необходимости прекращения всех задач на всех хостах и перегрузки сети каждой поломке маршрутизатора.
Алгоритмы выбора маршрута разбить на два основных класса: адаптивные и неадаптивные.
Неадаптивные алгоритмы — не учитывают при выборе маршрута топологии и текущего состояния сети, не изменяют трафик в линиях. Вместо этого выбор маршрута для каждой пары станции производится заранее, в автономном режиме, и список маршрутов загружается в маршрутизаторы во время загрузки сети. Такая процедура иногда называется статической маршрутизацией.
Адаптивные алгоритмы — изменяют решение о выборе маршрутов при изменении топологии и также часто в зависимости от загруженности линий. Адаптивные алгоритмы различаются по тому, где они получают информацию (например, локально, от соседних маршрутизаторов), когда изменяют маршруты (через определенные равные интервалы времени, при изменении нагрузки или при изменении топологии) и какие данные используются для оптимизации (расстояние, количество транзитных участков или ожидаемое время пересылки).
Алгоритмы маршрутизации.
Выбор кратчайшего пути.
Идея заключается в построении графа подсети, в котором каждый узел будет соответствовать маршрутизатору, а каждая дуга – линии связи. При выборе маршрута между двумя маршрутизаторами алгоритм просто находит кротчайший путь между ними на графе. Один из способов измерения длины пути состоит в подсчете количества транзитных участков. В таком случае пути АВС и АВЕ имеют одинаковую длину . Можно измерять расстояние в километрах. В таком случае окажется, что путь АВС значительно длиннее пути АВЕ.
Входное дерево для маршрутизатора В.
Однако помимо учета количества транзитных участков и физической длины линий, возможен учет и других параметров. Например, каждой дуге графа можно поставить в соответствие среднюю длину очереди и время задержки пересылки, определяемые каждый час с помощью передачи специально тестового пакета. В таком графе кратчайший путь определяется как самый быстрый путь, а не путь с самой короткой длиной кабеля или путь, состоящий из минимального числа отдельных отрезков кабеля.
Заливка ( лавинная маршрутизация ).
Каждый приходящий пакет посылается во все исходящие линии, кроме той, по которой пришел пакет. Алгоритм заливки порождает огромное количество дублированных пакетов, если не принять специальных мер. Одна из таких мер состоит в помещении в заголовке пакета счетчика преодоленных им транзитных участков, уменьшаемого при прохождении каждого маршрутизатора. Когда значение этого счетчика падает до нуля, пакет удаляется
Альтернативный способ заключается в учете проходящих через маршрутизатор пакетов по номерам, чтобы не посылать их еще раз.
На практике чаще применяется вариант данного алгоритма под названием «выборочная заливка». В данном алгоритме маршрутизаторы посылают пакеты не по всем линиям, а только по тем, которые идут приблизительно в нужном направлении.
Маршрутизация на основании потока.
Данный алгоритм является статическим, использует для определения оптимального маршрута как топологию, так и загрузку.
В основе этого алгоритма лежит идея: если для данной линии известны ее пропускная способность и среднее значение потока, то на основании теории массового обслуживания можно вычислить среднюю задержку для пакета. По средним значениям задержки для всех линий можно затем вычислить средневзвешенную задержку пакета для всей подсети. После этого задача маршрутизации сводится к созданию алгоритма выбора маршрута, который бы минимизировал среднюю задержку по всей сети.
Чтобы воспользоваться этим методом, необходимо знать заранее определенную информацию. Должна быть известна топология подсети, должна быть задана матрица трафика, должна быть доступна матрица пропускной способности линий. И наконец, должен быть выбран алгоритм выбора маршрутов.
Дистанционно–векторная маршрутизация.
В современных компьютерных сетях обычно используются динамические алгоритмы выбора маршрута. Наиболее популярными являются два динамических алгоритма: дистанционно–векторная маршрутизация и маршрутизация состояния канала.
Каждый маршрутизатор содержит таблицу, в которой перечисляются кратчайшие известные пути к каждому получателю. Для обновления данных этих таблиц производится обмен информацией с соседними маршрутизаторами.
Таблицы, с которыми работают маршрутизаторы, содержат записи о каждом маршрутизаторе подсети. Каждая запись состоит из двух частей: номера оптимальной линии для данного получателя и оценки расстояния или времени прохождения пакета до этого получателя. Предполагается, что маршрутизаторам известно расстояние до каждого из соседей.
Отказаться от алгоритма пришлось из-за двух основных проблем. Во-первых, старый алгоритм не учитывал пропускную способность линий. Во вторых — алгоритм слишком долго приходил к устойчивому состоянию, несмотря на применение трюков типа расколотого горизонта. Поэтому он был полностью заменен новым алгоритмом, называющимся маршрутизацией с учетом состояния линий.
Маршрутизация с учетом состояний линий.
В основе этого алгоритма лежит простая идея, ее можно изложить в пяти требованиях к маршрутизатору. Каждый маршрутизатор должен:
- Обнаруживать своих соседей и узнавать их сетевые адреса.
- Измерять задержку или стоимость связи с каждым из своих соседей.
- Создавать пакет, содержащий всю собранную информацию.
- Посылать этот пакет всем остальным маршрутизаторам.
- Вычислить кратчайший путь ко всем остальным маршрутизаторам.
В результате каждому маршрутизатору высылается полная топология и все измеренные значения задержек. После этого для обнаружения кратчайшего пути к каждому маршрутизатору может применяться алгоритм Дийкстра. Рассмотрим его работу:
2. Принципы маршрутизации
Важнейшей задачей сетевого уровня является маршрутизация — передача пакетов между двумя конечными узлами в составной сети.
Цель маршрутизации — доставка пакетов по назначению с максимизацией эффективности. Чаще всего эффективность выражена взвешенной суммой времен доставки сообщений при ограничении снизу на вероятность доставки. Маршрутизация сводится к определению направлений движения пакетов в маршрутизаторах. Выбор одного из возможных в маршрутизаторе направлений зависит от текущей топологии сети (она может меняться хотя бы из-за временного выхода некоторых узлов из строя), длин очередей в узлах коммутации, интенсивности входных потоков и т.п.
Алгоритмы маршрутизации включают процедуры:
— измерение и оценивание параметров сети;
— принятие решения о рассылке служебной информации;
— расчет таблиц маршрутизации (ТМ);
— реализация принятых маршрутных решений.
В зависимости от того, используется ли при выборе направления информация о состоянии только данного узла или всей сети, различают алгоритмы изолированные и глобальные. Если ТМ реагируют на изменения состояния сети, то алгоритм адаптивный, иначе фиксированный (статический), а при редких корректировках — квазистатический. В статических маршрутизаторах изменения в ТМ вносит администратор сети.
Простейший алгоритм — изолированный, статический. Алгоритм кратчайшей очереди в отличие от простейшего является адаптивным, пакет посылается по направлению, в котором наименьшая очередь в данном узле. Лавинный алгоритм — многопутевой, основан на рассылке копий пакета по всем направлениям, пакеты сбрасываются, если в данном узле другая копия уже проходила. Очевидно, что лавинный алгоритм обеспечивает надежную доставку, но порождает значительный трафик и потому используется только для отдельных пакетов большой ценности.
Наиболее широко используемые протоколы маршрутизации — RIP (Routing Information Protocol) и OSPF (Open Shortest Path First). Метод RIP иначе называется методом рельефов. Он основан на алгоритме Беллмана-Форда и используется преимущественно на нижних уровнях иерархии. OSPF — алгоритм динамической маршрутизации, в котором информация о любом изменении в сети рассылается лавинообразно.
Алгоритм Беллмана-Форда относится к алгоритмам DVA (Distance Vector Algorithms). В DVA рельеф Ra(d) — это оценка кратчайшего пути от узла a к узлу d. Оценка (условно назовем ее расстоянием) может выражаться временем доставки, надежностью доставки или числом узлов коммутации (измерение в хопах) на данном маршруте. В ТМ узла а каждому из остальных узлов отводится одна строка со следующей информацией:
— номер N ближайшего узла, соответствующего кратчайшему пути;
— список рельефов от а к d через каждый из смежных узлов.
Рассмотрим принципы маршрутизации на примере рис. 2.
Рис. 2. Принципы маршрутизации в составной сети
В этой сети 8 маршрутизаторов объединяют 8 сетей в общую сеть; SI, S2, . , S8 — это номера сетей. Маршрутизаторы имеют по несколько портов (минимум по два), к которым присоединяются сети. Каждый порт маршрутизатора можно рассматривать как отдельный узел сети: он имеет собственный сетевой адрес и собственный локальный адрес в той подсети, которая к нему подключена. Например, маршрутизатор под номером 1 имеет три порта, к которым подключены сети SI, S2, S3. На рисунке сетевые адреса этих портов обозначены как Ml(l), Ml(2) и М1(3). Порт М1(1) имеет локальный адрес в сети с номером S1, порт Ml(2) — в сети S2, а порт М1(3) — в сети S3. Таким образом, маршрутизатор можно рассматривать как совокупность нескольких узлов, каждый из которых входит в свою сеть. Как единое устройство маршрутизатор не имеет ни отдельного сетевого адреса, ни какого-либо локального адреса.
В сложных составных сетях почти всегда существует несколько альтернативных маршрутов для передачи пакетов между двумя конечными узлами. Маршрут — это последовательность маршрутизаторов, которые должен пройти пакет от отправителя до получателя. Так, пакет, отправленный из узла А в узел В, может пройти через маршрутизаторы 8, 5, 4 и 1 или маршрутизаторы 8,7 и 3.
Задачу выбора маршрута из нескольких возможных решают маршрутизаторы, а также конечные узлы. Маршрут выбирается на основании имеющейся у этих устройств информации о текущей конфигурации сети, а также на основании указанного критерия выбора маршрута. Обычно в качестве критерия выступает задержка прохождения маршрута отдельным пакетом или средняя пропускная способность маршрута для последовательности пакетов.
Чтобы по адресу сети назначения можно было выбрать рациональный маршрут дальнейшего следования пакета, каждый конечный узел и маршрутизатор анализируют специальную информационную структуру, которая называется таблицей маршрутизации. Используя условные обозначения для сетевых адресов маршрутизаторов и номеров сетей в том виде, как они приведены на рис. 1, посмотрим, как могла бы выглядеть таблица маршрутизации, например, в маршрутизаторе 4 (табл. 1).
Таблица 1. Маршрутная таблица маршрутизатора 4
Сетевой адрес выходного порта