Устройство, принципы работы и особенности реализации маршрутизатора.

Центральным элементом составной сети является маршрутизатор, главное назначение которого — объединение подсети с тем, чтобы любой компьютер мог обмениваться пакетами с другими компьютерами в составе сети, независимо от их принадлежности к той или иной подсети.

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

Функции маршрутизатора могут быть разбиты на три группы в соответствии с уровнями модели OSI (см. Рисунок 1).

УРОВЕНЬ ИНТЕРФЕЙСОВ

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

Обычно маршрутизатор имеет от четырех до нескольких десятков физических интерфейсов, называемых также портами, одна часть которых предназначена для подключения к локальным, а другая — к глобальным сетям. Каждый локальный порт работает по строго определенной технологии: например, Ethernet, Token Ring, FDDI. Для глобального порта чаще всего жестко определяется только некоторый стандарт физического уровня, поверх которого могут работать различные протоколы канального уровня в зависимости от того, как этот порт сконфигурирован. Так, глобальный порт с поддержкой протокола физического уровня V.35 обычно может быть настроен для работы по одному из следующих протоколов канального уровня: LAP-B (для сетей X.25), PPP (для сетей IP), LAP-F (для сетей frame relay), LAP-D (для сетей ISDN).

Такое отличие в реализации интерфейсов локальных и глобальных сетей объясняется тем, что каждая технология локальных сетей опирается, как правило, на свои собственные стандарты физического уровня. Правда, локальным портом не всегда поддерживаются все функции физического уровня. Так, технология Ethernet позволяет стандартным образом выделить функции приемопередатчика (трансивера) и реализовать их в отдельном внешнем устройстве. В этом случае на панели маршрутизатора вы можете увидеть разъемы AUI (Attachment Unit Interface) или MII (Media Independent Inter-face), при этом подключение к сети осуществляется через соответствующий внешний трансивер.

С точки зрения пользователя, важнейшей потребительской характеристикой является перечень физических интерфейсов, поддерживаемых той или иной моделью маршрутизатора. Маршрутизатор должен работать с протоколами канального и физического уровней, используемыми в подсетях, к которым он будет непосредственно присоединен. На Рисунке 1 показана функциональная модель маршрутизатора с четырьмя портами: порты Ethernet 10BaseT и 10Base2, порт Token Ring UTP и порт V.35 для подключения к глобальной сети. В зависимости от выбранного варианта конфигурации к порту V.35 могут быть подключены сети X.25, ISDN или frame relay с использованием протоколов LAP-B, LAP-D или LAP-F соответственно.

Каждый порт маршрутизатора — это конечный узел для той подсети, к которой он присоединен. Поэтому, как и всем другим конечным узлам, портам маршрутизатора назначаются один (или несколько) локальных (называемых также аппаратными) адресов и один (или несколько) сетевых адресов. Заметим, что слово «локальный» в данном контексте никак не связано с понятием «локальная сеть». Под локальным адресом понимается такой тип адреса, который средствами базовой технологии используется для доставки данных в пределах подсети, независимо от того локальная эта подсеть или глобальная. Так, локальным адресом порта маршрутизатора, к которому подключен сегмент Ethernet, является шестибайтовый МАС-адрес, например 12-B3-35-3B-A0-11, а если к порту подключена сеть Х.25, то — адрес Х.25, например 25083930785708. Если для перемещения кадра в пределах подсети используется локальный адрес, то для продвижения пакета по составной сети необходим сетевой адрес. В частности, протокол IP оперирует с сетевыми IP-адресами, которые состоят из 4 байт, например 109.26.17.100, и содержат номер сети и номер узла. Сетевые адреса должны быть уникальны в пределах всей составной сети. Иногда порты маршрутизатора вообще не имеют ни локальных, ни сетевых адресов. С такой ситуацией можно встретиться, когда порты двух соседних маршрутизаторов связаны по соединению типа «точка — точка».

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

УРОВЕНЬ СЕТЕВОГО ПРОТОКОЛА

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

К сетевому уровню относится одна из важнейших функций маршрутизатора — фильтрация трафика. Обладая более высоким интеллектом, нежели мосты и коммутаторы, маршрутизатор позволяет задавать и может отрабатывать значительно более сложные правила фильтрации. Для мостов и коммутаторов пакет сетевого уровня, находящийся в поле данных кадра, выглядит как неструктурированная двоичная последовательность. Маршрутизаторы же, программное обеспечение которых содержит модуль сетевого протокола, способны производить разбор и анализ отдельных полей пакета. Они оснащаются развитыми средствами пользовательского интерфейса, с помощью которых администратор может без особых усилий задавать сложные правила фильтрации: например, в корпоративную сеть могут не допускаться все пакеты, кроме тех, которые поступают из подсетей этого же предприятия. Фильтрация в данном случае производится по сетевым адресам отправителя, и все пакеты, адреса которых не входят в разрешенный диапазон, отбрасываются. Маршрутизаторы, как правило, в состоянии анализировать и заголовки транспортного уровня, поэтому фильтры могут не пропускать в сеть пакеты определенных прикладных сервисов, например сервиса telnet или ftp, задействующих конкретные программные порты, значения которых и используются при составлении правил фильтрации.

В случае, если интенсивность поступления пакетов превышает скорость, с которой они обрабатываются маршрутизатором, пакеты помещаются в очередь. Программное обеспечение маршрутизатора может реализовать различные дисциплины обслуживания очередей: в порядке поступления по принципу «первый пришел — первым обслужен» (First Input First Output, FIFO); со случайным ранним обнаружением перегрузки, когда обслуживание идет по правилу FIFO, но при достижении длины очереди некоторого порогового значения вновь поступающие пакеты отбрасываются (Random Early Detec-tion, RED), а также с применением различных вариантов приоритетного и взвешенного обслуживания. За счет этого при перегрузках соблюдаются некоторые гарантии качества обслуживания: в частности, на время задержки пакетов или на пропускную способность для определенного потока пакетов, при этом первоочередное обслуживание осуществляется с использованием того же набора признаков, что и при фильтрации пакетов.

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

Чтобы пакет дошел до следующего маршрутизатора, он должен быть упакован в кадр той технологии, которую использует соответствующая подсеть. А значит, в поле адреса назначения заголовка кадра должен быть указан локальный адрес нужного маршрутизатора. Следовательно, сетевой адрес необходимо преобразовать в локальный адрес той технологии, которая используется в сети, где находится следующий маршрутизатор. Для этого сетевой протокол обращается с запросом к протоколу разрешения адресов. Соответствие между сетевыми и локальными адресами устанавливается либо на основании заранее составленных таблиц, либо путем рассылки широковещательных запросов по подсети. Таблица соответствия локальных адресов сетевым адресам строится отдельно для каждого сетевого интерфейса. Помимо локального адреса назначения требуется сгенерировать и другие поля заголовка — а именно, поле контрольной суммы; поле локального адреса отправителя, в качестве которого маршрутизатор вставляет локальный адрес своего порта; поле типа протокола сетевого уровня, который переносит кадр, а также другие поля (их конкретный набор зависит от технологии, лежащей в основе работы соответствующего порта).

При передаче пакета между подсетями, где применяются разные технологии, у которых не совпадают максимально допустимые значения длины поля данных кадра, пакет может потребоваться разбить на несколько фрагментов; каждый из них должен быть упакован в отдельный кадр. Функция фрагментации также выполняется средствами сетевого уровня маршрутизатора.

С сетевого уровня пакет, локальный адрес следующего маршрутизатора и идентификатор выходного порта передаются вниз по иерархии на канальный уровень. На основании идентификатора порта осуществляется перемещение этих данных в выходной буфер одного из интерфейсов маршрутизатора, а затем средствами канального уровня выполняется упаковка пакета в кадр соответствующего формата. В поле адреса назначения заголовка кадра помещается локальный адрес следующего маршрутизатора. Готовый кадр отправляется в сеть.

УРОВЕНЬ ПРОТОКОЛОВ МАРШРУТИЗАЦИИ

Сетевые протоколы активно используют в своей работе таблицу маршрутизации, но ни ее построением, ни поддержкой данных, хранящихся в ней, они не занимаются. Каким же образом происходит формирование этих таблиц? Какими средствами обеспечивается адекватность содержащейся в них информации постоянно изменяющейся структуре сети? Основная работа по созданию таблиц маршрутизации выполняется автоматически, но, как правило, таблицу можно скорректировать или дополнить вручную.

Для автоматического построения таблиц маршрутизации маршрутизаторы обмениваются информацией о топологии составной сети в соответствии со специальным служебным протоколом. Протоколы этого типа называются протоколами маршрутизации (или маршрутизирующими протоколами). Протоколы маршрутизации (RIP, OSPF, NLSP) следует отличать от собственно сетевых протоколов (IP, IPX). И те и другие выполняют функции сетевого уровня модели OSI — участвуют в доставке пакетов адресату через разнородную составную сеть. Но если первые собирают и передают по сети служебную информацию, вторые предназначены для передачи пользовательских данных, так же как это делают протоколы канального уровня. Протоколы маршрутизации используют сетевые протоколы в качестве транспортного средства, помещая свои сообщения в поле данных пакетов сетевого (а иногда даже транспортного) уровня, поэтому с точки зрения иерархии пакетов протоколы маршрутизации формально следовало бы отнести к более высокому уровню, чем сетевой, — чаще всего их вложенность соответствует прикладному уровню.

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

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

ОСОБЕННОСТИ РЕАЛИЗАЦИИ МАРШРУТИЗАТОРОВ

От современного маршрутизатора требуется сочетание функциональности с высокой скоростью работы. Функциональность определяется разнообразием поддерживаемых сетевых протоколов (правда, в последнее время в связи с явным доминированием IP требования к поддержанию протоколов IPX, DECnet, SNA и других стали выдвигаться значительно реже), протоколов маршрутизации (RIP, OSPF обычно составляют обязательный набор, а при применении маршрутизатора для связи между автономными областями Internet необходим также и протокол BGP), физических интерфейсов.

Функциональность и гибкость на канальном уровне обычно обеспечивается в маршрутизаторах за счет модульной конструкции, когда в одно шасси устанавливается несколько модулей с интерфейсами определенного типа, причем как количество слотов у шасси, так и количество различных типов таких модулей может быть весьма большим, до нескольких десятков. Примером модульного построения маршрутизатора может служить маршрутизатор Cisco 7206, передняя панель которого показана на Рисунке 2. Этот маршрутизатор выполнен на основе 6-слотового шасси, в которое можно установить интерфейсные модули свыше 30 типов, в том числе модули Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI, последовательных интерфейсов V.35/X.21/HSSI, технологий глобальных сетей ISDN, SONET/SDH и ATM. В маршрутизаторе, представленном на рисунке, установлены: 5-портовый модуль 10BaseFL, 4-портовый модуль 10BaseTX, 4-портовый модуль Token Ring, 4-портовый модуль Serial enchanced и 2-портовый модуль Fast Ethernet. Маршрутизатор также оснащен многофункциональным модулем управления.

Рисунок 2. Передняя панель маршрутизатора Cisco 7206.

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

В последнее время из-за резко возросших скоростей технологий канального уровня важную роль стала играть быстрота обработки пакетов. При нескольких гигабитных и мультимегабитных интерфейсах Ethernet, ATM, SDH и DWDM суммарная скорость продвижения пакетов маршрутизатором должна составлять десятки гигабит и даже несколько терабит в секунду.

Добиться подобной производительности при сохранении гибкости и функциональности маршрутизатора — дело очень непростое. До появления высокоскоростных технологий от маршрутизатора обычно требовалось поддержание нескольких последовательных интерфейсов глобальных сетей со скоростями в несколько десятков Кбит/c, поэтому почти все функции маршрутизатора могли быть реализованы программным способом на основе единственного универсального процессора, в том числе и в маршрутизаторах, выполненных в виде специализированного устройства. Такой подход применяется и сегодня при реализации маршрутизаторов для небольших сетей, не поддерживающих высокоскоростных интерфейсов.

Каждый протокол в маршрутизаторе такого типа реализуется с помощью отдельного программного модуля, а для разделения ресурсов единственного процессора между модулями протоколов используется специализированная мультипрограммная операционная система с улучшенными функциями поддержки работы в реальном времени и усеченным набором приложений. В основе многих популярных специализированных операционных систем маршрутизаторов часто лежит та или иная версия UNIX. Наличие у маршрутизатора ОС и API для написания модулей протоколов позволяет достаточно просто изменять набор протоколов (с помощью конфигурирования ОС) и дополнять список поддерживаемых протоколов новыми, обеспечивая высокую функциональность на сетевом уровне.

Однако скоростные возможности однопроцессорного маршрутизатора принципиально ограничены — как возможностями самого процессора, так и накладными расходами на организацию его совместного использования. Естественным выходом из сложившейся ситуации стало появление многопроцессорных маршрутизаторов, при этом наибольшую популярность приобрела схема, упрощенный вид которой показан на Рисунке 3. Каждый порт такого маршрутизатора оснащен специализированным процессором, выполненным как заказная интегральная схема ASIC. Жесткая логика ASIC позволяет очень быстро осуществлять такие рутинные операции по обработке пакетов, как подсчет контрольной суммы, проверка разнообразных условий фильтрации, передача пакетов между внутренними очередями маршрутизатора. Кроме обслуживающих порты процессоров ASIC сверхпроизводительный маршрутизатор может также включать один или несколько общих для всех портов специализированных процессоров. Так, магистральные маршрутизаторы компании Juniper, структурная схема которых показана на Рисунке 3, содержат так называемый Internet-процессор — общий для всех портов процессор, который выполнен как ASIC и предназначен для одной-единственной операции — просмотра больших таблиц маршрутизации, что типично для маршрутизаторов, работающих на магистрали Internet. Узкая специализация позволяет Internet-процессору производить эту операцию очень быстро — со скоростью до 80 000 обращений в секунду. Кроме того, каждый порт маршрутизатора Juniper оснащен двумя ASIC: микросхемой менеджера ввода/вывода для анализа пришедшего пакета «со скоростью поступления» (т. е. с максимальной скоростью, поддерживаемой данным интерфейсом) и микросхемой менеджера буферов, для управления разделяемой между всеми портами памятью маршрутизатора.

Как правило, высокоуровневые функции маршрутизаторов, даже сверхскоростных, выполняются модулями ОС реального времени на одном процессоре. В частности, так устроены маршрутизаторы Juniper: они используют ОС Junos, и наиболее распространенные в мире маршрутизаторы Cisco — их встроенная ОС носит название IOS (Internetwork Opera-ting System).

Наталья Олифер — обозреватель LAN. С ней можно связаться по адресу: olifer@lanmag.ru.