TCAM в коммутаторах Cisco

Дорогие читатели. В процессе подготовки к CCNP Switch я написал несколько статей, которые наиболее полно объясняют место и функции TCAM. Не смотря на то, что статьи весьма развесистые, я рекомендую вам ознакомится именно с ними: 1 2 3

Коммутаторы Cisco Catalyst используют внутреннюю архитектуру, построенную на Ternary Content Addressable Memory (тут и далее TCAM), которая применяется для коммутации, маршрутизации, фильтрации и тп:

    • Если найдено вхождение в CAM по MAC адресу получателя происходит коммутация фрейма.
    • Если найдено вхождение по IP адресу происходит маршрутизация пакета.
    • Если найдено вхождение по паре адресов отправителя и получателя и/или портов, то такое успешное вхождение можно использовать для ACL, QoS или PBR.

Перед тем, как мы перейдем к TCAM давайте поговорим о CAM таблицах.

Процесс коммутации на втором уровне

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

Каждый порт может иметь несколько входящих и исходящих очередей. Используя QoS можно назначить очередям различные приоритеты.

Но перед тем как коммутатор просто перенесет фрейм из входящей очереди одного порта в входящую очередь другого он должен совершить поиск в двух таблицах:

  • CAM (Content Addressable Memory) – Cisco термин для обозначения MAC таблиц, в некоторой литературе упоминается как L2 Forwarding Table;
  • TCAM – Ternary Content Addressable Memory (TCAM), которая содержит не только MAC/QOS Access Lists, на основании которых возможно производить фильтрацию и приоритезацию трафика, но и ACL, на основании которых можно фильтровать пакеты, по адресу отправителя/получателя и/или TCP/UDP порту. Такие TCAM можно встретить в multilayer коммутаторах (MLS) и некоторых маршрутизаторах.

Не стоит думать о CAM как о обычной RAM. В RAM операционная система берет адрес и получает данные находящиеся по данному адресу. В CAM операционная система берет какую-либо информацию и получает список всех адресов в которых находится искомая информация. Иными словами CAM выполняет поиск по всей памяти за одну операцию. Это и позволяет заниматься коммутацией на скоростях интерфейса. Обычно CAM способны искать только нули и единицы. MAC таблицы коммутаторов обычно хранятся внутри таких двоичных CAM.

Если CAM производит поиск только по двоичным атрибутам (1,0), то у TCAM появляется третье состояние – “x”, которое является маской, означающей что значение в этом состоянии может быть любым. Особенно хорошо вся это богодельня работает в сетях (читай маски подсети). Для вычисления адреса сети мы вычленяем биты, до которых нам нет дела, затем мы применяем логическую операцию “И” для всего остального. Так MLS способны хранить целиком таблицы маршрутизации в TCAM (FIB + Adjacency tables), что позволяет заниматься не только коммутацией, но и маршрутизацией на высоких скоростях, однако FIB не подразумевает TCAM. Так, к примеру, маршрутизатор CRS-1 использует ASIC + DRAM/SRAM для хранения FIB.

Посмотреть использование TCAM на коммутаторах Cisco можно следующим образом:

C2960S-24-B01-P#sh platform tcam utilization

CAM Utilization for ASIC# 0                      Max            Used
                                             Masks/Values    Masks/values

 Unicast mac addresses:                       8412/8412        197/197
 IPv4 IGMP groups + multicast routes:          384/384           1/1
 IPv4 unicast directly-connected routes:       320/320           7/7
 IPv4 unicast indirectly-connected routes:       0/0             7/7
 IPv6 Multicast groups:                        320/320          11/11
 IPv6 unicast directly-connected routes:       256/256           1/1
 IPv6 unicast indirectly-connected routes:       0/0             1/1
 IPv4 policy based routing aces:                32/32           12/12
 IPv4 qos aces:                                384/384          41/41
 IPv4 security aces:                           384/384          37/37
 IPv6 policy based routing aces:                16/16            8/8
 IPv6 qos aces:                                 60/60           31/31
 IPv6 security aces:                           128/128           9/9

Note: Allocation of TCAM entries per feature uses
a complex algorithm. The above information is meant
to provide an abstract view of the current TCAM utilization

– например выхлоп с одного из моих access коммутаторов.

По мотивам http://anticisco.ru/forum/viewtopic.php?f=2&t=4503