4. CEF

Сложность классической маршрутизации

  • Задачи маршрутизации:

    • Найти выходной интерфейс

    • Для сред с множественным доступом - определить адрес Next-Hop и его канальный адрес

  • Классическая маршрутизация IP - рекурсивный процесс

    • Недетерминированное время поиска

    • Высокая загрузка ЦП

  • Каждый пакет маршрутизируется независимо, "по-честному"

Route Caching

  • Идея: кэшировать в быстрой памяти результат маршрутизации

    • Выходной интерфейс

    • Канальный адрес next-hop

  • Если маршрут закэширован, обработка трафика ускорится

    • Первый пакет потока все равно придется маршрутизировать "по-честному"

  • Механизм упразднен в IOS начиная с версии 12.4(20)T/ 12.2(25)S

Router#show ip cache 192.168.4.0 255.255.255.0
!!!!!
Prefix/Length        Age        Interface            MAC Header
192.168.4.0/24       0:00:21    GigabitEthernet0/0   0000000C02367B54645D0800

Topology-based Switching

  • Идея: не ждать для просчета маршрута первый пакет потока

    • Интерфейс и next-hop просчитываются при добавлении маршрута в RIB

    • MAC-заголовок для next-hop просчитывается при первом использовании

  • Основной механизм маршрутизации в IOS, включен по умолчанию

Router#show ip cef 192.168.4.1
192.168.4.0/24
  nexthop 192.168.1.1 GigabitEthernet0/0
  
Router#show adjacency 192.168.1.1 encapsulation  
Protocol Interface                Address
IP       GigabitEthernet0/0       192.168.1.1(10)
  Encap length 14
  00000C02300045645D0090
  Provider: ARPA

Distributed CEF

  • Линейные карты пересылают транзитные IP-пакеты без участия RE

@АНИМАЦИЯ CEF ВСТАВИТЬ@

Виды Adjacency

  • Cache: нормальная запись, для которой сформирован L2-Header

  • Receive: виртуальная запись для собственных маршрутов

  • Null: виртуальная запись, требуется для присоединенного интерфейса Null0

  • Punt: виртуальная запись, требуется process switching

  • Glean: запись для соседства, у которого не сформирован L2-Header

  • Discard\Drop: виртуальные записи для маршрутов для сбрасываемых пакетов

Router#sh ip cef
Prefix               Next Hop             Interface
0.0.0.0/32           receive              
172.17.0.16/32       receive              Loopback0
172.17.43.0/30       attached             Vlan1000
172.17.43.0/32       receive              Vlan1000
172.17.43.1/32       attached             Vlan1000
172.17.43.2/32       receive              Vlan1000
172.17.43.3/32       receive              Vlan1000
172.25.16.0/28       attached             Vlan999
172.25.16.0/32       receive              Vlan999
172.25.16.1/32       receive              Vlan999
172.25.16.15/32      receive              Vlan999
224.0.0.0/4          multicast
224.0.0.0/24         receive              
240.0.0.0/4          drop
255.255.255.255/32   receive              

Buckets

  • CEF может иметь несколько вариантов next-hop для одного префикса

    • Максимальное количество зависит от платформы и версии протокола

    • Трафик будет балансироваться между next-hop по некоторому алгоритму

      • Некоторые варианты next hop могут быть одинаковыми, обеспечивая неравномерное распределение загрузки через разных соседей (например, при EIGRP UCLB или MPLS TE)

Router#sh ip cef 172.25.43.2 internal 
0.0.0.0/0, epoch 2, RIB[I], refcount 7, per-destination sharing
  sources: RIB, D/N, DRH 
  feature space:
   LFD: 0.0.0.0/0 0 local labels
        contains path extension list
        label switch chain 0x04E96580
   IPRM: 0x00038000
   Broker: linked
  subblocks:
   DefNet source: 0.0.0.0/0
  ifnums:
   GigabitEthernet1/1/1(1043): 172.24.15.3
   path_list contains at least one resolved destination(s). HW notified
  path 03FD43D8, path list 03FC7C70, share 1/1, type attached nexthop, for IPv4
    MPLS short path extensions: MOI flags = 0x0 label implicit-null
  nexthop 172.24.15.3 GigabitEthernet1/1/1, adjacency IP adj out of GigabitEthernet1/1/1, addr 84.52.75.5 045656C0
  output chain: IP adj out of GigabitEthernet1/1/1, addr 172.24.15.3 045656C0

CEF и особые случаи

  • PBR во многих случаях может использовать ускорение CEF

  • CEF легко справляется с простыми туннелями

    • IPIP, GRE, DMVPN

  • CEF может не справиться со "сложными" интерфейсами

    • X.25, VTI

Last updated