TCAM (Ternary Content Addressable Memory) позволяет нам искать неточные совпадения. Так, например, нам может быть важна первая половина IP-адреса, но не вторая половина IP-адреса. Всякий раз, когда мы собираемся искать что-либо, кроме адресов Mac, мы будем полагаться на TCAM.
Слово Ternary относится к трем разным вариантам значений в TCAM:
Мы можем искать совпадения по значению 0
Мы можем искать совпадения по значению 1
Или
Мы можем искать совпадения по значению X
X – значит, что нам все равно какое значение.
Как и в случае с CAM, он построен на высокоскоростной памяти.
TCAM это именно то, что нам нужно для таблиц IP-маршрутизации, где мы используем IP-адреса и сетевые маски, а также списки контроля доступа или ACL. А также QoS - еще один крупный потребитель пространства TCAM.
Поиск записей по всем этим параметрам практически не влияет на производительность сетевого устройства, потому что он происходит за счет высокопроизводительной памяти. Мы ведь не хотим, чтобы наш коммутатор зависал всякий раз, когда он начнет применять QoS.
TCAM таблица хранит входящие записи в value, mask и result format.
Value – это то, что мы проверяем, то есть им может быть ip-адресс. Как правило, это он и есть.
Mask – это сетевая маска.
Например, значение value может быть (0,1). А mask - (x), что будет значить – любая маска.
Result format – зависит от того, что именно мы применяем. Если мы говорим о ACL, то это значение будет Allow или Deny. Если это routing table, то результатом может быть next hop адрес.
Механизм обработки этой информации и называется content-addressable lookup. И точно также как и в CAM, весь процесс поиска и выдача результата делается за один цикл ЦП.