2.4 Режимы ретрансляции дейтаграмм
В маршрутизаторах Cisco могут применяться несколько режимов обработки (ретрансляции) поступающих дейтаграмм процессором маршрутизатора (switching paths, не путать с коммутацией кадров ЛВС - LAN switching). Под ретрансляцией понимается анализ заголовков поступившей дейтаграммы, выбор маршрута и перемещение дейтаграммы к выходному интерфейсу. Ниже режимы ретрансляции рассмотрены в порядке возрастания их производительности. См. также информацию на сайте Cisco: документ1, документ2.
2.4.1 Process switching
Это наиболее медленный, но универсальный режим. В этом режиме поступившая в маршрутизатор дейтаграмма помещается в очередь и ожидает запуска процесса, который будет ее обрабатывать. Process switching выполняется в следующих случаях:
необходим поиск маршрута в таблице маршрутов (необходимой информации нет в маршрутном кэше или маршрутный кэш не задействован - fast switching не включен);
необходима проверка по списку доступа (фильтрация, маршрутизация по особым условиям);
необходимы шифрование или сжатие дейтаграммы;
в других случаях, когда требуются "нетривиальные" действия по обработке дейтаграммы.
2.4.2 Fast switching
Этот режим установлен по умолчанию для малых и средних маршрутизаторов (до серии 7000 исключительно) и включается, когда не требуется process switching. В режиме fast switching поступившая в маршрутизатор дейтаграмма обрабатывается в течение одного прерывания. Для определения маршрута дейтаграммы используется кэш в виде двоичного дерева. Индексом элемента кэша является IP-адрес сети или узла назначения дейтаграммы, а значением - пара: выходной интерфейс через который надо отправить дейтаграмму, и канальный адрес следующего маршрутизатора (например, MAC-адрес). Если адрес назначения отсутствует в кэше, то дейтаграмма ретранслируется в режиме process switching, а следующие дейтаграммы, направленные на тот же адрес, могут ретранслироваться в режиме fast switching.
Fast switching имеет следующие недостатки.
Канальные адреса следующих маршрутизаторов хранятся в кэше вместе с именами выходных интерфейсов. Любой из этих адресов в любой момент может быть изменен (естественно, без уведомления), в результате чего информация в кэше может оказывается некорректной, и запись о маршруте из кэша удаляется (хотя на уровне IP-адресов запись по-прежнему справедлива).
Для уменьшения вероятности использования устаревшей записи, а также для борьбы с раздуванием кэша, записи в кэше периодически инвалидируются (1/20 кэша инвалидируется каждую минуту).
Необходимость применения process switching для дейтаграмм, чей адрес назначения отсутствует в кэше. Это относится к дейтаграммам, следующим на адреса, которые еще не встречались маршрутизатору (или были удалены из кэша в процессе чистки), а также к дейтаграммам, следующим на несуществующие (неизвестные) адреса.
Неоптимальная структура индексного дерева. Например, если в таблице маршрутов есть маршруты к префиксам 1.2.0.0/16 через А и 1.2.3.0/24 через В (всего 2 записи), то в кэш будут внесены 256 записей: 1.2.0.0/24, ..., 1.2.255.0/24, из которых 255 будут указывать на узел А и одна - на узел В. Также для непосредственно подсоединенных сетей в кэш вносятся записи с маской /32 для каждого узла сети с указанием его MAC-адреса.
Не поддерживается балансировка нагрузки (поддержка альтернативных маршрутов).
2.4.3 Optimum switching
Режим optimum switching аналогичен режиму fast switching с той разницей, что кэш теперь организован в виде дерева размерности 256 (так называемое M-tree). Этот режим более производителен, чем fast switching, но требует большего объема оперативной памяти. Optimum switching работает только на RSP-процессорах (маршрутизаторы серий 7ххх) и был режимом по умолчанию в версиях IOS до 12.0.
2.4.4 CEF - Cisco Express Forwarding
CEF - наиболее передовой из режимов обработки дейтаграмм. CEF в реальном времени строит маршрутный кэш, который является полным отображением таблицы маршрутов. При изменениях в таблице маршрутов соответствующие изменения тут же вносятся в кэш.
Кэш состоит из двух частей: базы данных FIB (Forward Information Base) и таблицы Adjacency table. FIB содержит соответствия между IP-адресами получателей и IP-адресами следующих маршрутизаторов. FIB реализована в дерево-подобной структуре M-trie размерности 256. Adjacency table - это таблица канальных адресов следующих маршрутизаторов (в частности, MAC-адресов Ethernet). Элемент FIB является ссылкой на строку в Adjacency table.
Благодаря вынесению MAC-адресов в отдельную таблицу, база данных FIB не теряет актуальность при изменениях MAC-адресов следующих маршрутизаторов, что повышает производительность обработки дейтаграмм. Кроме того, такая организация кэша делает возможным распределение нагрузки между двумя и более каналами, ведущими к одной сети назначения.
Поскольку база данных FIB строится непосредственно при создании (модификации) таблицы маршрутов и включает в себя все известные маршруты, CEF не требует ретранслировать дейтаграмму в режиме process switching при отсутствии маршрутной информации в кэше. Если маршрутной информации в кэше нет, то дейтаграмма не может быть доставлена и уничтожается.
В маршрутизаторах серий 7ххх, начиная с IOS весии 12.0, CEF включен по умолчанию.
2.4.5 Distributed CEF
Distributed CEF (dCEF) доступен на маршрутизаторах, оборудованных отдельными процессорами, обслуживающими интерфейсные карты (7500, 12000, Cat6500 с картами DFC). В режиме dCEF маршрутный кэш копируется в каждый интерфейсный процессор и тот самостоятельно принимает решения по обработке дейтаграмм, не задействуя центральный процессор маршрутизатора.