Auf dieser Seite
TCP-Zugriffsbeschränkung für BGP
Grundlegendes zu den Sicherheitsoptionen für BGP mit TCP
Unter den Routing-Protokollen ist BGP die einzige Lösung, die TCP als Transportprotokoll verwendet. BGP-Peers werden durch manuelle Konfiguration zwischen Routing-Geräten eingerichtet, um eine TCP-Sitzung an Port 179 zu erstellen. Ein BGP-fähiges Gerät sendet in regelmäßigen Abständen Keepalive-Nachrichten, um die Verbindung aufrechtzuerhalten.
Im Laufe der Zeit hat sich BGP zum dominierenden Interdomain-Routing-Protokoll im Internet entwickelt. Es gibt jedoch nur begrenzte Garantien für Stabilität und Sicherheit. Bei der Konfiguration von Sicherheitsoptionen für BGP müssen geeignete Sicherheitsmaßnahmen mit akzeptablen Kosten abgewogen werden. Keine Methode hat sich als überlegen gegenüber anderen Methoden herausgestellt. Jeder Netzwerkadministrator muss Sicherheitsmaßnahmen konfigurieren, die den Anforderungen des verwendeten Netzwerks entsprechen.
Ausführliche Informationen zu den Sicherheitsproblemen im Zusammenhang mit der Verwendung von TCP als Transportprotokoll durch BGP finden Sie unter RFC 4272, BGP Security Vulnerabilities Analysis.
Siehe auch
Beispiel: Konfigurieren eines Filters zum Blockieren des TCP-Zugriffs auf einen Port mit Ausnahme der angegebenen BGP-Peers
In diesem Beispiel wird gezeigt, wie ein standardmäßiger zustandsloser Firewallfilter konfiguriert wird, der alle TCP-Verbindungsversuche an Port 179 von allen Anforderern mit Ausnahme der angegebenen BGP-Peers blockiert.
Anforderungen
Über die Geräteinitialisierung hinaus ist keine spezielle Konfiguration erforderlich, bevor Sie dieses Beispiel konfigurieren.
Überblick
In diesem Beispiel erstellen Sie einen zustandslosen Firewallfilter, der alle TCP-Verbindungsversuche über Port 179 von allen Anforderern mit Ausnahme der angegebenen BGP-Peers blockiert.
Der zustandslose Firewall-Filter gleicht alle Pakete von den direkt verbundenen Schnittstellen auf Gerät A und Gerät B mit der Zielportnummer 179 ab.filter_bgp179
Topologie
Abbildung 1 Zeigt die in diesem Beispiel verwendete Topologie. Gerät C versucht, eine TCP-Verbindung zu Gerät E herzustellen. Gerät E blockiert den Verbindungsversuch. Dieses Beispiel zeigt die Konfiguration auf Gerät E.
Konfiguration
CLI-Schnellkonfiguration
Um dieses Beispiel schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen Sie sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern Sie alle Details, die für Ihre Netzwerkkonfiguration erforderlich sind, und kopieren Sie dann die Befehle und fügen Sie sie in die CLI auf Hierarchieebene ein.[edit]
Gerät C
set interfaces ge-1/2/0 unit 10 description to-E set interfaces ge-1/2/0 unit 10 family inet address 10.10.10.10/30 set protocols bgp group external-peers type external set protocols bgp group external-peers peer-as 17 set protocols bgp group external-peers neighbor 10.10.10.9 set routing-options autonomous-system 22
Gerät E
set interfaces ge-1/2/0 unit 0 description to-A set interfaces ge-1/2/0 unit 0 family inet address 10.10.10.1/30 set interfaces ge-1/2/1 unit 5 description to-B set interfaces ge-1/2/1 unit 5 family inet address 10.10.10.5/30 set interfaces ge-1/0/0 unit 9 description to-C set interfaces ge-1/0/0 unit 9 family inet address 10.10.10.9/30 set interfaces lo0 unit 2 family inet filter input filter_bgp179 set interfaces lo0 unit 2 family inet address 192.168.0.1/32 set protocols bgp group external-peers type external set protocols bgp group external-peers peer-as 22 set protocols bgp group external-peers neighbor 10.10.10.2 set protocols bgp group external-peers neighbor 10.10.10.6 set protocols bgp group external-peers neighbor 10.10.10.10 set routing-options autonomous-system 17 set firewall family inet filter filter_bgp179 term 1 from source-address 10.10.10.2/32 set firewall family inet filter filter_bgp179 term 1 from source-address 10.10.10.6/32 set firewall family inet filter filter_bgp179 term 1 from destination-port bgp set firewall family inet filter filter_bgp179 term 1 then accept set firewall family inet filter filter_bgp179 term 2 then reject
Konfigurieren von Gerät E
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren. Weitere Informationen zum Navigieren in der CLI finden Sie unter Verwenden des CLI-Editors im Konfigurationsmodus im Junos OS CLI-Benutzerhandbuch.Verwenden des CLI-Editors im Konfigurationsmodushttps://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html
So konfigurieren Sie Gerät E mit einem zustandslosen Firewallfilter, der alle TCP-Verbindungsversuche auf Port 179 von allen Anforderern mit Ausnahme der angegebenen BGP-Peers blockiert:
Konfigurieren Sie die Schnittstellen.
user@E# set interfaces ge-1/2/0 unit 0 description to-A user@E# set interfaces ge-1/2/0 unit 0 family inet address 10.10.10.1/30 user@E# set interfaces ge-1/2/1 unit 5 description to-B user@E# set interfaces ge-1/2/1 unit 5 family inet address 10.10.10.5/30 user@E# set interfaces ge-1/0/0 unit 9 description to-C user@E# set interfaces ge-1/0/0 unit 9 family inet address 10.10.10.9/30
Konfigurieren Sie BGP.
[edit protocols bgp group external-peers] user@E# set type external user@E# set peer-as 22 user@E# set neighbor 10.10.10.2 user@E# set neighbor 10.10.10.6 user@E# set neighbor 10.10.10.10
Konfigurieren Sie die Nummer des autonomen Systems.
[edit routing-options] user@E# set autonomous-system 17
Definieren Sie den Filterbegriff, der TCP-Verbindungsversuche über Port 179 von den angegebenen BGP-Peers akzeptiert.
[edit firewall family inet filter filter_bgp179] user@E# set term 1 from source-address 10.10.10.2/32 user@E# set term 1 from source-address 10.10.10.6/32 user@E# set term 1 from destination-port bgp user@E# set term 1 then accept
Definieren Sie den anderen Filterbegriff, um Pakete aus anderen Quellen abzulehnen.
[edit firewall family inet filter filter_bgp179] user@E# set term 2 then reject
Wenden Sie den Firewall-Filter auf die Loopback-Schnittstelle an.
[edit interfaces lo0 unit 2 family inet] user@E# set filter input filter_bgp179 user@E# set address 192.168.0.1/32
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die Befehle , , und eingeben.show firewallshow interfacesshow protocolsshow routing-options Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
user@E# show firewall family inet { filter filter_bgp179 { term 1 { from { source-address { 10.10.10.2/32; 10.10.10.6/32; } destination-port bgp; } then accept; } term 2 { then { reject; } } } }
user@E# show interfaces lo0 { unit 2 { family inet { filter { input filter_bgp179; } address 192.168.0.1/32; } } } ge-1/2/0 { unit 0 { description to-A; family inet { address 10.10.10.1/30; } } } ge-1/2/1 { unit 5 { description to-B; family inet { address 10.10.10.5/30; } } } ge-1/0/0 { unit 9 { description to-C; family inet { address 10.10.10.9/30; } } }
user@E# show protocols bgp { group external-peers { type external; peer-as 22; neighbor 10.10.10.2; neighbor 10.10.10.6; neighbor 10.10.10.10; } }
user@E# show routing-options autonomous-system 17;
Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf .commit
Überprüfung
Vergewissern Sie sich, dass die Konfiguration ordnungsgemäß funktioniert.
- Überprüfen, ob der Filter konfiguriert ist
- Überprüfen der TCP-Verbindungen
- Überwachen des Datenverkehrs auf den Schnittstellen
Überprüfen, ob der Filter konfiguriert ist
Zweck
Stellen Sie sicher, dass der Filter in der Ausgabe des Befehls aufgeführt ist.show firewall filter
Was
user@E> show firewall filter filter_bgp179 Filter: filter_bgp179
Überprüfen der TCP-Verbindungen
Zweck
Überprüfen Sie die TCP-Verbindungen.
Was
Führen Sie den Befehl im Betriebsmodus auf Gerät C und Gerät E aus.show system connections extensive
Die Ausgabe auf Gerät C zeigt den Versuch, eine TCP-Verbindung herzustellen. Die Ausgabe auf Gerät E zeigt, dass Verbindungen nur mit Gerät A und Gerät B hergestellt werden.
user@C> show system connections extensive | match 10.10.10 tcp4 0 0 10.10.10.9.51872 10.10.10.10.179 SYN_SENT
user@E> show system connections extensive | match 10.10.10 tcp4 0 0 10.10.10.5.179 10.10.10.6.62096 ESTABLISHED tcp4 0 0 10.10.10.6.62096 10.10.10.5.179 ESTABLISHED tcp4 0 0 10.10.10.1.179 10.10.10.2.61506 ESTABLISHED tcp4 0 0 10.10.10.2.61506 10.10.10.1.179 ESTABLISHED
Überwachen des Datenverkehrs auf den Schnittstellen
Zweck
Verwenden Sie den Befehl, um den Datenverkehr auf einer Schnittstelle, die eine TCP-Verbindung herstellt, mit dem Datenverkehr auf einer Schnittstelle zu vergleichen, die keine TCP-Verbindung herstellt.monitor traffic
Was
Führen Sie den Befehl im Betriebsmodus auf der Schnittstelle von Gerät E zu Gerät B und auf der Schnittstelle von Gerät E zu Gerät C aus. In der folgenden Beispielausgabe wird überprüft, ob im ersten Beispiel Acknowledgment ()-Nachrichten empfangen werden.monitor trafficack Im zweiten Beispiel werden keine Nachrichten empfangen.ack
user@E> monitor traffic size 1500 interface ge-1/2/1.5 19:02:49.700912 Out IP 10.10.10.5.bgp > 10.10.10.6.62096: P 3330573561:3330573580(19) ack 915601686 win 16384 <nop,nop,timestamp 1869518816 1869504850>: BGP, length: 19 19:02:49.801244 In IP 10.10.10.6.62096 > 10.10.10.5.bgp: . ack 19 win 16384 <nop,nop,timestamp 1869518916 1869518816> 19:03:03.323018 In IP 10.10.10.6.62096 > 10.10.10.5.bgp: P 1:20(19) ack 19 win 16384 <nop,nop,timestamp 1869532439 1869518816>: BGP, length: 19 19:03:03.422418 Out IP 10.10.10.5.bgp > 10.10.10.6.62096: . ack 20 win 16384 <nop,nop,timestamp 1869532539 1869532439> 19:03:17.220162 Out IP 10.10.10.5.bgp > 10.10.10.6.62096: P 19:38(19) ack 20 win 16384 <nop,nop,timestamp 1869546338 1869532439>: BGP, length: 19 19:03:17.320501 In IP 10.10.10.6.62096 > 10.10.10.5.bgp: . ack 38 win 16384 <nop,nop,timestamp 1869546438 1869546338>
user@E> monitor traffic size 1500 interface ge-1/0/0.9 18:54:20.175471 Out IP 10.10.10.9.61335 > 10.10.10.10.bgp: S 573929123:573929123(0) win 16384 <mss 1460,nop,wscale 0,nop,nop,timestamp 1869009240 0,sackOK,eol> 18:54:23.174422 Out IP 10.10.10.9.61335 > 10.10.10.10.bgp: S 573929123:573929123(0) win 16384 <mss 1460,nop,wscale 0,nop,nop,timestamp 1869012240 0,sackOK,eol> 18:54:26.374118 Out IP 10.10.10.9.61335 > 10.10.10.10.bgp: S 573929123:573929123(0) win 16384 <mss 1460,nop,wscale 0,nop,nop,timestamp 1869015440 0,sackOK,eol> 18:54:29.573799 Out IP 10.10.10.9.61335 > 10.10.10.10.bgp: S 573929123:573929123(0) win 16384 <mss 1460,sackOK,eol> 18:54:32.773493 Out IP 10.10.10.9.61335 > 10.10.10.10.bgp: S 573929123:573929123(0) win 16384 <mss 1460,sackOK,eol> 18:54:35.973185 Out IP 10.10.10.9.61335 > 10.10.10.10.bgp: S 573929123:573929123(0) win 16384 <mss 1460,sackOK,eol>
Beispiel: Konfigurieren eines Filters zur Beschränkung des TCP-Zugriffs auf einen Port basierend auf einer Präfixliste
In diesem Beispiel wird gezeigt, wie ein standardmäßiger zustandsloser Firewallfilter konfiguriert wird, der bestimmten TCP- und ICMP-Datenverkehr (Internet Control Message Protocol) einschränkt, der für die Routing-Engine bestimmt ist, indem eine Liste von Präfixquellen angegeben wird, die zulässige BGP-Peers enthalten.
Anforderungen
Vor der Konfiguration dieses Beispiels ist keine spezielle Konfiguration erforderlich, die über die Geräteinitialisierung hinausgeht.
Überblick
In diesem Beispiel erstellen Sie einen zustandslosen Firewallfilter, der alle TCP-Verbindungsversuche über Port 179 von allen Anforderern blockiert, mit Ausnahme von BGP-Peers mit einem angegebenen Präfix.
Topologie
Es wird eine Quellpräfixliste erstellt, die die Liste der Quellpräfixe angibt, die zulässige BGP-Peers enthalten.plist_bgp179
Der zustandslose Firewallfilter gleicht alle Pakete aus der Quellpräfixliste mit der Zielportnummer 179 ab.filter_bgp179plist_bgp179
Konfiguration
CLI-Schnellkonfiguration
Um dieses Beispiel schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen Sie sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern Sie alle Details, die für Ihre Netzwerkkonfiguration erforderlich sind, und kopieren Sie dann die Befehle und fügen Sie sie in die CLI auf Hierarchieebene ein.[edit]
set policy-options prefix-list plist_bgp179 apply-path "protocols bgp group <*> neighbor <*>" set firewall family inet filter filter_bgp179 term 1 from source-address 0.0.0.0/0 set firewall family inet filter filter_bgp179 term 1 from source-prefix-list plist_bgp179 except set firewall family inet filter filter_bgp179 term 1 from destination-port bgp set firewall family inet filter filter_bgp179 term 1 then reject set firewall family inet filter filter_bgp179 term 2 then accept set interfaces lo0 unit 0 family inet filter input filter_bgp179 set interfaces lo0 unit 0 family inet address 127.0.0.1/32
Konfigurieren des Filters
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren. Weitere Informationen zum Navigieren in der CLI finden Sie unter Verwenden des CLI-Editors im Konfigurationsmodus im Junos OS CLI-Benutzerhandbuch.Verwenden des CLI-Editors im Konfigurationsmodushttps://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html
So konfigurieren Sie den Filter:
Erweitern Sie die Präfixliste , um alle Präfixe einzuschließen, auf die die BGP-Peergruppe zeigt, die durch definiert ist .bgp179protocols bgp group <*> neighbor <*>
[edit policy-options prefix-list plist_bgp179] user@host# set apply-path " protocols bgp group <*> neighbor <*>"
Definieren Sie den Filterbegriff, der TCP-Verbindungsversuche an Port 179 von allen Anforderern mit Ausnahme der angegebenen BGP-Peers ablehnt.
[edit firewall family inet filter filter_bgp179] user@host# set term term1 from source-address 0.0.0.0/0 user@host# set term term1 from source-prefix-list bgp179 except user@host# set term term1 from destination-port bgp user@host# set term term1 then reject
Definieren Sie den anderen Filterbegriff, um alle Pakete zu akzeptieren.
[edit firewall family inet filter filter_bgp179] user@host# set term term2 then accept
Wenden Sie den Firewall-Filter auf die Loopback-Schnittstelle an.
[edit interfaces lo0 unit 0 family inet] user@host# set filter input filter_bgp179 user@host# set address 127.0.0.1/32
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die Befehle , und eingeben.show firewallshow interfacesshow policy-options Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
user@host# show firewall family inet { filter filter_bgp179 { term 1 { from { source-address { 0.0.0.0/0; } source-prefix-list { plist_bgp179 except; } destination-port bgp; } then { reject; } } term 2 { then { accept; } } } }
user@host# show interfaces lo0 { unit 0 { family inet { filter { input filter_bgp179; } address 127.0.0.1/32; } } }
user@host# show policy-options prefix-list plist_bgp179 { apply-path "protocols bgp group <*> neighbor <*>"; }
Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf .commit
Überprüfung
Vergewissern Sie sich, dass die Konfiguration ordnungsgemäß funktioniert.
Anzeigen des Firewall-Filters, der auf die Loopback-Schnittstelle angewendet wird
Zweck
Stellen Sie sicher, dass der Firewallfilter auf den IPv4-Eingabedatenverkehr an der logischen Schnittstelle angewendet wird.filter_bgp179lo0.0
Was
Verwenden Sie den Befehl für die logische Schnittstelle und schließen Sie die Option ein.show interfaces statistics operational mode
lo0.0detail Unter dem Abschnitt des Befehlsausgabeabschnitts zeigt das Feld den Namen des zustandslosen Firewallfilters an, der auf die logische Schnittstelle in Eingaberichtung angewendet wird.Protocol inetInput Filters
[edit] user@host> show interfaces statistics lo0.0 detail Logical interface lo0.0 (Index 321) (SNMP ifIndex 16) (Generation 130) Flags: SNMP-Traps Encapsulation: Unspecified Traffic statistics: Input bytes : 0 Output bytes : 0 Input packets: 0 Output packets: 0 Local statistics: Input bytes : 0 Output bytes : 0 Input packets: 0 Output packets: 0 Transit statistics: Input bytes : 0 0 bps Output bytes : 0 0 bps Input packets: 0 0 pps Output packets: 0 0 pps Protocol inet, MTU: Unlimited, Generation: 145, Route table: 0 Flags: Sendbcast-pkt-to-re Input Filters: filter_bgp179 Addresses, Flags: Primary Destination: Unspecified, Local: 127.0.0.1, Broadcast: Unspecified, Generation: 138
Beispiel: Begrenzen der TCP-Segmentgröße für BGP
In diesem Beispiel wird gezeigt, wie Sie Probleme mit der Sicherheitsanfälligkeit im Internet Control Message Protocol (ICMP) vermeiden können, indem Sie die TCP-Segmentgröße begrenzen, wenn Sie die MTU-Ermittlung (Maximum Transmission Unit) verwenden. Die Verwendung der MTU-Erkennung auf TCP-Pfaden ist eine Methode, um die Fragmentierung von BGP-Paketen zu vermeiden.
Anforderungen
Über die Geräteinitialisierung hinaus ist keine spezielle Konfiguration erforderlich, bevor Sie dieses Beispiel konfigurieren.
Überblick
TCP handelt während des Verbindungsaufbaus zwischen zwei Peers einen MSS-Wert (Maximum Segment Size, maximale Segmentgröße) aus. Der ausgehandelte MSS-Wert basiert in erster Linie auf der maximalen Übertragungseinheit (Maximum Transmission Unit, MTU) der Schnittstellen, mit denen die kommunizierenden Peers direkt verbunden sind. Aufgrund von Schwankungen in der Verbindungs-MTU auf dem von den TCP-Paketen genommenen Pfad können jedoch einige Pakete im Netzwerk, die deutlich innerhalb des MSS-Werts liegen, fragmentiert werden, wenn die Paketgröße die MTU der Verbindung überschreitet.
Um den TCP-MSS-Wert zu konfigurieren, schließen Sie die Anweisung mit einer Segmentgröße zwischen 1 und 4096 ein.tcp-mss
Wenn der Router ein TCP-Paket mit dem SYN-Bit und der gesetzten MSS-Option empfängt und die im Paket angegebene MSS-Option größer als der in der Anweisung angegebene MSS-Wert ist, ersetzt der Router den MSS-Wert im Paket durch den niedrigeren Wert, der in der Anweisung angegeben ist.tcp-mss
tcp-mss
Der konfigurierte MSS-Wert wird als maximale Segmentgröße für den Absender verwendet. Es wird davon ausgegangen, dass der TCP-MSS-Wert, der vom Absender für die Kommunikation mit dem BGP-Nachbarn verwendet wird, mit dem TCP-MSS-Wert identisch ist, den der Absender vom BGP-Nachbarn akzeptieren kann. Wenn der MSS-Wert des BGP-Nachbarn kleiner als der konfigurierte MSS-Wert ist, wird der MSS-Wert des BGP-Nachbarn als maximale Segmentgröße für den Absender verwendet.
Diese Funktion wird mit TCP über IPv4 und TCP über IPv6 unterstützt.
Topologiediagramm
Abbildung 2 Zeigt die in diesem Beispiel verwendete Topologie.
Konfiguration
CLI-Schnellkonfiguration
Um dieses Beispiel schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen Sie sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern Sie alle Details, die für Ihre Netzwerkkonfiguration erforderlich sind, und kopieren Sie dann die Befehle und fügen Sie sie in die CLI auf Hierarchieebene ein.[edit]
R0
set interfaces fe-1/2/0 unit 1 family inet address 1.1.0.1/30 set interfaces lo0 unit 1 family inet address 10.255.14.179/32 set protocols bgp group-int tcp-mss 2020 set protocols bgp group int type internal set protocols bgp group int local-address 10.255.14.179 set protocols bgp group int mtu-discovery set protocols bgp group int neighbor 10.255.71.24 tcp-mss 2000 set protocols bgp group int neighbor 10.255.14.177 set protocols bgp group int neighbor 10.0.14.4 tcp-mss 4000 set protocols ospf area 0.0.0.0 interface fe-1/2/0.1 set protocols ospf area 0.0.0.0 interface 10.255.14.179 set routing-options autonomous-system 65000
Verfahren
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren. Weitere Informationen zum Navigieren in der CLI finden Sie unter Verwenden des CLI-Editors im Konfigurationsmodus im Junos OS CLI-Benutzerhandbuch.Verwenden des CLI-Editors im Konfigurationsmodushttps://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html
So konfigurieren Sie Router R0:
Konfigurieren Sie die Schnittstellen.
[edit interfaces] user@R0# set fe-1/2/0 unit 1 family inet address 1.1.0.1/30 user@R0# set lo0 unit 1 family inet address 10.255.14.179/32
Konfigurieren Sie ein Interior Gateway Protocol (IGP), in diesem Beispiel OSPF.
[edit protocols ospf area 0.0.0.0] user@R0# set interface fe-1/2/0.1 user@R0# set interface 10.255.14.179
Konfigurieren Sie eine oder mehrere BGP-Gruppen.
[edit protocols bgp group int] user@R0# set type internal user@R0# set local-address 10.255.14.179
Konfigurieren Sie die MTU-Erkennung, um Paketfragmentierung zu verhindern.
[edit protocols bgp group int] user@R0# set mtu-discovery
Konfigurieren Sie die BGP-Nachbarn, wobei die TCP-MSS global für die Gruppe oder speziell für die verschiedenen Nachbarn festgelegt ist.
[edit protocols bgo group int] user@R0# set tcp-mss 2020 user@R0# set neighbor 10.255.14.177 user@R0# set neighbor 10.255.71.24 tcp-mss 2000 user@R0# set neighbor 10.0.14.4 tcp-mss 4000
HINWEIS:Die TCP-MSS-Nachbareinstellung setzt die Gruppeneinstellung außer Kraft.
Konfigurieren Sie das lokale autonome System.
[edit routing-options] user@R0# set autonomous-system 65000
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die Befehle , und eingeben.show interfaces
show protocols
show routing-options
Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
user@R0# show interfaces fe-1/2/0 { unit 1 { family inet { address 1.1.0.1/30; } } } lo0 { unit 1 { family inet { address 10.255.14.179/32; } } }
user@R0# show protocols bgp { group int { type internal; local-address 10.255.14.179; mtu-discovery; tcp-mss 2020; neighbor 10.255.71.24 { tcp-mss 2000; } neighbor 10.255.14.177; neighbor 10.0.14.4 { tcp-mss 4000; } } } ospf { area 0.0.0.0 { interface fe-1/2/0.1; interface 10.255.14.179; } }
user@R0# show routing-options autonomous-system 65000;
Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf .commit
Überprüfung
Führen Sie die folgenden Befehle aus, um zu bestätigen, dass die Konfiguration ordnungsgemäß funktioniert:
show system connections extensive | find <neighbor-address>
, um den ausgehandelten TCP-MSS-Wert zu überprüfen.monitor traffic interface
, um den BGP-Datenverkehr zu überwachen und sicherzustellen, dass der konfigurierte TCP-MSS-Wert als MSS-Option im TCP-SYN-Paket verwendet wird.
Fehlerbehebung
MSS-Berechnung mit MTU Discovery
Problem
Betrachten Sie ein Beispiel, in dem zwei Routing-Geräte (R1 und R2) über eine interne BGP-Verbindung (IBGP) verfügen. Auf beiden Routern haben die angeschlossenen Schnittstellen 4034 als IPv4-MTU.
user@R1# show protocols bgp | display set [edit] set protocols bgp group ibgp type internal set protocols bgp group ibgp local-address 45.45.45.2 set protocols bgp group ibgp mtu-discovery set protocols bgp group ibgp neighbor 45.45.45.1
user@R1# run show interfaces xe-0/0/3 extensive | match mtu Link-level type: Ethernet, MTU: 4048, LAN-PHY mode, Speed: 10Gbps, FIFO errors: 0, HS link CRC errors: 0, MTU errors: 0, Resource errors: 0 Protocol inet, MTU: 4034, Generation: 180, Route table: 0 Protocol multiservice, MTU: Unlimited, Generation: 181, Route table: 0
In der folgenden Paketerfassung auf Gerät R1 lautet der ausgehandelte MSS 3994. In den Informationen für MSS ist es auf 2048 festgelegt.show system connections extensive
05:50:01.575218 Out Juniper PCAP Flags [Ext], PCAP Extension(s) total length 16 Device Media Type Extension TLV #3, length 1, value: Ethernet (1) Logical Interface Encapsulation Extension TLV #6, length 1, value: Ethernet (14) Device Interface Index Extension TLV #1, length 2, value: 137 Logical Interface Index Extension TLV #4, length 4, value: 69 -----original packet----- 00:21:59:e1:e8:03 > 00:19:e2:20:79:01, ethertype IPv4 (0x0800), length 78: (tos 0xc0, ttl 64, id 53193, offset 0, flags [DF], proto: TCP (6), length: 64) 45.45.45.2.62840 > 45.45.45.1.bgp: S 2939345813:2939345813(0) win 16384 **mss 3994,nop,wscale 0,nop,nop,timestamp 70559970 0,sackOK,eol> 05:50:01.575875 In Juniper PCAP Flags [Ext, no-L2, In], PCAP Extension(s) total length 16 Device Media Type Extension TLV #3, length 1, value: Ethernet (1) Logical Interface Encapsulation Extension TLV #6, length 1, value: Ethernet (14) Device Interface Index Extension TLV #1, length 2, value: 137 Logical Interface Index Extension TLV #4, length 4, value: 69 -----original packet----- PFE proto 2 (ipv4): (tos 0xc0, ttl 255, id 37709, offset 0, flags [DF], proto: TCP (6), length: 64) 45.45.45.1.bgp > 45.45.45.2.62840: S 2634967984:2634967984(0) ack 2939345814 win 16384 **mss 3994,nop,wscale 0,nop,nop,timestamp 174167273 70559970,sackOK,eol>
user@R1# run show system connections extensive | find 45.45 tcp4 0 0 45.45.45.2.62840 45.45.45.1.179 ESTABLISHED sndsbcc: 0 sndsbmbcnt: 0 sndsbmbmax: 131072 sndsblowat: 2048 sndsbhiwat: 16384 rcvsbcc: 0 rcvsbmbcnt: 0 rcvsbmbmax: 131072 rcvsblowat: 1 rcvsbhiwat: 16384 proc id: 19725 proc name: rpd iss: 2939345813 sndup: 2939345972 snduna: 2939345991 sndnxt: 2939345991 sndwnd: 16384 sndmax: 2939345991 sndcwnd: 10240 sndssthresh: 1073725440 irs: 2634967984 rcvup: 2634968162 rcvnxt: 2634968162 rcvadv: 2634984546 rcvwnd: 16384 rtt: 0 srtt: 1538 rttv: 1040 rxtcur: 1200 rxtshift: 0 rtseq: 2939345972 rttmin: 1000 mss: 2048
Lösung
Dies ist das erwartete Verhalten bei Junos OS. Der MSS-Wert entspricht dem MTU-Wert abzüglich der IP- oder IPv6- und TCP-Header. Dies bedeutet, dass der MSS-Wert in der Regel 40 Byte kleiner als die MTU (für IPv4) und 60 Byte kleiner als die MTU (für IPv6) ist. Dieser Wert wird zwischen den Peers ausgehandelt. In diesem Beispiel ist es 4034 - 40 = 3994. Junos OS rundet diesen Wert dann auf ein Vielfaches von 2 KB. Der Wert ist 3994 / 2048 * 2048=2048. Es ist also nicht notwendig, denselben MSS-Wert mit in der Ausgabe zu sehen.show system connections
3994 / 2048 = 1.95
1,95 wird auf 1 gerundet.
1 * 2048 = 2048