Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Олифер. Сетевые операционные системы.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
16.5 Mб
Скачать

Программная маршрутизация и ускоренная коммутация

Маршрутизаторы Cisco поддерживают несколько вариантов маршрутизации, которые можно разделить на две группы.

В первую группу входят классические варианты маршрутизации, характерные для любого маршрутизатора на основе универсальной ОС и называемые программной маршрутизацией (например, IP- или IPX-маршрутизация).

Во вторую группу входит несколько режимов IP-маршрутизации, которых объединяет то, что они реализуют разными способами одну и ту же идею ускорения маршрутизации за счет предварительного создания дополнительных структур данных, ускоряющих поиск необходимых записей в таблице маршрутизации и ARP-таблице. В результате создается новая таблица, которая содержит не IP-адрес следующего хопа, а его МАС-адрес, то есть конечную цель продви­жения пакета. Так как эта структура маршрутной информации похожа на таб­лицу продвижения коммутаторов, методы, использующие такие таблицы, полу­чили название ускоренной коммутации.

Рассмотрим сначала, как происходит программная маршрутизация, на примере IP-маршрутизации. После того как кадр, содержащий пакет, подлежащий маршрутизации, попадает в локальную или системную очередь, программа обработки прерываний определяет, какому протоколу сетевого уровня соответствует пришедший пакет, и перемещает его во входную очередь процесса, реализующего этот протокол. Для нашего примера это будет очередь пакетов, ожидающих процесс IP Input, который занимается маршрутизацией IP-пакетов. Перемещение в эту очередь может потребовать для некоторых платформ физического перемещения кадра, содержащего пакет, из памяти ввода-вывода в основную память — это, естественно, значительно замедляет маршрутизацию. Для других платформ эта операция выполняется так же, как и в случае перемещения кадра из очереди Tx-ring, то есть за счет изменения значений указателей, но без физического копирования кадра.

После перемещения кадра в очередь процесса Маршрутизации работа секции обработки прерывания заканчивается. Кадр ожидает, когда процесс IP Input, в очередной раз получив управление, обнаружит данный кадр в начале очереди. Далее процесс IP Input производит необходимые операции с таблицей маршрутизации и ARP-таблицей. Просмотр таблицы маршрутизации может занять много времени, если маршрутизатор работает на магистрали Интернета, так как в этом случае таблица может включать несколько десятков тысяч записей. После определения MAC-адреса назначения и выходного интерфейса, через который нужно передать кадр в сеть, процесс IP Input формирует новый кадр, помещая найденный адрес в поле адреса назначения кадра. Кадр, готовый к отправке в сеть, процесс IP Input помещает либо сразу в очередь Tx-ring выходного интерфейса, если она содержит свободный буфер, либо в локальную или системную очередь в противном случае. В первом случае контроллер интерфейса автономно обнаруживает факт наличия нового пакета в очереди Tx-ring и пере­писывает его в свой буфер, а затем побитно пересылает в канал связи. Во втором случае код обработки прерывания ядра, который вызывается контроллером интерфейса каждый раз после передачи очередного кадра в сеть, переписывает кадр из локальной или системной очереди в очередь Tx-ring.

Теперь посмотрим, как работают методы ускоренной коммутации на примере двух технологий, поддерживаемых маршрутизаторами Cisco: быстрой коммутации и экспресс-продвижения Cisco.

Быстрая коммутация (fast switching) основана на кэшировании информации, находимой процессом IP Input при маршрутизации пакета с определенным адресом назначения при просмотре таблицы маршрутизации и ARP-таблицы. Эта информация связывает IP-адрес назначения с выходным интерфейсом и МАС-адресом следующего хопа, то есть содержит необходимый минимум для формирования и отправки кадра следующему маршрутизатору или узлу назначения.

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

Для быстрого просмотра кэша Cisco IOS выполняет детерминированное отображение IP-адреса на элемент таблицы кэша. Ранние реализации технологии быстрой коммутации использовали для этого хэширование (см. раздел «Отображение основной памяти на кэш» в главе 5). Для получения номера элемента кэша над старшими и младшими частями IP-адреса дважды применяется побитовая операция «исключающее ИЛИ». Начиная с версии 10, IOS применяет для ускорения поиска в кэше дополнительные структуры индексов, называемые двоичными деревьями.

Сокращение времени маршрутизации при использовании кэша позволило все операции по маршрутизации пакета выполнять в режиме обработки прерывания от контроллера интерфейса без обращения к процессу IP Input. Это, в свою очередь, приводит к дополнительной экономии времени, так как исключает период ожидания очередной итерации процесса IP Input. Таким образом, программа обработки прерываний пытается выполнить все операции по маршрутизации пакета самостоятельно, используя таблицу кэша маршрутов, и только в том случае, когда в кэше нужный адрес отсутствует, пакет помещает­ся в очередь процесса IP Input и обрабатывается так же, как и в случае программной маршрутизации.

Размер кэша для протокола IP определяется автоматически в зависимости от размера свободной памяти, оставшейся после размещения там кодов IOS и буферов пакетов. При изменении состояния таблицы маршрутизации или ARP-таблицы кэш перестраивается. Кроме того, из кэша периодически удаляются «устаревшие» записи, то есть записи, срок жизни которых превысил определенный порог.

Кэширование в режиме быстрой коммутации значительно ускоряет маршрутизацию пакетов в тех случаях, когда состояние кэша является стабильным, то есть его не нужно часто перестраивать, так как в последнем случае затраты на перестройку кэша могут превысить экономию времени от его использования. Практика показывает, что в маршрутизаторах, работающих на периферии Интернета, то есть в корпоративных сетях, набор IP-адресов, к которым обращаются пользователи, является достаточно стабильным и не очень большим. В результате все эти адреса попадают в кэш, который перестраивается редко, так что его применение для таких сетей эффективно.

Маршрутизаторы, работающие на магистрали Интернет, сталкиваются чаще всего с ситуацией, когда кэширование в режиме быстрой коммутации не дает желаемого эффекта из-за постоянной перестройки кэша. Это происходит потому, что пакеты, проходящие через магистраль, адресуются практически ко всему диапазону IP-адресов, так что стабильное подмножество IP-адресов назначения, на которое рассчитано кэширование в режиме быстрой коммутации, просто отсутствует.

Для магистральных маршрутизаторов Cisco IOS предлагает другой метод ускоренной маршрутизации, названный экспресс-продвижением Cisco (Cisco Express Forwarding, CEF). В этом методе также используются записи, аналогичные по структуре записям кэша метода быстрой коммутации, то есть записи, связывающие IP-адрес назначения с выходным интерфейсом и МАС-адресом следующего хопа. Однако основное отличие метода CEF заключается в том, что такие записи, называемые здесь записями таблицы связей (adjacency table), создаются для каждой записи таблицы маршрутизации, а не только для тех записей, которые активно использовались последними. Записи таблицы связей создаются заранее при инициации режима CEF, а не при приходе пакета с определенным адресом, как это происходит в методе быстрой коммутации. В результате таблица связей в режиме CEF перестраивается у магистральных маршрутизаторов гораздо реже, чем кэш в режиме быстрой коммутации, — она перестраивается при изменении адреса и интерфейса следующего хопа, что мо­жет произойти, например, из-за отказа линии связи или какого-либо магистрального маршрутизатора.

Для быстрого поиска нужной записи в таблице связей CEF no.IP-адресу назначения IOS использует М-деревья — древовидную структуру индексов, в которой каждому возможному значению IP-адреса соответствует свой путь до искомой записи таблицы связей. В М-дереве у каждого элемента индекса существует 256 потомков, по количеству значений одного байта IP-адреса. Корневой элемент этого дерева указывает на 256 потомков, соответствующих 256 значе­ниям старшего байта адреса, то есть ветви, ведущие от корня, направляются к адресам, имеющим в старшем байте значение 1.0.0.0, 2.0.0.0, 3.0.0.0 и т. д. вплоть до 255.0.0.0. При использовании такого дерева индексов путь по дереву до конечного элемента, указывающего на соответствующую запись таблицы связей, состоит из одного и того же количества промежуточных ветвей, а именно из четырех (по количеству байтов в IP-адресе). Этот метод индексации может показаться слишком громоздким, так как в принципе он ведет к дереву, включающему пути ко всем возможным значениям IP-адресов, то есть более чем к 4 миллиардам конечных элементов. Однако эта громоздкость кажущаяся, многие ветви дерева заканчиваются нулевыми (то есть не ведущими далее) указателями, причем это могут быть не только ветви нижнего, четвертого, уровня, но и ветви более высоких уровней. Усечение дерева происходит благодаря тому, что оно ведет к элементам таблицы связей, а их количество равно количеству записей таблицы маршрутизации, которое даже для магистральных маршрути­заторов Интернета не превышает, как правило, нескольких десятков тысяч (ре­зультат агрегирования 1Р-адресов).