Cisco bus

Шина Cbus - специализированное аппаратное решение, направленное на увеличение скорости коммутации, возникающее в начале 1990-х годов в "чистом" виде использовалась в маршрутиризаторах серии AGS+, а затем в маршрутизаторах Cisco серии 7000. Несмотря на то что маршрутизаторы указанного класса являются устаревшими и не поддерживаются последними версиями операционной системы IOS, значительная часть конструктивных новшеств в рамках разработки аппаратных средств была применена в маршрутизатора Cisco серии 7500; широко используемых в настояшее время.

Ниже описываются маршрутизаторы серий 7000 и серверы AGS+, поскольку значительная часть специфических средств коммутации маршрутизаторов серии 7500 возникла на основе конструктивных улучшений системы IOS, разработанных для устройств серии 7000.

Аппаратные принципы создания маршрутизаторов AGS+

Маршрутизаторы серии AGS+ — это обычные AGS-Маршрутизаторы с большим количеством функций. Устройства AGS (без знака +) базировались на процессоре Motorola серии 68000 (М68к) и использовали интерфейсные модули доступа к разделяемой среде передачи данных, присоединенные к относительно медленной шине Multibus со скоростью доступа 155 Мбит/с. Из-за ограниченной скорости обработки данных указанным процессором и невысокой пропускной способности шины Multibus скорость коммутации не могла быть более 7000-14000 пакетов в секунду (p/ps - packets per second). Даже при использовании механизма быстрой коммутации скорость обработки пакетов гораздо ниже современных скоростей коммутации, поэтому в определенных ситуациях даже маршрутизаторы Cisco 2500 могут обеспечивать большую производительность.

Mapшрутизаторы AGS+ и серии 7000 были разработаны до появления высокоскоростных компьютерных шин и мощных процессоров, основанных на RISC-технологий: Во время разработки маршрутизаторов AGS+ на рынке присутствовал лишь небольшой выбор готовых аппаратных компонентов, и поэтому разработчики компании Cisco решили проблему увеличения скорости коммутации, создав высокоскоростную шину данных и механизм коммутации пакетов. Так и появилась шина Cbus.

Первоначально шина Cbus (Cisco bus) являлась 32-битовой и работала частоте 16,67 MГц. В результате общая скорость передачи данных составляла 533 мбит/с, что значительно (более 3,5 раза) превосходила скорость передачи данных по шине Multibus. Шина Cbus состояла из 32 бит данных, из которых 24 бита выделено на адреса и 8 - управляющие биты.

Механизм коммутации пакетов шины Cbus основывался на 16-битовом микропроцессоре с величиной командного слова 80 бит. Такой размер слова позволял выполнять одновременно несколько операций за один такт. В отличие от процессоров общего назначения, таких как М68к, процессор шины Cbus имел небольшой, узкоспециализированный набор инструкций, разработанный специально для обеспечения операций коммутации. Процессор устанавливался в специальный интерфейсный модуль, содержащий также память для процессорных команд (управляющая память, или control store), быструю память для хранения пакетов (fast packet memory) и интерфейсы для шин Cbus и Multibus. Модуль, содержащий механизм коммутации, называется контроллером шины Cbus (Cbus controller).

AGS+ маршрутизаторы были созданы на основе устройств AGS с добавлением двух новых элементов: шины и контроллера шины. На рис. 4.1 изображена внутренняя структура AGS+.


Подробное описание основных компонентов, представленных на рис. 4.1, приведено ниже.

    • Процессор (CPU) — устройство, которое обеспечивает работу системы IOS и выполняет программную быструю коммутацию для интерфейсов шин Multibus. Кроме того, процессор также осуществляет быструю коммутацию пакетов, полученных от шины Cbus, которые не могут быть обработаны автономно.

    • Основная память — обычно память типа DRAM, в которой размещается выполняемый образ операционной системы IOS, данные и системные буферы для хранения пакетов.

    • Multibus — шина данных, обеспечивающая связь процессора с интерфейсными модулями Multibus. Контроллер шины Cbus также подсоединен к шине Mutlibus.

    • Процессор коммутации шины Cbus (Cbus switching processor) — устройство, обеспечивающее быструю коммутацию пакетов между интерфейсами Cbus посредством исполнения собственного оптимизированного микрокода, не относящегося, собственно, к самой системе IOS. Описанный процессор расположен в модуле контроллера шины Cbus.

    • Быстрая пакетная память — высокоскоростная двунаправленная память, находящаяся в контроллере шины Cbus, которая используется для обмена данными между контроллером шины Cbus и интерфейсными модулями. Быстрая пакетная память предназначена для хранения пакетов, полученных или передаваемых на интерфейсы Cbus. В спецификации шины Cbus такая память называется MEMD.

    • Шина Cbus — разработанная корпорацией Cisco шина данных, соединяющая контроллер шины Cbus с интерфейсными модулями шины Cbus.

Внимание!

Процессор шины Cbus, память MEMD и устройство управления шиной Cbus находятся в одном модуле, который называется контроллером шины Cbus, или модулем CBUSII. Поэтому сам по себе процессор шины Cbus иногда называется процессором модуля CBUSII. Термин процессор коммутации шины Cbus (Cbus Switching Processor) не следует путать с процессором коммутации (Switching Processor) маршрутизаторов серии Сisco 7000.


Устройства AGS+ унаследовали в своей структуре и процессор серии Motoria 68000, и заднюю панель маршрутизатора AGS с шиной Multibus. Изменения, связанные с шиной Cbus, затронули пять интерфейсных модулей, которые были перестроены для подключения к указанной шине. Такое усовершенствование позволило использовать как старые интерфейсные модули шины Multibus, так и новые интерфейсные модули шины Cbus, которые могут быть установлены на одно и то же шасси.

Наряду со структурными изменениями и новыми аппаратными решениями в маршрутизаторах AGS+ необходима программная поддержка конструктивных элементов. Позже мы рассмотрим, как операционная система IOS использует рассмотренные выше усовершенствования.

Коммутация пакетов на шине Cbus

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

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

Автономная коммутация

По сути автономная и быстрая коммутации работают одинаково, разница состоит лишь в том, какой процессор используется. Так же как и в методе быстрой коммутации, появление пакета на интерфейсе вызывает прерывание, но при автономной коммутации данное прерывание относится к коммутационному процессору шины Cbus, кроме того, оба указанных метода переключения пакетов роднит использование быстрой памяти для хранения пакетов (так называемой быстрый кэш). Действительно, для своего быстрого кэша автономная коммутация использует ту же самую структуру хеш-таблицы (hash table), что и системы IOS до версии 10.2 включительно. В процессе работы программной коммутации операционная система IOS управляет как главным быстрым кэшем, так и кэшем локального коммутационного процессора. При каждом добавлении и удалении записи из главного кэша соответствующая запись также добавляется или удаляется из кэша шины Cbus.

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

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

Быстрая пакетная память шины Cbus

В конструкции контроллера шины Cbus была представлена новая стратегия буферизации пакетов, которая и по сей день используется в маршрутизаторах Cisco серии 7500. В маршрутизаторах серии AGS+ программная и быстрая коммутации используют системные буферы для хранения пакетов, как описано в главе “Введение в структуру операционной системы IOS”. Однако такие системные буферы в случае автономной коммутации имеют существенный недостаток: они выделяются в основной памяти модуля главного процессора, что делает ее недоступной для модулей интерфейса Cbus.

Чтобы обеспечить модули интерфейсов шины Cbus пакетными буферами, компания Cisco разработала контроллер· шины Cbus таким образом, что он содержит локальную выделенную пакетную память. Память, получившая название MEMD, это область объемом 512 Кбайт, доступная как для процессора коммутации, так и для модулей интерфейсов шины Cbus. Первые 8 Кбайт памяти MEMD (так называемая граница страницы, или page zero) выделены для управляющих структур памяти, а остальные 504 Кбайт используются в качестве пакетной памяти.

Память MEMD

Вас может заинтересовать, откуда появилось название MEMD. Несмотря на господствующее мнение, MEMD — это не название какого-либо особенного типа памяти, а лишь термин, которым компания Cisco обозначает класс памяти, используемый в маршрутизаторах, содержащих шину Cbus.

MEMD — это обычная статическая память SRAM, используемая для буферизации пакетов, приходящих из интерфейсов шины Cbus или направляемых в них.

Термин MEMD произошел от сокращения слова память (memory) плюс буква D (четвертая буква алфавита), обозначающая четвертый класс памяти шины Cbus. Существуют и другие классы памяти шины Cbus, используемые в маршрутизаторах серии, AGS+, так, например, МЕМА — память для хранения автономного кэша и глобальных указателей, используемых процессором коммутации.

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

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

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

Коммутационный процессор также управляет счетчиками и предельными значениями для каждой из очередей передачи и приема. Чтобы предотвратить заполнение пакетами из одного интерфейса всего объема памяти MEMD, каждая очередь приема характеризуется предельным значением очереди приема (RQL), а каждая очередь передачи — предельным значением очереди передачи (TQL).

Значение RQL определяет максимально возможное количество пакетных буферов, которые в любой момент времени могут находиться в очереди приема. При достижении максимального размера очередь приема считается полной и все последующие приходящие на такой интерфейс пакеты будут игнорироваться до тех пор, пока размер очереди будет оставаться максимальным. Аналогично, величина TQL определяет максимальное число пакетов, которые могут находиться в очереди передачи в любой момент времени. Все последующие пакеты, направленные на интерфейс с заполненной до предела очередью передачи, будут уничтожаться до момента уменьшения размера очереди.

В главе “Маршрутизаторы Cisco 7500” дано более детальное описание счетчиков памяти MEMD и процесса освобождения буферов.

Маршрутизаторы серии Cisco 7000

Маршрутизаторы серии 7000 представляют собой следующий шаг эволюции устройств AGS и структуры шины Cbus. Кроме механической структуры и внешнего вида маршрутизаторы Cisco 7000 практически ничем не отличаются от своих предшественников — маршрутизаторов серии AGS+. Существенным различием является отказ от использования шины Multibus и ее интерфейсных модулей. В маршрутизаторах серии 7000 поддерживаются только интерфейсы шины Cbus.

Некоторые изменения структуры являются сугубо формальными. Например, в маршрутизаторах серии 7000 модуль процессора маршрутизации (Route Processor — RP) и модуль процессора коммутации (Switching Processor — SP) заменяют соответственно модули процессора AGS+ и контроллера шины Cbus, присутствовавшие в устройствах серии AGS+. В то же время процессоры SP и RP сохранили в своем составе микропроцессоры, которые присутствовали у их предшественников. Хотя в составе маршрутизаторов серии 7000 И отсутствует шина Multibus, однако, по существу, процессор коммутации SP все еще присоединен к главному процессору и RP посредством 155-Мбитовой шины класса Multibus. Поэтому внутренняя схожесть конструкций позволяет программному обеспечению операционной системы IOS и микрокодам процессора коммутации работать в маршрутизаторах серии 7000 без внесения значительных изменений.

С другой стороны, в маршрутизаторах серии 7000 появилвсь отсутствовавшая в устройствах серии AGS+ аппаратная возможность — интерфейсные модули с "горячей заменой". Маршрутизаторы серии 7000 позволяют вставлять или вынимать интерфейсные модули шины Cbus (в маршрутизаторах серии 7000 интерфейсные модули получили название интерфейсных процессоров, или interface processors) без перезагрузки системы IOS и с минимальными искажениями работы других интерфейсных процессоров. Когда операционная еистема IOS замечает, что модуль вставлен или удален, она моментально приостанавливает операции на шине Cbus на время замены интерфейса. После завершения такой операции система IOS возобновляет работу шины Cbus и продолжает коммутацию пакетов с момента остановки.

Возможность "горячей замены" интерфейсных модулей также внесла необходимость изменения работы микрокода процессора коммутации. В устройствах класса AGS+ во время работы системы IOS количество интерфейсов постоянно, а в маршрутизаторах серии 7000 может меняться "на лету". Именно поэтому исходные коды процессора коммутации в маршрутизаторах серии AGS+ были разработаны с учетом того, что буферы в памяти MEMD выделяются статически во время инициализации устройства. В маршрутизаторах серии 7000 при каждой операции добавления или удаления модуля интерфейса микрокод предусматривает изменение размещения буферов. Данная операция позволяет процессору коммутации наиболее эффективно управлять ресурсами памяти для хранения пакетов даже в случае изменения числа интерфейсов в процессе работы.

Резюме

Архитектура маршрутизаторов серий 7000 и AGS+ явилась основой для создания новых устройств с шиной Cbus. Если принять во внимание тот факт, что внутренняя структура маршрутизаторов Cisco изменилась, то знание ранних систем полезно, поскольку многие из сегодняшних технологий коммутации базируются на технологиях ранних моделей маршрутизаторов.