Dell Networking SONiC: Jak nakonfigurovat směrování na základě zásad
摘要: Tento článek na jednoduchém příkladu vysvětluje, jak nakonfigurovat směrování na základě zásad v systému Dell Networking SONiC.
说明
PožadavkyK demonstraci konceptů používáme standardní pojmenování rozhraní. Viz článek Dell Networking řady S: Základní konfigurace rozhraní – SONiC 4.0 , kde najdete další informace o pojmenování rozhraní |
Rejstřík
- Co je směrování založené na zásadách?
- Postup konfigurace směrování založeného na zásadách.
- Syntaxe konfigurace
- Ukázková konfigurace
Co je směrování založené na zásadách?
Služba PBR (Policy-Based Routing) poskytuje metodu předávání paketů přepsáním informací dostupných ve směrovací tabulce IP. Můžete implementovat zásady, které selektivně způsobí, že pakety budou mít různé cesty. Tradiční směrování protokolu IP předává pakety pouze na základě cílové adresy IP v paketu. PBR lze nakonfigurovat tak, aby předávalo pakety na základě dalších kritérií, jako jsou čísla portů TCP/UDP, zdrojová IP adresa, hodnota DSCP a příznaky TCP. Systém Dell SONiC používá pro směrování na základě zásad zásady služeb založené na toku. Zásady předávání se skládají z map tříd, které vybírají pakety a nastavují akce, které způsobí, že paket bude předán předem určenému dalšímu segmentu směrování nebo rozhraní, čímž se obchází cesta určená tabulkami směrování a předávání. Ve stejné zásadě můžete definovat více hodnot rozhraní shody a výstupu nebo dalšího segmentu směrování. Zásady přesměrování můžete použít na přepínaný nebo směrovaný provoz. Provoz lze směrovat do stejného VRF, který používá rozhraní příchozího přenosu dat, nebo do jiného VRF.
Pomocí směrování založeného na zásadách můžete zajistit rovný přístup, směrování citlivé na protokoly, směrování závislé na zdroji, směrování založené na interaktivním porovnání s dávkovým provozem a směrování založené na vyhrazených odkazech. Směrování založené na zásadách je flexibilnější mechanismus pro směrování paketů než směrování cílů.
Postup konfigurace směrování založeného na zásadách
Dell SONiC implementuje PBR tak, že poskytuje modulární rámec pro klasifikaci provozu a použití akcí předávání, jako je například nastavení dalšího segmentu směrování IP, na vybraný provoz.
Konfigurace PBR:
- Klasifikujte (vyberte) provoz pro směrování založené na zásadách pomocí seznamů ACL nebo polí L2, L3 nebo L4 v hlavičkách paketů.
- V mapě zásad nakonfigurujte akce předávání tak, aby se prováděly u každého klasifikovaného toku.
- Použijte zásady přesměrování na rozhraní příchozího přenosu dat – globálně na všechna rozhraní přepínačů, zadané rozhraní, síť VLAN nebo kanál portu.

POZNÁMKA: V aplikaci Dell SONiC:
- Pokud příchozí provoz nenajde shodu v žádném z příkazů použitých v mapě zásad v rozhraní/vlan/portchannel/globálně, bude se předávat podle standardní směrovací tabulky.
- Zásady předávání jsou podporovány pouze u rozhraní příchozího přenosu dat.
- Zásady předávání mohou přesměrovávat pouze vybraný provoz. nemohou zachycovat, přepínat ani směrovat provoz na procesor.
- Zásady předávání s akcemi dalšího segmentu směrování a skupiny dalšího segmentu směrování se vztahují pouze na směrovaný provoz L3.
- Zásady přesměrování, které používají výstupní rozhraní ethernetového nebo portového kanálu, platí pouze pro přepínaný provoz L2.
- Zásady předávání se nevztahují na provoz směřující do procesoru (cílová IP adresa je stejná jako adresa přepínače) ani na přenos, který je zachycen na procesoru.
- Použijete-li zásadu předávání globálně na všech rozhraních, musí být další směrování ve výchozím VRF, pokud nenastavíte jiný než výchozí VRF pomocí příkazu set {ip | ipv6} next-hop ip-address vrf vrf-name v mapě zásad.
Syntaxe konfigurace
Konfigurace mapy tříd pro klasifikaci provozu
Příchozí provoz můžeme klasifikovat (spárovat) pomocí následujících metod v mapě tříd.
- Použití IPv4 nebo IPv6 nebo MAC Access list
- Použití polí záhlaví L2-L4
Syntaxe příkazu při použití seznamu Access, aby odpovídala provozu v mapě tříd.
Pokud konfigurujeme seznam přístupu tak, aby odpovídal provozu v mapě tříd, nezapomeňte nakonfigurovat seznam přístupu.
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# class-map {CLASSMAP-NAME} match-type acl
DELLSONiC(config-class-map)# match access-group {ip, ipv6, mac} {Access-List-name}
Syntaxe příkazu při použití polí záhlaví L2-L4
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# class-map {CLASSMAP-NAME} match-type fields match-all
DELLSONiC(config-class-map)# match {MATCH-CRITERIA}
The following is the Match Criteria dei Match packets using DEI value destination-address Match packets using destination address dscp Match packets using DSCP value ethertype Match packets using ethertype ip Match packets using IP/IPv6 protocol l4-port Match packets using TCP/UDP port pcp Match packets using PCP source-address Match packets using source address tcp-flags Match packets using TCP flags vlan Match packets using VLAN ID
Konfigurace mapy zásad
Zásady předávání PBR určují akce předávání, které se mají provést při porovnávání provozu pro směrování založené na zásadách. Zásady předávání podporují následující akce:
- Nastavit další směrování – směruje provoz IPv4 na další segment směrování IPv4; směruje provoz IPv6 na další segment směrování IPv6.
- Nastavit skupinu dalšího segmentu směrování – Určuje skupinu, ze které je vybrána nejlepší adresa IPv4 nebo IPv6 dalšího směrování.
- Nastavit rozhraní – přesměruje provoz L2 na zadané výstupní rozhraní.
- Nastavit rozhraní null – Zahodí odpovídající provoz, pokud je nastaveno nulové rozhraní nebo pokud není dosažitelný žádný ze zadaných dalších segmentů směrování nebo pokud zadané výstupní rozhraní není L2 a propojí se.
- Nastavit skupinu replikace – slouží k replikaci provozu na servery libovolného vysílání za účelem vyřešení problému hash, jak je popsáno v RFC7690.
Syntax příkazu
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# policy-map {POLICYMAP-NAME} type forwarding
DELLSONiC(config-policy-map)#
DELLSONiC(config-policy-map)# class {CLASS-MAP-NAME} priority {Priority-value}
Enter a priority number (0-4095) to specify the order in which a class map is applied in the policy map to match traffic in the flow. A higher priority class map is processed before a lower priority.
If next hop is a IP address
DELLSONiC(config-policy-map-flow)# set ip next-hop {IP-ADDRESS}
If next hop is a IPv6 address
DELLSONiC(config-policy-map-flow)# set ipv6 next-hop {IPv6 Address}
If we need a specific interface where the traffic is to be forwarded
DELLSONiC(config-policy-map-flow)# set interface {Eth, Null, PortChannel } {interface number}
If we have a IPv4/IPv6 Next Hop Group
DELLSONiC(config-policy-map-flow)# set ip next-hop-group {IPv4 Next Hop Group}
DELLSONiC(config-policy-map-flow)# set ipv6 next-hop-group {IPv6 Next Hop Group}
If we have a IPv4/IPv6 Replication Group
DELLSONiC(config-policy-map-flow)# set ip replication-group {Ipv4 Replication Group}
DELLSONiC(config-policy-map-flow)# set ipv6 replication-group {Ipv4 Replication Group}
Konfigurace zásad služby (použití mapy zásad v rozhraní)
Na rozhraní nebo dílčím rozhraní:
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# interface {Eth slot/port[/breakout-port] [.subinterface]}
DELLSONiC(config-if-Eth)# service-policy type forwarding in {policy-map-name}
U rozhraní VLAN:
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# interface Vlan {vlan-id}
DELLSONiC(conf-if-Vlan)# service-policy type forwarding in {policy-map-name}
Na rozhraních portových kanálů,
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# interface PortChannel {portchannel-number}
DELLSONiC(conf-if-po)# service-policy type forwarding in {policy-map-name}
Globálně na všech rozhraních přepínačů
When you apply a forwarding policy globally on all interfaces, the next-hops must be in the default VRF unless you set a non-default VRF using the set {ip | ipv6} next-hop ip-address vrf vrf-name command in the policy map.
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# service-policy type forwarding in {policy-map-name}
Ověření
Use the Following commands to verify Class Map
DELLSONiC# show class-map {class-map-name}
Use the Following commands to verify policy map
DELLSONiC# show policy-map {POLICY-MAP-NAME}
Use the Following commands to service Policy
DELLSONiC# show policy-map type forwarding
DELLSONiC# show service-policy interface {Interface}
DELLSONiC# show service-policy summary
Ukázková konfigurace
Podívejme se na následující topologii.

V softwaru DELLSONiC nemáme trasu k verzím 50.0.0.0/24 a 60.0.0.0/24.
DELLSONiC# show ip route
Codes: K - kernel route, C - connected, S - static, B - BGP, O - OSPF
> - selected route, * - FIB route, q - queued route, r - rejected route
Destination Gateway Dist/Metric Last Update
--------------------------------------------------------------------------------------------------------------------------------
C>* 1.1.1.1/32 Direct Loopback0 0/0 09:18:16 ago
C>* 10.0.0.0/24 Direct Eth1/1 0/0 09:17:56 ago
C>* 20.0.0.0/24 Direct Eth1/2 0/0 01:58:41 ago
C>* 30.0.0.0/24 Direct Eth1/3 0/0 09:14:38 ago
Účel:
Provoz na serverovou farmu 50.0.0.0/24 se má směrovat na další segment směrování 20.0.0.2. Provoz na serverovou farmu 60.0.0.0/24 se má směrovat na další segment směrování 30.0.0.2.
Konfigurace
Pojďme nakonfigurovat mapu tříd. Zde klasifikujeme provoz na základě různých parametrů.
Mapa tříd MATCH_IP_OF_SERVER-1 Kritérium shody je DST-IP 50.0.0.0/24.
V mapě třídy MATCH_IP_OF_SERVER-2, kritéria shody jsou DST-IP 60.0.0.0/24.
admin@DELLSONiC:~$ sonic-cli DELLSONiC# DELLSONiC# configure DELLSONiC(config)# class-map MATCH_IP_OF_SERVER-1 match-type fields match-all DELLSONiC(config-class-map)# description "MATCH IP ADDRESS of SERVER FARM 1" DELLSONiC(config-class-map)# match destination-address ip 50.0.0.0/24 DELLSONiC(config-class-map)# exit DELLSONiC(config)# DELLSONiC(config)# class-map MATCH_IP_OF_SERVER-2 match-type fields match-all DELLSONiC(config-class-map)# description "MATCH IP ADDRESS of SERVER FARM 2" DELLSONiC(config-class-map)# match destination-address ip 60.0.0.0/24 DELLSONiC(config-class-map)# exit DELLSONiC(config)# exit DELLSONiC#
Teď nakonfigurujeme mapu zásad.
Zde definujeme, jaká je další akce, která se má provést, pokud provoz odpovídá podmínce. V takovém případě, pokud provoz odpovídá konkrétní cílové IP adrese, přesměrujte na konkrétní IP adresu dalšího směrování.
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure DELLSONiC(config)# policy-map FORWARD_TO_SERVER type forwarding DELLSONiC(config-policy-map)# class MATCH_IP_OF_SERVER-2 priority 100 DELLSONiC(config-policy-map-flow)# set ip next-hop 30.0.0.2 DELLSONiC(config-policy-map-flow)# exit DELLSONiC(config-policy-map-flow)# DELLSONiC(config-policy-map)# class MATCH_IP_OF_SERVER-1 priority 100 DELLSONiC(config-policy-map-flow)# set ip next-hop 20.0.0.2 DELLSONiC(config-policy-map-flow)# exit DELLSONiC(config-policy-map)# exit DELLSONiC(config)#
Aplikujme zásadu Policy Map as Service na rozhraní Eth 1/1.
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure DELLSONiC(config)# interface Eth 1/1 DELLSONiC(config-if-Eth1/1)# service-policy type forwarding in FORWARD_TO_SERVER DELLSONiC(config-if-Eth1/1)# end
Ověření konfigurace
Podívejme se na konfiguraci mapy tříd. Zde vidíme MATCH_IP_OF_SERVER-1 Kritéria shody jsou DST-IP 50.0.0.0/24. V mapě třídy MATCH_IP_OF_SERVER-2, kritéria shody jsou DST-IP 60.0.0.0/24.
DELLSONiC# show class-map MATCH_IP_OF_SERVER-1 Class-map MATCH_IP_OF_SERVER-1 match-type fields Description: "MATCH IP ADDRESS of SERVER FARM 1" Match: dst-ip 50.0.0.0/24 Referenced in flows: policy FORWARD_TO_SERVER at priority 100 DELLSONiC#
DELLSONiC# show class-map MATCH_IP_OF_SERVER-2 Class-map MATCH_IP_OF_SERVER-2 match-type fields Description: "MATCH IP ADDRESS of SERVER FARM 2" Match: dst-ip 60.0.0.0/24 Referenced in flows: policy FORWARD_TO_SERVER at priority 100 DELLSONiC#
Mapa zásad definuje, jaký je další segment směrování pro provoz klasifikovaný v mapě tříd.
DELLSONiC# show policy-map type forwarding Policy FORWARD_TO_SERVER Type forwarding Description: Flow MATCH_IP_OF_SERVER-2 at priority 100 Description: set ip nexthop 30.0.0.2 Flow MATCH_IP_OF_SERVER-1 at priority 100 Description: set ip nexthop 20.0.0.2 Applied to: Eth1/1 at Ingress
DELLSONiC# show policy-map FORWARD_TO_SERVER Policy FORWARD_TO_SERVER Type forwarding Description: Flow MATCH_IP_OF_SERVER-2 at priority 100 Description: set ip nexthop 30.0.0.2 Flow MATCH_IP_OF_SERVER-1 at priority 100 Description: set ip nexthop 20.0.0.2 Applied to: Eth1/1 at Ingress DELLSONiC#
Zásady služby definují, kde se má mapa zásad použít.
DELLSONiC# show service-policy summary Eth1/1 forwarding policy FORWARD_TO_SERVER at ingress CtrlPlane qos policy oob-qos-policy at ingress
DELLSONiC# show service-policy interface Eth 1/1 Eth1/1 Policy FORWARD_TO_SERVER type forwarding at ingress Description: Flow MATCH_IP_OF_SERVER-2 at priority 100 (Active) Description: set ip nexthop 30.0.0.2 (Selected) Packet matches: 616 frames 62832 bytes Flow MATCH_IP_OF_SERVER-1 at priority 100 (Active) Description: set ip nexthop 20.0.0.2 (Selected) Packet matches: 50 frames 5100 bytes DELLSONiC#
DELLSONiC# show service-policy policy-map FORWARD_TO_SERVER Eth1/1 Policy FORWARD_TO_SERVER type forwarding at ingress Description: Flow MATCH_IP_OF_SERVER-2 at priority 100 (Active) Description: set ip nexthop 30.0.0.2 (Selected) Packet matches: 616 frames 62832 bytes Flow MATCH_IP_OF_SERVER-1 at priority 100 (Active) Description: set ip nexthop 20.0.0.2 (Selected) Packet matches: 50 frames 5100 bytes DELLSONiC#
Co když je další skok dolů.
Vezměte v úvahu, že další segment směrování 20.0.0.2 je Down. Viz výstup níže. Můžeme vidět z show rozhraní service-policy Eth 1/1 a show service-policy-map FORWARD_TO_SERVER. Ve verzi 20.0.0.2 chybí "(selected)", zatímco ve verzi 30.0.0.2, která je k dispozici, chybí "(selected)".
Zde se čítače (shoda paketů a rámec) zvýší, ale paket zapadne, protože další skok není dostupný.
DELLSONiC# show service-policy policy-map FORWARD_TO_SERVER Eth1/1 Policy FORWARD_TO_SERVER type forwarding at ingress Description: Flow MATCH_IP_OF_SERVER-2 at priority 100 (Active) Description: set ip nexthop 30.0.0.2 (Selected) Packet matches: 616 frames 62832 bytes Flow MATCH_IP_OF_SERVER-1 at priority 100 (Active) Description: set ip nexthop 20.0.0.2 ====>Selected missing Packet matches: 50 frames 5100 bytes
30.0.0.2 je dosažitelná a vybraná. Verze 20.0.0.2 není dostupná, a proto chybí vybrána.
DELLSONiC# show service-policy interface Eth 1/1 Eth1/1 Policy FORWARD_TO_SERVER type forwarding at ingress Description: Flow MATCH_IP_OF_SERVER-2 at priority 100 (Active) Description: set ip nexthop 30.0.0.2 (Selected) Packet matches: 616 frames 62832 bytes Flow MATCH_IP_OF_SERVER-1 at priority 100 (Active) Description: set ip nexthop 20.0.0.2 ====>Selected missing Packet matches: 50 frames 5100 bytes