Zuletzt aktualisiert: (UTC)
Der Hauptzweck von BGP-fähigen Routern besteht darin, Präfixe für andere Router zu bewerben. Diese Präfixe können aus verschiedenen Adressfamilien stammen, z. B. IPv4 und VPNv4. Bei der Werbung für ein Präfix fügt BGP zusätzliche Informationen hinzu, die als Attribute bezeichnet werden. BGP verwendet diese Attribute, um den besten Pfad auszuwählen.
BGP kann mit jedem Präfix weitere Informationen in Form von Community-Strings enthalten. Eine Community-Zeichenfolge ist ein Zahlenwert, den der Peer wie ein Tag verwendet.
Communities erstellen Routingrichtlinien zwischen Peers. Durch das Markieren von Präfixen mit Communities weisen wir den Peer an, die Präfixe auf besondere Weise zu behandeln.
Nehmen wir als Beispiel an, dass eine bestimmte Gruppe von Präfixen von einem Peer-Router auf 10 gewichtet werden muss. Wir können eine Community-Nummer auswählen und die Präfixe damit markieren. Wenn es ein Präfix von uns sieht, das mit dieser Community markiert ist, wird das Gewicht auf 10 gesetzt.
Wir müssen uns mit unserem Peer darüber einigen, welche Communities verwendet werden sollen. Aus technischer Sicht liegt es an ihnen zu entscheiden, wie sie mit einem Community-String umgehen. Sie könnten wählen, sie ganz zu ignorieren, wenn sie wollen.
Anbieter verfügen möglicherweise über eine Liste vordefinierter Communities, die sie verwenden, und Aktionen, die sie ausführen. Als Kunde können wir unsere Communities so einstellen, dass sie ihren Richtlinien entsprechen, um zu optimieren, wie sie mit unseren Präfixen umgehen.
Communities sind optional und transitiv. Sie sind transitiv, sodass ein Peer sie an den nächsten Peer weitergeben kann.
Jeder Standardwert ist ein 32-Bit-Wert. Sie werden oft in zwei 16-Bit-Werte unterteilt, um das Lesen zu erleichtern. Zum Beispiel ist die Community 4259840100 dasselbe wie 65000: 100. Oft stellen die ersten 16 Bit den AS dar, und die zweiten 16 Bit sind ein benutzerdefinierter Wert.
Es gibt auch erweiterte Communities, die für spezielle Zwecke sind, wie z. B. MPLS-VPNs. Dies sind 64-Bit-Werte. Sie bestehen aus einem 16-Bit-Typwert, einem 16-Bit-AS- oder IP-Wert und 32-Bit für den benutzerdefinierten Community-Wert.
Einige Gemeinden sind reserviert:
- 0:0 – 0:65535
- 65535:0 – 65535:63335
Konfiguration
Lassen Sie uns dies ausprobieren, um zu sehen, wie es funktioniert. Bitte beachten Sie, dass dies kein reales Szenario ist.
Für dieses Lab verwenden wir zwei Router mit unterschiedlichen ASN’s. R1 hat mehrere Netzwerke, die es R2 ankündigen möchte.
R2 weist den Präfixen Gewichtungen zu, abhängig von den angehängten Communities:
- Wenn die Community auf 10:100 gesetzt ist, wird das Gewicht auf 100 gesetzt
- Wenn die Community auf 10 gesetzt ist:200, es wird das gewicht auf 10
Laden Sie das BGP Communities Lab herunter
R1 – Zuweisen von Communities
Präfixlisten Identifizieren Sie die Routen, denen Communities zugewiesen werden sollen. In diesem Fall befinden sich 172.16.0.0 und 172.16.10.0 in Gruppe1 und 172.16.20.0 in Gruppe2.
Route-Karten stimmen mit den Präfixlisten überein und legen dann die Community auf der Route fest. Group1 wird Community 100 zugewiesen, und Group2 wird Community 200 zugewiesen.
Standardmäßig sind die Communities eine große Zahl, die schwer zu lesen ist. Der Befehl ip bgp-community new-format ändert diesen Wert in das ASN:Community-Format. Dies erleichtert die spätere Überprüfung.
Standardmäßig senden Cisco-Router keine Communities. Aktivieren Sie dies pro Nachbar mit den Befehlen send-community und send-community extended.
Schließlich wird die Routenkarte auf den ausgehenden Nachbarn angewendet. Beim Senden von Routen an den Nachbarn werden die Communities angehängt.
! Identify networks with prefix listsip prefix-list Group1 seq 5 permit 172.16.0.0/24ip prefix-list Group1 seq 10 permit 172.16.10.0/24ip prefix-list Group2 seq 5 permit 172.16.20.0/24! Match networks, and set community valuesroute-map R2_Peer permit 10 match ip address prefix-list Group1 set community 10:100route-map R2_Peer permit 20 match ip address prefix-list Group2 set community 10:200! Enable the new community formatip bgp-community new-formatrouter bgp 10 ! Enable sending communities neighbor 10.10.10.2 send-community neighbor 10.10.10.2 send-community extended ! Apply the route map to this neighbour neighbor 10.10.10.2 route-map R2_Peer out
Überprüfen Sie Communities
Hier können wir sehen, dass die Communities auf den Routen festgelegt sind, die R2 empfängt.
! Enable the new community formatip bgp-community new-format! Verify that the community is setR2#show ip bgp 172.16.0.0BGP routing table entry for 172.16.0.0/24, version 2Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 10 10.10.10.1 from 10.10.10.1 (172.16.20.1) Origin IGP, metric 0, localpref 100, valid, external, best Community: 10:100 rx pathid: 0, tx pathid: 0x0R2#show ip bgp 172.16.20.0BGP routing table entry for 172.16.20.0/24, version 4Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 10 10.10.10.1 from 10.10.10.1 (172.16.20.1) Origin IGP, metric 0, localpref 100, valid, external, best Community: 10:200 rx pathid: 0, tx pathid: 0x0
Richtlinien festlegen
Jetzt, da R2 Routen mit Communities empfängt, kann es Richtlinien auf sie anwenden.
Zunächst erstellen wir eine Community-Liste, um bestimmte Communities zu identifizieren. Dies ist wie die Verwendung von ACLs oder Präfixlisten zur Identifizierung von IP-Adressen. In diesem Beispiel verwenden wir eine benannte Community-Liste. Im Gegensatz zu nummerierten Community-Listen unterstützen sie RegEx und können unbegrenzte Einträge haben. Nummerierte Listen haben ein Limit von 100 Einträgen.
Route-Karten stimmen mit der Community überein und legen das Gewicht fest.
Die Routenkarte wird für eingehende Präfixe auf den Nachbarn angewendet.
! Create a named community list to identify the communitiesip community-list expanded High_Weight permit 10:100ip community-list expanded Low_Weight permit 10:200! Create a route-map to match the communities, and set the weightroute-map R1_Peer permit 10 match community High_Weight set weight 100route-map R1_Peer permit 20 match community Low_Weight set weight 10 ! Apply the route map to the neighbourrouter bgp 20 neighbor 10.10.10.1 route-map R1_Peer in
Diese Änderungen finden nicht für Routen statt, die bereits in Ihrer Routing-Tabelle enthalten sind. Der einfachste Weg, dies zu erzwingen, besteht darin, die Nachbarbeziehung zurückzusetzen. Denken Sie daran, dass dies störend ist, also tun Sie es nicht in einem Produktionsnetzwerk.
Richtlinien überprüfen
Wenn Sie sich die BGP-Tabelle auf R2 ansehen, können Sie sehen, dass die Gewichte wie erwartet festgelegt wurden.
! Verify that the weights are setR2#show ip bgpBGP table version is 4, local router ID is 10.10.10.2Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incompleteRPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 172.16.0.0/24 10.10.10.1 0 100 10 i *> 172.16.10.0/24 10.10.10.1 0 100 10 i *> 172.16.20.0/24 10.10.10.1 0 10 10 i
Bekannte Gemeinschaften
Es gibt mehrere vordefinierte Gemeinschaften, die als bekannte Gemeinschaften bezeichnet werden. Diese Communities haben spezielle vordefinierte Bedeutungen, die alle BGP-Sprecher unterstützen.
Zu den häufigsten gehören:
Internet – Eine proprietäre Cisco-Community. Dadurch kann der Router das Präfix an alle Nachbarn weitergeben. Dies ist eine ‚Catch-All‘ -Community am Ende einer Community-Liste. Dies ist eine Ausnahme, da nicht alle Anbieter dies unterstützen.
No-Export – Verhindert die Bekanntgabe des Präfixes an eBGP-Nachbarn. Dies hält ein Präfix in der AS.
No-Advertise – Dies verhindert, dass das Präfix an Nachbarn weitergegeben wird.
Local-AS – Wird mit Konföderationen verwendet, um das Präfix innerhalb des lokalen AS zu halten. Ermöglicht das Teilen von Präfixen mit eBGP-Nachbarn innerhalb der Konföderation.
Entwerfen für Gemeinschaften
Berücksichtigen Sie beim Entwerfen von Communities die folgenden grundlegenden Schritte:
- Definieren der Routing-Verwaltungsrichtlinie
- Entscheiden Sie, was gefiltert werden soll und wo gefiltert werden soll
- Entscheiden Sie, welche Attribute geändert werden sollen, um den Datenverkehrsfluss zu beeinflussen
- Entwerfen Sie das Community-Schema
- Das heißt, entscheiden Sie basierend auf der Richtlinie, welche Werte verwendet werden sollen
- Bereitstellen des Schemas mithilfe von Routenkarten
- Dokumentation erstellen
Wenn Sie Routen von einer externen Quelle empfangen, sollten Sie sie anhand der Site markieren, auf der sie empfangen wurden. Wenn Sie Routen erstellen, sollten Sie sie ebenfalls mit einer ID für die Site kennzeichnen, von der sie stammen.