Маршрутизаторы Cisco 7500

Платформа маршрутизаторов Cisco 7500 была анонсирована в 1995 году и предназначена для высокоэффективдой маршрутизации в условиях непрерывного роста Internet, а также для промышленных приложений, критичных к пропускной способности сети. Структура маршрутизаторов серии 7500 обеспечивает значительно большую производительность по сравнению с более ранними маршрутизаторами, такими как Advansed Gate-way Seryer+, (AGS+, или расширенный сервер маршрутизации), и серией устройств Cisco 7000, несмотря на тот факт, что является производной от них. Данная глава посвящена аппаратному созданию маршрутизаторов серии 7500; специфическим для них деталям реализации средств коммутации в межсетевой операционной системе (IOS), а также архитектуре Versatile Interface Processors (VIPs — многоцелевой интерфейсный процессор).

Аппаратная структура маршрутизатора Cisco 7500

На рис. 6.1 представлена блок-схема верхнего уровня структуры маршрутизатора серии 7500. Как видно из рисунка,ключевыми для понимания уникальных особенностей межсетевой операционной системы (IOS) маршрутизаторов серии 7500 являются два компонента: шина данных и процессор коммутации-маршрутизации (Route Switch Processor — RSP).

Шина данных

Шина данных маршрутизатора серии 7500, как и у его предшественников (сервера AGS+ и маршрутизатора Cisco 7000), основана на оригинальной архитектуре Cbus. Шина Cbus, используемая в Cisco 7500, называется Су Bus и является более быстрым вариантом шины Cbus маршрутизаторов серии 7000 (Cbus 7000 часто называют CxBus). Как и первоначальные варианты Cbus, шина CyBus является 32-битовой с 32 линиями передачи данных, 8 линиями передачи команд, 24 линиями передачи адреса, а также с другими линиями, которые используются для , управления, как, например, для осуществления доступа к шине, подтверждения успешных транзакций и передачи сообщений об ошибках.

Может показаться, что всего лишь 32 линии передачи данных — это слишком мало по сравнению с другими современными шинами, отдельные из которых используют 128 и более линий данных. Тем не менее было выбрано именно такое количество линий, и, как следствие, старые процессоры с интерфейсом CxBus также смогут работать, если их подключить к CyBus. Новые процессоры с интерфейсом CyBus способны отрабатывать две транзакции (чтение двух 4-байтовых слов) за один такт шины (60 нс/16,67 МГц), тогда как процессоры шины CxBus могут выполнять только одну транзакцию (чтение одного 4-байтового слова) за один такт. В результате шина CyBus обеспечивает пропускную способность 1,066 Гбит/с (64 бита x 1б,б7 МГц), что соответствует удвоенной пропускной способности шины CxBus — 533 Мбит/с (32 бита х 16,б7 МГц).


Внимание!

При использовании комбинации процессороа с интерфейсами CyBus и CxBus на шине CyBus процессор с интерфейсом CyBus может использовать полную пропускную способность 1,066 Гбит/с. Процессор с интерфейсом CxBus ограничится использованием 533 Мбит/с из полной пропускной способности.

Существует четыре различные модели маршрутизаторов семейства 7500.

    • Маршрутизатор Cisco 7505 — одинарная CyBus-шина, пять слотов, из них один RSP-слот (или слот процессора маршрутизации-коммутации).

    • Маршрутизатор Cisco 7507 — двойная шина CyBus, семь слотов, в том числе два RSP-слота.

    • Маршрутизатор Cisco 7513 — двойная CyBus-шина, 13 слотов, в том числе два RSP-слота.

    • Маршрутизатор Cisco 7576 — два независимых маршрутизатора 7500 в одном корпусе, каждый с двойной шиной CyBus.

Номер модели маршрутизатора 7500 может быть определен с помощью команды: show environment all, выполненной с консоли маршрутизатора. В примере 6.1 показан результат выполнения этой команды для маршрутизаторов моделей 7505 и 7507.

Процессор коммутации-маршрутизации

Процессор коммутации-маршрутизации, часто называемый RSP, централизованно выполняет как функции коммутации, так и маршрутизации. Процессор RSP считается “сердцем" маршрутизаторов серии 7500, поскольку он принимает решения по коммутации, выполняет задания, связанные с протоколами маршрутизации, а также обеспечивает различные функции поддержки.

Процессор RSP по существу эквивалентен комбинации процессора маршрутизации RP (Route Processor) и процессора коммутации SP (Switch Processor), которые используются в устройствах серии Cisco 7000. Комбинация процессоров RP и SP на одной плате позволяет избавиться от относительно медленной шины Multibus (с пропускной способностью 155 Мбит/с), которая используется в маршрутизаторах серий 7000 и AGS+ для соединения RP и SP-подсистем. Данный факт является одной из причин, почему процессор RSP так существенно опережает по производительности комбинацию процессоров RP и SP.

В табл. 6.1 приведены различные типы процессоров RSP, которые поддерживаются серией Cisco 7500.

Таблица 6.1. Типы процессоров RSP для маршрутизаторов серии 7500

Процессор Характеристики

Тип RSP-процессора, который инсталлирован в маршрутизаторе серии 7500, может быть определен с помощью команды show version, как показано в примере 6.2.

Центральный процессор (CPU)

Центральный процессор подсистемы процессора RSP — это основной процессор маршрутизатора 7500; он отвечает за работу операционной системы (IOS) и коммутацию пакетов. В отличие от архитектур серии 7000 и AGS+ здесь нет отдельного микрокода коммутации пакетов (SP-микрокод, или микрокод контроллера Cbus); за исключением распределенной коммутации все решения по коммутации в маршрутизаторе 7500 принимает система IOS, которая выполняется на центральном процессоре модуля RSP. В модуле RSP используются процессоры со структурой MIPS, которые созданы на сокращенном наборе команд (RISC); тактовая частота, объем и тип кэш-памяти зависят от модели устройства.

На рис. 6.2 приведена функциональная схема устройства RSP.

Главную роль в работе межсетевой операционной системы (Internetwork .Operating System — IOS) маршрутизаторов серии 7500 (в частности, в процессе коммутации) играют три приведенных ниже компонента.

    • Центральный процессор (CPU).

    • Быстрая пакетная память (Fast Packet Memory), которая выделена в памяти MEMD.

    • Основная память (Main memory), которая выделена в DRAM.

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

Процессоры RSP1, RSP2 и RSP4 содержат банк памяти SDRAM объемом 2Мбайт, специально выделенной под пакетные буферы; RSP8 имеет 8 Мбайт SDRAM-памяти, отведенной под пакетные буферы. Эта область быстрой пакетной памяти также называется MEMD, как и соответствующая область в устройствах Cisco 7000 и сервере AGS+. Область памяти MEMD маршрутизаторов серии 7500 доступна как центральному процессору RSP, так и интерфейсным процессорам (через шину CyBus); оба указанных типа устройств имеют прямой доступ к данной области памяти как к разделяемому ресурсу. Несмотря на то что область MEMD разбита на пулы буферов, которые используются в алгоритме, аналогично работающему в маршрутизаторах Cisco 7000, аппаратные отличия позволяют внести некоторые полезные усовершенствования. Как, например, в маршрутизаторе 7500 память может быть разбита на 3520 буферов, что является значительным Улучшением по сравнению с устройством серии 7000, для которого 470 буферов являются пределом.

    • Этап 1. Сетевые интерфейсы маршрутизатора классифицируются по группам с различным параметром MTU. Диапазон разброса значений MTU, которые попадают в каждую группу, первоначально устанавливается равным 256 байтам. Если получается больше четырех групп, разброс увеличивается до 512 байт. Если вcе еще остается больше четырех групп, то разброс значений параметра MTU каждой группы снова удваивается и так до тех пор, пока не будет сформировано максимум четыре группы.

    • Этап 2 Каждый из буферных пулов, выделенных на этапе 1, получает 20 процентов (360 Кбайт) памяти MEMD, а оставшаяся память MEMD делится между пулами в соответствии с суммарной пропускной способностью всех сетевых интерфейсов, которые включены в данный пул.

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

512 байт.

1024 байт.

1500 байт.

4096 байт.

16000 байт.

Операционная система IOS начинает работу с определения пяти пакетных буферных пулов, которые описаны подробнее ниже.

    • Пул А — набор буферов размером 512 байт, которые обслуживают интерфейсы с параметром MTU в диапазоне 266 <MTU≤512 байт.

    • Пул В — набор буферов размером 1024 байта, которые обслуживают интерфейсы с параметром MTU в диапазоне 768 <MTU≤1024 байт.

    • Пул С — набор буферов размером 1500 байт, обслуживающих интерфейсы с параметром MTU в диапазоне 1244 <MTU≤1500 байт.

    • Пул D — набор буферов размером 4096 байт, обслуживающих интерфейсы с параметром MTU в диапазоне 3840 <MTU≤4096 байт.

    • Пул Е — набор буферов размером 16000 байт, которые обслуживают интерфейсы с параметром MTU в диапазоне 15744 ≤MTUs 16000 байт.

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

    • Пул А — буферы размером 512 байт, обслуживающие интерфейсы с MTU в диапазоне 0 <МТU≤512 байт.

    • Пул В — буферы размером 1500 байт, обслуживающие интерфейсы с MTU в диапазоне 988 <MTU≤1500 байт.

    • Пул С — буферы размером 4096 байт, обслуживающие интерфейсы с MTU в диапазоне 3584 <MTU≤4096 байт.

    • Пул D — буферы размером 16000 байт, обслуживающие интерфейсы с MTU в диапазоне 15488 <MTU≤16000 байт.

Теперь все пять интерфейсов распределены между четырьмя пулами. Обратите внимание, что пул В в данном случае обслуживает интерфейсы с MTU размерами 1024 и 1500 байт.

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

После определения размеров пулов операционная система IOS разбивает память MEMD на пять частей, содержащих по 20 процентов всей доступной памяти. Каждый из четырех пулов получает по одной части, а оставшаяся часть делится между пулами исходя из типов и скоростей интерфейсов, соответствующих определенному пулу. Существуют некоторые дополнительные затраты памяти MEMD, связанные с управляющими структурами, — например, часть памяти MEMD зарезервирована для взаимодействия центрального процессора (CPU) и интерфейсных процессоров; таким образом, не все 2 Мбайт памяти MEMD доступны для пакетных буферов.

В предыдущем примере мы для простоты предполагали, что размеры буферов, выделяемых в памяти MEMD, равны значениям параметра MTU соответствующих буферных пулов, однако на практике буферы выделяются несколько большего размера, чем максимальная величина MTU, которой соответствует данный пул. Буферы в памяти MEMD должны иметь достаточный размер для содержания данных объемом, соответствующим максимальной величине параметра MTU данного пула, также необходимо, чтобы оставалось место для добавления заголовка инкапсуляции. Кроме того, размер буфера в памяти MEMD должен быть кратным 32 байтам, что необходимо для выравнивания положения буфера в аппаратной кэшпамяти, чтобы обеспечить максимальную производительность. В результате размер памяти, выделяемой в области MEMD под буферы, определяется по формуле: размер = mtu + е + n, где mtu — максимальная величина параметра MTU; е— максимальная величина заголовка для инкапсуляции, который может добавляться соответствующими интерфейсами; n — количество байт заполнения (0—31) для обеспечения кратности значения 32 байтам.

Выделение буферов в памяти MEMD и неиспользуемые сетевые интерфейсы

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

Ресурсы памяти MEMD используются наиболее эффективно, если все сетевые интерфейсы сконфигурированы с одинаковым значением параметра MTU (обычно это 1500 байт). В таком случае алгоритм выделения буферов создает только один буферный пул, который используется совместно всеми сетевыми интерфейсами.

Команда show controller cbus позволяет увидеть состояние структур, которые управляют распределением памяти MEMD, и посмотреть, как распределена память MEMD, что является очень важной информацией для поиска неисправностей. В примере 6.3 показана часть результата выполнения данной команды с пояснением наиболее интересных параметров.



    • MEMD at 40000000, 2097152 bytes (unused 2976, recarves 4, lost 0). Данная строка означает, что память MEMD начинается с адреса 0x40000000 в адресном пространстве центрального процессора (CPU) и имеет объем 2 Мбайт. Значение поля unused (неиспользованная) показывает объем неиспользованной памяти в байтах, который обычно небольшой (меньше самого большого значения параметра MTU). Поле recarves показывает, сколько раз алгоритм распределения памяти MEMD выполнялся операционной системой IOS. Необходимость в перераспределении памяти MEMD может возникать в нескольких ситуациях, как, например, подключение новой сетевой платы, изменение значения параметра MTU для сетевого интерфейса, перезагрузка микрокода. Значение этого параметра устанавливается равным 1 при инициализации операционной системы IOS, когда алгоритм распределения памяти MEMD запускается в первый раз.

  • RawQ 48000100, ReturnQ 48000108, EventQ 48000110

  • BufhdrQ 48000128 (2939 items), LovltrQ 48000140 (11 items, 2016 bytes)

  • IpcbufQ 8000150 (16 items, 4096 bytes)

  • IpcbufQ_cIassic 48000148 (8 items, 4096 bytes).

Эти строки показывают адреса структур данных, которые являются внутренними для Очередей в памяти MEMD. Структуры данных представляют собой списки буферов в памяти MEMD (точнее, заголовков буферов), часть данных из которых используется в обработке пакетов. Наиболее интересная очередь — RawQ(очередь необработанных данных). Более детально RawQ описана ниже, в разделе, посвященном коммутации пакетов. Здесь лишь скажем, что в нее ставятся пакеты, которые принимаются интерфейсными процессорами и направляются на обработку центральным процессором устройства RSP.

    • 3570 buffer headers (48002000 — 4800ffl0). Строка, показывающая общее количество заголовков буферов в памяти MEMD. Заголовок буфера в памяти MEMD — это управляющая структура, содержащая данные о буфере в памяти MEMD, и указатель на сами данные буфера (рис. 6.3). Каждый MEMD-буфер имеет cвой уникальный заголовок. Заголовки буферов можно сравнить с метками, которые позволяют узнать, что находится внутри. Заголовок позволяет очень удобным способом реализовать передачу информации о пакетных буферах внутри операционной системы IOS без необходимости пересылать данные самих буферов. В модуле RSP всего может быть 3570 буферных заголовков.

  • рооl0: 9 buffers, 256bytes, queue 49000130

  • pool1: 278 buffers, 1536bytes, queue48000138

  • pool2: 305 buffers, 4544bytes,queue48000158

  • pool3: 4 buffers, 4576bytes, queue48000160.

Данные строки показывают, как распределены 2Мбайт доступной памяти MEMD. Первый (рооl0), а также последний (рооl3 в данном примере) буферные пулы зарезервированы для взаимодействия процессов интерфейсов, центрального процессора (CPU) и процессора коммутации-маршрутизации, а два других пула; pooll и рооl2, выделены под пакетные буферы.

Пакеты размещаются в буферах памяти MEMD в соответствии с сетевым интерфейсом, из которого они получены, а не на основании размера пакета. Например, если пакет размером 64 байта приходит из интерфейса, параметр MTU которого равен 1500 байт (размер MEMD-буфера 1536 байт), то он будет храниться в 1536-байтовом буфере, даже если имеется пул с буферами меньшего размера.

Если пакет приходит в интерфейс и нет доступных MEMD-буферов в пуле данного интерфейса, то пакет аннулируется, а счетчик числа аннулированных (ignore) пакетов данного интерфейса увеличивается на единицу. Такая ситуация возникает, даже если имеются свободные буферы в других пулах. Установка одинакового значения параметра MTU для всех интерфейсов приводит к тому, что MEMD-буферы размешаются в одном пуле и соответственно уменьшается вероятность аннулирования пакета из-за отсутствия свободных буферов в пуле отдельного интерфейса.

    • slotl: EIP, hw 1.5, sw .06, ccb 58001130, cmdq 48000088, vps 4096 software loaded from system.

Строка содержит данные об, интерфейсном процессоре в слоте 1. Аналогичная строка информации выводится для каждого слота, в котором работает интерфейсный процессор. В слоте 1 (slotl) работает интерфейсный процессор Ethernet (Ethernet interface processor— EIP), который имеет аппаратную версию (hardware version — hw) равную 1.5, а версию программного обеспечения (software version — sw) равную .06. Параметры cmdq и ccb — это адреса структур данных, которые используются для взаимодействия с устройством RSP.

  • Ethemetl/0, addr 00e0.8f6d.a820 (bia 00e0.8f6d.a820) gfreeq 48000170, Ifreeq 48000082 (1536 bytes), throttled 015 rxlo 4, rxcurr 0, maxrxcurr 1 txq 48000170, txacc 48000082 (value 49), txlimit 50.

Информация о каждом сетевом интерфейсе, включая указатели на соответствующие им структуры данных в памяти MEMD.

    • gfreeq. Данный параметр содержит указатель на глобальную очередь свободных буферов (global free queue). Глобальная очередь свободных буферов — это список всех свободных буферов в памяти MEMD, относящихся к одному определенному пулу. Все сетевые интерфейсы, относящиеся к одному пулу, имеют общую очередь свободных буферов и соответственно одинаковое значение данного указателя.

    • Ifreeq. Данный параметр является указателем на локальную очередь свободных буферов (local free queue) для рассматриваемого интерфейса. Наряду с глобальным для данного пула списком свободных MEMD-буфероВ каждый отдельный интерфейс может поддерживать свой локальный список, буферов, подученных из глобальной очереди. Все свободные буферы первоначально находятся в общей очереди свободных буферов. Как только интерфейс получил буфер из глобальной очереди, он может удержать его в своей локальной очереди свободных буферов на протяжении некоторого времени, что позволяет предотвратить отбрасывание приходящих на интерфейс пакетов в том случае, когда перегруженные интерфейсы "конкурируют" за свободные буферы в глобальном списке. Неиспользуемые свободные буферы из локальных очередей периодически возвращаются в глобальный список свободных буферов.

    • rxhi. Данный параметр показывает максимальное количество MEMD-буферов, которые интерфейс может удерживать в локальной очереди свободных буферов. Данный порог предотвращает возможность использования всех свободных буферов одним интерфейсом за счет "обделения" других.

    • rхcutt. Параметр содержит число буферов, удерживаемых данным интерфейсом. Этот счетчик может быть постоянно отличным от нуля в случае сильно перегруженных интерфейсов.

    • maxrxcurr. Параметр показывает максимальное число буферов, которые данный интерфейс когда либо удерживал со времени последнего перераспределения памяти (данный параметр часто называют "high water mark№ — уровень прилива). Значение данного параметра не может быть больше, чем величина параметра rxhi.

    • rxlo. Значение данного параметра всегда равно 4 и показывает минимальное количество буферов, которое может быть в списке свободных буферов рассматриваемого интерфейса в условиях ожидания пакетов (в случае, если через интерфейс когда-либо передавались данные).

    • txq. Параметр содержит указатель на список буферов, содержащих пакеты, которые ждут передачи данным интерфейсом. Этот список называется очередью передачи, а данный параметр — указателем очереди передачи.

    • txlimit. Параметр показывает максимальное число буферов, которое может содержаться в очереди передачи данного интерфейса в любой момент времени. Число в скобках, указанное перед данным параметром, — это количество оставшихся свободных мест в очереди передачи. В примере 6.3 число в скобках — 49, а значение txlimit — 50. Это означает, что один пакет поставлен в очередь передачи данного интерфейса. Значение параметра в скобках, равное нулю, означает, что больше ни один пакет не может быть поставлен в очередь передачи, пока какой-нибудь из пакетов в очереди Не будет удален.

*** rx - от receve, tx - от transmit

Основная память

Основная память в процессоре коммутаций-маршрутизации может содержать до 128 Мбайт (256 Мбайт для RSP4 и RSP8) расширяемой динамической оперативной памяти (DRAM). Обычно память DRAM используется в модуле RSP для хранения выполняемого кода операционной системы IOS и структур данных, которыми IOS пользуется во время выполнения. В примере 6.4 показан результат вывода команды show memory summary для маршрутизатора Ciscd 7500.

Из рассмотренного примера видно, что операционная система IOS разбивает основную память процессора коммутации маршрутизации (RSP) на два пула:

пул процессорной памяти (processor) и

пул быстрой памяти (fast).

Пул быстрой памяти используется для хранения интерфейсных структур данных которые называются блоками интерфейсных дескрипторов. Процессорный пул служит для хранения выполняемых инструкций, данных, управляющих структур, таблиц перенаправления данных (forwarding tables), системных пакетных буферов и куч (heap). Небольшой объем пула быстрой памяти не является ограничивающим фактором, так как если объем блоков интерфейсных дескрипторов превышает объем пула быстрой памяти, то система IOS просто начнет, использовать память из процессорного пула.

Процессорная память на маршрутизаторах, платформы 7500 также содержит системные буферные пулы, котррые описаны в разделе 1 “Основы программных принципов построения операционной системы IOS”.

Коммутация пакетов в маршрутизаторах Cisco 7500

Операционная система IOS маршрутизаторов Cisco 7500 предоставляет наиболее широкий диапазон методов коммутации среди всех существующих платформ. Среди поддерживаемых методов коммутации следует отметить следующие основные схемы.

    • Программная коммутация на уровне процессов (process switching).

    • Быстрая коммутация (fast switching).

    • Оптимальная коммутация (optimum switching).

    • Экспресс-пересылка корпорации Cisco (Cisco Express Forwarding" — CEF)

    • Распределенная быстрая коммутация (distributed fast switching)

    • Распределенная экспресс-пересылка данных корпорации Cisco (Distributed CEF - dCEF).

    • Протокол коммутации NetFlow (NetFlow switching)

Реализация распределенной быстрой коммутации и распределенной пересылки данных CEF возможна благодаря использованию многоцелевых интерфейсных процессоров (VIP), которые рассматриваются ниже в данной главе. Протокол коммутации NetFlow подробно описан в приложении А.

Прием пакета при RSP-коммутации

На рис. 6.4 показаны этапы приема пакетов при коммутации с использованием процессора коммутации-маршрутизации (RSP). Каждый этап описывается в соответствующем пронумерованном подпункте.

  • Этап 1. Контроллер среды передачи данных обнаруживает приходящий пакет и начинает прием данных пакета в ОЗУ интерфейсного процессора. Микрокод, который выполняется интерфейсным процессором (например, интерфейсным процессором Ethernet, или EIP), собирает приходящие данные в пакет, занимающий непрерывную область памяти в ОЗУ интерфейсного процессора.

  • Этап 2. Микрокод интерфейсного процессора пытается найти буфер в памяти MEMD для вновь прибывшего пакета. Сначала интерфейс пытается получить буфер из локальной очереди свободных буферов (lfreeQ). Если свободных буферов в локальной очереди не оказывается, микрокод пробует получить буфер из глобальной очереди свободных буферов (gfreeQ), которая соответствует данному интерфейсу. В этом случае возможны три ситуации.

2.1. В глобальной очереди пула нет свободных MEMD буферов. В этом случае пакет отбрасывается и счетчик аннулированных пакетов (ignore) данного интерфейса увеличивается на единицу.

2.2. В глобальной очереди пула есть свободные буферы, но интерфейс не может их получить, поскольку интерфейс удерживает максимально возможное число буферов, которое задается соответствующим данному интерфейсу значением параметра rxhi (т.е. rxcurr=rxhi). В этом случае пакет также отбрасывается, а значение счетчика игнорированных пакетов увеличивается.

2.3. Микрокод успешно получает буфер из глобальной очереди свободных буферов.

  • Этап 3. После получения свободного пакетного буфера памяти MEMD микрокод копирует данные пакета из внутреннего ОЗУ в буфер памяти MEMD через шину CyBus.

  • Этап 4. Интерфейсный процессор включает заголовок MEMD-буфера в очередь необработанных данных RawQ для обработки процессором коммутации-маршрутизации.

  • Этап 5. Специальное устройство шины CyBus определяет, что буфер помешен в очередь RawQ, и активизирует сетевое прерывание центрального процессора (CPU) модуля RSP.

Коммутация пакета с использованием модуля RSP

На рис. 6.5 изображен процесс коммутации пакета в устройстве RSP. Ниже описан каждый этап коммутации.

    • Этап 6. Центральный процессор устройства RSP подтверждает сетевое прерывание. Операционная система 10S начинает обработку пакета: удаление заголовка пакетного MEMD-буфера из очереди RawQ, нахождение данных пакета и просмотр содержимого буфера. Заметим, что все следующие шаги предполагают, что система IOS обрабатывает только один пакет во время обработки сетевого прерывания. Практически во время обработки сетевого прерывания система IOS продолжает обрабатывать пакеты до тех пор, пока есть заголовки буферов, которые ожидают обработки в очереди RawQ. Далее операционная система IOS принимает решение о том, как коммутировать пакет.

    • 6.1. Если в буфере содержится IP-пакет и входной сетевой интерфейс сконфигурирован для CEF-коммутации, то осуществляется переход к методу коммутации CEF.

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

    • 6.3. Если в буфере содержится IP-пакет и входной сетевой интерфейс сконфигурирован для метода коммутации NetFlow (NetFlow switching), осуществляется переход к процессу коммутации NetFlow.

    • 6.4. Если содержимое буфера не является IP-пакетом, то система IOS использует метод быстрой коммутации.

    • Этап 7. Коммутация с помощью метода CEF. В контексте обработки сетевого прерывания центральный процессор просматривает кэш CEF на предмет наличия информации о выходном интерфейсе и следующей точке перехода (next hop) для данного пакета.

7.1. В таблице CEF есть запись для адреса получателя данного пакета. Осуществляется новая инкапсуляция данных пакета с использованием того же буфера памяти MEMD и начинается стадия отправки пакета.

7.2. Пакет адресован данному маршрутизатору или содержит управляющие данные, такие как обновление информации о маршрутизации. В этом случае пакет подготавливается к коммутации на уровне процессов (см. этап 10).

7.3. Нет соответствующей записи в таблице CEF. В этом случае пакет аннулируется и счетчик игнорированных пакетов на этапе коммутации с помощью метода CEF увеличивается на единицу. Центральный процессор прекращает обработку сетевого прерывания и снимает подтверждение прерывания (данный шаг не показан на рис. 6.5).

7.4. Поиск в кэше CEF приводит к проблеме несогласованности (punt adjacency). Пакет передается процессу быстрой коммутации. Такая ситуация возникает, например, когда инкапсуляция в протокол выходного интерфейса не поддерживается подсистемой коммутации метода CEF.


  • Этап 8. Оптимальная коммутация. Во время обработки сетевого прерывания центральный процессор просматривает кэш оптимальной коммутации (optimum cache), чтобы определить сетевой интерфейс и адрес следующей точки перехода, которые будут использоваться для коммутации пакета.

8.1. Если необходимая для перенаправления пакета информация найдена в кэше оптимальной коммутации, то осуществляется инкапсуляция пакета в протокол передачи в том же MEMD-буфере и обработка пакета продолжается „на стадии передачи.

8.2. Если в кэше оптимальной коммутации нет соответствующей записи, то пакет перенаправляется для быстрой коммутации.

  • Этап 9. Быстрая коммутация. В процессе обработки сетевого прерывания центральный процессор ищет IP-адрес устройства-назначения в кэш-структуре быстрой коммутации (fast cache).

9.1. Если поиск завершился успешно, то пакет инкапсулируется в протокол передачи в том же буфере памяти MEMD и обработка передается на стадию передачи пакета.

9.2. Если поиск закончился безрезультатно или пакет предназначен данному маршрутизатору, то пакет подготавливается к коммутации на уровне процессов (этап 10).

  • Этап 10. Во время обработки сетевого прерывания центральный процессор ищет свободный системный буфер и копирует в него пакет из буфера в памяти MEMD. Пакеты для коммутации с помощью процесса должны быть скопированы в системный буфер, находящийся в основной памяти, так как буферы в памяти MEMD доступны только на уровне обработчиков прерываний (чтобы предотвратить возможность нехватки свободных буферов в памяти MEMD).

10.1.1. Если система. IOS не может получить системный буфер, то счетчик пакетов, аннулированных на входном интерфейсе (input drop), и счетчик событий отсутствия буферов (по buffer) увеличиваются на единицу, а сам пакет отбрасывается. Центральный процессор заканчивает обработку прерывания и с шины снимается подтверждение прерывания.

10.1.2. Если системный буфер доступен, но число пакетов во входной очереди сетевого интерфейса имеет максимально возможное значение, осуществляется подавление интерфейса 12, счетчик пакетов, аннулированных на входном интерфейсе (input drop), увеличивается на единицу, а пакет игнорируется. Система IOS заканчивает обработку прерывания и снимает подтверждение прерывания с шины управления. По умолчанию интерфейсы могут содержать 75 пакетов, ожидающих обработки, во входной очереди (input hold queue).

10.1.3. Если центральный процессор успешно получил системный буфер, то пакет копируется из памяти MEMD в системный буфер и MEMD-буфер возвращается в локальную очередь свободных буферов данного интерфейса. Счетчик пакетов во входной очереди интерфейса (input hold queue) увеличивается на единицу.

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

10.3. В итоге пакет коммутируется фоновым процессом; более подробную информацию см.: “Принципы коммутации пакетов”.

10.4. После коммутации пакет помешается в очередь выходящих пакетов выходного интерфейса. Если очередь выходящих пакетов переполнена (по умолчанию в ней может быть максимум 40 пакетов), то пакет аннулируется и счетчик игнорированных пакетов на выходном интерфейсе (output drop) увеличивается на единицу. Если пакет аннулируется, то число пакетов в очереди входящих пакетов входного интерфейса (input hold queue) также уменьшается на единицу.

10.5. Операционная система IOS пытается получить пакетный буфер в памяти MEMD, чтобы пакет мог быть отправлен интерфейсным процессором. Сначала система IOS пытается получить MEMD-буфер из глобального списка свободных буферов. Если в этом списке нет свободных буферов или очередь передачи выходного интерфейса заполнена, IOS оставляет пакет в очереди выходящих пакетов (в системном буфере) и пытается отправить пакет позже.

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

Передача пакета при RSP-коммутации

На рис. 6.6 показаны этапы передачи пакет как результата работы процесса коммутации. Ниже указанные этапы описаны более детально:

  • Этап 11. Система 10S пытается поместить заголовок MEMD-буфера в очередь передачи (transmit queue) выходного интерфейса.

11.1. Если очередь передачи заполнена и на интерфейсе не сконфигурировано вспомогательное хранилище (backing store), пакет аннулируется и счетчик пакетов, проигнорированных во выходном интерфейсе (output drop), увеличивается на единицу.

11.2. Если очередь передачи заполнена и интерфейс сконфигурирован с использованием вспомогательного хранилища, пакет копируется из буфера памяти MEMD в системный буфер, который помещается в очередь выходящих пакетов интерфейса. Счетчик буферов, задержанных на выходе (output buffer’s swapped out), увеличивается на единицу. Следует заметить, что если на интерфейсе сконфигурирован какой-либо из способов обеспечения очередности прохождения пакетов (fancy queuing), как, например, взвешенная абсолютная очередность (weighted fair queuing), то вспомогательное хранилище разрешено по умолчанию и не может быть отключено.

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

11.4. Если система IOS находится в состоянии обработки прерывания, то центральный процессор (CPU) завершает обработку прерывания и снимает подтверждение прерывания с шины управления.

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

  • Этап 13. Заголовок буфера памяти MEMD освобождается и возвращается в локальную очередь свободных буферов (lfreeq) входного интерфейса.

  • Этап 14. Контроллер среды передачи данных выходного интерфейса передает пакет из внутренней оперативной памяти интерфейсного процессора в среду передачи.


Внимание!

Вспомогательное хранилище (backing store) используется для предотвращения отбрасывания пакетов маршрутизатором во время бросков количества пакетов. Вспомогательное хранение обеспечивает возможность копировать пакеты, которые уже прошли процесс коммутации, обратно в выходную очередь интерфейса, если очередь передачи интерфейса полностью занята. Данная операция является очень ресурсоемкой. Указанное свойство нельзя использовать на интерфейсе, если его полоса пропускания больше 2 Мбит/с, поскольку описанная опция способствует сильному возрастанию нагрузки на центральный процессор (CPU) маршрутизатора.

Структура многоцелевых интерфейсных процессоров (VIP)

Корпорация Cisco разработала многоцелевые интерфейсные процессоры (VIР - Versatile Interface Processors) для создания распределенных структур на основе уже существующих платформ. Устройство VIP размещено на одной материнской плате и может работать с несколькими адаптерами портов, которые, в свою очередь, могут иметь разный тип среды передачи данных (отсюда название процессора — многоцелевой).

Основой масштабируемости Cisco 7500 является распределенная архитектура и использование гибких интерфейсных процессоров (Versatile Interface Processors, VIP). Каждый модуль VIP оснащен собственным процессором, обеспечивающим коммутацию пакетов данных IP и сетевые сервисы. Такая схема позволяет масштабировать общую производительность маршрутизаторов Cisco 7500 при необходимости обработки все большего числа высокоскоростных сетевых соединений и пакетов данных. Основным звеном системы при этом по-прежнему является коммутирующий процессор маршрутов (RSP). Он обменивается данными по протоколам маршрутизации с другими маршрутизаторами в сети, собирая данные для системы коммутации, а затем загружает эти данные в модули VIP, позволяя каждому из них самостоятельно коммутировать пакеты.

Помимо коммутации пакетов, модули VIP также предоставляют ряд распределенных сервисов IP-сетей, включая контроль доступа, управление качеством обслуживания и учет трафика (NetFlow). Благодаря тому, что модули VIP снимают часть нагрузки по коммутации пакетов и обеспечению услуг с коммутирующего процессора маршрутов, процессор может использовать всю вычислительную мощность для решения других существенных задач. Распределенная коммутация с использованием модулей VIP - наиболее оптимальный способ наращивания производительности системы. Эту технологию необходимо использовать во всех возможных случаях, снижая таким образом нагрузку на коммутирующий процессор маршрутов.


Составные компоненты модуля VIP

По существу, устройства VIP являются маршрутизаторами, которые установлены на платах интерфейсных процессоров системы Cisco 7500. Каждый модуль VIР имеет свой процессор, пакетную память и каждый из них исполняет свою копию кода операционной системы IOS. На рис. 6.7 показана блок-схема архитектуры многоцелевого интерфейсного процессора.

Интерфейс шины CyBus

Модуль VIР является интерфейсным процессором, который полностью совместим с интерфейсом шины CyBus, т.е. может выполнять чтение двух четырехбайтовых слов за один такт шины и использовать полную пропускную способность шины CyBus, равную 1066 Гбит/с.

Центральный процессор

Локальный центральный процессор устройства VIP (процессор R4700 или R7000 архитектуры MIPS) работает под управлением специальной версии операционной системы IOS. Она может выполнять коммутацию пакетов, освобождая центральный процессор RSP от излишней нагрузки. Операционная система IOS процессора VIР также может локально выполнять расширенные функции 3-го уровня, такие как фильтрацию пакетов, взвешенную абсолютную очередность (weighted fair queuing, WFQ) передачи пакетов и процедуру взвешенного случайного аннулирования пакетов на ранних этапах приема (weighted early drop, WRED). Именно локальные функции коммутации и фильтрации пакетов составляют основу распределенной структуры коммутации (distributed switching architecture) маршрутизаторов серии 7500.

Основная память

Основная память устройства VIР использует расширяемую динамическую оперативную память (DRAM). Как и основная память процессора RSP, основная память процессора VIР содержит выполняемые инструкции системы IOS, данные программ, управляющие структуры для коммутации и динамически выделяемую память.

Пакетная память

Устройства VIP имеют расширяемый банк статической памяти (SRAM), которая используется для хранения пакетных буферов и некоторых структур данных, которые используются интерфейсными контроллерами среды передачи. Этот банк памяти, называемый пакетной памятью, предназначен для обеспечения высокой скорости доступа к данным пакетов, что особенно важно для быстрых сетевых интерфейсов.

Система IOS процессоров VIP разбивает пакетную память на пулы пакетных буферов, которые используются интерфейсами. Так же как и система IOS на маршрутизаторах серии Cisco 7200, система IOS на процессорах VIР использует подход, основанный на частичной буферизации, для обеспечения интерфейсов пакетными буферами.

Размер буферного фрагмента памяти (распределенного буфера) для устройства VIР фиксирован и обычно равен 256 или 512 байтам и одинаков для всех его интерфейсов. Размер фрагмента определяется типом адаптеров портов, которые инсталлированы на плате VIP. Значение размера частичного буфера можно получить, выполнив команду: show controller vip slot <номер слота> tech-support.

Адаптер порта

Процессоры VIР используют такие же адаптеры портов, как и маршрутизаторы серии Cisco 7200. Каждый многоцелевой интерфейсный процессор может работать с одним или двумя адаптерами, которые инсталлированы на его плате. Поддерживаются два однопортовых или один двухпортовый адаптер. Заметим, что система IOS не поддерживает подключение или отключение адаптеров портов во время работы.


Шина PCI

Многоцелевой интерфейсный процессор использует шину CyBus для взаимодействия с процессором коммутации-маршрутизации, однако на плате VIP взаимодействие с центральным процессором и адаптерами портов идет через шину PCI, так же как и в модели маршрутизатора Cisco 7200. На плате VIP имеются две шины PCI, которые соединены через мост PCI (PCI bridge), имеют 32 разряда и работают на частоте 25 МГц, что теоретически позволяет получить пропускную способность 800 Мбит/с (25 МГц х 32бит/такг).

Модели многоцелевых интерфейсных процессоров

Существуют три модели многоцелевых интерфейсных процессоров, которые называются VIP2-15, VIP2-40 и VIP2-50. Модель процессора VIР может быть определена с помощью команды show diag. Устройство VIP2-40 содержит процессор (CPU) модели R4700 на основе технологии MIPS, 2 Мбайт памяти SRAM, 32 Мбайт памяти DRAM. Конфигурация памяти для процессора VIP2-40 не может быть изменена. Устройство VIP2-50 содержит процессор R5000 на основе технологии MIPS, до 8 Мбайт памяти SRAM, до 64 Мбайт памяти DRAM.

Результат выполнения команды show diag для процессора VIP2-40 показан в примере 6.5. Результат выполнения команды show diag для процессора VIP2-50 показан в примере 6.6.

Обработка пакетов процессором VIP: распределенная коммутация

В сущности, многоцелевые интерфейсные процессоры выполняют те же функции, что и менее “интеллектуальные” интерфейсные процессоры с микрокодом. Они собирают входные пакеты для обработки в устройстве RSP из данных, поступающих из среды передачи, и передают пакеты, приходящие от процессора RSP, в среду передачи. Однако, как уже упоминалось, устройства VIР также могут выполнять функции, недоступные интерфейсным процессорам с микрокодом. Так как на процессорах VIР выполняются инструкции операционной системы IOS, то соответственно эти процессоры имеют определенные встроенные логические функции, позволяющие принимать решения по коммутации пакетов, что является очень мощным средством. VIP-процессоры также имеют некоторые аппаратные функции, позволяющие использовать шину CyBus для обмена данными с другими интерфейсными процессорами без участия центрального процессора RSP. Эти две возможности позволяют каждому процессору VIР работать как независимому средству коммутации пакетов внутри маршрутизаторов серии 7500, а также обеспечивать распределение работы по коммутации пакетов между несколькими процессорами в маршрутизаторе. Все вышеизложенное составляет основу функции распределенной коммутации операционной системы IOS.

В приведенных ниже разделах более детально описываются три стадии коммутации пакета в контексте операционной системы IOS процессоров VIР: прием, коммутация и передача пакета.

Прием пакета при распределенной коммутации

На рис. 6.8 показаны этапы приема пакета и стадии коммутации пакетов при распределенной коммутации. Каждый этап описан в подпункте, соответствующем его номеру.

  • Этап 1. Контроллер среды передачи данных интерфейса (внутри адаптера порта) определяет момент прихода пакета из среды передачи. Далее контроллер среды передачи принимает пакет в один из своих свободных фрагментов памяти и хранит его в локальной области пакетной памяти, которая называется приемным кольцом (receive ring).

  • Этап 2. Контроллер среды передачи данных посылает сетевое прерывание центральному процессору VIP-модуля. Центральный процессор VIР подтверждает прерывание, и операционная система IOS процессора VIР начинает обработку прерывания для приема пакета из интерфейса, прервавшего работу центрального процессора.

  • Этап 3. Подпрограмма обработки принятых пакетов пытается взять пакетный фрагмент буфера из приемного кольца и заменить его пустым фрагментом, полученным из глобального пула (этот этап не показан на рис. 6.8).

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

3.2. Если функция обработки приема успешно обновила приемное кольцо, то она просматривает содержимое буферных фрагментов для определения типа принятого пакета.

3.2.1. Если принят IР-пакет, то обработка переходит к распределенной коммутации (распределенная оптимальная или распределенная CEF-коммутация).

3.2.2. Если принят не IP-пакет, то для него распределенная коммутация не поддерживается. В этом случае пакет направляется через шину CyBus в память MEMD подсистемы модуля RSP по аналогии с тем, как это делают интерфейсные процессоры с микрокодом. В конце процедуры система IOS процессора VIР заканчивает обработку прерывания, и процессор VIР снимает подтверждение сетевого прерывания.


Коммутация пакета при распределенной коммутации

На рис. 6.8 показаны этапы коммутации пакета в рассматриваемом случае распределенной коммутации. Все решения по распределенной коммутации пакета принимает центральный процессор подсистемы VIР. Этапы коммутации пакета следующие.

  • Этап 4. Оптимальная распределенная коммутация. В основной памяти процессора VIР содержится полная копия кэш-структуры распределенной коммутации устройства RSP, что позволяет центральному процессору модуля VIР принимать решения по коммутации пакетов. Соответствующие распределенные кэш-структуры и кэш-структуры процессора RSP синхронизируются с помощью обмена сообщениями между центральными процессорами этих устройств. Во время обработки сетевого прерывания система IOS подсистемы модуля VIР ищет необходимую для коммутации информацию в локальной кэш-структуре оптимальной коммутации.

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

  • Этап 5. Распределенная коммутация с помощью метода CEF. Копии таблицы CEF и таблицы соседства устройства RSP также содержатся в локальной памяти многоцелевого интерфейсного процессора, так что это устройство может самостоятельно принимать решения по коммутации входных пакетов с помощью метода CEF. С помощью обмена сообщениями между центральными процессорами устройств VIР и RSP осуществляется синхронизация главных таблиц из модуля RSP с таблицами всех процессоров VIP. Во время обработки сетевого прерывания система IOS процессора VIР просматривает таблицы CEF на предмет информации, необходимой для коммутации пакета.

5.1. Если необходимая для коммутации информация найдена в локальной CEF-таблице, пакет инкапсулируется и управление передается на этап передачи.

5.2. Если в результате поиска необходимая для коммутации информация не найдена, то пакет аннулируется. Система IOS устройства VIР заканчивает обработку прерывания, а центральный процессор VIР снимает подтверждение прерывания с шины управления.

5.3. Если в результате поиска обнаружена ситуация спорной (punt) или приемной (receive) несогласованности, пакет передается через шину CyBus в память MEMD подсистемы RSP, как и в случае интерфейсных процессоров с микрокодом. Система IOS устройства VIP в данном случае заканчивает обработку прерывания, а центральный процессор VIР снимает подтверждение прерывания с шины управления.

Передача пакета при распределенной коммутации

На рис. 6.9 показаны этапы передачи пакета при распределенной коммутации. Каждый этап описан ниже в нумерованном списке.

  • Этап 6. Если пакет предназначен интерфейсу, который связан с той же подсистемой VIP, то он может быть отправлен локально без необходимости передачи через шину CyBus.

6.1. Программное обеспечение, работающее на процессоре VIP, помещает фрагменты пакета из буфера в специальную локальную область передачи выходного интерфейса, которая называется кольцом передачи (transmit ring). Операционная система IOS устройства VIP заканчивает обработку прерывания, а центральный процессор VIP снимает подтверждение прерывания с шины управления.

6.2. Контроллер среды передачи выходного интерфейса (на адаптере порта) передает данные пакета из его кольца передачи в физическую среда'.

6.3. Когда контроллер среды заканчивает передачу пакета, он помечает буферы, содержащие фрагменты пакета, как пустые и сообщает операционной системе IOS устройства VIР (посредством специального прерывания), что фрагменты буферов освободились и могут быть возвращены в глобальный пул распределенных буферов.

  • Этап 7. Если пакет предназначен для интерфейса на другом интерфейсном процессоре, то система IOS устройства VIP передает пакет данному интерфейсному процессору по шине CyBus через память MEMD.

7.1. Система IOS подсистемы VIP пытается получить свободный буфер в памяти MEMD, сначала из локальной очереди свободных буферов, а затем — из глобальной.

7.2. Если нет свободных MEMD-буферов, система IOS устройства VIP пытается временно сохранить пакет в пакетной памяти, а не аннулирует его (более подробно такая ситуация описана ниже, в разделе “Буферизация в устройстве VIP на стороне приема”). Точно так же, если очередь передачи выходного интерфейса заполнена, то система IOS устройства VIР пытается временно сохранить пакет в пакетной памяти.

7.3. Если система IOS устройства VIP успешно получила буфер памяти MEMD, то она копирует данные пакета из распределенных буферов в буфер памяти MEMD по шине CyBus.

7.4. Заголовок MEMD-буфера для данного пакета помещается непосредственно в очередь передачи выходного интерфейса. Центральный процессор устройства RSP при этом не прерывает работу, а продолжает выполнять процессы в фоновом режиме и обрабатывать данные, которые коммутируются на уровне процессов, а также оперировать с таблицами маршрутизации и т.д.

7.5. Система IOS устройства VIP заканчивает обработку прерывания, а центральный процессор VIР снимает подтверждение прерывания с шины.

  • Этап 8. Выходной интерфейс может быть установлен на обычном интерфейсном процессоре или на другом процессоре VIP. В любом случае управляющий код выходного интерфейсного процессора определяет, что пакет находится в очереди передачи, и копирует содержимое пакетного буфера из памяти MEMD по шине CyBus во внутреннюю память выходного интерфейса .

  • Этап 9. Контроллер среды передачи данных выходного интерфейса передает пакет из памяти интерфейса в физическую среду.


Буферизация в устройстве VIP на стороне приема

Интерфейсные процессоры маршрутизаторов серии Cisco 7500, включая и процессоры VIP, не имеют доступа к внутренней памяти других интерфейсных процессоров. Они могут получить доступ только к своей внутренней памяти и к памяти MEMD процессора коммутации-маршрутизации. Поскольку память MEMD — это единственный ресурс общего доступа, то каждый пакет, который переходит из одного интерфейса в другой по шине CyBus, должен пройти через буфер в памяти MEMD процессора RSP. Однако размеры памяти MEMD ограничены, и нет гарантии, что буфер в памяти MEMD окажется доступным, когда процессор VIР захочет передать данные в другой интерфейсный процессор.

В случае, когда процессор VIP выполняет распределенную коммутацию и свободный буфер памяти MEMD недоступен, операционная система IOS процессора VIР позволяет буферизировать принятый пакет локально. Этот процесс называется буферизацией на стороне приема. Буферизация на стороне приема позволяет сократить число отброшенных пакетов на интерфейсном процессоре VIP путем использования локальной памяти данного интерфейсного процессора для временного хранения пакетов, которые были бы аннулированы из-за отсутствия ресурсов памяти MEMD или переполнения очереди передачи. Описанное свойство особенно ценно в ситуациях, когда на высокоскоростных интерфейсах принимается большое количество пакетов, которые должны быть перенаправлены через более медленные интерфейсы на другом интерфейсном процессоре.


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

Статистику по использованию буферизации на стороне приема можно получить, выполнив команду show controller vip accumulator, как показано в примере 6.7.

Строки, пронумерованные от 1 до 4, содержат статистику по использованию буферов на стороне приема для соответствующих выходных интерфейсов.

Строка 2 в примере 6.7 показывает, что в пакетной памяти в общем случае буферизировано 4500 пакетов, предназначенных для отправки через интерфейс FastEther-netl/0, а 300 пакетов — проигнорировано. В данный момент 0 пакетов находится в очереди буферизации на стороне приема, а максимальное количество пакетов, которые могут быть буферизированы, — 24414. Такое количество буферов необходимо для буферизации пакетов, передаваемых за одну секунду через интерфейс с соответствующей пропускной способностью, что может быть выражено следующей формулой: максимальное число буферов = {выходная пропускная способность интерфейса в бит/с)/(8 х размер фрагмента буфера).

В приведенном выше примере пропускная способность составляет 100 Мбит, а размер фрагмента буферного 512 байт.

Строка 3 показывает, что все буферизированные пакеты, указанные в строке 2 (всего 4500), были буферизированы из-за переполнения очереди передачи (No MEMD асе.) 300 пакетов были аннулированы по той же причине. Заметим, что если значение счетчика проигнорированных пакетов по причине нехватки буферов (no buffer) не равно нулю, то это значит, что недостаточно ресурсов пакетной памяти для буферизации на стороне приема. Такая ситуация, в свою очередь, может означать нехватку пакетной памяти (SRAM) в процессоре VIР. Строка 4 показывает, что ни один пакет не был буферизирован из-за отсутствия свободных буферов в памяти MEMD (No MEMD buf.).

Устранение неисправностей в маршрутизаторах Cisco 7500

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

Перегрузка центрального процессора

В примере 6.8 показана часть результатов вывода команды show process cpu для маршрутизатора, на котором замечена слишком большая загрузка центрального процессора.

В примере 6.8 показано, что за последние 5 секунд средняя загрузка центрального процессора (CPU) составляла 90 процентов от полной производительности и 80 процентов полной производительности (88,8 процента от полного времени работы процессора) составляла обработка прерываний. Скользящее среднее загрузки процессора за 1 и 5 минут составляло соответственно 60 и 40 процентов. Так как самый большой вклад в нагрузку дает обработка прерываний и загруженность устройства за длительное время несколько меньше, то, скорее всего, данный маршрутизатор обрабатывает резкий скачок количества коммутируемых пакетов.


В подобной ситуации нет ничего страшного, однако для маршрутизаторов серии 7500 и других, которые используют процессоры, основанные на технологии MIPS, нагрузка на процессор при обработке прерывания может быть больше обычной из-за ошибки размещения данных в памяти (alignment enor). Подобные ошибки возникают тогда, когда программа пытается записать данные в память по адресу, который недопустим правилами размещения данных в памяти для данного центрального процессора (CPU). Для процессоров, созданных по технологии MIPS, 16-битовое число должно быть размешено по адресу, кратному 2, а 32-битовое — по адресу, кратному 4, и т.д.

В случае, когда операционная система IOS пытается получить доступ к данным, размещение которых противоречит правилам, процессор генерирует исключительную ситуацию (exception) и вызывает функцию операционной системы IOS, которая пересылает данные в сегменты памяти, не нарушающие правила размещения. Функция обработки исключительной ситуации добавляет значительное количество инструкций выполнения к сравнительно простой операции доступа к данным, что вызывает значительные затраты процессорного времени. По этой причине ошибки размещения могут значительно снижать производительность. Все ошибки размещения данных фиксируются в журнале записи, который можно просмотреть с помощь команды show align.

Большая загрузка центрального процессора процессами должна быть исследована для выявления процессов, которые максимально занимают процессорное время. По результатам вывода команды show process cpu очень легко определить, какие процессы больше всех занимают процессорное время. Названия процессов интуитивно поняты. Например, процесс IP Input отвечает за обработку всех IP-пакетов на уровне процессов. Если процесс IP Input занимает много процессорного времени, то это скорее всего означает, что множество пакетов, приходящих на маршрутизатор, коммутируются с помощью данного процесса. Чтобы определить, действительно ли приходящие пакеты коммутируются с помощью процессов, целесообразно воспользоваться командой show interface stat, как показано в примере 6.9.

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


  • Pkts In — количество пакетов, которые пришли из данного интерфейса, и метод, который использовался для их коммутации. В примере 6.9 общее количество пакетов, пришедших в интерфейс POS8/1/0, — 60450, два пакета коммутировалось на уровне процессов, 0 пакетов коммутировались методами быстрой коммутации, оптимальной коммутации и с помощью протокола CEF, 60448 пакетов коммутировались методами распределенной коммутации.

  • Chars In — количество байт, пришедших из интерфейса. Отношение Chars In/Pkts In позволяет определить средний размер пакета, приходящего в интерфейс.

  • Pkts Out — количество пакетов, переданных данным интерфейсом, и метод, с помощью которого эти пакеты коммутировались. Пакеты, которые передаются интерфейсом, могли быть получены из многих интерфейсов. В примере 6.9 показано, что из переданных интерфейсом POS8/1/0 пакетов 15586 коммутировались с помощью процесса, а 30772 — методами распределенной коммутации. Наибольшее количество пакетов, полученных интерфейсом, должны коммутироваться с помощью самого быстрого для данного интерфейса метода. Управляющие пакеты (например, обновления таблиц маршрутизации, тестовые пакеты keep-alive - поддерживать в живом состоянии) и пакеты, предназначенные для данного маршрутизатора, всегда считаются входными пакетами, коммутированными с помощью процессов. Интерпретируя результаты вывода команды show interface stat, следует помнить, что пакеты, принятые данным интерфейсом, обычно передаются другим интерфейсом и, наоборот, пакеты, которые передаются данным интерфейсом, были приняты на другом интерфейсе. Таким образом, необходимо просмотреть результаты вывода команды show interface stat для всех интерфейсов, чтобы оценить общее количество данных, прошедших через маршрутизатор.

Наиболее часто встречающиеся причины большой загрузки процессора перечислены ниже.

  • Конфигурация маршрутизатора. Следует убедиться, что все интерфейсы сконфигурированы для наиболее быстрого из доступных методов коммутации.

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

  • Атака “отказ в обслуживании”. Очень большая категория нестандартных ситуаций. Ping-атака — достаточно распространенный вид атак, когда злоумышленник посылает маршрутизатору интенсивный поток пакетов с помощью программы ping. Для предотвращения такого вида атак необходимо использовать списки доступа. В случае возникновения проблемы может быть полезной установка фиксированной скорости доступа {Committed Access Rate — CAR). Более детальную информацию о конфигурации параметра CAR можно найти в документации по операционной системе Cisco IOS.

  • Циклический маршрут (routing loop). Маршрутная петля может привести к тому, что IP-пакеты, у которых закончилось время жизни (TTL), аннулируются на маршрутизаторе. Такой случай легко распознать по постоянно увеличивающемуся значению счетчика bad hop counter (ошибка перехода к следующей точке) в результатах вывода команды show ip traffic

Аннулирование пакетов на входе

Для маршрутизаторов серии 7500 значение счетчика input drop в выводимой командой show interface информации увеличивается только тогда, когда игнорируется пакет, предназначенный для коммутации с помощью процессов. Небольшое количество отброшенных пакетов на входе является допустимым. Однако соотношение между количеством отброшенных пакетов и общим количеством пакетов — очень важная информация. Сложно точно определить границу, когда необходимо серьезно обратить внимание на игнорирование пакетов, однако заметное уменьшение пропускной способности сети требует анализа причин отбрасывания пакетов на входе.

Размер входной очереди пакетов по умолчанию равен 75. Увеличение ее размера не всегда может решить проблему. Необходимо исследовать причины, почему пакеты переходят на уровень коммутации с помощью процессов. Некоторые из причин, описанных в разделе о перегрузке центрального процессора маршрутизатора, также могут приводить к аннулированию пакетов. Если в результате выполнения команды show interface видно увеличение значения счетчика по buffer, то это говорит о нехватке свободных буферов для хранения пакетов. Команда show buffer операционной системы IOS может быть полезной для определения, какой из пулов буферов является пустым.

Игнорирование пакетов

Увеличение значения параметра ignore в результатах вывода команды show interface свидетельствует о нехватке буферов в памяти MEMD. Всплески сетевого трафика также могут приводить к игнорированию пакетов. Как и в случае с аннулированием пакетов на входном интерфейсе, важным является соотношение между количеством проигнорированных пакетов и общим количеством пакетов.

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

Аннулирование пакетов на выходе

Увеличение значения параметра output drop в результатах вывода команды show interface может происходить вследствие перечисленных ниже причин.

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

  • Быстрая коммутация — пакет не может быть поставлен в очередь передачи интерфейса, поскольку она переполнена. Значения параметров очереди передачи интерфейса в данный момент времени могут быть получены с помощью команды show controller cbus. Небольшие значения параметров свидетельствуют о переполнении очереди передачи.

Увеличение длины выходной очереди не может сократить число пакетов, аннулируемых на выходе, если большинство пакетов аннулируется на этапе быстрой коммутации. Так же как и для других случаев отбрасывания пакетов, небольшое количество аннулированных на выходе пакетов является допустимым. Абсолютное количество пакетов, аннулированных на выходе, не является настолько важным параметром, как соотношение между общим количеством пакетов и количеством отброшенных пакетов.

Резюме

В данной главе была рассмотрена аппаратная структура маршрутизаторов серии 7500, для которой характерна шина данных со скоростью передачи 1 Гбит/с — так называемая CyBus. Центральный процессор подсистемы RSP поддерживает методы быстрой и оптимальной коммутации, а также коммутации с помощью процесса. Устройства на основе VIP-процессоров распределяют работу по коммутации пакетов между центральными процессорами VIР и тем самым обеспечивают масштабируемость маршрутизаторов серии 7500.