Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Konfigurieren von Einstellungen auf dem Hostbetriebssystem

Dieses Kapitel enthält Informationen zum Optimieren von Einstellungen auf dem Host-Betriebssystem, um erweiterte Funktionen zu aktivieren oder den Umfang der cRPD-Funktionalität zu erhöhen.

ARP-Skalierung konfigurieren

Die maximale ARP-Eintragsnummer wird vom Linux-Host-Kernel gesteuert. Wenn es eine große Anzahl von Nachbarn gibt, müssen Sie möglicherweise die ARP-Eintragsbeschränkungen auf dem Linux-Host anpassen. Der sysctl Befehl auf dem Linux-Host enthält Optionen zum Anpassen der ARP- oder NDP-Eingabelimits.

So passen Sie beispielsweise die maximale Anzahl von ARP-Einträgen mit IPv4 an:

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh1=4096

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh2=8192

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh3=8192

So passen Sie beispielsweise die maximale Anzahl an ND-Einträgen mit IPv6 an:

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh1=4096

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh2=8192

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh3=8192

Tuning von OSPF unter cRPD

Um eine größere Anzahl von OSPFv2/v3-Adjacencies mit cRPD zuzulassen, erhöhen Sie das IGMP-Mitgliedschaftslimit:

Erhöhen Sie das IGMP-Mitgliedschaftslimit.

root@host:~# sysctl -w net.ipv4.igmp_max_memberships=1000

Konfigurieren von MPLS

So konfigurieren Sie MPLS im Linux-Kernel:

  1. Laden Sie die MPLS-Module in den Container mit modprobe oder insmod :

    root@crpd-ubuntu3:~# modprobe mpls_iptunnel

    root@crpd-ubuntu3:~# modprobe mpls_router

    root@crpd-ubuntu3:~# modprobe ip_tunnel

  2. Überprüfen Sie die MPLS-Module, die im Hostbetriebssystem geladen sind.
  3. Konfigurieren Sie nach dem Laden auf dem Host die folgenden Befehle, um MPLS auf mpls_router der Schnittstelle zu aktivieren.

    root@host:~# sysctl -w net.mpls.platform_labels=1048575

Hinzufügen von MPLS-Routen

Netlink-Nachrichten werden verwendet, um die Routen mit dem Linux-Kernel zu kommunizieren (hinzuzufügen/zu lernen). MPLS-Routen werden dem Kernel mit einem iproute2 Dienstprogramm hinzugefügt, das intern netlink socket verwendet, um den Kernel zu aktualisieren. So fügen Sie MPLS-Routen zum Host hinzu, indem Sie das iproute2 Dienstprogramm verwenden:

  1. Aktivieren Sie MPLS auf der Netzwerkschnittstelle.

    root@host:/# cli

    root@host> show interfaces routing

  2. Führen Sie den folgenden Befehl aus, um die mpls-Routen zum Hostbetriebssystem hinzuzufügen.

    root@host:~# ip -f mpls route add 100 as 200/300 via inet 172.20.0.2 dev br-a3a2fe3ae8e3

  3. Führen Sie den folgenden Befehl aus, um die MPLS-fib-Einträge unter Linux anzuzeigen.

    root@host:~# ip -f mpls route show

Hinzufügen von Routen mit MPLS-Label

So fügen Sie Routen zum Host hinzu, indem Sie die Pakete mit iproute2 dem Dienstprogramm mit MPLS-Label kapseln:

  1. Führen Sie den folgenden Befehl aus, um die Pakete für das Hostbetriebssystem zu kapseln.

    root@host:~# ip route add 172.20.0.0/30 encap mpls 200 via inet 172.20.0.2 dev br-a3a2fe3ae8e3

  2. Führen Sie den folgenden Befehl aus, um die mpls-Routen anzuzeigen.

    root@host:~# ip route show

Erstellen eines VRF-Geräts

So instanziieren Sie ein VRF-Gerät und ordnen es einer Tabelle zu:

  1. Führen Sie den folgenden Befehl aus, um ein VRF-Gerät zu erstellen.

    root@host:~# ip link add dev test1 type vrf table 11

  2. Führen Sie den folgenden Befehl aus, um die erstellten VRFs anzuzeigen.

    root@host:~# ip [-d] link show type vrf

  3. Führen Sie den folgenden Befehl aus, um die Liste der VRFs im Hostbetriebssystem anzuzeigen.

    root@host:~# ip vrf show

Zuweisen einer Netzwerkschnittstelle zu einer VRF

Netzwerkschnittstellen werden einer VRF zugewiesen, indem das Netzgerät einem VRF-Gerät zugewiesen wird. Die verbundenen und lokalen Routen werden automatisch in die Tabelle verschoben, die dem VRF-Gerät zugeordnet ist.

So weisen Sie einer VRF eine Netzwerkschnittstelle zu:

Führen Sie den folgenden Befehl aus, um eine Schnittstelle zuzuweisen.

root@host:~# ip link set dev <name> master <name>

root@host:~# ip link set dev eth1 vrf test

Anzeigen der Geräte, die VRF zugewiesen sind

So zeigen Sie die Geräte an:

Führen Sie den folgenden Befehl aus, um die Geräte anzuzeigen, die einer VRF zugewiesen sind.

root@host:~# ip link show vrf <name>

root@host:~# ip link show vrf red

Anzeigen von Nachbareinträgen in VRF

So listen Sie die Nachbareinträge auf, die Geräten zugeordnet sind, die einem VRF-Gerät unterworfen sind:

Führen Sie den folgenden Befehl aus, um dem Befehl ip die primäre Option hinzuzufügen:

root@host:~# ip -6 neigh show vrf <NAME>

root@host:~# ip neigh show vrf red

root@host:~# ip -6 neigh show vrf red

Anzeigen von Adressen für eine VRF

So zeigen Sie Adressen für Schnittstellen an, die einer VRF zugeordnet sind:

Führen Sie den folgenden Befehl aus, um dem Befehl ip die primäre Option hinzuzufügen:

root@host:~# ip addr show vrf <NAME>

root@host:~# ip addr show vrf red

Anzeigen von Routen für eine VRF

So zeigen Sie Routen für eine VRF an:

  1. Führen Sie den folgenden Befehl aus, um die IPv6-Routentabelle anzuzeigen, die dem VRF-Gerät zugeordnet ist:

    root@host:~# ip -6 route show vrf NAME

    root@host:~# ip -6 route show table ID

  2. Führen Sie den folgenden Befehl aus, um eine Routensuche für ein VRF-Gerät durchzuführen:

    root@host:~# ip -6 route get vrf <NAME> <ADDRESS>

    root@host:~# ip route get 192.0.2.1 vrf red

    root@host:~# ip -6 route get oif <NAME> <ADDRESS>

    root@host:~# ip -6 route get 2001:db8::32 vrf red

  3. Führen Sie den folgenden Befehl aus, um die IPv4-Routen in einem VRF-Gerät anzuzeigen:

    root@host:~# ip route list table <table-id>

Entfernen der Netzwerkschnittstelle aus einer VRF

Netzwerkschnittstellen werden aus einer VRF entfernt, indem die Versklavung durch das VRF-Gerät unterbrochen wird

Führen Sie den folgenden Befehl aus, um die Netzwerkschnittstelle zu entfernen:

root@host:~# ip link set dev NAME nomaster

Nach dem Entfernen der Netzwerkschnittstelle werden verbundene Routen in die Standardtabelle und lokale Einträge in die lokale Tabelle verschoben.

Hash-Feldauswahl für ECMP Load Balancing unter Linux

Sie können die ECMP-Hash-Richtlinie () sowohl für weitergeleiteten als auch für lokal generierten Datenverkehr (fib_multipath_hash_policyIPv4/IPv6) auswählen.

IPv4-Datenverkehr

  1. Standardmäßig verwendet der Linux-Kernel die Layer-3-Hash-Richtlinie für den Lastenausgleich des IPv4-Datenverkehrs. Layer-3-Hashing verwendet die folgenden Informationen:
    • Quell-IP-Adresse
    • Ziel-IP-Adresse

    root@host:~# sysctl -n net.ipv4.fib_multipath_hash_policy 0

  2. Führen Sie den folgenden Befehl aus, um den IPv4-Datenverkehr mithilfe der Layer-4-Hash-Richtlinie auszugleichen. Layer-4-Hashing gleicht den Datenverkehr basierend auf den folgenden Informationen aus:
    • Quell-IP-Adresse
    • Ziel-IP-Adresse
    • Quell-Portnummer
    • Portnummer des Ziels
    • Protokoll

    root@host:~# sysctl -w net.ipv4.fib_multipath_hash_policy=1

    root@host:~# sysctl -n net.ipv4.fib_multipath_hash_policy 1

  3. Führen Sie den folgenden Befehl aus, um Layer-3-Hashing für den inneren Paket-Header (IPv4/IPv6 über IPv4 GRE) zu verwenden:

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=2

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 2

    Die Richtlinie verwendet standardmäßig Layer-3-Hashing für das weitergeleitete Paket, wie im Standardansatz für IPv4-Datenverkehr beschrieben.

    IPv6-Datenverkehr

  4. Standardmäßig verwendet der Linux-Kernel eine Layer-3-Hash-Richtlinie für den Lastenausgleich des IPv6-Datenverkehrs. Die Layer-3-Hash-Richtlinie gleicht den Datenverkehr basierend auf den folgenden Informationen aus:
    • Quell-IP-Adresse
    • Ziel-IP-Adresse
    • Flow-Etikett
    • Nächster Header (Protokoll)

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 0

  5. Sie können die Layer-4-Hash-Richtlinie verwenden, um den IPv6-Datenverkehr auszugleichen. Die Layer-4-Hash-Richtlinie gleicht den Datenverkehr basierend auf den folgenden Informationen aus:
    • Quell-IP-Adresse
    • Ziel-IP-Adresse
    • Quell-Portnummer
    • Portnummer des Ziels
    • Nächster Header (Protokoll)

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=1

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 1

  6. Führen Sie den folgenden Befehl aus, um Layer-3-Hashing für den inneren Paket-Header (IPv4/IPv6 über IPv4 GRE) zu verwenden.

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=2

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 2

    MPLS

  7. Der Linux-Kernel kann den nächsten Hop einer Multipath-Route mit den folgenden Parametern auswählen:
    • Etikettenstapel bis zur Grenze von MAX_MP_SELECT_LABELS (4)
    • Quell-IP-Adresse
    • Ziel-IP-Adresse
    • Protokoll des inneren IPv4/IPv6-Headers

    Nachbarschaftserkennung

  8. Führen Sie den folgenden Befehl aus, um die Lebendigkeit (fehlgeschlagen/unvollständig/ungelöst) des Nachbareintrags anzuzeigen, was bei der Weiterleitung der Pakete an Next-Hops hilft.

    root@host:~# sysctl -w net.ipv4.fib_multipath_use_neigh=1

    Standardmäßig werden die Pakete mit dem root@host:~# sysctl -n net.ipv4.fib_multipath_use_neigh 0 Befehl an Next-Hops weitergeleitet.

wECMP mit BGP unter Linux

Lastenausgleich zu ungleichen Kosten ist eine Möglichkeit, den Datenverkehr ungleichmäßig auf verschiedene Pfade zu verteilen (einschließlich des Multipath-Next-Hops). wenn die Pfade unterschiedliche Bandbreitenkapazitäten haben. Das BGP-Protokoll erreicht dies, indem jede Route/jeder Pfad mithilfe der Link Bandwidth Extended Community mit der Bandbreite der Verbindung versehen wird. Die Bandbreite des entsprechenden Links kann als Teil dieser Linkbandbreiten-Community kodiert werden. RPD verwendet diese Bandbreiteninformationen jedes Pfads, um die Multipath-Next-Hops mit entsprechenden linux::weights zu programmieren. Ein Next-Hop mit linux::weight ermöglicht es dem Linux-Kernel, den Datenverkehr asymmetrisch auszugleichen.

BGP bildet einen Multipath-Next-Hop und ermittelt anhand der Bandbreitenwerte einzelner Pfade den Anteil des Datenverkehrs, den jeder der Next-Hops, die den ECMP-Next-Hop bilden, empfangen sollte. Die in der Verbindungsbandbreite angegebenen Bandbreitenwerte müssen nicht die absolute Bandbreite der Schnittstelle sein. Diese Werte müssen die relative Bandbreite eines Pfads vom anderen widerspiegeln. Weitere Informationen finden Sie unter Grundlegendes zum Definieren von BGP-Communities und erweiterten Communities und zur Auswertung von BGP-Communities und erweiterten Communities in Übereinstimmungsbedingungen für Routingrichtlinien.

Stellen Sie sich ein Netzwerk mit R1 vor, das Pfade zu gleichen Kosten von R2 und R3 zu einem Ziel R4 erhält. Wenn Sie 90 % des Lastenausgleichsdatenverkehrs über den Pfad R1-R2 und die restlichen 10 % des Datenverkehrs über den Pfad R1-R3 mithilfe von wECMP senden möchten, müssen Sie die von den beiden BGP-Peers empfangenen Routen mit der Linkbandbreiten-Community kennzeichnen policy-options, indem Sie konfigurieren.

  1. Konfigurieren Sie die Richtlinienanweisung.

    root@host> show configuration policy-options

  2. RPD verwendet die Bandbreitenwerte, um den Datenverkehr mit den nächsten Hops mit mehreren Pfaden ungleichmäßig auszugleichen.

    root@host> show route 100.100.100.100 detail

  3. Der Linux-Kernel unterstützt einen ungleichen Lastausgleich, indem er linux::weights für jeden nächsten Hop zuweist.

    root@host:/# ip route show 100.100.100.100

    Die linux::weights sind als Division der ganzen Zahl 255 (dem Maximalwert eines vorzeichenlosen Zeichens) auf Linux programmiert. Jeder Next-Hop im ECMP-Next-Hop erhält ein linux::weight, das proportional zu seinem Anteil an der Bandbreite ist.

Aktivieren von SRv6 auf cRPD

Sie können die IPv6-Segmentrouting-Funktion auf cRPD mit dem folgenden sysctl-Befehl aktivieren:

  1. So aktivieren Sie das Segment-Routing.

    root@host:~# sysctl net.ipv6.conf.all.seg6_enabled=1

    root@host:~# sysctl net.ipv6.conf.all.forwarding=1

  2. Konfigurieren Sie den folgenden Befehl, um SRv6 auf der eth0-Schnittstelle zu aktivieren.

    root@host:~# sysctl net.ipv6.conf.eth0.seg6_enabled=1

  3. Konfigurieren Sie den folgenden Befehl, um die DT4-SIDs festzulegen.

    root@host:~# sysctl -wq net.vrf.strict_mode=1