Cisco Express Forwarding
Материал из Xgu.ru
Cisco Express Forwarding (CEF) — технология высокоскоростной маршрутизации/коммутации пакетов,
использующаяся в маршрутизаторах и коммутаторах третьего уровня фирмы Cisco Systems,
и позволяющая добиться более быстрой и эффективной обработки транзитного трафика.
Функционал, который поддерживает CEF:
- QoS
- ACL
- Zone Based Firewall
- NAT
- Netflow
- IPSec
- GRE
- PBR
CEF не работает в следующих случаях:
- Включен ACL Logging (в конце ACL добавлено слово log, например deny ip any any log)
- Пакеты предназначены для самого маршрутизатора/коммутатора.
- Нет L2 Adjacency.
Содержание |
[править] FIB
Forwarding Information Base (FIB) или CEF Table — таблица для быстрой пересылки пакетов. Строится на основе Routing Table и Adjacency Table. Adjacency Table в свою очередь строится на основе ARP Table. Различают 2 вида CEF - Software CEF (можно увидеть на ISR G1/G2 и 7200) и Hardware CEF (можно увидеть на 6500/7600, Nexus 7000 и ASR9000). Hardware CEF - это когда построенная FIB хранится в быстрой памяти TCAM (Ternary Content Addressable Memory). Итого FIB - это таблица, содержащая маршрут, исходящий интерфейс и L2 destination.
|
Вывод и параметры команд, которые относятся к CEF, могут отличаться в зависимости от версии IOS и модели оборудования. Но, как правило, команды просмотра начинаются на show cef, show ip cef, show adjacency |
[править] Adjacency Table
R1#show adjacency detail Protocol Interface Address IP FastEthernet0/0 100.0.0.2(7) 0 packets, 0 bytes epoch 0 sourced in sev-epoch 0 Encap length 14 CA0111480008CA00114800080800 ARP
Строка CA0111480008CA00114800080800 читается следующим образом:
- CA0011480008 - это source мак-адрес интерфейса, через который будет отправляться пакет на 100.0.0.2:
R1#sh int fa 0/0 | i addr Hardware is i82543 (Livengood), address is ca00.1148.0008 (bia ca00.1148.0008) Internet address is 100.0.0.1/30
- CA0111480008 - это destenation мак-адрес ca01.1148.0008:
R2#sh int fa 0/0 | i addr Hardware is i82543 (Livengood), address is ca01.1148.0008 (bia ca01.1148.0008) Internet address is 100.0.0.2/30
- 0800 - это EtherType (в данному случае у нас это IPv4 0x0800).
[править] CEF epoch
В FIB и adjacency table есть понятие версии, которая называется epoch. Диапазон значений epoch от 0 до 255.
Значение epoch увеличивается, при инициации перестроения таблицы. Это можно сделать вручную, очистив информацию CEF.
На практике epoch используется, например, при переключении между supervisor engine в технологии NSF:
- Во время переключения, в таблицах CEF увеличивается значение epoch.
- После того как протоколы маршрутизации обновили информацию в RIB, соответственно обновляются и записи в таблицах CEF. Обновленным записям назначается новое значение epoch.
- После завершения обновления, все записи в FIB и adjacency table, у которых значение epoch меньше текущего, удаляются.
[править] Просмотр значения epoch для FIB
Например, текущее значение epoch равно 0:
R3#sh ip cef epoch VRF: Default Database epoch: 0 (28 entries at this epoch)
При корректной работе, значение epoch для всех префиксов должно быть равным этому глобальному значению. Отображение значения epoch для конкретного префикса на примере маршрута по умолчанию:
R3#sh ip cef 0.0.0.0 0.0.0.0 detail 0.0.0.0/0, epoch 0, flags default route recursive via 70.1.1.2 attached to Ethernet0/0
Когда в FIB добавляется новая запись, то значение epoch для нее устанавливается равным текущему глобальному значению. То есть, значение epoch не увеличивается, когда добавляется какой-то префикс в FIB:
R3#sh ip cef 200.0.0.0 255.255.255.0 %Prefix not found R3(config)#ip route 200.0.0.0 255.255.255.0 10.0.12.10 R3#sh ip cef 200.0.0.0 255.255.255.0 detail 200.0.0.0/24, epoch 0 recursive via 10.0.12.10 recursive via 10.0.12.0/24 attached to Ethernet0/2
[править] Обновление значения epoch для FIB
С помощью команды clear cef table ipv4 можно вручную обновить FIB и, соответственно, изменится значение epoch(в некоторых IOS также может быть команда clear ip cef epoch full):
R3#sh ip cef epoch VRF: Default Database epoch: 0 (30 entries at this epoch) R3#clear cef table ipv4 R3#sh ip cef epoch VRF: Default Database epoch: 1 (30 entries at this epoch)
[править] Просмотр значения epoch для adjacency table
Суммарная информация об adjacency table отображает и значение epoch:
R3#sh adjacency summary Adjacency table has 5 adjacencies: each adjacency consumes 292 bytes (0 bytes platform extension) 4 complete adjacencies 1 incomplete adjacency 5 adjacencies of linktype IP 4 complete adjacencies of linktype IP 1 incomplete adjacency of linktype IP 0 adjacencies with fixups of linktype IP 4 adjacencies with IP redirect of linktype IP 0 adjacencies post encap punt capable of linktype IP Adjacency database high availability: Database epoch: 3 Epoch statistics: Epoch 2: 1 entry Epoch 3: 4 entries Adjacency manager summary event processing: Summary events epoch is 0 Summary events queue contains 0 events (high water mark 2 events)
В текущей таблице adjacency есть 4 записи со значением epoch 3, которое соответствует глобальной версии таблицы. И одна запись со значением 2.
Также в суммарной информации видно, что одна запись в состоянии incomplete: 1 incomplete adjacency. Посмотрим более подробную информацию о записях в таблице adjacency:
R3#sh adjacency detail Protocol Interface Address IP Ethernet0/0 70.1.1.2(10) 0 packets, 0 bytes epoch 3 sourced in sev-epoch 0 Encap length 14 AABBCC006800AABBCC0067000800 ARP IP Ethernet0/1 10.0.13.2(13) 0 packets, 0 bytes epoch 3 sourced in sev-epoch 0 Encap length 14 AABBCC006510AABBCC0067100800 ARP IP Ethernet0/2 10.0.12.2(13) 0 packets, 0 bytes epoch 3 sourced in sev-epoch 0 Encap length 14 AABBCC006610AABBCC0067200800 ARP IP Ethernet0/2 10.0.12.10(7) (incomplete) 0 packets, 0 bytes epoch 2 sourced in sev-epoch 0 punt (rate-limited) packets no src set IP NVI0 point2point(2) 0 packets, 0 bytes epoch 3 sourced in sev-epoch 0 Encap length 14 4141414142424242434343434444 P2P-ADJ
В более подробном выводе можно увидеть значение epoch для каждой записи в adjacency table. А также теперь мы видим у какой записи значение epoch 2:
IP Ethernet0/2 10.0.12.10(7) (incomplete) 0 packets, 0 bytes epoch 2 sourced in sev-epoch 0 punt (rate-limited) packets no src set
Эта запись находится в состоянии incomplete, так как не известно какой MAC-адрес соответствует next-hop 10.0.12.10.
[править] Обновление значения epoch для adjacency table
R3#clear adjacency
R3#sh adjacency summary ... Database epoch: 3 Epoch statistics: Epoch 2: 1 entry Epoch 3: 4 entries ... R3#clear adjacency R3#sh adjacency summary ... Database epoch: 4 Epoch statistics: Epoch 3: 1 entry Epoch 4: 4 entries ...
[править] Информация о таблице CEF
router1#sh ip cef tree Table Default tree information: MTRIE/RTREE storing IPv4 addresses 42 entries (42/0 fwd/non-fwd) Forwarding tree: Forwarding lookup routine: IPv4 mtrie 8-8-8-8 optimized 396 inserts, 354 deletes 8-8-8-8 stride pattern short mask protection enabled for <= 4 bits without process suspension 42 leaves (1176 bytes), 26 nodes (27040 bytes) 29872 total bytes leaf ops: 396 inserts, 354 deletes leaf ops with short mask protection: 4 inserts, 2 deletes per-prefix length stats: lookup off, insert off, delete off refcounts: 6787 leaf, 6656 node node pools: pool[C/8 bits]: 26 allocated (0 failed), 27040 bytes Non-Forwarding tree: 750 inserts, 750 deletes 0 leaves (0 bytes), 0 nodes (0 bytes) 0 total bytes
[править] Просмотр информации
dyn1# sh ip cef Prefix Next Hop Interface 0.0.0.0/0 drop Null0 (default route handler entry) 0.0.0.0/32 receive 192.168.1.0/24 attached Null0 192.168.1.0/30 attached FastEthernet1/0 192.168.1.0/32 receive 192.168.1.1/32 receive 192.168.1.2/32 192.168.1.2 FastEthernet1/0 192.168.1.3/32 receive 192.168.1.4/30 192.168.1.2 FastEthernet1/0 192.168.1.8/30 192.168.1.2 FastEthernet1/0 192.168.6.0/24 192.168.1.2 FastEthernet1/0 192.168.7.0/24 192.168.1.2 FastEthernet1/0 192.168.8.0/24 192.168.1.2 FastEthernet1/0 192.168.9.0/24 192.168.1.2 FastEthernet1/0 192.168.10.0/24 192.168.1.2 FastEthernet1/0 192.168.11.0/24 192.168.1.2 FastEthernet1/0 192.168.13.0/24 attached FastEthernet2/0 192.168.13.0/32 receive 192.168.13.1/32 receive 192.168.13.255/32 receive 192.168.14.0/24 192.168.1.2 FastEthernet1/0 192.168.15.0/24 192.168.1.2 FastEthernet1/0 192.168.20.0/24 attached FastEthernet0/0 192.168.20.0/32 receive 192.168.20.1/32 receive 192.168.20.8/32 192.168.20.8 FastEthernet0/0 192.168.20.9/32 192.168.20.9 FastEthernet0/0 192.168.20.255/32 receive 192.168.21.0/24 192.168.1.2 FastEthernet1/0 192.168.111.0/24 192.168.1.2 FastEthernet1/0 192.168.112.0/24 192.168.1.2 FastEthernet1/0 197.1.0.0/16 attached Null0 197.1.1.0/24 attached Loopback0 197.1.1.0/32 receive 197.1.1.1/32 receive 197.1.1.255/32 receive 197.1.8.0/24 attached Loopback1 197.1.8.0/32 receive 197.1.8.1/32 receive 197.1.8.255/32 receive 199.1.1.0/24 attached Loopback3 199.1.1.0/32 receive 199.1.1.1/32 receive 199.1.1.255/32 receive 199.2.2.0/24 192.168.1.2 FastEthernet1/0 199.2.2.2/32 192.168.1.2 FastEthernet1/0 199.3.3.0/24 192.168.1.2 FastEthernet1/0 199.3.3.3/32 192.168.1.2 FastEthernet1/0 199.4.4.0/24 192.168.1.2 FastEthernet1/0 199.4.4.4/32 192.168.1.2 FastEthernet1/0 224.0.0.0/4 drop 224.0.0.0/24 receive 255.255.255.255/32 receive
dyn1# show adjacency Protocol Interface Address IP FastEthernet1/0 192.168.1.2(43) IP FastEthernet0/0 192.168.20.8(5) IP FastEthernet0/0 192.168.20.9(5) dyn1# show adjacency detail Protocol Interface Address IP FastEthernet1/0 192.168.1.2(43) 57 packets, 7963 bytes 00163E010101 00163E01001D0800 ARP 03:04:50 Epoch: 0 IP FastEthernet0/0 192.168.20.8(5) 9 packets, 378 bytes 00163E0107C1 00163E0100010800 ARP 01:40:02 Epoch: 0 IP FastEthernet0/0 192.168.20.9(5) 0 packets, 0 bytes 00163E0108C1 00163E0100010800 ARP 01:41:43 Epoch: 0
Очистить Cisco Express Forwarding adjacency table:
clear adjacency
dyn1#show cef interface fa0/0 FastEthernet0/0 is up (if_number 3) Corresponding hwidb fast_if_number 3 Corresponding hwidb firstsw->if_number 3 Internet address is 192.168.20.1/24 ICMP redirects are always sent Per packet load-sharing is disabled IP unicast RPF check is disabled Inbound access list is not set Outbound access list is not set Hardware idb is FastEthernet0/0 Fast switching type 1, interface type 18 IP CEF switching enabled IP Fast switching turbo vector IP Normal CEF switching turbo vector Input fast flags 0x0, Input fast flags2 0x0, Output fast flags 0x0, Output fast flags2 0x0 ifindex 1(1) Slot 0 Slot unit 0 Unit 0 VC -1 Transmit limit accumulator 0x0 (0x0) IP MTU 1500
На коммутаторе (hardware Layer 3-switching adjacency node):
show mls cef adjacency
router(config-if)# ip load-sharing <per-packet|per-destination>
[править] Балансировка нагрузки
Проверка балансировки нагрузки:
R1#show ip cef exact-route 192.168.1.1 192.168.10.5
[править] Дополнительная информация
- Cisco Express Forwarding (CEF)
- Cisco Express Forwarding Overview
- How to Choose the Best Router Switching Path for Your Network
Балансировка нагрузки: