Port Control Protocol
Port Control Protocol – Übersicht
Das Port Control Protocol (PCP) bietet eine Möglichkeit, die Weiterleitung eingehender Pakete durch vorgeschaltete Geräte wie NAT44- und Firewall-Geräte zu steuern und den Application Keepalive-Datenverkehr zu reduzieren. PCP wird auf den MultiServices-PIC MS-DPC, MS-100, MS-400 und MS-500 unterstützt. Ab Junos OS Version 17.4R1 wird PCP für NAPT44 auch auf MS-MPC und MS-MIC unterstützt. Ab Junos 20.2R1 werden PCP für CGNAT DS-Lite-Dienste für Next Gen Services unterstützt.Ab Junos OS Version 18.2R1 unterstützt PCP auf MS-MPC und MS-MIC DS-Lite. In Junos OS Version 18.1 und früheren Versionen unterstützt PCP auf MS-MPC und MS-MIC DS-Lite nicht.
PCP ist für die Implementierung sowohl im Kontext von Carrier-Grade NATs (CGNs) als auch mit kleinen NATs (z. B. NATs für Privathaushalte) konzipiert. PCP ermöglicht es Hosts, Server für eine lange Zeit (wie im Fall einer Webcam) oder für kurze Zeit (z. B. während eines Spiels oder eines Telefonanrufs) zu betreiben, wenn sie sich hinter einem NAT-Gerät befinden, einschließlich hinter einem CGN, das von ihrem ISP betrieben wird. PCP ermöglicht es Anwendungen, Zuordnungen von einer externen IP-Adresse und einem Port zu einer internen IP-Adresse und einem internen Port zu erstellen. Diese Zuordnungen sind für eine erfolgreiche eingehende Kommunikation erforderlich, die für Computer bestimmt ist, die sich hinter einem NAT oder einer Firewall befinden. Nachdem eine Zuordnung für eingehende Verbindungen erstellt wurde, müssen Remotecomputer über die IP-Adresse und den Port für die eingehende Verbindung informiert werden. Dies geschieht in der Regel anwendungsspezifisch.
Junos OS unterstützt PCP Version 2 und Version 1.
PCP besteht aus den folgenden Komponenten:
PCP-Client: Ein Host oder Gateway, der PCP-Anforderungen an einen PCP-Server sendet, um Ressourcen zu erhalten und zu steuern.
PCP-Server: In der Regel ein CGN-Gateway oder ein Co-Location-Server, der PCP-Anforderungen empfängt und verarbeitet.
Junos OS ermöglicht die Konfiguration von PCP-Servern für die Zuordnung von Datenströmen mithilfe von NAPT44-Funktionen wie Portweiterleitung und Portblockzuweisung. Flüsse können aus diesen Quellen verarbeitet werden:
Datenverkehr mit PCP-Anfragen, die direkt von Benutzergeräten empfangen werden, wie in Abbildung 1 dargestellt.
Abbildung 1: Grundlegende PCP NAPT44-Topologie
Mapping von Datenverkehr mit PCP-Anfragen, der von einem Router hinzugefügt wurde, der als DS-Lite-Softwire-Initiator fungiert (B4). Dieser Modus, der als einfacher DS-Lite-Modus bezeichnet wird, ist in Abbildung 2 dargestellt.
Abbildung 2: PCP mit DS-Lite Plain Mode
Junos OS unterstützt keine deterministische Portblockzuweisung für Datenverkehr aus PCP.
Vorteile des Port Control Protocol
Viele NAT-freundliche Anwendungen senden häufig Nachrichten auf Anwendungsebene, um sicherzustellen, dass ihre Sitzungen nicht von einem NAT-Gerät abgebrochen werden. PCP wird verwendet, um:
Reduzieren Sie die Häufigkeit dieser NAT-Keepalive-Nachrichten
Reduzierung der Bandbreite im Zugangsnetzwerk des Anwenders
Reduzieren des Datenverkehrs zum Server
Reduzieren Sie den Akkuverbrauch mobiler Geräte
Port Control Protocol Version 2
Ab Junos OS Version 15.1 wird Port Control Protocol (PCP) Version 2 unterstützt, das RFC 6887 entspricht. PCP bietet eine Möglichkeit, die Weiterleitung eingehender Pakete durch vorgeschaltete Geräte wie NAT44 und Firewall-Geräte zu steuern und den anwendungsbezogenen Keep-Alive-Datenverkehr zu reduzieren. PCP Version 2 unterstützt die Nonce-Authentifizierung. PCP ermöglicht es Anwendungen, Zuordnungen von einer externen IP-Adresse und einem Port zu einer internen IP-Adresse und einem internen Port zu erstellen. Eine Nonce-Nutzlast verhindert einen Replay-Angriff und wird standardmäßig gesendet, sofern sie nicht explizit deaktiviert ist.
Die Client-Nonce-Überprüfung für Zuordnungsanforderungen der Version 2 (zum Aktualisieren oder Löschen) erfordert, dass die in der ursprünglichen Zuordnungsanforderung empfangene Nonce, die die Erstellung der PCP-Zuordnung verursacht, beibehalten wird. Die Version der ursprünglichen Anforderung, die das Erstellen der Zuordnung ermöglicht, bleibt ebenfalls erhalten. Dieses Verhalten beim Speichern der Nonce- und Versionsparameter bedeutet, dass 13 Byte pro PCP-Zuordnung verwendet werden. Diese geringfügige Erhöhung des Speicherplatzes ist nicht signifikant, wenn sie mit der aktuellen Speicherauslastung eines Systems für ein einzelnes angefordertes Mapping abgeglichen wird (unter Berücksichtigung des Endgerät-unabhängigen Mappings (EIM) und des Endgerät-unabhängigen Filterns (EIF), die zusammen damit erstellt werden). In einer Kunden-Bereitstellung bewirkt PCP, dass EIM- und EIF-Zuordnungen nur einen Bruchteil aller derartigen Zuordnungen darstellen.
Bis zu Junos Version 15.1 unterstützen Service PICs PCP-Server auf Routern von Juniper Networks gemäß PCP-Entwurf Version 22 mit Version 1-Nachrichtencodierung. Da PCP von der Entwurfsversion, wie sie in Port Control Protocol (PCP) draft-ietf-pcp-base-22 (July 2012 expiration) definiert ist, zu einer endgültigen Standardversion gemäß RFC 6887 -- Port Control Protocol (PCP) verfeinert wurde, änderte sich die Nachrichtencodierung in Version 2 mit dem Zusatz einer zufälligen Nonce-Nutzlast, um Peer- und Map-Anfragen nach Bedarf zu authentifizieren. Version 1 decodiert keine Nachrichten, die mit dem Format von Version 2 kompatibel sind, und die Nonce-Authentifizierung wird nicht unterstützt. In einer realen Netzwerkumgebung, in der CPE-Geräte (Customer Premises Equipment) zunehmend nur Version 2 unterstützen, ist es erforderlich, Nachrichten der Version 2 zu analysieren und zu senden. Die Abwärtskompatibilität mit CPE-Geräten, die Version 1 unterstützen, bleibt erhalten (Versionsaushandlung ist Teil des Standards) und authentifiziert Nonce-Nutzlastpakete, wenn v2-Nachrichten verwendet werden.
Die Ausgabe des show services pcp statistics Befehls enthält das Feld PCP unsupported version, das inkrementiert wird, um anzuzeigen, wenn die Version nicht 1 oder 2 ist. Ein neues Feld, PCP-Anforderungsnonce stimmt nicht mit vorhandenem Mapping überein, wird eingeführt, um die Anzahl der PCP-Anforderungen der Version 2 anzugeben, die ignoriert wurden, weil die Nonce-Nutzlast nicht mit der in der Zuordnung aufgezeichneten übereinstimmte (Authentifizierung fehlgeschlagen). Wenn Version 2 verwendet wird, wird die Client-Nonce für die Authentifizierung verwendet.
Konfigurieren des Port Control Protocol
In diesem Thema wird beschrieben, wie das Port Control Protocol (PCP) konfiguriert wird. PCP wird auf den MultiServices-PIC MS-DPC, MS-100, MS-400 und MS-500 unterstützt. Ab Junos OS Version 17.4R1 wird PCP für NAPT44 auch auf MS-MPC und MS-MIC unterstützt. Ab Junos OS Version 18.2R1 unterstützt PCP auf MS-MPC und MS-MIC DS-Lite. In Junos OS Version 18.1 und früheren Versionen unterstützt PCP auf MS-MPC und MS-MIC DS-Lite nicht. Ab Junos OS Version 20.2R1 wird PCP auf der MX-SPC3 Security Services Card für CGNAT-Services unterstützt.
Führen Sie die folgenden Konfigurationsaufgaben aus:
- Konfigurieren von PCP-Serveroptionen
- Konfigurieren einer PCP-Regel
- Konfigurieren einer NAT-Regel
- Konfigurieren eines Service-Sets für die Anwendung von PCP
- Konfiguration der SYSLOG-Meldung
Konfigurieren von PCP-Serveroptionen
Konfigurieren einer PCP-Regel
Eine PCP-Regel hat die gleichen grundlegenden Optionen wie alle Servicesatzregeln:
Eine
termOption, die es einer einzelnen Regel ermöglicht, mehrere Anwendungen zu haben.Beim Ausführen der MX-SPC3 Security Services Card für Services der nächsten Generation ist keine Laufzeit erforderlich.
Eine
fromOption, die den Datenverkehr identifiziert, der der Regel unterliegt.Eine
thenOption, die angibt, welche Aktion ausgeführt werden soll. Im Falle einer PCP-Regel identifiziert diese Option den PCP-Server, der den ausgewählten Datenverkehr verarbeitet
Konfigurieren einer NAT-Regel
So konfigurieren Sie eine NAT-Regel:
Konfigurieren eines Service-Sets für die Anwendung von PCP
Um PCP zu verwenden, müssen Sie den Regelnamen (oder den Namen einer Liste von Regelnamen) in der pcp-rule rule-name Option angeben.
Ihr Service-Set muss auch alle erforderlichen nat-rule und softwire-ruleidentifizieren.
Konfiguration der SYSLOG-Meldung
Eine neue Syslog-Klasse, Konfigurationsoption, wurde bereitgestellt, pcp-logsum die PCP-Protokollgenerierung zu steuern. Er bietet die folgenden Protokollierungsebenen:
protocol– Alle Protokolle, die sich auf die Erstellung und Löschung von Zuordnungen beziehen, sind auf dieser Protokollierungsebene enthalten.protocol-error—–Alle protokollfehlerbezogenen Protokolle (z. B. Fehler bei der Aktualisierung des Zuordnungs, Fehler bei der PCP-Suche, Fehler bei der Erstellung des Zuordnungs). sind in dieser Protokollierungsebene enthalten.system-error– Speicher- und Infrastrukturfehler sind in dieser Protokollierungsebene enthalten.
Überwachung der Vorgänge des Port Control Protocol
Sie können die Vorgänge des Port Control Protocol (PCP) mit den folgenden Betriebsbefehlen überwachen:
Verwenden Sie für MS-MPCs den
show services nat mappings pcpBefehl.Hinweis:PCP wird für Services der nächsten Generation in Junos OS Version 19.3R2 nicht unterstützt
Verwenden Sie für MS-MPCs den
show services nat mappings endpoint-independentBefehl.Verwenden Sie für Next Gen Services den
show services nat source mappings endpoint-independentBefehl.show services pcp statistics protocol
Im Folgenden finden Sie Beispiele für die Ausgabe dieser Befehle.
user@host> show services nat mappings pcp Interface: sp-0/0/0, Service set: in NAT pool: p PCP Client : 10.1.1.2 PCP lifetime : 995 Mapping : 10.1.1.2 : 9000 --> 8.8.8.8 : 1025 Session Count : 1 Mapping State : Active DS-LITE output: =============== PCP Client : 2222::1 PCP lifetime : 106 Mapping : 88.1.0.47 : 47 --> 70.70.70.1 :41972 Session Count : 1 Mapping State : Active B4 Address : 2222::1
user@host> show services nat mappings endpoint-independent Interface: sp-0/0/0, Service set: in NAT pool: p Mapping : 10.1.1.2 :57400 --> 8.8.8.8 : 1024 Session Count : 0 Mapping State : Timeout PCP Client : 10.1.1.2 PCP lifetime : 991 Mapping : 10.1.1.2 : 9000 --> 8.8.8.8 : 1025 Session Count : 1 Mapping State : Active DS-LITE output: =============== PCP Client : 2222::1 PCP lifetime : 190 Mapping : 88.1.1.3 : 4001 --> 70.70.70.2 :58989 Session Count : 1 Mapping State : Active B4 Address : 2222::1
user@host> show services pcp statistics protocol Protocol Statistics: Operational Statistics Map request received :0 Peer request received :0 Other operational counters :0 Option Statistics Unprocessed requests received :0 Third party requets received :0 Prefer fail option received :0 Filter option received :0 Other options counters :0 Option optional received :0 Result Statistics PCP success :0 PCP unsupported version :0 Not authorized :0 Bad requests :0 Unsupported opcode :0 Unsupported option :0 Bad option :0 Network failure :0 Out of resources :0 Unsupported protocol :0 User exceeded quota :0 Cannot provide external :0 Address mismatch :0 Excessive number of remote peers :0 Processing error :0 Other result counters :0
Beispiel: Konfigurieren des Port Control Protocol mit NAPT44
PCP wird auf den MultiServices-PICS MS-DPC, MS-100, MS-400 und MS-500 unterstützt. Ab Junos OS Version 17.4R1 wird PCP für NATP44 auch auf MS-MPC und MS-MIC unterstützt.
Anforderungen
Hardware-Anforderungen
UEs mit PCP-Clients.
Ein MX 3D-Router mit einem MS-DPC-Service-PIC.
Anforderungen an die Software
Junos OS 13.2
Layer-3-Services-Paket
Überblick
Ein ISP möchte es Benutzergeräten mit PCP-Clients ermöglichen, Verbindungen zu Servern ohne Zeitüberschreitung aufrechtzuerhalten. Die PCP-Clients generieren PCP-Anfragen für den Typ und die Dauer der Verbindung, die sie benötigen. Die Verbindungen können von langer Dauer sein, wie z. B. Anwendungen, die eine Webcam verwenden, oder von kürzerer Dauer, wie z. B. Onlinespiele. Ein MX 3D-Router stellt einen PCP-Server zur Interpretation von PCP-Client-Anforderungen und NAPT44 bereit. Abbildung 3 zeigt die grundlegende Topologie für dieses Beispiel.
PCP-Konfiguration
- CLI-Schnellkonfiguration
- Chassis-Konfiguration
- Schnittstellen-Konfiguration
- NAT-Konfiguration
- PCP-Konfiguration
- Konfiguration des Service-Sets
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 erforderlichen Details, um sie an Ihre Netzwerkkonfiguration anzupassen, und kopieren Sie dann die Befehle und fügen Sie sie dann in die CLI auf der Hierarchieebene [edit] ein.
set chassis fpc 2 pic 0 adaptive-services service-package layer-3 set interfaces sp-2/0/0 services-options inactivity-timeout 180 cgn-pic set interfaces sp-2/0/0 unit 0 family inet set interfaces xe-3/2/0 unit 0 family inet service input service-set sset_0 set interfaces xe-3/2/0 unit 0 family inet service output service-set sset_0 set interfaces xe-3/2/0 unit 0 family inet address 30.0.0.1/24 set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24 set services nat pool pcp-pool address 44.0.0.0/16 set services nat pool pcp-pool port automatic random-allocation address-allocation round-robin set services nat pool pcp-pool address-allocation round-robin set services nat rule pcp-rule match-direction input set services nat rule pcp-rule term t0 then translated source-pool pcp-pool translation-type napt-44 set services nat rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent set services nat rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent set services pcp server pcp-s1 ipv4-address 124.124.124.122 set services pcp server pcp-s1 mapping-lifetime-minimum 600 mapping-lifetime-maximum 86500 set services pcp server pcp-s1 short-lifetime-error 120 long-lifetime-error 1200 set services pcp server pcp-s1 max-mappings-per-client 128 pcp-options third-party prefer-failure set services service-set sset_0 pcp-rules r1 set services service-set sset_0 nat-rules pcp-rule set services service-set sset_0 interface-service service-interface sp-2/0/0.0
Chassis-Konfiguration
Schritt-für-Schritt-Anleitung
So konfigurieren Sie den Service PIC (FPC 2 Slot 0) mit dem Layer 3-Servicepaket:
Rufen Sie die Hierarchieebene [edit chassis] auf.
user@host# edit chassis
Konfigurieren Sie das Layer-3-Servicepaket.
[edit chassis]user@host# set fpc 2 pic 0 adaptive-services service-package layer-3
Ergebnisse
user@host# show chassis fpc 2 pic 0
pcp-rules pcp-napt44-rule;
nat-rules pcp-rule;
interface-service {
service-interface sp-2/0/0.0;
}
Schnittstellen-Konfiguration
Schritt-für-Schritt-Anleitung
Konfigurieren Sie die Dienste MS-DPC.
user@host# set interfaces sp-2/0/0 services-options inactivity-timeout 180 cgn-pic user@host# set interfaces sp-2/0/0 unit 0 family inet
Konfigurieren Sie die kundenorientierte Schnittstelle, die für NAT- und PCP-Services verwendet wird.
user@host# set interfaces xe-3/2/0 unit 0 family inet service input service-set sset_0 user@host# set interfaces xe-3/2/0 unit 0 family inet service output service-set sset_0 user@host# set interfaces xe-3/2/0 unit 0 family inet address 30.0.0.1/24
Konfigurieren Sie die mit dem Internet verbundene Schnittstelle.
user@host# set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24
Ergebnisse
user@host#
sp-2/0/0 {
services-options {
inactivity-timeout 180;
cgn-pic;
}
unit 0 {
family inet;
}
}
xe-3/2/0 {
unit 0 {
family inet {
service {
input {
service-set sset_0;
}
output {
service-set sset_0;
}
}
address 30.0.0.1/24;
}
}
}
xe-5/0/0 {
unit 0 {
family inet {
address 25.0.0.1/24;
}
}
}
NAT-Konfiguration
Schritt-für-Schritt-Anleitung
Gehen Sie die
[edit services nat]Hierarchie entlang.user@host# edit services nat
Konfigurieren Sie einen NAT-Pool mit dem Namen
pcp-pool.[edit services nat]user@host# set pool pcp-pool address 44.0.0.0/16 user@host# set pool pcp-pool port automatic random-allocation user@host# set pool pcp-pool address-allocation round-robinKonfigurieren Sie eine aufgerufene NAT-Regel
pcp-rule.[edit services nat]user@host# set rule pcp-rule term t0 then translated source-pool pcp-pool translation-type napt-44 user@host# set rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent
Ergebnisse
user@host# show services nat
pool pcp-pool {
address 44.0.0.0/16;
port {
automatic {
random-allocation;
}
}
address-allocation round-robin;
}
rule pcp-rule {
match-direction input;
term t0 {
then {
translated {
source-pool pcp-pool;
translation-type {
napt-44;
}
mapping-type endpoint-independent;
filtering-type {
endpoint-independent;
}
}
}
}
}
PCP-Konfiguration
Schritt-für-Schritt-Anleitung
So konfigurieren Sie den PCP-Server und die PCP-Regeloptionen.
Wechseln Sie auf die
edit services pcpHierarchieebene des Serverspcp-s1user@host# edit services pcp server pcp-s1
Konfigurieren Sie die PCP-Serveroptionen.
[edit services pcp server pcp-s1] user@host# set ipv4-address 124.124.124.122 user@host# set mapping-lifetime-minimum 600 user@host# set mapping-lifetime-maximum 86500 user@host# set short-lifetime-error 120 user@host# set long-lifetime-error 1200 user@host# set max-mappings-per-client 128 user@host# set pcp-options third-party prefer-failure
Erstellen Sie die PCP-Regel.
[edit services pcp rule pcp-napt44-rule user@host# edit rule pcp-napt44-rule
Konfigurieren Sie die PCP-Regeloptionen.
[edit services pcp rule pcp-napt44-rule] user@host# set match-direction input user@host# set term t0 then pcp-server pcp-s1
Ergebnisse
user@host# show services pcp
server pcp-s1 {
ipv4-address 124.124.124.122;
mapping-lifetime-minimum 600;
mapping-lifetime-maximum 86500;
short-lifetime-error 120;
long-lifetime-error 1200;
max-mappings-per-client 128;
pcp-options third-party prefer-failure;
}
rule pcp-napt44-rule {
match-direction input;
term t0 {
then {
pcp-server pcp-s1;
}
}
}
Konfiguration des Service-Sets
Schritt-für-Schritt-Anleitung
Legen Sie ein Service-Set an,
sset_0auf deredit services service-setHierarchieebene.user@host# edit services service-set sset_0
service-set sset_0 { pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; } }Identifizieren Sie die NAT-Regel, die dem Service-Set zugeordnet ist.
[edit services service-set sset_0] user@host# set nat-rules pcp-rule
Identifizieren Sie die PCP-Regel, die dem Service-Set zugeordnet ist.
[edit services service-set sset_0] user@host# set pcp-rules r1
Identifizieren Sie die Serviceschnittstelle, die dem Service-Set zugeordnet ist.
[edit services service-set sset_0] user@host# set interface-service service-interface sp-2/0/0.0
Ergebnisse
user@host# show
pcp-rules pcp-napt44-rule;
nat-rules pcp-rule;
interface-service {
service-interface sp-2/0/0.0;
}
Tabellarischer Änderungsverlauf
Die Unterstützung der Funktion hängt von der Plattform und der Version ab, die Sie benutzen. Verwenden Sie den Feature-Explorer , um festzustellen, ob eine Funktion auf Ihrer Plattform unterstützt wird.