Что такое tcam таблица

Русские Блоги

Три-State Content адресации памяти (TCAM) Принцип работы

CAM Это аббревиатура ассоциативной памяти, то есть «» Содержимое адресации памяти «Смысл, это память Lenovo память реализована на основе традиционной технологии хранения, и есть три основные операции CAM:

TCAM Это аббревиатура от троичной ассоциативной памяти, то есть «» Три состояния адресации памяти Содержание «Смысл этого вырабатывается из CAM. Состояние каждого битового бита в общей памяти CAM только два,» 0 «или» 1», и каждый бит бит в TCAM имеет три состояния. В дополнение к„0“и «1», есть «не волнует» состояние, поэтому его называют «три состояния», который реализуется с помощью маски, которая является третьим государством особенность TCAM. это может сделать как точные результаты матча, Fuzzy поиск матча И нет никакого третьего состояния, поэтому оно может быть выполнено только. Точный поиск матча 。

Производители TCAM устройств в основном включают кипарис, IDT и NetLogic. Эти три TCAM устройство называется Network Search Engine (NSE), NETWORK Search Accelerator (NSA) и наукоемкая процессора (КВР).

TCAM устройство имеет очень широкое применение в связи, главным образом:

Аппаратный метод TCAM находки предлагается в этом контексте. При использовании этого метода, все данные во всем пространстве ввода запрашивается в то же время, скорость находки не зависят от размера пространства данных идентичности, каждый тактового цикла завершает поиск, средняя скорость поиска в 6 раз алгоритм поиска SRAM, а в худшем случае может достигать 128 раз.

Есть три способа аппаратного дизайна для TCAM устройств, как показано ниже:

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

процессор сети NP Из заголовка, информация, которую вы должны найти эту информацию можно найти, должна быть построена как формат память TCAM, называется KEY Отказ Ключ в качестве входных данных из TCAM, после сравнения с элементом, если есть соответствующая запись, адрес, в котором элемент расположен, используется в качестве выходного сигнала, называют его Index Отказ Затем использовать индекс в качестве адреса ОЗУ, а также получить информацию, которую вы хотите от RAM, называемый Data Отказ И, наконец, возвращают данные в запущенным поиске работы. NP Затем завершить операцию поиска. На приведенном ниже рисунке показано применение и поиск Процесс TCAM в высокопроизводительных маршрутизаторов.
Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Основная единица хранения CAM и TCAM показана ниже:

Источник

Steinkäfer

среда, 21 сентября 2016 г.

Коммутация и маршрутизация на коммутаторах CISCO

Скомпилировано себе на память из нескольких источников. Основные источники:
http://twistedminds.ru/
http://xgu.ru/

CAM (Content Addressable Memory)

Enter 0 to disable aging Aging time in secon

SWG(config)#mac address-table static d8cb.8a9c.ffe8 vlan 19 interface gigabitEthernet3/1

SWG_PoE_4510#sh mac address-table count
MAC Entries for all vlans:
Dynamic Unicast Address Count: 656
Static Unicast Address (User-defined) Count: 0
Static Unicast Address (System-defined) Count: 9
Total Unicast MAC Addresses In Use: 665
Total Unicast MAC Addresses Available: 55000
Multicast MAC Address Count: 41
Total Multicast MAC Addresses Available: 32768

SWG_PoE_4510#traceroute mac d8cb.8a9c.ffe8 001d.71dd.69c1
Source d8cb.8a9c.ffe8 found on SWG_PoE_4510
1 SWG_PoE_4510 (10.100.10.254) : Gi3/1 => Te6/1
2 SWT1_PLK (10.100.18.89) : Gi1/1/3 => Gi1/0/24
Destination 001d.71dd.69c1 found on SWT1_PLK
Layer 2 trace completed

TCAM (Ternary Content-Addressable Memory)

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

Switch(config)# access-list 100 permit ip host 1.1.1.1 host 2.2.2.2

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

ARP таблица

ARP таблица хранит соответствие IP-адреса с MAC-адресом, чтобы обеспечить передачу IP-данных на уровне 2 домена широковещательной рассылки. Например, узел B должен отправить данные в узел A, но в его кэше ARP отсутствует MAC-адрес узла A. Узел B генерирует широковещательное сообщение для всех узлов, принадлежащих домену широковещательной рассылки, чтобы получить MAC-адрес, соответствующий IP-адресу узла A. ARP-запрос получают все узлы домена широковещательной рассылки, но ответ, содержащий требуемый MAC-адрес, отправляется только из узла А.

Процесс коммутации/маршрутизации в MLS

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаПакет забирается с одной из входящих очередей и происходит исследование L2 и L3 адресов получателей. Решение о том куда направить пакет происходит на основании CAM и FIB таблиц. Решение о том как отправить пакет (и отправлять ли вообще) принимается на основании ACL и QOS политик. Стоит отметить, что поиск по CAM, FIB, QOS, ACL происходит одновременно.

Cisco Express Forwarding (CEF)

Cisco Express Forwarding (CEF) — технология высокоскоростной маршрутизации/коммутации пакетов, использующаяся в маршрутизаторах и коммутаторах третьего уровня фирмы Cisco Systems, и позволяющая добиться более быстрой и эффективной обработки транзитного трафика.

Функционал, который поддерживает CEF:

Forwarding Information Base (FIB)

Посмотреть информацию о данных, расположенных в FIB таблицы можно с помощью команды:
SWG_PoE_4510#sh ip cef
Prefix Next Hop Interface
0.0.0.0/0 no route
0.0.0.0/8 drop
0.0.0.0/32 receive
10.0.0.20/30 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.4/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.5/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.6/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.7/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.8/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.9/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.10/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.11/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711
10.10.10.12/32 10.100.0.170 Vlan704
10.100.0.173 Vlan711

Источник

CAM-table или MAC-table? Кругом голова!

Когда мы говорим об обычной памяти, такой как RAM (Random Access Memory), мы, в общем-то, говорим о предоставлении местонахождения данных. То есть мы знаем точно, где наши данные хранятся. Нам просто нужно вернуть эти данные. И в ответ на этот поиск мы возвращаем значение (value), которое представляет собой данные, запрошенные нами.

CAM-таблица строится на основе высокоскоростной памяти. Нам нужен высокоскоростной ответ на запрос в отношении сетевого трафика. Поиск в таблице CAM может происходить за один цикл ЦП. Мы можем просканировать всю таблица CAM за один раз.

Что именно хранится в CAM таблице таки? Мы храним в ней три вида информации: это МАС-адреса, это интерфейсы и это VLAN ID. Таблица заполняется этими данными по ходу прохождения траффика через коммутатор.

Приведем пример. Пусть у нас будет коммутатор с тремя интерфейсами: 1,2,3 и одним VLAN ID 10 на этих интерфейсах. На один из этих интерфейсов приходит Ethernet-frame:

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Фрейм будет иметь адрес отправления и адрес назначения. Назовем адрес назначения МАС-адресом A. Наш коммутатор, прежде всего, запомнит на какой интерфейс пришел этот фрейм и каков адрес его отправления.

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

И это будет первой записью в нашей CAM-таблице.

Когда мы получим другой фрейм, скажем на интерфейс 3 и МАС-адресом B, то запись будет выглядеть таким же структурированным образом.

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Представим теперь интересную вещь. На интерфейс 2 поступит фрейм с МАС-адресом А, да, с тем, который уже значится за интерфейсом 1. Как поведет себя САМ-таблица в этом случае?

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Прежде всего, она добавит эту запись по тому же принципу, что и два предыдущих фрейма.

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

А после удалит первую запись, потому что она дублирована и потому что мы будем думать, что устройство с МАС-адресом A переместилось, может быть в силу беспроводного роуминга, или может его просто переключили в другой порт.

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Теперь скажем, что поступает фрэйм с адресом назначения MAC:A

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Нам нужно отправить этот фрейм точно к адресу назначения и вот тут-то мы и приходим к понимаю того, зачем мы строили и наполняли CAM таблицу. Мы сделаем вещь, которую сложно перевести на русский – content addressable lookup, запрос соответствующего адреса из таблицы САМ. И САМ нам ответит, что адрес А расположен за интерфейсом 1 в VLAN 10 и отправит этот фрейм соответствующим путем.

А если придет фрейм с адресом назначения, скажем, D, которого у нас нет в таблице. Что будет тогда? Тогда коммутатор отправит этот фрейм на все порты, принадлежащие VLAN 10 – широковещательная рассылка, flooding.

Источник

1. Коротко о судьбе и пути пакета

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

Следующую схему мы выберем в качестве отправной точки. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаНезависимо от того, что за устройство, как реализована обработка трафика, пакету нужно пройти такой путь.

Эта упрощённая схема более или менее универсальна.
Немного усложним её, рассмотрев стек протоколов.
Например, IP-маршрутизатор должен сначала из электрического импульса восстановить поток битов, далее распознать, какой тип канального протокола используется, определить границы кадра, снять заголовок Ethernet, узнать что под ним (пусть IP), передать IP-пакет на дальнейшую обработку.
Тогда схема примет такой вид: Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

*Порядок выполнения операция приблизительный и может зависеть от реализации.

Все перечисленные выше шаги декомпозируются на сотни более мелких, каждый из которых должен быть реализован в железе или в ПО.
Вот и вопрос — в железе или ПО. Он преследует мир IP-сетей с момента их основания и, как это водится, развитие происходит циклически.
Есть вещи тривиальные, для которых элементная база существует… ммм… с 60-х. Например, АЦП, аппаратные очереди или CPU.
А есть те, которые стали прорывом относительно недавно.
Часть функций всегда была и будет аппаратной, часть — всегда будет программной, а часть — мечется, как та обезьяна.

В этой статье мы будем преимущественно говорить об аппаратных устройствах, лишь делая по ходу ремарки по поводу виртуальных.

2. Уровни и плоскости

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаМы столько раз прежде использовали эти понятия, что пора им уже дать определения.
В работе оборудования можно выделить три уровня/плоскости:

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Forwarding/Data Plane

Плоскость пересылки.
Главная задача сети — доставить трафик от одного приложения другому. И сделать это максимально быстро, как в плане пропускной способности, так и задержек.
Соответственно главная задача узла — максимально быстро передать вошедший пакет на правильный выходной интерфейс, успев поменять ему заголовки и применив политики.
Поэтому существуют заранее заполненные таблицы передачи пакетов — таблицы коммутации, таблицы маршрутизации, таблицы меток, таблицы соседств итд.
Реализованы они могут быть на специальных чипах CAM, TCAM, работающих на скорости линии (интерфейса). А могут быть и программными.

Control Plane

Плоскость управления.
Всему голова. Она заранее заполняет таблицы, по которым затем будет передаваться трафик.
Здесь работают протоколы со сложными алгоритмами, которые дорого или невозможно выполнить аппаратно.
Например, алгоритм Дейкстры реализовать на чипе можно, но сложно. Так же сложно сделать выбор лучшего маршрута BGP или определение FEC и рассылку меток. Кроме того, для всего этого пришлось бы делать отдельный чип или часть чипа, которая практически не может быть переиспользована.
В такой ситуации лучше пожертвовать сабсекундной сходимостью в пользу удобства и цены.
Поэтому ПО запускается на CPU общего назначения.
Получается медленно, но гибко — вся логика программируема. И на самом деле скорость на Control Plane не важна. Однажды вычисленный маршрут инсталлируется в FIB, а дальше всё на скорости линии.
Вопрос скорости Control Plane возникает при обрывах, флуктуациях на сети, но он сравнительно успешно решается механизмами TE HSB, TE FRR, IP FRR, VPN FRR, когда запасные пути готовятся заранее на том же Control Plane.

Работа и реализация Control Plane универсальна: ЦПУ + оперативная память: работает одинаково хоть на стоечных маршрутизаторах, хоть на виртуальных сетевых устройствах.
Эта система — не мысленный эксперимент, не различные функции одной программы, это действительно физически разделённые тракты, которые взаимодействуют друг с другом.
Началось всё с разнесения плоскостей на разные платы. Далее появились стекируемые устройства, где одно выполняло интеллектуальные операции, а другое было лишь интерфейсным придатком.
Вчерашний день — это системы вроде Cisco Nexus 5000 Switch + Nexus 2000 Fabric Extender, где 2000 выступает в роли выносной интерфейсной платы для 5000.
Где-то в параллельной Вселенной тихо живёт SDN разлива 1.0 — с Openflow-like механизмами, где Control Plane вынесли на внешние контроллеры, а таблицы пересылок заливаются в совершенно глупые коммутаторы.
Наша реальность и ближайшее будущее — это наложенные сети (Overlay), настраиваемые SDN-контроллерами, где сервисы абстрагированы от физической топологии на более высоком уровне иерархии.
И несмотря на то, что с каждой статьёй мы всё глубже погружаемся в детали, мы учимся мыслить свободно и глобально.
Разделение на Control и Forwarding Plane позволило отвязать передачу данных от работы протоколов и построения сети, а это повлекло значительное повышение масштабируемости и отказоустойчивости.
Так один модуль плоскости управления может поддерживать несколько интерфейсных модулей.
В случае сбоя на плоскости управления механизмы GR, NSR, GRES и ISSU помогают плоскости пересылки продолжать работать будто ничего и не было.

Management Plane

Плоскость или демон наблюдения. Не всегда его выделяют в самостоятельную плоскость, относя его задачи к Control Plane, а иногда, выделяя, называют Monitoring.
Этот модуль отвечает за конфигурацию и жизнедеятельность узла. Он следит за такими параметрами, как:

Итак: Forwarding Plane — передача трафика на основе таблиц пересылок — собственно то, из чего оператор извлекает прибыль.
Control Plane — служебный уровень, необходимый для формирования условий для работы Forwarding Plane.
Management Plane — модуль, следящий за общим состоянием устройства.
Вместе они составляют самодостаточный узел в сети пакетной коммутации. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаРазделение на Control и Forwarding/Data Plane — не абстрактное — их функции действительно выполняют разные чипы на плате.
Так Control Plane обычно реализован на связке CPU+RAM+карта памяти, а Forwarding Plane на ASIC, FPGA, CAM, TCAM.
Но в мире виртуализации сетевых функций всё смешалось — эту ремарку я буду делать до конца статьи.

3. История способов обработки трафика

Сейчас с Forwarding Plane всё отлично: 10 Гб/с, 100 Гб/с — не составляют труда — плати и пользуйся. Любые политики без влияния на производительность. Но так было не всегда.
В чём сложности?
В первую очередь это вопрос организации вышеописанных трактов: что делать с электрическим импульсом из одного кабеля и как его передать в другой — правильный.
Для этого на сетевых устройствах есть букет разнообразных чипов.
Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЭто пример интерфейсной платы Cisco
Так, например, микросхемы (ASIC, FPGA) выполняют простые операции, вроде АЦП/ЦАП, подсчёта контрольных сум, буферизации пакетов.
Ещё нужен модуль, который умеет парсить, анализировать и формировать заголовки пакетов.
И модуль, который будет определять, куда, в какой интерфейс, пакет надо передать. Делать это нужно для каждого божьего пакета.
Кто-то должен также следить и за тем, можно ли этот пакет пропускать вообще. То есть проверить его на предмет подпадания под ACL, контролировать скорость потока и отбросить, если она превышена.
Сюда же можно вписать и более комплексные функции трансляции адресов, файрвола, балансировки итд.
Исторически все сложные действия выполнялись на CPU. Поиск подходящего маршрута в таблице маршрутизации был реализован как программный код, проверка на удовлетворение политикам — тоже. Процессор с этим справлялся, но только он с этим и справлялся.
Чем это грозит понятно: производительность будет падать тем сильнее, чем больше трафика устройство должно перемалывать и чем больше функций мы будем вешать на него. Поэтому одна за другой большинство функций были делегированы на отдельные чипы.
И из обычного x86-сервера маршрутизаторы превратились в специализированные сетевые коробки, набитые непонятными деталями и интерфейсами. А Ethernet-хабы переродились в интеллектуальные коммутаторы.
Функции по парсингу заголовков и их анализу, а также поиску выходного интерфейса взяли на себя ASIC, FPGA, Network Processor.
Обработка в очередях, обеспечение QoS, управление перегрузками — тоже специализированные ASIC.
Такие вещи, как стейтфул файрвол, остались на ЦПУ, потому что количество сессий несъедобное.
Другой вопрос: мы где-то должны хранить таблицы коммутации. В чём-то быстром.
Первое, что приходит в голову — это классическая оперативная память.
Проблема с ней в том, что обращение к ней идёт по адресу ячейки, а возвращает она уже её содержимое (или контент, не по-русски если).
Однако входящий пакет несёт в себе никак не адрес ячейки памяти, а только MAC, IP, MPLS.
Тогда бы нам пришлось иметь некий хэш алгоритм, который, задействуя CPU, высчитывал бы адрес ячейки и извлекал оттуда нужные данные.

Вот только пропускная способность порта в 10 Гб/с означает, что CPU должен передавать 1 бит каждые 10 нс. И у него есть порядка 80 мкс, чтобы передать пакет размером в один килобайт.
Впрочем, вычисление хэша — алгоритм очень простой, и любой мало-мальски уважающий себя ASIC с этим справится. Инженерам был адресован вопрос — а что дальше делать с хэшем?
Так появилась память CAM — Content Addressable Memory. Её адреса — это хэши значений. В своей ячейке CAM содержит или ответное значение (номер порта, например) или чаще адрес ячейки в обычной RAM.
То есть пришёл Ethernet-кадр, ASIC’и его разорвали на заголовки, вытащили DMAC — прогнали его через CAM и получили вожделенный исходящий интерфейс. Подробнее о CAM дальше.

Что с тобой не так, IP?!

Я не зря взял в пример Ethernet-кадр. С IP совсем другая история.
MAC-коммутация — это просто: ни тебе агрегации маршрутов, ни тебе Longest Prefix Match — только 48 уникальных бит.
А вот в IP это всё есть. У нас может быть несколько маршрутов в Таблице Маршрутизации с разными длинами масок и выбрать нужно наидлиннейшую. Это базовый принцип IP-маршрутизации, с которым не поспоришь и не обойдёшь. Кроме того есть сложные ACL с их Wildcard-масками.
Долгое время решения этой проблемы не существовало. На заре сетей с пакетной коммутацией IP-пакеты обрабатывались на CPU. И главная проблема этого — даже не коммутация на скорости линии (хотя и она тоже), а влияние дополнительных настроек на производительность. Вы и сейчас можете это увидеть на каком-нибудь домашнем микротике, если настроить на нём с десяток ACL — сразу заметите, как просядет пропускная способность. Интернет разрастался, политик становилось всё больше, а требования к пропускной способности подпрыгивали скачкообразно, и CPU становился камнем преткновения. Тем более учитывая, что поиск маршрута подчас приходилось делать не один раз, а рекурсивно погружаться всё глубже.
Так в лихие 90-е зародился MPLS. Какая блестящая идея — построить заранее путь на Control Plane. Адресацией в MPLS будет метка фиксированной длины, и соответственно нужна единственная запись в таблице меток, что с пакетом дальше делать. При этом мы не теряем гибкости IP, поскольку он лежит в основе, и можем использовать CAM. Плюс заголовок MPLS — короток (4 байта против 20 в IP) и предельно прост.
Однако по иронии судьбы в то же время инженеры совершили прорыв, разработав TCAM — Ternary CAM. И с тех пор ограничений уже почти не было (хотя не без оговорок).
Подробнее от TCAM дальше.
Что же до MPLS, который ввиду данного события должен был скоропостижно скончаться, едва родившись, то он прорубил себе дверь в другой дом. Но об этом мы уже наговорились.

О дивный новый мир

В последнее десятилетие вокруг SDN и NFV поднялся небезосновательный хайп. Развитие виртуализации и облачных сервисов, как её квинтэссенция, предъявляет к сети такие требования, которые не могут удовлетворить традиционные устройства и подходы.

Поэтому большая часть сетевой инфраструктуры ЦОДов сейчас виртуализируется. А это предполагает переход от аппаратной архитектуры к гибридной. CAM, TCAM, NP, ASIC сейчас заменяются на связку DPDK с более умными сетевыми картами, которые тоже поддерживают виртуалиацию — SR-IOV — и забирают на свои чипы некоторую часть рутинной работы.
Кроме того, с развитием алгоритмических методов поиска, сегодня сокращается необходимость в CAM/TCAM на традиционных коммутаторах и маршрутизаторах.
Таким образом мы снова становимся свидетелями сдвига парадигмы в вопросе реализации Forwarding Plane.
Но мы пока остаёмся в сфере аппаратной пересылки и теперь давайте подробнее обо всех чипах.

4. Типов-чипов

Я не ставлю целью данной статьи описать все существующие чипы — только те, что используются в сетевом оборудовании.

CPU — Central Processing Unit

Самый медленный, но самый гибкий элемент устройства — центральный процессор.
Он занимается обработкой протокольных пакетов и сложного поведения. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЕго прелесть в том, что он управляется запущенными приложениями и «многозадачен». Логику легко изменить, просто поправив программный код.
Такие вещи, как SPF, установка соседства по всем протоколам, генерация логов, аварий, подключение к пользовательским интерфейсам управления — все действия со сложной логикой — происходят на нём.
Собственно, поэтому, например, вы можете наблюдать, что при высокой загрузке CPU становится некомфортно работать в консоли. Хотя трафик при этом ходит уверенно.
CPU берёт на себя функции Control Plane.
На устройствах с программной пересылкой, участвует также и в Forwarding Plane.
CPU может быть один на весь узел, а может быть отдельно на каждой плате в шасси при распределённой архитектуре.
Результаты своей работы CPU записывает в оперативную память ↓.

RAM — Random Access Memory

Классическая оперативная память — куда без неё? Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаМы ей адрес ячейки — она нам содержимое.
В ней хранятся, так называемые Soft Tables (программные таблицы) — таблицы маршрутизации, меток, MAC-адресов.
Когда вы выполняете команду «show ip route», запрос идёт именно в оперативку к Soft Tables.
CPU работает именно с оперативной памятью — когда он посчитал маршрут, или построил LSP — результат записывается в неё. А уже оттуда изменения синхронизируются в Hard Tables в CAM/TCAM↓.
Кроме того, периодически происходит синхронизация всего содержимого всех таблиц на случай, если вдруг по какой-то причине инкрементальные изменения не спустились корректно.
Soft Tables не может быть непосредственно использован для передачи данных, потому что слишком медленно — обращение к оперативке идёт через ЦПУ и требуется алгоритмический поиск, затратный по времени. С оговоркой на NFV.
Кроме того на чипах RAM (DRAM) реализованы очереди: входные, выходные, интерфейсные.

CAM — Content-Addressable Memory

Это особо-хитрый вид памяти.
Вы ей — значение, а она вам — адрес ячейки.
Content-Addressable означает, что адресация базируется на значениях (содержимом). Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЗначением, например, может быть, например DMAC. CAM прогоняет DMAC по всем своим записям и находит совпадение. В результате CAM выдаст адрес ячейки в классической RAM, где хранится номер выходного интерфейса. Дальше устройство обращается к этой ячейке и отправляет кадр, куда положено.
Для достижения максимальной скорости CAM и RAM располагаются очень близко друг к другу.

Не путать данную RAM с RAM, содержащей Soft Tables, описанной выше — это разные компоненты, расположенные в разных местах.

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаПрелесть CAM в том, что она возвращает результат за фиксированное время, не зависящее от количества и размера записей в таблице — О(1), выражаясь в терминах сложностей алгоритмов.
Достигается это за счёт того, что значение сравнивается одновременно со всеми записями. Одновременно! А не перебором.
На входе каждой ячейки хранения в CAM стоят сравнивающие элементы (мне очень нравится термин компараторы), которые могут выдавать 0 (разомкнуто) или 1 (замкнуто) в зависимости от того, что на них поступило и что записано. В сравнивающих элементах записаны как раз искомые значения.
Когда нужно найти запись в таблице, соответствующую определённому значению, это значение прогоняется одновременно через ВСЕ сравнивающие элементы. Буквально, электрический импульс, несущий значения, попадает на все элементы, благодаря тому, что они подключены параллельно. Каждый из них выполняет очень простое действие, выдавая для каждого бита 1, если биты совпали, и 0, если нет, то есть замыкая и размыкая контакт. Таким образом та ячейка, адресом которой является искомое значение, замыкает всю цепь, электрический сигнал проходит и запитывает её.
Вот архитектура такой памяти: Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаИсточник картинки.
Вот пример работы roman/teaching/1388/2004/finalProj/2004_ECE1388_FP_www/LRU_Cache/vlsi_final_report_v4_files/image076.jpg» /> Картинка из прелюбопытнейшего документа.
А это схема реализации: Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаИсточник картинки.
Это чем-то похоже на пару ключ-замок. Только ключ с правильной геометрией может поставить штифты замка в правильные положения и провернуть цилиндр.
Вот только у нас много копий одного ключа и много разных конфигураций замков. И мы вставляем их все одновременно и пытаемся провернуть, а нужное значение лежит за той дверью, замок которой ключ откроет.
Для гибкого использования CAM мы берём не непосредственно значения из полей заголовков, а вычисляем их хэш.
Хэш-функция используется для следующих целей:

Именно хэш закодирован в сравнивающие элементы. Именно хэш искомого значения будет сравниваться с ними.
По принципу CAM схож с хэш-таблицами в программировании, только реализованными на чипах.
В этот принцип отлично укладывается также MPLS-коммутация, почему MPLS и сватали в своё время на IP.
Например:

TCAM — Ternary Content-Addressable Memory

Возвращаемся к вопросу, что не так с IP.
Если мы возьмём описанный выше CAM, то на любой DIP он очень редко сможет вернуть 1 во всех битах.
Дело в том, что DIP — это всегда один единственный адрес, а маршруты в таблице маршрутизации — это подсеть или даже агрегация более мелких маршрутов. Поэтому полного совпадения быть почти не может — кроме случая, когда есть маршрут /32.
Перед разработчиками чипов стояло два вопроса:

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаОтветом стал TCAM, в котором «T» означает «троичный»». Помимо 0 и 1 вводится ещё одно значение Х — «не важно» (CAM иногда называют BCAM — Binary, поскольку там значения два — 0 и 1). Тогда результатом поиска нужной записи в таблице коммутации будет содержимое той ячейки, где самая длинная цепочка 1 и самая короткая «не важно».
Например, пакет адресован на DIP 10.10.10.10.
В Таблице Маршрутизации у нас следующие маршруты:

В сравнивающие элементы TCAM записываются биты маршрута, если в маске стоит 1, и «не важно», если 0.
При поиске нужной записи TCAM, как и CAM, прогоняет искомое значение одновременно по всем ячейкам. Результатом будет последовательность 0, 1 и «не важно».
Только те записи, которые вернули последовательность единиц, за которыми следуют «не важно» участвуют в следующем этапе селекции.
Далее из всех результатов выбирается тот, где самая длинная последовательность единиц — так реализуется правило Longest prefix match.
Очевидно, что мы-то своим зорким взглядом, сразу увидели, что это будет маршрут 10.10.10.8/29. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаИсточник картинки.
Решение на грани гениальности, за которое пришлось заплатить большую цену. Из-за очень высокой плотности транзисторов (у каждой ячейки их свой набор, а ячеек должны быть миллионы) они греются не меньше любого CPU — нужно решать вопрос отвода тепла.
Кроме того, их производство стоит очень дорого, и не будет лукавством сказать, что стоимость сетевого оборудования и раньше и сейчас определяется именно наличием и объёмом TCAM.
Внимательный читатель обратил внимание на вопрос хэш-функций — ведь она преобразует изначальный аргумент во что-то совершенно непохожее на исходник, как же мы будем сравнивать 0, 1 и длины? Ответ: хэш функция здесь не используется. Описанный выше алгоритм — это сильное упрощения реальной процедуры, за деталями этого любознательного читателя отправлю к той же книге Hardware Defined Networking.
Однако память — это память — всего лишь хранит. Сама она трафик не передаёт — кто-то с ней должен взаимодействовать.

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

Тот компонент, который занимается передачей пакетов, называется чипом коммутации — FE — Forwarding Engine. Именно он парсит заголовки, запрашивает информацию в TCAM и перенаправляет пакеты к выходному интерфейсу. Работа с пакетом декомпозируется на множество мелких шагов, каждый из которых должен выполняться на скорости линии, и совокупное время отработки тракта должно быть адекватным требованиям сети.
Реализован FE может быть на Сетевых Процессорах (NP), FPGA и элементарных ASIC или их последовательности.
Вот с элементарных ASIC и начнём.

ASIC — Application Specific Integrated Circuit

Как следует из названия, это микросхема, решающая узкий спектр специфических задач. Алгоритм работы зашит в неё и не может быть изменён в дальнейшем.
Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаСоответственно, на ASIC ложатся рутинные операции, которые никогда не поменяются со временем.
ASIC занимается: АЦП, подсчёт контрольной суммы кадра, восстановление синхросигнала из Ethernet, сбор статистики принятых и отправленных пакетов. Например, мы наверняка знаем, где в кадре поле DMAC, его длину, как различить броадкастовые кадры, мультикастовые и юникастовые. Эти фундаментальные константы никогда не поменяются, поэтому функции, их использующие, могут быть алгоритмизированы аппаратно, а не программно.
Процесс разработки и отладки ASIC достаточно трудоёмок, поскольку в финальном чипе нет места ошибкам, зато когда он завершён, их можно отгружать камазами.
ASIC стоит дёшево, потому что производство простое, массовое, вероятность ошибки низкая, а рынок сбыта огромный.
Согласно документации Juniper, на части устройств их PFE (Packet Forwarding Engine) основан на последовательности ASIC’ов и не использует более сложных микросхем.

Хорошим примером использования ASIC’ов сегодня могут служить фермы по майнингу криптовалют. Эволюция привела этот процесс от CPU через кластеры GPU к ASIC’ам, специализированным исключительно на майнинге, что позволило, уменьшить размер, энергопотребление и тепловыделение, сделав процесс значительно дешевле и невероятно масштабируемым, напрочь сметя доморощенных крипто-бизнесменов с карты конкурентов.

Programmable ASIC

В последние годы наблюдается тенденция к реализации большинства функций на ASIC. Однако хочется оставить возможность программировать поведение. Поэтому появились так называемые Программируемые ASIC, которые обладают низкой стоимостью, высокой производительность и некоторой грибкостью. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

FPGA — Field Programmable Gate Array

Не всё по силам ASIC’ам. Всё, что касается минимального интеллекта и возможности повлиять на поведение чипа — это к FPGA. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЭто программируемая микросхема, в которую заливается прошивка, определяющая её роль в оборудовании.
Как и ASIC, FPGA изначально нацелен на решение какой-то задачи.
То есть FPGA для пакетной сети и для управления подачей топлива в инжектор двигателя — вещи разные и прошивкой одно в другое не превратишь.
Итак, имеем специализированный чип с возможностью управлять его поведением и модернизировать алгоритмы.
FPGA может использоваться для маршрутизации пакетов, перемаркировки, полисинга, зеркалирования.
Например, извне мы можем сообщить чипу, что нужно отлавливать все BGP и LDP пакеты, отправляемые на CPU, в .pcap файл.

Зачем здесь гибкость и возможность программирования? Примеров много:

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

Из-за гибкости возможностей FPGA иногда используются для обкатки какой-либо новой технологии, когда с помощью прошивки можно менять поведение компонента. И когда логика обкатана, можно запускать в производство ASIC, реализующий её.

NP — Network Processor

В оборудовании операторского класса, где требования как к пропускной способности, так и к протоколам, запущенным на устройстве, довольно высоки, часто используются специализированные чипы — сетевые процессоры — NP. В некотором смысле можно считать их мощными FPGA, направленными именно на обработку и передачу пакетов. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаКрупные телеком-вендоры разрабатывают свои собственные процессоры (Cisco, Juniper, Huawei, Nokia), для производителей помельче существуют предложения от нескольких гигантов, вроде Marvell, Mellanox.
Вот например презентация нового NP-чипа Cisco 400Gb/s Full-duplex: тыц. А это описание работы чипсета Juniper Trio, который однако позиционируется, как NISP (Network Instruction Set Processor), а не NP: тыц.
Немного маркетинга и суперэффектное видео о Nokia FP4: тыц
Задачи и возможности примерно те же, что и у FPGA. Дьявол кроется в деталях, куда мы уже не полезем.

5. Аппаратная архитектура коммутирующего устройства

Обычно всё-таки даже на недорогих коммутаторах не практикуют реализацию всего и вся на одном чипе. Это скорее, каскад из разных их типов, каждый из которых решает какую-то часть общей задачи.
Дальше мы посмотрим на референсную модель, как это «может» работать.
Для этой модели возьмём модульное шасси, состоящее из интерфейсных и управляющих модулей и фабрики коммутации.

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Работать оно будет со стандартной связкой IP, Ethernet.

Общая шина

Общая шина (она же Back Plane, она же Midplane) устройства, связывающая друг с другом все модули.
Обычно, это просто батарея медных контактов без каких-либо микросхем. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Управляющий модуль

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаНа нём расположены CPU, оперативная память, постоянная память для хранения ПО, конфигурации и логов, интерфейсы для управления.
Он отвечает за Management Plane и за Control Plane.
С ним мы работаем, когда подключаемся к устройству по telnet/ssh.
Он загружает ПО в оперативную память и запускает все другие модули при подаче питания.
Он следит за Heart beat других модулей — специальными пакетами, получение которых говорит о том, что модуль жив и работоспособен.
Он же может перезагрузить модуль, если Heart beat не получил (как программно, так и выключить питание на плате).
Протокольные пакеты доставляются на CPU и тот, обрабатывав их, совершает какое-то действие, как то: записать обновления в таблицы коммутации, сформировать ответный пакет, запросить информацию о каком-либо компоненте итд.
Управляющий модуль занимается расчётом SPF, LSP, установлением соседств по разным протоколам. Он записывает таблицы коммутации в Soft Tables оперативной памяти.

Интерфейсный модуль или линейная карта

Это модуль, который несёт на себе физические интерфейсы и FE (чип коммутации) и выполняет функции Forwarding Plane. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Модуль состоит из многих компонентов, которые могут быть реализованы как в одном чипе (System-on-Chip), так и на множестве отдельных в зависимости от класса устройства и архитектуры. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

PIC — Physical Interface Card

На PIC находятся интерфейсы и чип, который выполняет базовые операции с трафиком:

В случае, если линейная плата модульная, то интерфейсная карта будет извлекаемой и заменяемой.

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Обычно чипы PIC — это ASIC.

FE — Forwarding Engine

Как уже было описано выше, он реализует такие функции, как:

Далее ВНИМАНИЕ! Это один из наиболее важных моментов всей статьи!
Во-первых, FE делится на Ingress FE и Egress FE. Первый обрабатывает соответственно пакеты на входном тракте, второй — на выходном.
С одной стороны это разделение терминологическое — пакет пришёл на Ingress FE и далее должен быть отправлен на Egress FE, возможно, другой платы.
С другой, разделение — зачастую вполне физическое: внутри одного FE чипа живут эти две сущности: Ingress и Egress. Это и логично — ведь плата может быть как точкой входа, так и точкой выхода.
Во-вторых, именно входной FE определяет всю дальнейшую судьбу пакета в пределах узла:

* с небольшой оговоркой, что выходной тракт всё-таки может ещё произвести репликацию пакета или зарезать его из-за переполненного буфера.
В-третьих, FE должен идентифицировать протокольные пакеты в транзитном трафике и передавать их на CPU.
Соответственно и получать пакеты (или инструкции) от CPU — тоже его работа.
Рядом с FE находятся CAM, TCAM и RAM, куда FE обращается в поиске выходного интерфейса и проверки ACL.
Они хранят Hard Tables. Кроме того Ingress FE производит репликацию BUM трафика — он рассылает по одной копии пакета на каждый Egress FE. А Egress FE уже делает столько копий, во сколько интерфейсов нужно отправить

QoS или TM — Traffic Management

Иногда в самом FE, иногда как отдельный чип, дальше идёт чип QoS, совмещённый с очередью, вместе обычно носящие название Traffic Management.
Входная очередь (очередь на входном тракте) нужна для того, чтобы не переполнить выходную (очередь на выходном тракте).
Выходная очередь предназначена для избежания явления, известного, как Back Pressure — когда на чип FE пакеты поступают быстрее, чем он в состоянии обработать. Такая ситуация невозможна с Ingress FE, потому что к нему подключено такое количество интерфейсов, что трафик от них он в состоянии переварить, либо Ethernet через Flow Control возьмёт ситуацию под свой Control.
А вот на Egress FE трафик может сливаться со многих разных плат (читай Ingress FE) — и ему захлебнуться — это как два байта переслать.
Задача очереди не только сгладить всплески трафика, но и управляемо дропать пакеты, когда это становится неизбежным. А именно — выкидывать из очереди низкоприоритетные пакеты с бо́льшей вероятностью, чем высокоприоритетные. Причём отслеживать перегрузку желательно на уровне интерфейсов — ведь если через дестятигигабитный интерфейс нужно отправить 13 Гб/с трафика, то 3 из них однозначно будет отброшено, а четырёхсот-гигабитный FE при этом даже близок к перегрузке не будет.
Схема достаточно усложняется — две очереди, а значит, двойная буферизация, более того как-то надо по интерфейсам их подробить, встаёт ещё вопрос такой: а если один интерфейс перегружен, то вся входная очередь встанет? Эти сложности никак не разрешались ранее, однако сегодня они адресованы механизму VOQ — Virtual Output Queue. VOQ прекрасно описан вот в этой заметке.
В двух словах — это виртуализация всех очередей между различными FE. Имеется один физический чип памяти DRAM на входном тракте, который внутри разбит на виртуальные очереди. Количество входных очередей — по общему числу выходных. Выходная очередь больше не распологается реально на выходном модуле — она в том же самом DRAM — только виртуальная.
Таким образом (возьмём пример Juniper), если есть 72 выходных интерфейса по 8 очередей на каждом, итого получается 576 входных очередей на каждом интерфейсном модуле (читай TM). Если на устройстве 6 модулей, то оно должно поддерживать 3456 VOQ.
Это элегантно снимает вопрос двойной буферизации и проблем Head of Line Blocking, когда одна выходная очередь в момент перегрузки блокирует всю физическую входную — теперь с VOQ только ту виртуальную, которая с ней связана. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаКроме того пакет теперь отбрасывается при необходимости на входной очереди, и не нужно его отправлять на фабрику и забивать выходные очереди.
Что ещё важно знать про очереди, так это то, что даже те пакеты, которые предназначены на другой интерфейс этого же FE, должны пройти через входную и выходную очереди.
Это нужно для той же самой борьбы с Back Pressure. Только очереди могут защитить FE от перегрузок и отбрасывать лишний трафик согласно приоритетам, поэтому никакого прямого мостика для транзитного трафика между Ingress FE и Egress FE не предусмотрено.
На фабрику однако такой «локальный» трафик попадать не должен.
Но про QoS мы ещё поговорим в следующей части.

SerDes — Serializer, Deserializer

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

Распределённая плоскость упраления (Distributed Control Plane)

В случае распределённой архитектуры Control Plane на интерфейсной плате также могут располагаться ЦПУ и оперативная память. В этом случае большую часть работы на Control Plane может выполнять местный ЦПУ, разгружая тот, что расположен на управляющей плате.

Фабрика коммутации

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЕсли мы возьмём Hi-End маршрутизатор операторского класса, то обычно в нём может насчитываться до двух десятков интерфейсных плат, в каждой из которых установлен как минимум один чип коммутации FE. Каждый чип коммутации смотрит частью своих ног в сторону интерфейсов, а частью в сторону задней шины. И ног там предостаточно, потому что медная среда имеет свой предел по пропускной способности — нам не хватит одного-двух выходов. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаКак связать друг с другом два чипа коммутации? Ну просто же: Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаКак связать друг с другом три чипа? Ну, наверное, как-то так? Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаКак связать 8? Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаУверены? Ничего не смущает?
Пропускная способность системы из 8 чипов остаётся той же, что и у пары — ведь каждый раз мы уменьшаем количество ног для связи.
Второй момент, как нам вообще создать полносвязную топологию, если чипов, допустим, 16, и каждый из них имеет по 32 контакта? 16*15/2 пучков кабелей по 32 жилы в каждом?
Эта проблема была адресована неблокирующимся сетям Клоза или сетям без переподписки.
У нас есть входные коммутационные элементы (Ingress FE), выходные (Egress FE) и транзитные. Задача транзитных — связать входные с выходными. Любой входной связан с любым выходным через транзитный. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаВходные и выходные не связаны друг с другом напрямую, транзитные также не имеют связи.
Нужно больше входных и выходных коммутационных элементов — добавляем транзитных. Нужно ещё больше? Добавляем новый каскад транзитных: Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаВот этим и напичканы платы коммутации в современных маршрутизаторах — очень тупые ASIC, которые только и умеют, что быстро перекладывать пакеты со входа на выход.
Плата коммутации подключается к задней шине и имеет связность со всеми другими платами.
Обычно они работают в режиме N+1 — то есть все разделяют нагрузку, но при выходе из строя одной платы, оставшиеся берут всё на себя.
Кстати, сами платы можно вполне назвать верхним каскадом иерархии фабрики Клоза.
Остался только вопрос по ячейкам. Ну и перекладывали бы эти ASICи пакеты сразу, зачем их ещё нарезать?
Здесь можно провести аналогию с ECMP. Если кто-то когда-либо настраивал попакетную балансировку между различными путями, то он, наверняка, помнит, сколько боли это доставляло. Неупорядоченная доставка пакетов, с которой с горем пополам справляется TCP, может основательно поломать IP-телефонию или видео, например.
Проблема в попакетной балансировке в том, что два пакета одного потока спокойно могут пойти разными путями. При этом один из них маленький и очень быстро долетит до получателя, а другой акселерат-переросток — застрянет в узком буфере. Вот они и разупорядочились. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаТо же происходит и на фабрике.
Неплохой метод борьбы с этим — попоточная балансировка — вычисляется хэш по кортежу значений (SMAC, DMAC, SIP, DIP, Protocol, SPort, DPort, MPLS-метка итд.) и все пакеты одного потока начинают передаваться одним путём.
Но это работает неидеально. Зачастую один очень жирный поток может нагрузить один линк в то время, как другие будут простаивать. И с этим можно смириться на сети оператора, но нельзя в пределах этого синего ящика.
Элегантное решение выглядит следующим образом:
Пакеты нарезаются на ячейки одинакового маленького размера.
Ячейки балансируются поячеечно. То есть одна ячейка сюда, другая — туда, третья — в следующий линк итд.
Каждая ячейка пронумерована, поэтому, когда она приходит на нужный FE — легко собирается обратно в целостный пакет.
Поскольку расстояние от входа до выхода примерно одинаковое, размеры ячеек одинаковые, время их доставки тоже примерно одинаковое.
Идея Чарльза Клоза, которая сначала была реализована на телефонных станциях, затем была заимствована в Ethernet-коммутаторы и далее маршрутизаторы, ныне нашла своё место в сетях ЦОДов, заменив собой классическую трёхуровневую модель.

6. Путешествие длиною в жизнь

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

Транзитные пакеты

Пусть мы имеем дело со стандартным Ethernet/IP-пакетом.
Узел — IP-маршрутизатор.
Пакет следует транзитом из L3-порта А в L3-порт Б. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Если адрес назначения локальный то или парсится следующий заголовок (как это и было выше с Ethernet), или принимаются какие-то меры аппаратные (BFD, например) или пакет передаётся на CPU (BGP, OSFP итд.)

Egress FE нужен для того, чтобы доставить пакет до нужного чипа коммутации; выходной интерфейс — чтобы сообщить ему, куда пакет передать; приоритет — говорит, как с трафиком поступать в пределах устройства и, возможно, что записать в заголовок пакета (DSCP); TTL — тоже понадобится для того, чтобы потом его вписать в заголовок; а Next Hop MAC позволит затем определить, что писать в поле DMAC Ethernet-заголовка.

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица

Локальные пакеты

Бо́льшая часть локальных пакетов обрабатываются на ЦПУ.
Напомню, что локальные — это те, которые были созданы на данном узле, которые предназначены именно ему (юникастовые), которые предназначены всем/многим (броадкастовые или мультикастовые) или которые намеренно требуют обработки на ЦПУ (TTL Expired, Router Alert).
Входящие
Вплоть до FE с ними происходит всё то же самое, что и с транзитными. Далее чип коммутации, обратившись в CAM, видит, что DMAC — это MAC-адрес локального устройства, заглядывает в EtherType. Если это какой-нибудь BPDU или ISIS PDU, то пакет сразу передаётся нужному протоколу.
Если IP — передаёт его модулю IP, который, заглядывая в TCAM, видит, что и DIP тоже локальный — значит нужно посмотреть в поле Protocol заголовка IPv4 (или Next Header IPv6).
Определяется протокол, принимается решение о том, какому модулю дальше передать пакет — BFD, OSPF, TCP, UDP итд. И так пакет разворачивается до конца, пока не будет найдено приложение назначения.
Когда Ingress FE с этим справился, содержимое пакета передаётся на CPU через специальный канал связи.
На этом шаге достаточно интеллектуальные устройства применяют политику по ограничению скорости протокольных пакетов, передаваемых на ЦПУ, чтобы одними только telnet’ами не заDoSить процессор. Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЕсли данный пакет принёс информацию об изменении топологии (например, новый OSPF, LSA), Control Plane должен обновить Soft Tables (RAM), а затем изменения спускаются в Hard Tables (CAM/TCAM+RAM).
Если пакет требует ответа, то устройство должно его сформировать и отправить назад изначальному источнику (например, TCP Ack на пришедший BGP Update) или передать куда-то дальше (например, OSPF LSA или RSVP Resv).
Исходящие протокольные пакеты формируются на ЦПУ — он заполняет все поля всех заголовков на основе Soft Tables и далее, в зависимости от реализации, спускает его на Ingress или Egress FE.

Из-за того, что пакет сформирован на процессоре, зачастую он не попадает под интерфейсные политики. Архитектурно многие операции, выполняющиеся на FE, требуют того, чтобы FE производил Lookup и формировал заголовки.
Отсюда могут быть любопытные и неочевидные следствия, например, их не получится отловить ACL, вы можете не увидеть их в зазеркалированном трафике, они не будут учитываться при ограничении скорости. Но это не точно, зависит от вендора и оборудования.
Однако политики, работающие с очередями на CPU их, конечно, увидят.

Есть некоторые протоколы Control Plane, которые всё-таки обрабатываются в железе. Ярким примером может служить BFD. Его таймеры выкручиваются вплоть до 1 мс. CPU, как мы помним, штука гибкая, но неповоротливая, и пока BFD-пакет пройдёт по всему тракту и развернётся до заголовка BFD, пока до процессора дойдёт прерывание, пока тот на него переключится, прочитает пакет, сгенерирует новый, вышлет его, пройдут десятки и сотни миллисекунд — глядь, а BFD-то уже развалился.
Поэтому пакеты BFD в большинстве случаев разбираются на чипе, на нём же и готовится ответ. И только сама сессия устанавливается через CPU.

История выше отсылает нас к длинным пингам. Иногда инженер проверяет RTT своей сети путём пинга с одного маршрутизатора на другой. Видит вариацию в десятки и сотни мс и, начиная переживать, открывает запросы вендору. Пугаться тут нечего. Обычно ICMP обрабатывается на CPU. И именно занятостью процессора определяется время ответа. При этом корреляция с реальным RTT сети практически нулевая, потому что транзитный трафик на CPU не обрабатывается.
Некоторые современные сетевые устройства могут обрабатывать ICMP-запросы и формировать ICMP-ответы на чипе (NP, ASIC, FPGA), минуя долгий путь до CPU. И вот в этом случае циферки в ping будут адекватны реальности. Кроме того, есть технологии мониторинга качества сети (OAM), работающие аппаратно, например CFM.

Заключение

Как вы уже, вероятно, поняли из безумного количества if’ов выше, описать аппаратную коммутацию на вендоронезависимом универсальном языке невозможно. Хуже того, даже если брать одного вендора, разные его линейки оборудования и даже разные платы используют совершенно разную архитектуру.
Так, например, у Cisco есть платформы с программной маршрутизацией, а есть с аппаратной.
Или на Huawei интерфейсная очередь может быть реализована на чипе ТМ, а может на PIC.
Или там, где Cisco использует сетевые процессоры, Juniper обходится ASIC’ами.
Для коробочного устройства нужно убрать фабрики коммутации и поиск выходного чипа.
В маршрутизаторах сегмента SOHO, наверняка, будут отсутствовать CAM/TCAM.
Хореография вокруг очередей, которые могут быть сделаны тысячей различных способов, заслуживает отдельных 600 страниц в книге «Соседняя очередь движется быстрее. История потерянного RFC».
Что уж говорить о современном мире виртуализации, где свергают старых правителей и возводят на трон новых.
Почти в каждом параграфе опытный и въедливый читатель найдёт, что следует уточнить, где дать более развёрнутые объяснение. И будет прав… и не прав в то же время. У меня были долгие сомнения, ставить ли в заголовок «маленьких» или «матёрых». И я поставил «маленьких», потому что это только введение в безграничный мир аппаратной коммутации, которое не требует глубоких знаний протоколов или электротехники, а если я начну погружаться в тонкости реализаций различных вендоров, то рискую никогда уже не выбраться из стремительного водоворота деталей.
Я надеюсь, что данная статья послужит отправной точкой в вашем личном путешествии длиною в жизнь.

Оставайтесь на связи

Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЧто такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЧто такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЧто такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблицаЧто такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица
Особо благодарных просим задержаться и пройти на Патреон.
Что такое tcam таблица. Смотреть фото Что такое tcam таблица. Смотреть картинку Что такое tcam таблица. Картинка про Что такое tcam таблица. Фото Что такое tcam таблица Благодарности
Александру Клипперу, Андрею Глазкову, Алексею Кротову и команде linkmeup за вычитку материала и комментарии.
Марату Бабаяну за предоставленные фото оборудования.
Артёму Чернобаю за иллюстрацию.
Моим двум работодателям, которые, проявив терпение или же в силу своего незнания, позволили закончить данную статью.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *