(T) Cisco Express Forwarding*

Funkcja CEF

Tablice wykorzystywane przez funkcję CEF

W funkcji CFE, rolę tablicy routingu przejmuje tablica FIB, natomiast rolę tablicy ARP przejmuje tablica sąsiedztwa Adjacency Table.
  • FIB Table – Zawiera częściowe odwzorowanie tablicy routingu.
  • Adjacency Table – Zawiera częściowe odwzorowanie tablicy protokołu ARP.

FIB (Forwarding Information Base)

Tablica FIB (Forwarding Information Base) stanowi odwzorowanie zawartości tablicy routingu, pomijające niektóre informację w niej zawarte, a będące nieistotne z punktu widzenia tablicy FIB.
  • Tablica FIB (Forwarding Information Base) dzięki wsparciu fizycznych komponentów (Hardware TCAM), umożliwia szybkie przekierowywanie nadchodzących pakietów bez udziału procesora CPU. Stanowi jedną z dwóch głównych tablic funkcji Cisco CEF, współpracując z tablicą sąsiedztwa (Adjacency Table). W przeciwieństwie do tablicy routingu, tablica FIB nie przechowuje wszystkich informacji o posiadanych trasach routingu. Dane z jej punktu widzenia nieistotne, stanowią informację umożliwiające urządzeniu jak i protokołom routingu dynamicznego, określanie najlepszej trasy względem sieci docelowej (Przykład takich informacji jest. Dystans Administracyjny (Administrative Distance), Metryka (Metric) czy oznaczanie tras (Tag)).
  • Tablica FIB zawiera następujące informacje, dotyczące zapisanych w niej tras routingu:
    • Adres sieci / Pojedynczy adres IP (Prefix).
    • Maskę sieci (Network Mask).
    • Adres następnego przeskoku (Next hop address).
    • Interfejs wychodzący (Outgoing Interface)
Budowa przełącznika warstwy trzeciej / rutera wspierającego funkcje CEF
  • Funkcja Cisco CEF wykorzystuje w procesie routingu dwa bloki funkcyjne. Pierwszy silnik warstwy trzeciej (Layer 3 engine) defa-kto stanowiący serce urządzenia, przetwarza informacje uzyskane za pomocą routingu statycznego jak i dynamicznego, generując na ich podstawie zawartość tablicy routingu. Następnie dane te są przenoszone do tablicy FIB (Forwarding Information Base) stanowiącej drugi blok funkcyjny (Layer 3 Forwarding Engine). Dzięki temu zabiegowi SE (Switch Engine) zyskuje możliwość szybkiego przetwarzania nadchodzącego ruchu sieciowego.
  • Za każdym razem, kiedy dochodzi do zmian w topologii sieciowej (Następuje zmiana adresu IP tudzież adresu MAC następnego przeskoku), zmianie ulega zawartość tablicy routingu, co automatycznie wymusza aktualizację danych zawartych w tablicy FIB.
  • Tablica FIB przechowuje trasy dotarcia do sieci, zacząwszy od najbardziej dokładnych wpisów (np. 10.1.1.1/24) po te mniej szczegółowe (np. 10.1.0.0/16), wraz z adresem IP następnego przeskoku. Zawartość tablicy można wyświetlić za pomocą komendy [show ip cef vlan vlan-ID].

Ważne komendy SHOW dotyczące tablicy FIB

# show process cpu | include IP Input

Wyświetla ilość procesów routingu bezpośrednio obciążających procesor CPU.

# show ip cef

Wyświetla zawartość tablicy FIB. Trasy opisane jako „Receive” są przetwarzane przez procesor CPU.

# show ip cef adjacency interfejs-wychodzący adres-IP-następnego-przeskoku detail

Wyświetla sieci docelowe, osiągalne za pomocą kombinacji wskazanego interfejsu wyjściowego jak i adresu następnego przeskoku.

# show adjacency interfejs detail

Wyświetla zawartość tablicy „Adjacency Table”. Docelowy oraz źródłowy adres MAC, wraz z kodem określającym protokół IPv4 (0800) jest podany w jednym ciągu znaków.

Wyjątki w przetwarzaniu pakietów przez funkcję CEF

  • Istnieją pakiety które nie mogą być obsłużone w szybkim procesie switching-u (z wykorzystaniem tablicy FIB). W tej sytuacji zwanej CEF punt pakiety są przekierowywane do silnika warstwy trzeciej. Możliwe przyczyny powstania tak owych wyjątków są następujące:
    • Wyjście dla danego pakietu nie zostało znalezione w tablicy FIB.
    • Tablica FIB jest przepełniona.
    • Wartość TTL pakietu IP została przekroczona (Jeśli spadnie do wartości 0) .
    • Wartość MTU została przekroczona.
    • Odebrano komunikat ICMP.
    • Typ enkapsulacji nie jest wspierany.
    • Pakiet jest tunelowany.
    • Wymagana jest operacja translacji NAT.
Jeżeli adres docelowy pakietu nie znajduje się w tablicy FIB, pakiet zostanie porzucony.

Platformy sprzętowe obsługujące funkcję CEF

  • Funkcja CEF może być obsługiwana przez jedną z wielu platform sprzętowych, umożliwiających współpracę wielu niezależnych procesorów na jednym przełączniku, tym samym zwiększając jego wydajność.
    • Accelerated CEF (aCEF) – Umożliwia rozprowadzenie funkcji CEF pomiędzy wieloma silnikami warstwy trzeciej, bez możliwości kopiowania całej zawartości tablicy FIB na poszczególne silniki podległe. Jeżeli pobrana część tablicy okaże się niewystarczająca, istnieje możliwość pobrania dodatkowych danych z silnika głównego.
    • Distributed CEF (dCEF) – Umożliwia rozprowadzenie funkcjonalności CEF pomiędzy wieloma silnikami warstwy trzeciej, z zamian zapewniając znacznie większą wydajność w przetwarzaniu pakietów. Przełączniki wspierające funkcję dCEF posiadają wiele tablic CEF rozlokowanych na rożnych fizycznych kartach (Line Card), zawierających oddzielne dedykowane silniki (Layer 3 Forwarding Engine), tablice FIB jak i tablice Adjacency Table. Tym samym umożliwiając wykonywanie wielu operacji routingu jednocześnie. Nad wszystkimi kartami (Line Card) piecze sprawuje jeden główny procesor wraz z główną tablicą FIB oraz główną tablicą „Adjacency Table”, których cała zawartość jest kopiowana do podległych procesorów.

Rewrite Engine

  • Po przetworzeniu pakietów w procesie routingu dane zawarte w ramce Ethernet-owej takie jak docelowy oraz źródłowy adres MAC, ulegają zmianie. Aby umożliwić szybkie zaktualizowane nagłówka ramki Ethernet-owej wielowarstwowy przełącznik MLS posiada dodatkowy blok umożliwiający zmianę danych w czasie rzeczywistym. Zmianie może ulec:
    • Docelowy adres MAC ramki.
    • Źródłowy adres MAC ramki.
    • Suma kontrolna ramki.
    • Czas TTL pakietu.
    • Suma kontrolna pakietu.

Adjacency Table

Adjacency Table zwana inaczej AIB (Adjacency Information Base).
  • Domyślnie procesor warstwy trzeciej (Layer 3 Engine) przetrzymuje w tablicy routingu dane dotyczące sieci docelowej, wraz z adresem IP następnego przeskoku, natomiast w tablicy ARP informacje warstwy drugiej, takie jak adres MAC odpowiadający powyższemu adresowi następnego przeskoku. Oby dwie tablice są przetrzymywane niezależnie, jednak zawarte w nich dane są niezbędne do stworzenia poprawnego pakietu jak i ramki Ethernet-owej.
  • W funkcji CFE (Layer 3 Forwarding Engine), rolę tablicy routingu przejmuję tablica FIB natomiast rolę tablicy ARP przejmuję tablica sąsiedztwa Adjacency Table.
  • Zawartość tablicy „Adjacency Table” jest uzupełniana na podstawie zawartości pamięci ARP cache lokalnego przełącznika. Może jednak zaistnieć sytuacja (zwana „CEF glean”)w której tablica ARP nie posiada adresu MAC address następnego przeskoku dla danego wyjścia (Next Hop), wymuszając tym samym użycie silnika warstwy trzeciej, mającego wysłać zapytanie ARP.  W czasie oczekiwania na odpowiedź ARP wszelkie pakiety kierowane do danej sieci docelowej są natychmiast porzucane, aby nie spowodować wysłania zduplikowanego zapytania ARP co nazywamy „ARP throttling / throttling adjacency”. Jeśli odpowiedź ARP nie nadejdzie w ciągu 2 sekund zostaje ponowiona, do momentu otrzymania odpowiedzi zawierającej adres MAC. Który zostaje od razu wpisany do tablicy sąsiedztwa (Adjacency Table).
  • Tablica sąsiedztwa (Adjacency Table) zawiera wpisy znajdujące się w różnym stanie. A są one następujące:
    • Stan Glean Adjacency – Występuje w przypadku braku adresu MAC, następnego przeskoku.
    • Stan Null adjacency – Jest używany dla pakietów kierowanych na interfejs NULL (Jest to interfejs logiczny używany przez routery jak i przełączniki do wchłaniania pakietów bez ich dalszego przetwarzania).
    • Stan Drop Adjacency – Jest skierowany dla pakietów które nie mogą być normalnie przetworzone (np. w przypadku błędu enkapsulacji, niewspieranego protokołu lub braku aktualnej trasy) (Komenda [show cef drop]).
    • Stan Discard Adjacency – Występuje w przypadku pakietów odrzucony z powodu np. listy ACL, czy kierowanych na wirtualny interfejs Looback.
    • Stan Punt Adjacency – Występuje w przypadku pakietów wymagających dodatkowego przetworzenia przez procesor (RP) (Komenda [show cef not-cef-switched]).
  • Zawartość tablicy sąsiedztwa (Adjacency Table) można wyświetlić za pomocą komendy [show adjacency [summary / detail]], [show adjacency interfejs [detail]], [show adjacency vlan vlan-ID [detail]].

Pozostałe tematy związane ze wstępem do warstwy drugiej

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

Dodaj komentarz