Маршрутизаторы в своем развитии использовали три различных архитектуры: однопроцессорную, модифицированную однопроцессорную и симметричную многопроцессорную. Все три разрабатывались с учетом требований поддержки высококритичных применений. Однако основные из этих требований, а именно высокую, масштабируемую производительность, а также высокий уровень готовности, включая полную устойчивость к отказам и восстановление неработоспособных компонентов ("горячее резервирование"), они способны удовлетворить не в одинаковой степени. В статье рассматриваются достоинства симметричной многопроцессорной архитектуры.
Однопроцессорная архитектура
Однопроцессорная архитектура использует несколько сетевых интерфейсных модулей - это позволяет добиться дополнительной гибкости в конфигурировании узлов. Сетевые интерфейсные модули соединяются с единым центральным процессором через общую системную шину. На этот единственный процессор ложится забота о выполнении всех задач обработки. А задачи эти при современном уровне развития корпоративных сетей сложны и многообразны: фильтрация и продвижение пакетов, необходимая модификация заголовков пакетов, обновления таблиц маршрутизации и сетевых адресов, интерпретация служебных управляющих пакетов, ответы на SNMP-запросы, формирование управляющих пакетов, предоставление иных специфических сервисов типа спуфинга (spoofing), то есть задания специальных фильтров, позволяющих добиться улучшенных характеристик безопасности и производительности сети.
Подобное традиционное архитектурное решение реализовать наиболее просто. Впрочем, несложно и предположить те ограничения, которым будут подвержены производительность и готовность такой системы.
Действительно, все пакеты от всех сетевых интерфейсов должны обрабатываться единственным центральным процессором. По мере того как добавляются дополнительные сетевые интерфейсы, производительность заметно снижается. Кроме того, каждый пакет должен дважды пропутешествовать по шине - от модуля-"источника" к процессору, а-затем от процессора к модулю-"приемнику". Пакет проделывает этот путь, даже если он предназначается тому же самому сетевому интерфейсу, с которого он поступил. Это также приводит к существенному падению производительности при увеличении числа модулей сетевых интерфейсов. Таким образом, налицо классическое "бутылочное горлышко".
Невелика и надежность. Если произойдет сбой центрального процессора, то нарушится работоспособность маршрутизатора в целом. Кроме того, для такой архитектуры невозможно реализовать "горячее восстановление" из резерва поврежденных элементов системы.
В современных реализациях этой архитектуры маршрутизаторов для того, чтобы разрешить ограничения производительности, как правило, используют достаточно мощный RISC-процессор и высокоскоростную системную шину. Это чисто силовая попытка решить проблему - увеличенная производительность за большие начальные вложения. Однако такие реализации не обеспечивают масштабирования производительности, а уровень их надежности наперед задан надежностью процессора.
Модифицированная однопроцессорная архитектура
Для того чтобы преодолеть часть указанных выше недостатков однопроцессорной архитектуры, придумана ее модификация. Нижележащая архитектура сохранена: интерфейсные модули соединены с единственным процессором через общую системную шину. Однако в каждый из сетевых интерфейсных модулей включается специальный периферийный процессор - для того, чтобы хотя бы частично разгрузить центральный процессор.
Периферийные процессоры - это, как правило, разрядно-модульные (bit-slace) или универсальные микропроцессоры, фильтрующие и маршрутизирующие пакеты, предназначающиеся сетевому интерфейсу того же модуля, с которого они и поступили в маршрутизатор. (К сожалению, во многих доступных в настоящий момент реализациях этого можно добиться в отношении пакетов только некоторых типов, таких как кадры Ethernet, но не IEEE 802.3.
Центральный же процессор по-прежнему отвечает за те задачи, которые нельзя переложить на периферийный процессор (в том числе маршрутизацию между модулями, общесистемные операции, администрирование и управление). Поэтому достигаемая таким образом оптимизация производительности достаточно ограничена (справедливости ради следует отметить, что в ряде случаев при надлежащем проектировании сети можно добиться неплохих результатов). В то же время, несмотря на некоторое сокращение количества передаваемых по системной шине пакетов, она по-прежнему остается весьма узким местом.
Включение в архитектуру периферийных процессоров не повышает уровень готовности маршрутизатора в целом.
SMP-архитектура
Симметрично-многопроцессорная архитектура лишена недостатков, свойственных вышеупомянутым архитектурам. В этом случае вычислительные мощности полностью распределены между всеми сетевыми интерфейсными модулями.
Каждый сетевой интерфейсный модуль обладает своим собственным, предназначенным только для него процессорным модулем, который выполняет все задачи, связанные с маршрутизацией. При этом все таблицы маршрутизации, другая необходимая информация, а также реализующее протоколы программное обеспечение реплицированы (то есть скопированы) на каждый процессорный модуль. Когда процессорный модуль получает информацию о маршрутизации, он обновляет собственную таблицу, а затем распространяет обновления по всем другим процессорным модулям.
Такая архитектура, безусловно, обеспечивает практически линейную (если пренебречь расходами на репликацию и пропускной способностью канала связи между модулями) масштабируемость. Это, в свою очередь, означает перспективу значительного расширения сети без заметного падения производительности. При необходимости требуется всего лишь добавить дополнительный сетевой интерфейсный модуль - ведь центральный процессор в этой архитектуре попросту отсутствует.
Все пакеты обрабатываются локальными процессорами. Внешние (то есть предназначенные другим модулям) пакеты передаются по каналу связи между процессорами только однажды. Это ведет к существенному снижению трафика внутри маршрутизатора.
Что касается готовности, система не будет выходить из строя, если сломается одиночный процессорный модуль. Эта поломка скажется только на тех сегментах сети, которые соединены с поврежденным процессорным модулем. Кроме того, поврежденный модуль может быть заменен на работоспособный модуль без выключения маршрутизатора и без всякого воздействия на все остальные модули.
Преимущества SMP-архитектуры признаны производителями компьютеров. В течение ряда последних лет появилось много подобных платформ, и только ограниченное число стандартных операционных систем, способных в полной мере реализовать преимущества аппаратуры, сдерживало их распространение. Используют SMP-архитектуру при создании специализированных вычислительных устройств и другие производители, в том числе производители активных сетевых устройств.
В оставшейся части мы подробнее рассмотрим технические детали архитектуры SMP-маршрутизатора, разработанной компанией Wellfleet [1].
Архитектура SMP-маршрутизатора, предложенная Wellfleet
Компания Wellfleet*), один из ведущих производителей маршрутизаторов и мостов, конечно же, не пожалела средств на оценку и тестирование различных архитектур маршрутизаторов, поддерживающих различные протоколы глобальных и локальных сетей над различными физическими носителями и рассчитанных на различные условия трафика. Итоги этих исследований были сформулированы в виде перечня требований, учитываемых при проектировании маршрутизаторов, предназначенных для построения корпоративных сетевых сред для высококритичных применений. Приведем часть из этих требований - те, которые на наш взгляд обосновывают использование многопроцессорной архитектуры.
1. Необходимость в масштабируемой производительности, высоком уровне готовности, гибкости конфигурирования диктует использование SMP-архитектуры.
2. Уровень требований многопротокольной маршрутизации к вычислительной мощности (особенно при использовании современных протоколов маршрутизации наподобие TCP/IP OSPF) может быть обеспечен только современными мощными 32-разрядными микропроцессорами. При этом, поскольку маршрутизация предполагает параллельное обслуживание большого числа сходных запросов, необходимо быстрое переключение между различными процессами, для чего требуется исключительно низкая задержка при переключении контекста, а также интегрированная кэш-память.
3. Для хранения поддерживающего протоколы и управляющего программного обеспечения, таблиц маршрутизации и адресов, статистической и другой информации нужна достаточно большая емкость памяти.
4. Чтобы обеспечить максимальную скорость передачи между сетями и обрабатывающими модулями маршрутизатора, требуются высокоскоростные сетевые интерфейсные контроллеры и контролллеры межпроцессорного взаимодействия с интегрированными возможностями прямого доступа к памяти (DMA - Direct Memory Access).
5. Минимизация задержек требует наличия обладающих высокой пропускной способностью 32-разрядных каналов данных и адресов для всех ресурсов.
6. Требования повышения уровня готовности включают распределение вычислительной мощности, избыточные подсистемы питания и, как дополнительную, но очень важную возможность, дублированные каналы межпроцессорного взаимодействия.
7. Необходимость охватить широкий спектр сетевых сред - от одиночного удаленного узла или сети рабочей группы до организации высокопроизводительной, обладающей высокой готовностью магистралью - требует использования масштабируемой многопроцессорной архитектуры.
Обзор архитектуры
На рисунке 2 схематически изображена симметрично-многопроцессорная архитектура, используемая во всех модульных маршрутизаторах, производимых компанией Wellfleet. Можно выделить три основных архитектурных элемента: модули связи, процессорные модули и межпроцессное соединение.
Модули связи обеспечивают физические сетевые интерфейсы, допускающие соединения с локальными и глобальными сетями практически любых типов. Каждый модуль связи напрямую присоединен к предназначенному именно ему процессорному модулю посредством интеллектуального интерфейса связи (ILI - Intelligent Link Interface). Пакеты, получаемые модулем связи, передаются в подключенный к нему процессорный модуль через собственное, прямое соединение. Процессор определяет, какому сетевому интерфейсу предназначаются эти пакеты, и либо перенаправляет их на другой сетевой интерфейс того же модуля связи, либо, по высокоскоростному межпроцессорному соединению, в другой процессорный модуль, который передаст этот пакет присоединенному к нему модулю связи.
Остановимся детальнее на структуре каждого из компонентов.
Процессорный модуль включает в себя:
- собственно центральный процессор;
- локальную память, в которой хранятся протоколы и таблицы маршрутизации, таблицы адресов и другая информация, локальным образом используемая ЦПУ;
- глобальную память, играющую роль буфера для "транзитных" пакетов данных, поступающих от модуля связи в присоединенный к нему процессорный модуль или от других процессорных модулей (глобальной она называется потому, что видима и доступна для всех процессорных модулей);
- ОМА-процессор, обеспечивающий возможность прямого доступа к памяти при передаче пакетов между буферами глобальной памяти, размещенными в различных процессорных модулях;
- интерфейс связи, предоставляющий соединение с соответствующим модулем связи;
- внутренние каналы данных шириной 32 разряда, соединяющие все вышеперечисленные ресурсы и призванные обеспечить максимально возможную пропускную способность и минимальное время задержек; предусмотрены множественные каналы, что обеспечивает одновременное выполнение операций разными вычислительными устройствами (например, ЦПУ и DMA-процессором) и гарантирует отсутствие узких мест, замедляющих перенаправление и обработку пакетов.
Различные модели маршрутизаторов Wellfleet используют процессорные модули АСЕ (Advanced Communication Engine), основанные на процессорах Motorola 68020 или 68030, либо модули Fast Routing Engine (FRE), основанные на МС68040.
В состав модуля связи входят:
- коннекторы, обеспечивающие интерфейс со специфическими сетями (например, синхронный, Ethernet, Token Ring FDDI);
- контроллеры связи, передающие пакеты между физическим сетевым интерфейсом и глобальной памятью, используя DMA-канал; контроллеры связи также предназначены для конкретного типа сетевого интерфейса и способны передавать пакеты со скоростью, совпадающей со скоростью проволоки;
- фильтры (дополнительная возможность для модулей связей для FDDI и Ethernet), выполняющие предварительную фильтрацию входящих пакетов, сохраняя вычислительные ресурсы для содержательной обработки файлов.
В качестве канала межпроцессорной связи часто используется стандартная шина VMEbus, обеспечивающая совокупную пропускную способность 320 Мбит/сек.
В старших же моделях применяется разработанный самой компанией Wellfleet интерфейс Parallel Packet Express (РРХ) с полосой пропускания 1 Гбит/сек, использующий четыре независимых, обладающих избыточностью 256 Мбит/сек канала данных с динамическим распределением загрузки. Это обеспечивает высокую общую производительность и позволяет добиться того, что в архитектуре нет единой точки сбоя. Каждый процессорный модуль присоединен ко всем четырем каналам и имеет возможность выбрать любой из них. Конкретный канал выбирается случайно, для каждого пакета, что должно обеспечить равномерное распределение трафика между всеми доступными каналами. Если один из каналов данных PPX становится недоступным, загрузка автоматически распределяется между оставшимися.
Детали обработки пакетов
Поступающие пакеты получает, в зависимости от сети, тот или иной контроллер связи. Если в конфигурацию модуля связи включен дополнительный фильтр, часть пакетов отбрасывается, а другая часть принимается. Принятые пакеты помещаются контроллером связи в буфер глобальной памяти непосредственно присоединенного к нему процессорного модуля. Для быстрой передачи пакетов в каждый контроллер связи включен канал прямого доступа к памяти.
Поступив в глобальную память, пакеты извлекаются центральным процессором для маршрутизации. ЦПУ определяет выходной сетевой интерфейс, должным образом модифицирует пакет и возвращает его в глобальную память. Затем выполняется одно из двух действий:
1. Пакет перенаправляется в сетевой интерфейс непосредственно присоединенного к нему модуля. Контроллер связи выходного сетевого интерфейса получает от ЦПУ инструкции выбрать пакеты из глобальной памяти и отправить их в сеть.
2. Пакет перенаправляется в сетевой интерфейс другого модуля связи. DMA-процессор получает инструкции от ЦПУ отправить пакеты в другой процессорный модуль и загружает их по межпроцессорному соединению в глобальную память процессорного модуля, присоединенного к выходному сетевому интерфейсу. Контроллер связи выходного сетевого интерфейса выбирает пакеты из глобальной памяти и отправляет их в сеть.
Решения относительно маршрутизации принимаются ЦПУ независимо от друтих процессорных модулей. Каждый процессорный модуль поддерживает в своей локальной памяти независимую базу данных маршрутизации и адресов, обновляемую в тех случаях, когда модуль получает информацию об изменениях в таблицах маршрутизации или в адресах (в этом случае изменения рассылаются и во все остальные процессорные модули).
Одновременная работа контроллера связи, ЦПУ и DMA-процессора позволяет добиться общей высокой производительности. (Подчеркнем, что все это происходит в устройстве, где обработка распараллеливается по нескольким многопроцессорным модулям). Например, можно представить себе такую ситуацию, когда контроллер связи помещает пакеты в глобальную память, в то время как центральный процессор обновляет таблицу маршрутизации в локальной памяти, а DMA-процессор помещает пакет в межпроцессорное соединение.
Резюме
Сам по себе факт проникновения компьютерных технологий, разработанных для одной области применений, в другие, смежные, не нов. Однако каждый конкретный пример привлекает внимание специалистов. В рассмотренной в данной статье архитектуре маршрутизаторов, кроме идеи симметричной многопроцессорности, призванной обеспечить масштабируемую производительность и высокий уровень готовности, использованы также механизм дублированных каналов данных между процессорами (с теми же целями), а также идея репликации (или тиражирования) данных, применение которой более характерно для индустрии распределенных СУБД [2].
Литература
[1] Symmetric Multiprocessor Architecture. Wellfleet Communications, 10/1993.
[2] Г.Г. Барон, Г.М. Ладыженский. "Технология тиражирования данных в распределенных системах", "Открытые системы", Весна 1994.
*) Компания Wellfleet осенью прошлого года объединилась с другим лидером сетевых технологий, SunOptics Communications. Объединение привело к созданию нового сетевого гиганта - компании Bay Networks (прим. ред.)