IP-маршрутизация

Основная задача любой сети - транспортировка информации от ЭВМ-отправителя к ЭВМ-получателю В большинстве случаев для этого нужно совершить несколько пересылок. Проблему выбора пути решают алгоритмы маршрутизации. Алгоритмы для своей работы используют таблицу маршрутизации. В зависимости от того, каким образом заполняется и корректируется таблица - администратором или автоматически, - маршрутизация делится на статическую и динамическую (рисунок 58) При динамической маршрутизации к системе добавляется еще один компонент - протокол маршрутизации, который собственно и отвечает за заполнение и корректировку таблицы маршрутизации. Но модификация таблицы происходит не напрямую. Протокол поддерживает собственную базу данных, которая может содержать следующую информацию по маршрутам:

• загруженность сетевого интерфейса:

• задержка в подключенных каналах передачи данных;

• стоимость передачи данных по каналам;

• прочее.

Данная информация формируется на основе двух источников:

• измерение и оценка параметров сети самим протоколом;

• взаимодействие с протоколами, работающими на других маршрутизаторах.

На основе содержимого базы данных протокола формируется таблица маршрутизации

Рисунок 58. Компоненты системы маршрутизации.

 

Таким образом, можно четко выделить функции протокола и алгоритма маршрутизации. Если у алгоритма всего лишь одна задача - выбор следующего маршрута для обрабатываемого пакета, то протокол маршрутизации включает в себя следующие процедуры:

• измерение и оценка параметров сети;

• взаимодействие с протоколами на других узлах сети путем рассылки и принятия служебной информации;

• формирование собственной базы данных;

• модификация таблицы маршрутизации.

То есть, в системе маршрутизации алгоритм является пассивным компонентом, который для выполнения своей функции использует информацию, предоставляемую либо администратором, либо протоколом - активными управляющими компонентами. Данное различие хорошо подчеркивается терминами, которыми обозначаются сетевые протоколы, реализующие алгоритм и протокол маршрутизации. Термин «Routed protocol» обычно применяется для обозначения протокола, в рамках которого реализован алгоритм маршрутизации, например, протокол IP. Термин «Routing protocol» обычно применяется для обозначения протокола маршрутизации.

2.1. Общая концепция IP-маршрутизации

Основным документом, описывающим алгоритм IP-маршрутизации, является RFC-1812. Согласно ему не выработано единого стандарта на какой-либо из существующих алгоритмов IP-маршрутизации. Все они являются так называемым Internet Folklore. Тем не менее, документ RFC-1812 выделяет основополагающий алгоритм, так называемый Classic Algorithm, которые должны использовать IP-маршрутизаторы. Суть его работы следующая.

Канальный уровень предоставляет сетевому уровню пакет (IP-датаграмму) и дополнительную информацию о нем. IP-протокол считывает IP-заголовок из датаграммы и начинает его поэтапную обработку. Основные шаги следующие:

1. Проверка корректности датаграммы (Packet Validation). На данном этапе проверяется общая длина пакета, длина заголовка, версия IP-протокола и контрольная сумма.

2. Обработка IP-опций.

3. Определение места назначения пакета. В первую очередь проверяется, предназначен ли пакет локальной системе или нет. Если нет, то маршрутизатор должен определить маршрут, по которому следует переслать пакет дальше, - за это отвечает алгоритм определения следующего хопа (hop). Если подходящего маршрута не обнаруживается, то пакет подлежит сбросу.

4. Заключительный этап имеет место быть, если же все-таки маршрутизатор определил, куда направить пакет. На данном шаге выполняется коррекция IP-заголовка (декрементация поля TTL, обработка оставшихся IP-опций), фрагментация дата граммы (если необходимо), маппирование адреса канального уровня (вызов протокола ARP) и передача датаграммы на канальный уровень.

Нас интересует алгоритм определения следующего хопа, так как именно он отвечает за выбор сетевого интерфейса, на который будет послан пакет. При определении адреса следующего узла (хопа) применяется алгоритм просмотра маршрутов (route lookup algorithm). Данный алгоритм работает с множеством маршрутов-кандидатов. Обозначим это множество как {RK}. Изначально множество {RK} заполняется содержимым таблицы маршрутизации. Цель алгоритма - выбрать из данного множества наилучший маршрут путем отброса остальных. Выбор происходит за ряд шагов, которые называются «правилами отсечения» (pruning rules). Должны обязательно применяться следующие правила в строго приведенном порядке:

1. Basic Match.

Каждый маршрут имеет следующий вид:

· route.dest/route. Length

· route.dest - атрибут назначения;

· route.length - префикс длины (или маска подсети);

· ip.dest - IP-адрес назначения в заголовке пакета.
Данное правило оставляет только те маршруты, для которых наложение маски подсети на атрибут назначения дает IP-адрес назначения, то есть:

route.dest & route.length = ip.dest В результате работы правила получаем множество {Rk2}.

2. Longest Match.

Работает с множеством {RK2}- В множестве остаются маршруты, которые имеют самую длинную маску подсети. Остальные маршруты отбрасываются. В результате работы правила получаем множество {Rk3}.

3. Weak TOS (опционально).

Данное правило выполняется только в том случае, если маршрутизатор учитывает значение поля TOS в IP-заголовке при выборе маршрута.

Работает с множеством {RK3} Каждая запись о маршруте содержит поле «tos». Из множества маршрутов {RK3} выбираются те, у которых величина «tos» совпадает с величиной «tos», взятой из IP-заголовка пакета. Если таковых маршрутов не находится, то из маршрутов выбираются те, у которых величина «tos» = 0000 (значение по умолчанию). В результате работы правила получаем множество {RM}.

4. Best Metric.

Работает с множеством {RK4. Каждая запись о маршруте содержит поле метрики «metric». Из множества маршрутов выбираются те, у которых значение метрики более приоритетно. Вопрос приоритета - отдельный вопрос. В результате работы правила получаем множество {RKs}-

5. Vendor Policy.

Здесь могут применяться правила, заданные разработчиком программного продукта. Работает с множеством {RK5}. В результате работы правила получаем конечное множество {R}.

Считается, что алгоритм отработал нормально, если конечное множестве {R} содержит один маршрут. Если множество {R} оказалось пустым, то пакет отбрасывается. Также возможен вариант, когда по окончанию работы алгоритма, множество {R} содержит более одного маршрута. Тогда алгоритм в классическом варианте алгоритма выбирается любой один маршрут. Следует также отметить, что на практике зачастую используются правила «Basic Match» «Longest Match» «Best Metric».

Помимо приведенного классического алгоритма (Classic Algorithm) существует ряд других, широко используемых в Интернете. Отличаются они только количеством и порядком применения правил отсечений и ориентированны в основном на поддержку работы протоколов маршрутизации, таких как OSPF, BGP и т.д.