Selektive klassenbasierte Filterung auf PTX-Routern
Selektive klassenbasierte Filterung auf PTX-Routern
Für unterstützte Router und Linecards der PTX-Serie können Sie IPv4- und IPv6-Datenverkehr basierend auf der Quell- oder Zielklassifizierung (Source Class Usage, SCU) und (Destination Class Usage, DCU) filtern. Dies ist nützlich, da es bedeutet, dass Sie einen Filter selektiv auf eine Teilmenge von Paketen in einer Klasse anwenden können, anstatt auf alle Pakete in der Klasse. Darüber hinaus wird der Paketfluss durch die Packet Forwarding Engine (PFE) optimiert und die Filterung ist effizienter.
Service Providern ermöglicht die klassenbasierte Filterung die Bereitstellung erweiterter Services wie:
-
Manipulation des Per-Hop-Verhaltens durch Anpassen der Weiterleitungsklasse des Pakets basierend auf der Quell- oder Zielpaketklasse und anderen Filterkriterien.
-
Begrenzung der Datenverkehrsrate auf bestimmte Kundenschnittstellen, wobei ein hohes Datenverkehrsvolumen zurückgehen kann (z. B. bei DDoS-Angriffen). Normalerweise würden Sie einen ausgehenden Schnittstellenfilter bereitstellen, um die Rate des Datenverkehrs zu begrenzen. Dies kann jedoch ineffizient sein, da der Datenverkehr in verteilten Systemen immer noch die Fabric durchquert und nur begrenzte Fabric-Bandbreite beansprucht. Noch deutlicher wird die Ineffizienz in einem Virtual Output Queueing-System wie PTX, bei dem der Eintritt in die Ausgangswarteschlange erfolgt, bevor der Ausgabefilter ausgeführt wird, und jede nachfolgende Drop-Aktion im Ausgabefilter eine Kompensation erfordert – es muss mehr Datenverkehr in die Warteschlange eingelassen werden, was mehr Fabric-Bandbreite und mehr Ausgangs-On-Chip-Pufferspeicher erfordert (was eine begrenzte Ressource ist). Klassenbasierte Filter werden in der Eingangspipeline ausgeführt, bevor die Pakete in die Ausgangswarteschlange aufgenommen werden. Dieser Mechanismus wird gegenüber regulären Ausgabeschnittstellenfiltern empfohlen, wenn Sie erwarten, dass große Datenverkehrsmengen an bestimmte Ziele verworfen werden.
Die klassenbasierte Filterung ist auch effektiv für "Low-and-Slow"-DoS-Angriffe, die auf Anwendungs- und Serverressourcen abzielen, indem sie normale Datenverkehrsmuster nachahmen.
Um die klassenbasierte Filterung zu unterstützen, werden zwei neue Bindungspunkte in der Weiterleitungstabelle für PTX-Router eingeführt: source-class und destination-class.
Hier wird die CLI-Hierarchie angezeigt, wobei src-class-name oder dest-class-name der Name des Filters ist, den Sie in der entsprechenden Richtlinie definiert haben.
routing-options forwarding-table source-class src-class-name family [inet | inet6] filter <filter-name>
routing-options forwarding-table destination-class dest-class-name family [inet | inet6] filter <filter-name>
Sie können auch instanzspezifische Filter für mehrere SCU- und DCU-Klassen konfigurieren. Standardmäßig wird nur ein Satz von Leistungsindikatoren und Policern für einen Filter instanziiert. Im instanzspezifischen Filter wird für jeden Filteranfügepunkt ein separater Satz von Zählern und Policern erstellt.
firewall family [inet | inet6] filter <filter name> instance-specific
Grundlegendes zur klassenbasierten Filterung auf PTX-Routern
Ursprünglich wurde die Funktion Source Class Usage (SCU) eingeführt, um eine statistische Aufschlüsselung des Datenverkehrs bereitzustellen, der an eine bestimmte Schnittstelle pro Ursprungspräfix (identifiziert durch die Quellklasse) gesendet wird. Destination Class Usage (DCU) wurde ursprünglich eingeführt, um eine statistische Aufschlüsselung des auf einer Schnittstelle empfangenen Datenverkehrs pro Zielpräfix (identifiziert durch die Zielklasse) bereitzustellen.
Sowohl Quell- als auch Zielklassen werden dem Paket bei der Quell- oder Zielsuche zugewiesen. Daher können Übereinstimmungsbedingungen für Quell- und Zielfilter nur ausgewertet werden, wenn der Filter nach der Suche ausgeführt wird.
Juniper Router unterstützen mehrere Filterbindungspunkte. Diejenigen, die das Ergebnis der Quell- und Zielklassifizierung nutzen können, sind unten mit Nutzungsrichtlinien aufgeführt:
-
Ausgabeschnittstellenfilter (Schnittstellen festlegen <Schnittstellenname> Familie inet filter <output>. Wird auf jeder PTX-Plattform unterstützt, aber nicht empfohlen, wenn erwartet wird, dass große Datenverkehrsmengen in einem stabilen Zustand verworfen werden (z. B. bei der Implementierung eines Filters zur Abwehr von DDoS-Angriffen). Verworfener DDoS-Angriffsdatenverkehr kann aufgrund der begrenzten Fabric-Bandbreite und des begrenzten Ausgangs-On-Chip-Pufferspeichers möglicherweise nicht durch anderen Datenverkehr kompensiert werden, der die DDoS-Angriffskriterien nicht erfüllt.
-
Filtern Sie nach der Suche nach Weiterleitungstabellenfiltern (setzen Sie die Weiterleitungsoptionsfamilie inet filter <filtername> Ausgabe). Unterstützt auf den Plattformen Express 2 (PE) und Express 3 (ZX). Die Filter werden jedoch in der Ausgangspipeline instanziiert, daher ähnelt das Verwerfungsverhalten dem regulären Ausgabeschnittstellenfilter.
-
Quell- oder Zielklassenspezifischer Bindungspunkt (routing-options forwarding-table source-class src-class-name family [inet | inet6] filter <filter- name>) setzen). Unterstützt auf den Plattformen Express 2 (PE), Express 3 (ZX) und Express 4 (BT). Dieser Filter wird in der Eingangspipeline instanziiert. Dies ist die empfohlene Option, um große Datenverkehrsmengen zu verwerfen. Diese Option wird auch empfohlen, wenn Sie die Weiterleitungsklasse und anschließend die Zuweisung der Ausgabewarteschlange überschreiben müssen. In einem Warteschlangensystem für virtuelle Ausgaben wird die Warteschlange in der Eingangspipeline ausgewählt, und jede Außerkraftsetzung muss auch in der Eingangspipeline erfolgen.
-
Beachten Sie, dass diese Filteraktionen in dem Filter, der an den quell- oder zielklassenspezifischen Bindungspunkt gebunden ist, nicht unterstützt werden:
-
routing-instance
-
Nächste-IP-Adresse
-
next-interface
-
entkapseln
-
kapseln
-
-
Selektive klassenbasierte Filter können nicht auf Host-gebundene Pakete angewendet werden.
-
Pakete, die uRPF-Lookups nicht bestehen, aber von uRPF-Fail-Filtern wiederhergestellt werden, unterliegen keinen SCU/DCU-Lookups. Daher können selektive klassenbasierte Filter nicht auf solche Pakete angewendet werden.
-
Filter werden nur auf Pakete angewendet, die auf Schnittstellen eingehen, für die die SCU/DCU-Funktion aktiviert ist. Dies bedeutet, dass Filter unabhängig davon angewendet werden, ob SCU auf Ausgabeschnittstellen konfiguriert ist oder nicht.
-
Pakete, auf die ein selektiver, klassenbasierter Filter angewendet werden muss, können zu Leistungseinbußen führen. Der Leistungsabfall hängt von der Rate des eingehenden Datenverkehrs, der durchschnittlichen Paketgröße und der Menge des Datenverkehrs ab, der den Filtern unterzogen wird. Pakete, auf die keine selektiven klassenbasierten Filter angewendet werden, wirken sich jedoch nicht auf die Leistung aus.
-
Die DCU-Abrechnung gilt für Pakete, die von Filtern verworfen werden.
-
Die SCU-Ausgabeabrechnung gilt nicht für Pakete, die von Filtern verworfen werden.
-
Selektive klassenbasierte Filter können nicht mit einem schnittstellenspezifischen Drehregler verwendet werden, da dieser Drehregler nur auf an der Schnittstelle angeschlossene Filter anwendbar ist.
-
Listen (Eingabe-/Ausgabelisten) mit selektiven klassenbasierten Filtern werden nicht unterstützt.
-
Logische Systeme werden nicht unterstützt.
-
Nur IPv4 und IPv6 werden als Nutzlastprotokolle unterstützt. MPLS wird nicht unterstützt.
-
Wenn ein Paket sowohl mit SCU- als auch mit DCU-selektiven, klassenbasierten Filtern übereinstimmt, wird nur der letzte Filter (d. h. der DCU-Filter) auf das Paket angewendet, nicht aber beide Filter.
Beispiel: Selektive klassenbasierte Filterung (PTX-Router)
In diesem Beispiel wird gezeigt, wie Firewallaktionen (Verwerfen, Ablehnen oder Überwachen) auf IPv4- und IPv6-Datenverkehrsflüsse auf der Grundlage der Quell- oder Zielklassifizierung angewendet werden. Sie gilt für PTX10001-36MR-, PTX10003-160C-, PTX10003-80C-, PTX10004- und PTX10008-Router mit Junos Evolved OS Version 21.2 PTX10016 Router mit JUNOS Evolved OS Version 21.4 oder PTX3000, PTX-5000, PTX1000, PTX10002, PTX10008 PTX10016 Router mit Junos OS Version 21.2 oder höher.
Anforderungen
In diesem Beispiel wird BGP verwendet, da BGP zum Austausch von Routen zwischen Geräten in einer Netzwerktopologie verwendet werden kann, die aus Kunden-Edge, Provider-Edge und Provider-Routern besteht. Weitere Informationen finden Sie unter Übersicht über die BGP-Konfiguration .
Überblick
In diesem Beispiel werden drei Routinggeräte verwendet: ein Kunden-Edge-Gerät (CE), ein Provider-Edge-Gerät (PE) und ein Provider-Core-Gerät (P). Die Konfiguration für IPv4-Datenverkehr wird angezeigt und umfasst zwei Sätze von SCU- und DCU-Klassen sowie die Firewallfilter. In der folgenden Abbildung stellen die /32-IP-Präfixe Hosts dar, die mit dem Kunden-Edge (CE) bzw. Provider-Router (P) verbunden sind.

In diesem Beispiel definieren wir zwei Klassen von Datenverkehr: SCU-1 und SCU-2, wobei das erste den Präfixen im Subnetz 172.16.2.0/24 und das zweite den Präfixen im Subnetz 172.16.3.0/24 zugewiesen wird. Andere Präfixe haben keine Klassenzuweisungen. Wie im folgenden CLI-Codeausschnitt gezeigt, wird auf dem PE-Router eine Routing-Richtlinie definiert, um Präfixe für die Quellklasse scu-1 und die Quellklasse scu-2 zuzuweisen.
show policy-options
policy-statement scu-class {
term gold {
from {
route-filter 172.16.2.0/24 orlonger;
}
then source-class scu-1;
accept;
term silver {
from {
route-filter 172.16.3.0/24 orlonger;
}
then source-class scu-2;
accept;
}
Um den Datenverkehr zu berücksichtigen, der von CE in die Schnittstellen von PE eingeht, verwendet die auf dem PE-Router definierte Richtlinie namens dcu-class Routenfilter, um den Datenverkehr in dcu-1zu platzieren, andere Präfixe haben keine Klassenzuweisungen.
show policy-options
policy-statement dcu-class {
term gold {
from {
route-filter 172.16.5.0/24 orlonger;
}
then destination-class dcu-1;
accept;
}
Die Richtlinien werden dann auf die Weiterleitungstabelle angewendet.
forwarding-table {
export [ dcu_class scu_class ];
}
Im nächsten Schritt konfigurieren wir einen Filter auf dem PE-Router.
show firewall {
family inet {
filter f1 {
term t1 {
from {
protocol icmp;
}
then {
count c1;
}
}
}
}
}
Fügen Sie diesen Filter an die spezifischen Quell- und Zielklassenbindungspunkte auf dem PE-Router an.
show routing-options forwarding-table
source-class scu-1 {
family inet {
filter {
f1;
}
}
}
destination-class dcu-1 {
family inet {
filter {
f1;
}
}
}
Konfiguration
Verfahren
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 ein.
Im Beispiel werden statische Routen verwendet, um Konnektivitäts- und Loopbackschnittstellenadressen zum Testen des Vorgangs bereitzustellen.
Gerät CE
set interfaces et-1/2/0 unit 0 family inet address 10.0.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set interfaces lo0 unit 0 family inet address 172.16.0.1/32 set protocols bgp group ext type external set protocols bgp group ext export send-direct set protocols bgp group ext export send-static set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.0.0.2 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options static route 10.1.0.0/30 next-hop 10.0.0.2 set routing-options autonomous-system 100
Gerät PE
set interfaces et-1/2/0 unit 0 family inet address 10.0.0.2/30 set interfaces et-1/2/1 unit 0 family inet accounting source-class-usage input set interfaces et-1/2/1 unit 0 family inet accounting destination-class-usage set interfaces et-1/2/1 unit 0 family inet address 10.1.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp group ext type external set protocols bgp group ext export send-direct set protocols bgp group ext neighbor 10.0.0.1 peer-as 100 set protocols bgp group ext neighbor 10.1.0.2 peer-as 300 set policy-options policy-statement dcu_class term gold from route-filter 172.16.5.0/24 orlonger set policy-options policy-statement dcu_class term gold then destination-class dcu-1 set policy-options policy-statement scu_class term gold from route-filter 172.16.2.0/24 orlonger set policy-options policy-statement scu_class term gold then source-class scu-1 set policy-options policy-statement scu_class term silver from route-filter 172.16.3.0/24 orlonger set policy-options policy-statement scu_class term silver then source-class scu-1 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set firewall family inet filter f1 term 0 from protocol icmp set firewall family inet filter f1 term 0 then count c1 set firewall family inet filter f1 term 0 then accept set routing-options autonomous-system 200 set routing-options forwarding-table export dcu_class set routing-options forwarding-table export scu_class
Gerät P
set interfaces et-1/2/1 unit 0 family inet address 10.1.0.2/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set interfaces lo0 unit 0 family inet address 172.16.0.3/32 set interfaces lo0 unit 0 family inet address 172.16.0.3/32 set interfaces lo0 unit 0 family inet address 172.16.0.3/32 set interfaces lo0 unit 0 family inet address 172.16.0.3/32 set interfaces lo0 unit 0 family inet address 172.16.0.3/32 set interfaces lo0 unit 0 family inet address 172.16.0.3/32 set protocols bgp group ext type external set protocols bgp group ext export send-direct set protocols bgp group ext export send-static set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.1.0.1 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options static route 10.0.0.0/30 next-hop 10.1.0.1 set routing-options static route 172.16.2.0/24 discard set routing-options static route 172.16.3.0/24 discard set routing-options static route 172.16.4.0/24 discard set routing-options static route 172.16.5.0/24 discard set routing-options static route 172.16.6.0/24 discard set routing-options static route 172.16.7.0/24 discard set routing-options autonomous-system 300
Schritt-für-Schritt-Anleitung
So gruppieren Sie Quell- und Zielpräfixe in einer Weiterleitungsklasse:
-
Erstellen Sie die Routerschnittstellen auf dem PE-Router.
[edit interfaces] set et-1/2/0 unit 0 family inet accounting source-class-usage output set et-1/2/0 unit 0 family inet address 10.0.0.2/30 set et-1/2/1 unit 0 family inet accounting source-class-usage input set et-1/2/1 unit 0 family inet accounting destination-class-usage set et-1/2/1 unit 0 family inet address 10.1.0.1/30 set lo0 unit 0 family inet address 192.168.0.2/32
-
Konfigurieren Sie BGP auf dem PE-Router.
[edit] set protocols bgp group ext type external set protocols bgp group ext export send-direct set protocols bgp group ext neighbor 10.0.0.1 peer-as 100 set protocols bgp group ext neighbor 10.1.0.2 peer-as 300
-
Konfigurieren Sie die AS-Nummer (Autonomous System) des PE-Routers.
[edit] set routing-options autonomous-system 200
-
Konfigurieren Sie die DCU-Richtlinie auf dem PE-Router.
[edit] set policy-options policy-statement dcu_class term class-1 from route-filter 172.16.5.0/24 orlonger set policy-options policy-statement dcu_class term class-1 then destination-class dcu-1
-
Konfigurieren Sie die SCU-Richtlinie auf dem PE-Router.
[edit] set policy-options policy-statement scu_class term class-1 from route-filter 172.16.2.0/24 orlonger set policy-options policy-statement scu_class term class-1 then source-class scu-1
-
Wenden Sie die Richtlinien auf die Weiterleitungstabelle auf dem PE-Router an.
[edit] set routing-options forwarding-table export dcu_class set routing-options forwarding-table export scu_class
-
Erstellen Sie den Filter auf dem PE-Router.
[edit] set firewall family inet filter f1 from protocol icmp then count c1
-
Binden Sie den Filter an die Bindungspunkte der Quellklasse und der Zielklasse auf dem PE-Router.
Binden des Filters an die Verwendung der Zielklasse.
[edit] set routing-options forwarding-table destination-class dcu-1 family inet filter f1
Binden des Filters an die Verwendung der Quellklasse.
[edit] set routing-options forwarding-table source-class scu-1 family inet filter f1
-
(Optional) Konfigurieren Sie eine Routing-Richtlinie, die direkte Routen auf dem PE-Router ankündigt.
[edit] set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept
Befund
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die show interfacesBefehle , show protocols, show policy-optionsund show routing-options auf dem PE-Router eingeben. Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
show interfaces
et-1/2/0 {
unit 0 {
family inet {
address 10.0.0.2/30;
}
}
}
et-1/2/1 {
unit 0 {
family inet {
accounting {
source-class-usage { input;
}
}
address 10.1.0.1/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.0.2/32;
}
}
}
show interface statistics et-1/2/0
Physical interface: et-1/2/0:0, Enabled, Physical link is Up
Interface index: 1087, SNMP ifIndex: 622
Link-level type: Ethernet, MTU: 1514, LAN-PHY mode, Speed: 10Gbps, BPDU Error: None, Loop Detect PDU Error: None, MAC-REWRITE Error: None, Loopback: Disabled,
Source filtering: Disabled, Flow control: Enabled, Media type: Fiber Device flags : Present Running
Interface flags: SNMP-Traps
CoS queues : 8 supported, 8 maximum usable queues
Current address: e4:5d:37:4e:e8:40, Hardware address: e4:5d:37:4e:e8:40 Last flapped : 2021-03-16 09:33:43 PDT (03:39:51 ago)
Statistics last cleared: 2021-03-16 13:13:01 PDT (00:00:33 ago) Input rate : 0 bps (0 pps)
Output rate : 0 bps (0 pps) Input errors: 0, Output errors: 0 Active alarms : None
Active defects : None
PCS statistics Seconds
Bit errors 0
Errored blocks 0
PRBS Mode : Disabled
Interface transmit statistics: Disabled Link Degrade :
Link Monitoring : Disable
Logical interface et-1/2/0:0.0 (Index 1047) (SNMP ifIndex 673)
Flags: Up SNMP-Traps
Encapsulation: ENET2
Input packets : 14
Output packets: 6
Protocol inet, MTU: 1500
Flags: Sendbcast-pkt-to-re, SCU-out
Packets Bytes
Source class (packet-per-second) (bits-per-second)
scu-1 6 504
( 0)( 0)
Addresses, Flags: Is-Preferred Is-Primary
Destination: 44.4.4/24, Local: 44.4.4.4, Broadcast: 44.4.4.255
Protocol inet6, MTU: 1500
Flags: None, SCU-out
Packets Bytes
Source class (packet-per-second) (bits-per-second)
scu-1 0 0
( 0) ( 0)
Addresses, Flags: Is-Preferred Is-Primary
Destination: 4001::/64, Local: 4001::4001
Addresses, Flags: Is-Preferred
Destination: fe80::/64, Local: fe80::e65d:37ff:fe4e:e840
Protocol multiservice, MTU: Unlimited
Flags: None
show firewall Filter: f1 Counters: Name Bytes Packets c1 0 0 Filter: v4_instance_new-scu-scu-1 Counters: Name Bytes Packets c_v4_instance_new-scu-scu-1 504 6 Filter: v6_instance_new-scu-scu-1 Counters: Name Bytes Packets c_v6_instance_new-scu-scu-1 0 0
show policy-options
policy-statement dcu_class {
term class-1 {
from {
route-filter 172.16.5.0/24 orlonger;
}
then destination-class dcu-1;
}
}
policy-statement scu_class {
term class-1 {
from {
route-filter 172.16.2.0/24 orlonger;
}
then source-class scu-1;
}
}
policy-statement send-direct {
term 1 {
from protocol direct;
then accept;
}
}
show routing-options
autonomous-system 200;
forwarding-table {
export [ dcu_class scu_class ];
}Wenn Sie mit der Konfiguration des Geräts fertig sind, geben Sie Commit aus dem Konfigurationsmodus ein.