Многоуровневый коммутатор будет использовать информацию из таблиц, которые созданы (плоскость управления) для построения аппаратных таблиц. Он будет использовать таблицу маршрутизации для построения FIB (информационной базы пересылки) и таблицу ARP для построения таблицы смежности. Это самый быстрый способ переключения, потому что теперь у нас есть вся информация уровня 2 и 3, необходимая для пересылки аппаратных пакетов IP.
Давайте посмотрим на информационную таблицу о пересылке и таблицу смежности на некоторых маршрутизаторах.
Будем использовать ту же топологию, что и ранее. 3 роутера и R3 имеет интерфейс loopback0. Будем использовать статические маршруты для полного подключения:
R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3 R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2 R2(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3 R3(config)#ip route 192.168.12.0 255.255.255.0 192.168.23.2
Это статические маршруты, которые мы будем использовать. Теперь посмотрим на таблицу маршрутизации и FIB:
show ip cef
показывает нам таблицу FIB. Вы можете видеть, что есть довольно много вещей в таблице FIB. Ниже даны разъяснения по некоторым из записей:
- 0.0.0.0/0 - это для интерфейса null0. Когда мы получим IP-пакеты, соответствующие этому правилу, то оно будет отброшено.
- 0.0.0.0 /32 - это для всех-нулевых передач. Забудьте об этом, так как мы больше не используем его.
- 3.3.3.0 /24 - это запись для интерфейса loopback0 R3. Обратите внимание, что следующий переход - это 192.168.12.2, а не 192.168.23.3, как в таблице маршрутизации!
- 192.168.12.0/24 - это наша непосредственно подключенная сеть.
- 192.168.12.0/32 зарезервировано для точного сетевого адреса.
- 192.168.12.1/32 - это IP-адрес на интерфейсе FastEthernet 0/0.
- 192.168.12.2/32 - это IP-адрес на интерфейсе FastEthernet 0/0 R2.
- 192.168.12.255/32 - это широковещательный адрес для сети 192.168.12.0/24.
- 224.0.0.0/4 - соответствует всему многоадресному трафику. Он будет удален, если поддержка многоадресной рассылки отключена глобально.
- 224.0.0.0/24 - соответствует всему многоадресному трафику, зарезервированному для трафика управления локальной сетью (например, OSPF, EIGRP).
- 255.255.255.255/32 - широковещательный адрес для подсети.
Давайте подробно рассмотрим запись для network 3.3.3.0/24:
Номер версии говорит нам, как часто эта запись CEF обновлялась с момента создания таблицы. Мы видим, что для достижения 3.3.3.0/24 нам нужно перейти к 192.168.23.3 и что требуется рекурсивный поиск. Следующий прыжок-192.168.12.2. Он также говорит, что это valid cached adjacency (допустимая кэшированная смежность). Существует целый ряд различных смежностей:
- Null adjacency: используется для отправки пакетов в интерфейс null0.
- Drop adjacency: это для пакетов, которые не могут быть переданы из-за ошибок инкапсуляции, маршрутов, которые не могут быть разрешены, или протоколов, которые не поддерживаются.
- Discard adjacency: это относится к пакетам, которые должны быть отброшены из-за списка доступа или другой политики.
- Punt adjacency: используется для пакетов, которые отправляются на плоскость управления для обработки.
Пакеты, которые не пересылаются CEF, обрабатываются процессором. Если у вас есть много таких пакетов, то вы можете увидеть проблемы с производительностью.
Вы можете видеть, сколько пакетов было обработано процессором:
Вы можете использовать команду show cef not-cef-switched
, чтобы проверить это. Количество пакетов указано по причине:
- No_adj: смежность не является полной..
- No_encap: Информация об ARP является неполной.
- Unsupp’ted: пакет имеет функции, которые не поддерживаются.
- Redirect: Перенаправление ICMP.
- Receive: Это пакеты, предназначенные для IP-адреса, настроенного на интерфейсе уровня 3, пакеты, предназначенные для нашего маршрутизатора.
- Options: В заголовке пакета есть параметры IP-адреса.
- Access: ошибка сравнения со списком доступа
- Frag: ошибка фрагментации пакетов
Мы также можем взглянуть на таблицу смежности, в которой хранится информация уровня 2 для каждой записи:
Вы можете использовать команду show adjacency summary
, чтобы быстро посмотреть, сколько у нас есть смежностей. Смежность - это отображение от уровня 2 до уровня 3 и происходит из таблицы ARP.
R1#show adjacency Protocol Interface Address IP FastEthernet0/0 192.168.12.2(9)
R1 имеет только один интерфейс, который подключен к R2. Вы можете увидеть запись для ip 192.168.12.2, который является интерфейсом FastEthernet 0/0 R2. Давайте увеличим масштаб этой записи:
Мы видим там запись для 192.168.12.2 и там написано:
CC011D800000CC001D8000000800
Что означает это число? Это MAC-адреса, которые нам нужны, и Ethertype ... давайте разберем поподробнее его:
- CC011D800000 - это MAC-адрес интерфейса R2 FastEthernet0 / 0
- CC001D800000 - это MAC-адрес интерфейса R1 FastEthernet0/0.
- 0800 - это Ethertype. 0x800 означает IPv4.
Благодаря таблицам FIB и смежности у нас есть вся информация уровня 2 и 3, которая нам требуется для перезаписи и пересылки пакетов. Имейте в виду, что перед фактической пересылкой пакета мы сначала должны переписать информацию заголовка:
- Исходный MAC-адрес.
- Конечный MAC-адрес.
- Контрольная сумма кадров Ethernet.
- TTL IP-пакета.
- Контрольная сумма IP-пакетов.
Как только это будет сделано, мы сможем переслать пакет. Теперь у вас есть представление о том, что такое CEF и как обрабатываются пакеты.
Возникает вопрос, а в чем разница между маршрутизаторами и коммутаторами, поскольку многоуровневый коммутатор может маршрутизировать, а маршрутизатор может выполнять коммутацию.
Различие между устройствамистанвится все меньше, но коммутаторы обычно используют только Ethernet. Если вы покупаете Cisco Catalyst 3560 или 3750, то у вас будут только интерфейсы Ethernet. У них есть ASICs, поэтому коммутация кадров может выполняться со скоростью линии связи. С другой стороны, маршрутизаторы имеют другие интерфейсы, такие как последовательные каналы связи, беспроводные сети, и они могут быть модернизированы модулями для VPN, VoIP и т. д. Вы не сможете настроить такие вещи, как NAT/PAT на (маленьком) коммутаторе. Однако грань между ними становится все тоньше
Маршрутизаторы используются для маршрутизации, коммутаторы уровня 2-для коммутации, но многоуровневые коммутаторы могут выполнять комбинацию того и другого. Возможно, ваш коммутатор выполняет 80% коммутации и 20% маршрутизации или наоборот. TCAM можно "запрограммировать" на использование оптимальных ресурсов с помощью шаблонов SDM.
SDM (Switching Database Manager) используется на коммутаторах Cisco Catalyst для управления использованием памяти TCAM. Например, коммутатор, который используется только для коммутации, не требует никакой памяти для хранения информации о маршрутизации IPv4. С другой стороны, коммутатору, который используется только в качестве маршрутизатора, не потребуется много памяти для хранения MAC-адресов.
SDM предлагает ряд шаблонов, которые мы можем использовать на нашем коммутаторе, вот пример коммутатора Cisco Catalyst 3560:
Выше вы можете видеть, что текущий шаблон является "desktop default", и вы можете видеть, сколько памяти он резервирует для различных элементов. Вот пример других шаблонов:
Вот шаблоны SDM для коммутатора. Мы можем изменить шаблон с помощью команды sdm prefer
:
Вы должны перезагрузить устройство прежде, чем он вступит в силу:
SW1#reload
Теперь давайте еще раз проверим шаблон:
По сравнению с шаблоном "desktop default" мы теперь имеем двойное хранилище для одноадресных MAC-адресов. Однако для маршрутов IPv4 ничего не зарезервировано.
Это хорошая идея, чтобы установить шаблон SDM, для того чтобы соответствовать необходимому использованию вашего коммутатора. Если вы делаете как коммутацию, так и маршрутизацию и не уверены в том, какой шаблон выбрать, то вы можете посмотреть на текущее использование TCAM, вот как это сделать:
На данном рисунке многое не отображено, но вы можете видеть, как заполняется TCAM в данный момент. Теперь вам есть что сравнить с шаблонами SDM.