# Border Gateway Protocol

BGP im TCP/IP-Protokollstapel: :
| Anwendung | BGP | BGP | BGP | BGP | BGP |
| Transport | TCP | TCP | TCP | TCP | TCP |
| Internet | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) |
| Netzzugang | Ethernet | Token Bus | Token Ring | FDDI | … |
Das Border Gateway Protocol (BGP) ist das im Internet eingesetzte Routingprotokoll, welches autonome Systeme (AS) miteinander verbindet. Diese autonomen Systeme werden in der Regel von Internetdienstanbietern gebildet. BGP wird allgemein als Exterior-Gateway-Protokoll (EGP) und Pfadvektorprotokoll bezeichnet und verwendet für Routing-Entscheidungen sowohl strategische als auch technisch-metrische Kriterien, wobei in der Praxis meist betriebswirtschaftliche Aspekte berücksichtigt werden. Innerhalb autonomer Systeme werden Interior Gateway Protokolle (IGP) wie z. B. OSPF eingesetzt.

## Protokollbeschreibung

BGP ist in RFC 1163 beschrieben. In der derzeit eingesetzten Version 4 ist es im RFC 4271 beschrieben. Die BGP-Router verwenden den TCP-Port 179.
1991 wurde im RFC 1269 die Border Gateway Protocol (Version 3) MIB veröffentlicht. Diese MIB ermöglicht das Management von Geräten mittels SNMP, die das BGP-Protokoll als Autonomous System Routing Protocol unterstützen.
Im Februar 1998 wurde das BGPv4 in RFC 2283 mit sogenannten Multiprotocol Extensions versehen. Die aktuelle Version findet sich in RFC 4760. Damit ist BGPv4 nicht mehr rein IPv4-spezifisch, sondern unterstützt ebenso das Routing mit weiteren Protokollen der Vermittlungsschicht. U. a. ist so auch der Austausch von MPLS-Labels möglich, dies war Voraussetzung für den Einsatz von BGP/MPLS IP VPNs (RFC 4364).

## Anwendungsbereich
### EBGP

BGP, das derzeit einzige eingesetzte Exterior-Gateway-Protokoll, ist ein Protokoll für das Routing zwischen autonomen Systemen (AS). Man spricht bei dieser Verwendung von External BGP (EBGP).

#### Route Server

An Internet Exchanges, zum Beispiel dem deutschen DE-CIX, treffen viele autonome Systeme zum Zwecke des Peerings zusammen. Um die Notwendigkeit sehr vieler BGP-Verbindungen bis hin zur Vollvermaschung zu vermeiden, werden dort in der Regel sogenannte Route Server angeboten. Die Border-Router, die zu den angeschlossenen Netzen vermitteln, senden ihre Routen an den Routing-Server, also den Route Reflector, von dem alle anderen Router diese Routen wieder beziehen können. Dadurch kann ein Netzwerk auf einfache Art und Weise mit fast allen angeschlossenen Netzen zusammengeschlossen werden.

### IBGP

BGP kann auch innerhalb eines autonomen Systems angewendet werden. Typischerweise geschieht dies, um die von EBGP-Routern gelernten Routen innerhalb des eigenen autonomen Systems zu propagieren. Zwar wäre es auch mit Hilfe eines IGP möglich die BGP-Attribute (siehe unten) zu übermitteln, jedoch sind diese nicht dafür ausgelegt. Diese Verwendung wird als Internal BGP (IBGP) bezeichnet. Alle IBGP-Router, die zusammen Routen austauschen, verwenden dieselbe AS-Nummer des eigenen AS, wenn keine BGP-Confederations (siehe unten) verwendet werden.

#### Vollständige Vermaschung

Beim Einsatz innerhalb eines autonomen Systems müssen BGP-Verbindungen zwischen allen Routern des AS eingerichtet werden, so dass eine vollständige Vermaschung entsteht. Enthält ein autonomes System n Router, so resultiert dies also in ${\tfrac {n^{2}-n}{2}}$ BGP-Verbindungen. Aufgrund der hierdurch entstehenden Skalierungsprobleme wird bei größeren Netzwerken ein sogenannter Route Reflector (RR) eingesetzt. Durch diesen entfällt die Notwendigkeit einer Vollvermaschung der IBGP-Router; stattdessen bauen diese eine BGP-Verbindung zu einem oder aus Redundanzgründen zu mehreren Route-Reflektoren auf.
Der Grund der Notwendigkeit einer vollständigen Vermaschung liegt darin, dass IBGP innerhalb eines autonomen Systems empfangene BGP-Informationen von benachbarten BGP-Routern selber nicht an andere IBGP-Router weitergibt („Split-Horizon-Prinzip“). Dies dient der Vermeidung von Routing-Schleifen.

#### Route Reflector

Um das Problem der bei einer vollständigen Vermaschung auftretenden Vielzahl an BGP-Sessions zu lösen, können in einem AS ein oder aus Redundanzgründen mehrere BGP-Router als Route Reflector konfiguriert werden. So schickt jeder EBGP-Router seine via EBGP gelernten Routen via IBGP nur noch an einen bestimmten BGP-Peer, den Route Reflector, der sie sammelt und wiederum via IBGP an die anderen BGP-Router im AS verteilt. Da nun jeder BGP-Router nur eine einzige BGP-Verbindung zu seinem Route Reflector zu halten braucht, fallen insgesamt nur noch n Verbindungen an.
Ein einzelner Route Reflector stellt einen Single Point of Failure dar. Zur Ausfallsicherheit können daher mehrere dieser Router als Cluster zusammengeschaltet werden. Zu jedem der Cluster-Router muss von den IBGP-Routern jeweils eine Verbindung hergestellt werden. Bei n Routern und m Route-Reflektoren ergeben sich n·m Verbindungen.
Route-Reflektoren können Router sein, die dediziert für diese Aufgabe im Netz bereitgestellt werden oder als gewöhnlicher Router im Datenpfad liegen und Route-Reflector-Funktionalität wahrnehmen.

#### Confederation

Durch Confederation kann ein autonomes System (AS) wiederum in autonome Systeme (Sub-AS) unterteilt werden. Diese Sub-AS erhalten unterschiedliche private AS-Nummern (ASN), für die der Bereich 64512–65535 (16-Bit-AS-Nummernbereich) bzw. 4200000000–4294967294 (32-Bit-AS-Nummernbereich) reserviert und frei verfügbar ist. Es bedarf für die Nutzung dieser AS-Nummern keiner Registrierung z. B. bei der RIPE NCC. Die AS-Nummern aus diesen privaten Bereich werden von EBGP-Routern mit öffentlichen AS-Nummern nicht an andere EBGP-Router weitergeleitet. Innerhalb des AS werden somit unterschiedliche AS-Nummern verwendet, über einen öffentlichen EBGP-Router wird aber nur die externe AS-Nummer präsentiert. Zwischen den Sub-AS kommt EBGP für den Routenaustausch zum Einsatz. Zum einen kann durch den Einsatz von Confederation die Verwaltung großer AS vereinfacht und zum anderen die Verbindungskomplexität durch die Vollvermaschung aller IBGP-Router verringert werden.
In der Grafik stellen AS100 und AS200 öffentliche autonome Systeme (AS) dar, die Routen über EBGP austauschen. AS100 teilt sich durch Confederation in zwei private autonome System AS65050 und AS65100 auf. Die beiden privaten AS tauschen untereinander auch ihre Routen über EBGP aus. Innerhalb beider privater AS ist jeweils ein BGP-Router als Route Reflector (RR) konfiguriert. Alle anderen BGP-Router innerhalb eines privaten AS tauschen mit dem Route Reflector über IBGP ihre Routen untereinander aus.

#### Loopbackadressen

Im Gegensatz zu EBGP-Verbindungen, die in der Regel auf physischen Routerschnittstellen terminieren, werden IBGP-Verbindungen zwischen Router-Loopback-Adressen definiert. Hierdurch soll vermieden werden, dass bei Deaktivierung/Ausfall einer physischen Router-Schnittstelle die IBGP-Verbindung abbricht, obwohl der Router diese bei entsprechender Redundanzbereitstellung innerhalb des autonomen Systems über eine alternative Schnittstelle umschwenken könnte. Da aber ohne eine bereits bestehende IBGP-Verbindung die Loopback-Adressen als Route noch nicht propagiert werden können, ist ein darunterliegendes Interior Gateway Protocol (IGP) wie z. B. OSPF erforderlich. Dies bedeutet, dass auf jedem IBGP-Router auch ein IGP-Router-Prozess konfiguriert wird. Da jeder IBGP-Router mindestens zwei physische Netzwerkkarten besitzt, wird das IGP mehrere mögliche Pfade zwischen den Loopback-Adressen kennen. Fällt nun eine physische Netzwerkschnittstelle eines IBGP-Routers aus, dann wird über IGP ein alternativer Pfad propagiert. Solange mindestens eine physische Schnittstelle erreichbar ist, ist auch die auf dem Router konfigurierte Loopback-Adresse erreichbar und die IBGP-Verbindung kann innerhalb des AS unterbrechungsfrei umgeroutet werden.
Ohne Loopback-Adressen wären die IBGP-Router untereinander an physischen Schnittstellen gebunden. Bei einem Ausfall einer solchen Schnittstelle wäre die Verbindung unterbrochen und eine konsistente Verteilung von Routen innerhalb eines autonomen Systems selbst dann nicht mehr sichergestellt, wenn die interne Netzwerkinfrastruktur redundant realisiert ist.

## Protokollübersicht

Die direkten Verbindungen zwischen benachbarten Routern werden manuell angegeben. Router, welche miteinander über BGP Routing-Informationen austauschen wollen, bauen zunächst eine TCP-Verbindung auf, über welche dann die BGP-Nachrichten gesendet werden. Diese Verbindung nennt man eine BGP-Session („Sitzung“).

### BGP-Protokoll

| Bit Offset | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 0–15 | 16–23 | 16–23 | 16–23 | 16–23 | 16–23 | 16–23 | 16–23 | 16–23 | 24–31 | 24–31 | 24–31 | 24–31 | 24–31 | 24–31 | 24–31 | 24–31 |
| 0 | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) |
| 32 | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) |
| 64 | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) |
| 96 | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) | Marker (16 Bytes) |
| 128 | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Length | Message Type | Message Type | Message Type | Message Type | Message Type | Message Type | Message Type | Message Type | | | | | | | | |
| | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message | Message |
* Marker: Alle Bits der ersten 16 Bytes sind aus Kompatibilitätsgründen auf „1“ gesetzt.
* Message Length: Gesamtgröße der BGP-Nachricht
* Message Type: Art der BGP-Nachricht
| 1 = | Open | RFC 4271 |
| 2 = | Update | RFC 4271 |
| 3 = | Notification | RFC 4271 |
| 4 = | KeepAlive | RFC 4271 |
| 5 = | ROUTE-REFRESH | RFC 2918 |
* Message: Bei einer Routenaktualisierung werden in diesem Bereich die Routen angegeben, welche hinzugefügt oder gelöscht wurden.

### Arten von BGP-Nachrichten

BGP verwendet vier verschiedene Arten von Nachrichten im Protokoll:
OPEN Wird nur zu Beginn einer Verbindung gesendet und muss mit einer KEEPALIVE-Nachricht beantwortet werden. Bei der OPEN-Nachricht werden die Parameter BGP-Version, AS-Nummer, Hold Timer, BGP Identifier sowie optionale Parameter mitgeschickt. Danach werden die Routeninformationen zwischen den Routern ausgetauscht.
UPDATE Teilt eine Pfadänderung mit. Es können pro UPDATE-Nachricht gleichzeitig mehrere Pfade hinzugefügt und mehrere entfernt werden. UPDATE-Nachrichten sind das Kernstück von BGP.
NOTIFICATION Beendet eine Verbindung und gibt Fehler- bzw. Statuscodes an. Alle Pfade, die über diese beendete Verbindung empfangen wurden, müssen nun gelöscht werden. Über ein BGP-Update würde dann verbreitet werden, dass diese Route nicht mehr verfügbar ist.
KEEPALIVE Bestätigt die OPEN-Anfrage. Zur regelmäßigen Überprüfung, ob der verbundene Router noch online ist oder ob die Verbindung unterbrochen ist und die Pfade über den verbundenen Router somit ungültig geworden sind. Die Router, welche gerade eine BGP-Session aufgebaut haben, senden sich gegenseitig in regelmäßigen Abständen eine KEEPALIVE-Nachricht. Diese besteht nur aus dem Message Header. Im Attribut Hold Time einer OPEN-Nachricht wird die maximale Zeit angegeben, in der ein BGP-Router eine KEEPALIVE-Nachricht vom BGP-Partner der Session erwartet. Kommt innerhalb der Hold Time keine KEEPALIVE-Nachricht an, wird die BGP-Session mit einer NOTIFICATION beendet.

### Verbindungsstatus bei BGP

In der Grafik werden die verschiedenen Zustände einer BGP-Verbindung dargestellt. In der Praxis ist es wichtig zu wissen, dass noch keine Routingeinträge ausgetauscht werden, wenn in einer Routerkonfiguration der Status Active angezeigt wird. Dieser Status bedeutet, dass versucht wird, eine Verbindung aufzubauen. Erst wenn der Status established erreicht wurde, besteht eine funktionierende Verbindung zwischen den BGP-Routern.

## Genauere Beschreibung

Kernstück von BGP ist die UPDATE-Nachricht, über welche sich BGP-Router die Existenz neuer Routen (Announcement) oder den Wegfall bestehender Routen (Withdrawal) mitteilen. Der Empfänger einer UPDATE-Nachricht entscheidet anhand seiner Routing-Richtlinien („policies“), ob er sein Routing umstellt (und daraufhin selbst UPDATE-Nachrichten versenden muss), die Nachricht einfach nur weiterleitet (z. B. via IBGP) oder schlicht ignoriert.

### Attribute

Eine Route in BGP hat mehrere Attribute. Im Folgenden werden die wichtigsten erklärt.
* Der AS Path beschreibt, über welche autonomen Systeme das angegebene Ziel (ein CIDR-Präfix) erreicht werden kann. Die autonomen Systeme werden hierbei über ihre AS-Nummer (ASN) identifiziert. Im AS-Pfad darf zwar keine Schleife vorkommen; jedoch ist es erlaubt, dass sich ein AS mehrmals hintereinander einträgt und somit den AS-Pfad künstlich verlängert, um die Route zwar verfügbar, aber unattraktiv zu machen (AS Path Prepending).
* Die IGP-Metrik beschreibt die Kosten durch das eigene Netzwerk, um den Austrittspunkt in das nächste AS auf dem AS-Pfad zu erreichen.
* Der Multi-Exit Discriminator (MED) wird verwendet, um verschiedene parallele Verbindungen zum gleichen Nachbar-AS zu priorisieren, bevorzugt wird der jeweils kleinste Wert. Dieses Attribut wird zwischen EBGP-Peers verwendet.
* Communities sind Routing Tags, anhand welcher Routing-Änderungen (UPDATE-Nachrichten) bzw. übermittelte Präfixe zu anderen BGP-Peers markiert werden können. Eine BGP-Community ist ein 32-Bit-Wert, der von anderen BGP-Routern als Filterkriterium verwendet werden kann. Neben Standard-Communities können sog. Extended Communities in der Notation 12345:12345 oder als Dezimalzahl frei verwendet werden.
* Local Preference legt durch den jeweils höheren Wert einen bevorzugten Pfad aus mehreren Pfaden innerhalb des gleichen AS fest. Falls es zum gleichen Zielpräfix mehrere Routen mit gleich langen AS-Pfaden gibt, dann kann man über Local Preference bestimmte Routen bevorzugen; vgl. Abschnitt „Pfadauswahl“.
* Next Hop ist die Angabe der IP-Adresse des Next-Hop-Routers zu einem Präfix. Der Next-Hop-Router ist derjenige Gateway-Router, welcher das eigene AS mit dem nächsten AS auf dem AS-Pfad verbindet.
* Weight ist ein lokales Attribut (proprietär); vgl. Abschnitt „Pfadauswahl“.
* Origin gibt die Quelle eines Präfixes an: IGP, EGP oder Incomplete.

### Pfadauswahl

Sehr oft kommt es vor, dass ein Router zum selben Ziel unterschiedliche Routen mitgeteilt bekommt. Die Auswahl der Route, für welche er sich letztendlich entscheidet, ist als BGP Path Selection Process bekannt. Der Netzwerkbetreiber kann die Pfadauswahl im Router durch die Wahl geeigneter Regeln im Router steuern und beeinflussen.
Grundsätzlich läuft der BGP Path Selection Process nach folgenden Regeln ab:
* Der Pfad mit dem größten Wert für Weight wird bevorzugt (Cisco-proprietär).
* Wenn der Wert für Weight identisch ist, wird der Wert mit der größten Local Preference bevorzugt.
* Wenn die Werte für Local Preference gleich sind, wird der Pfad bevorzugt, der von BGP auf diesem Router generiert wurde.
* Wenn kein Pfad auf diesem Router generiert wurde, bevorzuge den Pfad mit dem kürzesten AS_PATH-Attribut.
* Wenn alle AS_PATH-Attribute die gleiche Länge haben, bevorzuge den niedrigsten Origin-Typ (IGP ist niedriger als EGP, EGP ist niedriger als Incomplete)
* Wenn alle Origin-Typen gleich sind, bevorzuge den Pfad mit dem niedrigsten MED-Attribut.
* Wenn alle Pfade den gleichen Wert für MED haben, bevorzuge externe Pfade gegenüber internen Pfaden.
* Wenn immer noch alle Pfade die gleiche Priorität haben, bevorzuge den Pfad zum nächstgelegenen IGP-Nachbarn.
* Sollten alle Pfade gleich sein, bevorzuge den Pfad mit der niedrigsten IP-Adresse des BGP-Peers bezogen auf die Router-ID.

### Zusammenspiel von IBGP mit dem IGP

Damit ein Router ein Paket an ein anderes Netz weiterleiten kann, zu welchem er keine unmittelbare Verbindung hat, ist in der Regel ein Zusammenspiel von IBGP und dem IGP (dem Intradomain-Routingprotokoll, also beispielsweise OSPF, IS-IS, EIGRP/IGRP, RIP) vonnöten, welches benötigt wird, um Pakete zum entsprechenden Gateway-Router weiterzuleiten. Hierzu dient das BGP-Attribut Next Hop.
Beispiel: Ein Router R$_1$ in AS1 soll ein Paket zur Zieladresse 10.1.2.3 weiterleiten. Durch eine IBGP-Update-Nachricht hat er zuvor erfahren, dass das Zielnetz 10.0.0.0/8 über das Nachbar-AS 4711 erreichbar ist. Allerdings hat R$_1$ keine unmittelbare Verbindung zu AS4711; diese Verbindung existiert nur an einem anderen Router R$_2$ (Gateway-Router). Durch das BGP-Attribut Next Hop kennt R$_1$ jedoch die IP-Adresse von R$_2$. Nur anhand der Informationen des IGP kennt R$_1$ den kürzesten Pfad innerhalb von AS1 zu R$_2$ und weiß somit, zu welchem Nachbar-Router R$_x$ er das Paket schicken muss, so dass es beim Gateway-Router R$_2$ ankommt, welcher es schließlich in AS4711 weiterleiten kann.
Die Bereitstellung von Erreichbarkeitsinformationen für das IBGP-Protokoll durch ein IGP-Protokoll ist auch zur Herstellung von IBGP-Sessions zwischen nicht unmittelbar benachbarten IBGP-Routern oder zu BGP-Route-Reflektoren notwendig.

## Besonderheiten bei BGP
### Routingschleifen

BGP ist ein Pfadvektorprotokoll. Seine Funktionsweise ist stark an Distanzvektoralgorithmen und -protokolle wie z. B. Routing Information Protocol (RIP) angelehnt, jedoch wird dem dort vorkommenden Problem der Routingschleifen effektiv vorgebeugt. Eine Routingschleife entsteht, wenn ein IP-Paket auf seinem Weg durch das Internet dasselbe AS mehrmals passiert. Ein BGP-Router teilt beim Senden von Routing-Informationen (UPDATE) dem Kommunikationspartner nicht nur mit, dass er einen bestimmten Abschnitt des Internets erreichen kann, sondern auch die vollständige Liste aller autonomen Systeme (AS-Path), die IP-Pakete bis zu diesem Abschnitt passieren müssen (sein eigenes AS steht dabei an erster, das Ziel-AS an letzter Stelle). Merkt der Kommunikationspartner nun, dass das AS, dem er selbst angehört, bereits in dieser Liste vorhanden ist, verwirft er die Nachricht und vermeidet so, dass eine Routing-Schleife entsteht.

### Route Aggregation

Bei BGP kann jeder Router gemeinsame Routen zusammenfassen, im Gegensatz z. B. bei OSPF, auf deren Routern eine Routing-Zusammenfassung nur auf den Area Border Routern durchgeführt werden kann.

### Link-State

Unterschiedliche Linkgeschwindigkeiten werden nicht berücksichtigt. Die Routen werden hauptsächlich nach der Länge (AS Path) und nach strategischen Aspekten ausgewählt.

### Hop-Länge

Die Anzahl an (BGP-)Routern („Hop“) wird durch BGP als Entscheidungskriterium bei der Auswahl des besten Weges zum Ziel nicht berücksichtigt – nur die Anzahl der autonomen Systeme ist wichtig (abgesehen vom Attribut IGP-Metrik).

## Probleme bei BGP
### Allgemein

BGP weist prinzipbedingt eine Reihe von Schwächen auf, die in einer Minimalkonfiguration entstehen können. Die Schwächen werden jedoch in der Regel dadurch kompensiert, dass die Priorisierung von Pfaden Routing-Policies unterliegt, die der jeweilige Netzbetreiber steuert.

### Wachstum von Routingtabellen

Da jeder BGP-Router über Routeninformationen von anderen, insbesondere der benachbarten BGP-Routern verfügt, baut sich jeder BGP-Router eine Datenbank für die Routen zu allen erreichbaren autonomen Systemen auf. Die Größe der Tabelle mit den Routen-Informationen lag im Dezember 2016 bei etwa 650.000 Einträgen in ca. 56.000 autonomen Systemen.
| IPv4 | Ende 2005 | April 2011 | April 2012 | Mai 2014 | Juni 2015 | Dezember 2016 |
| Routingeinträge | 170.000 | 360.000 | 411.000 | 500.000 | 557.973 | 646.157 |
| Autonome Systeme | 26.000 | 37.000 | 40.900 | 47.010 | 50.921 | 56.158 |
Dem Wachstum der Routing-Tabellen kann in Grenzen durch Route Aggregation entgegengewirkt werden.
Bei der Entwicklung von IPv6 wurde auch das Problem des Wachstums von Routingtabellen bei IPv4 berücksichtigt. So sind beim Einsatz von IPv6 wesentlich weniger Routing-Einträge zu erwarten. Zurzeit nutzen noch nicht alle Internet-Provider IPv6 und daher kann die folgende Statistik nicht direkt mit der obigen Tabelle über die IPv4-Routing-Einträge verglichen werden.
| IPv6 | April 2012 | Juni 2015 | Dezember 2016 |
| Routingeinträge | 8.500 | 22.014 | 34.789 |
| Autonome Systeme | 5.100 | 8.251 | 12.666 |

### Lastverteilung

BGP bringt standardmäßig keine Verfahren zur Lastverteilung mit. Es wird immer nur eine mögliche Route ausgewählt. Es existieren jedoch proprietäre Erweiterungen, die eine Konfiguration zur Lastverteilung ermöglichen. Diese Erweiterungen ermöglichen im Gegensatz z. B. zu OSPF eine Lastverteilung auf unterschiedlich gewichteten Verbindungen.

### Sicherheit

In der Grundkonfiguration ist ein BGP-Router anfällig für Spoofing-Angriffe, durch die Angreifer Routen manipulieren können. Durch den Einsatz von Authentifizierung mit einem zwischen den BGP-Peers individuell festgelegten Passwort (basierend auf MD5-Hashes), kann der Datenaustausch zwischen den BGP-Routern gesichert werden. Dies erschwert Spoofing-Angriffe zwar stark, ist aber insbesondere von der Sicherheit von MD5 abhängig, welches inzwischen von Krypto-Experten als nicht mehr sicher angesehen wird.
Weiterhin können aufgrund des Punkt-zu-Punkt-Charakters von BGP-Router-Beziehungen mittels Paketfilter-Listen die erlaubten BGP-Peers entsprechend auf die zulässigen Partner eingeschränkt werden.
Daneben wurden und werden verschiedene weitere Sicherheitsmechanismen für BGP vorgeschlagen; allerdings wäre es selbst bei einem flächendeckenden Einsatz vorgeschlagener Verfahren nahezu unmöglich, Angriffe, welche die Umleitung von Verkehrsströmen beabsichtigen, vollständig zu unterbinden.

### Route Flap

Route Flaps werden von Routen verursacht, welche über längere Zeiträume hinweg immer wieder hin- und herschwanken, annonciert und wieder zurückgezogen werden. Als Gegenmaßnahme bieten moderne BGP-Implementierungen ein Verfahren namens Route Flap Damping, welches jedoch unter bestimmten Bedingungen zu unerwünscht langen Verzögerungen bei der Weiterleitung von Routenänderungen führen kann.

### Update Bursts

Update Bursts sind plötzlich auftretende große Mengen an UPDATE-Nachrichten, oft zu miteinander nicht näher korrelierten Zielen.

## Besondere Ereignisse
### YouTube-Blockade

Im Februar 2008 wurde Pakistan Telecom durch einen Gerichtsbeschluss dazu gezwungen, YouTube-Verkehr in Pakistan zu blockieren. Technisch wurde dies umgesetzt, indem eine falsche Route zum Netzwerk von YouTube in IBGP eingespeist wurde. Durch einen Konfigurationsfehler wurde diese falsche Route jedoch nicht nur in Pakistan verwendet, sondern irrtümlich auch via EBGP an andere Internetanbieter verteilt, was insbesondere in Asien zu mehrstündigen Blockaden von YouTube führte.

### Fehlkonfigurierter BGP-Router

Im Februar 2009 wurden über einen tschechischen BGP-Router zu lange AS-Pfade an öffentliche BGP-Router weitergeleitet. Einige BGP-Router hatten Probleme in der Verarbeitung dieser langen AS-Pfade, so dass es zu Beeinträchtigungen des Internetverkehrs kam. Administratoren können durch eine Konfiguration, in welche die maximale Länge des akzeptierten AS-Pfads beschränkt wird, einem solchen Problem entgegenwirken.

### Revolution in Ägypten 2011

Während der Revolution in Ägypten wurden im Januar 2011 via BGP in wenigen Minuten ca. 3.500 Routen aller ägyptischer Internetanbieter zurückgezogen, wodurch fast ganz Ägypten vom Internet getrennt war. Auch Mobilfunkdienste und soziale Netze waren nicht mehr erreichbar. Dieses scheint der erste Fall in der Geschichte des Internets zu sein, in welchem aus politischen Gründen ein gesamtes Land vom Internet abgeschottet wurde.

### Softwarefehler

Das BGP Path Attribute kann den Wert 255 annehmen. Dieses steht für Entwicklungen (development, siehe RFC 2042) zur Verfügung. Bereits im Jahr 2010 führte ein Experiment mit diesem Flag zu Abstürzen in einigen Routern. Bei einem neuerlichen Versuch Ende 2018 wurden wieder fehlerhaft implementierte Router gefunden.

### Facebook, Instagram und Whatsapp

Am 4. Oktober 2021 waren für ca. 6 Stunden weltweit alle Dienste von Facebook, Instagram und Whatsapp nicht erreichbar. Dies ging auf eine fehlerhafte Konfiguration von Facebooks selbst gehosteten BGP-Routern zurück.

## Freie Software-Implementierungen

* Bird Internet routing daemon
* GNU Zebra (Entwicklung eingestellt)
* Quagga (Weiterentwicklung von Zebra)
* OpenBGPD
* eXtensible Open Router Platform (XORP)