Dell Networking SONiC: Så här konfigurerar du principbaserad routning
摘要: I den här artikeln förklaras hur du konfigurerar policybaserad routning i Dell Networking SONiC med ett enkelt exempel.
说明
FörutsättningarVi använder standardgränssnittsnamn för att demonstrera begreppen. Se artikeln Dell Networking S-serien: Grundläggande gränssnittskonfiguration – SONiC 4.0 för mer information om gränssnittsnamngivning |
Index
- Vad är principbaserad routning?
- Steg för att konfigurera policybaserad routning.
- Konfigurationssyntax
- Exempelkonfiguration
Vad är principbaserad routning?
PBR (Policy-Based Routing) är en metod för att vidarebefordra paket genom att åsidosätta den information som är tillgänglig i IP-routningstabellen. Du kan implementera principer som selektivt gör att paket tar olika vägar. Traditionell IP-routning vidarebefordrar paket endast baserat på målets IP-adress i paketet. PBR kan konfigureras för att vidarebefordra paket baserat på andra kriterier, till exempel TCP/UDP-portnummer, källans IP-adress, DSCP-värde och TCP-flaggor. Dell SONiC använder flödesbaserade tjänstpolicyer för policybaserad routning. Vidarebefordringsprinciper består av klassmappningar som väljer paket och anger åtgärder som gör att ett paket vidarebefordras till ett förutbestämt nästa hopp eller gränssnitt, och kringgår den sökväg som bestäms av routnings- och vidarebefordringstabeller. Du kan definiera flera matchnings- och utgående gränssnitts- eller next-hop-värden i samma princip. Du kan tillämpa vidarebefordringsprinciper på växlad eller dirigerad trafik. Trafik kan dirigeras till samma VRF som används av ingressgränssnittet eller en annan VRF.
Använd principbaserad routning för att ge lika åtkomst, protokollkänslig routning, källkänslig routning, routning baserad på interaktiv jämförelse med batchtrafik och routning baserad på dedikerade länkar. Principbaserad routning är en mer flexibel mekanism för routning av paket än målroutning.
Steg för att konfigurera policybaserad routning
Dell SONiC implementerar PBR genom att tillhandahålla ett modulärt ramverk för att klassificera trafik och tillämpa vidarebefordringsåtgärder, som att ställa in IP nästa hopp, på vald trafik.
Så här konfigurerar du PBR:
- Klassificera (välj) trafik för principbaserad routning med hjälp av ACL:er eller fälten L2, L3 eller L4 i pakethuvuden.
- I en principkarta konfigurerar du de vidarebefordringsåtgärder som ska vidtas för varje klassificerat flöde.
- Tillämpa vidarebefordringsprincipen på ingressgränssnitt – globalt på alla växelgränssnitt, ett angivet gränssnitt, ett VLAN eller en portkanal

Obs! I Dell SONiC:
- Om en inkommande trafik inte hittar en matchning i någon av de instruktioner som tillämpas i en principmappning i ett gränssnitt/vlan/portchannel/globalt vidarebefordras den enligt standardroutningstabellen.
- En vidarebefordringsprincip stöds endast i ingressgränssnitt.
- Vidarebefordringsprinciper kan bara vidarebefordra vald trafik. De kan inte fånga, växla eller dirigera trafik till processorn.
- Vidarebefordringsprinciper med next-hop- och next-hop-group-åtgärder gäller endast för dirigerad L3-trafik.
- Vidarebefordringsprinciper som använder ett Ethernet- eller portkanalgränssnitt gäller endast för växlad L2-trafik.
- Vidarebefordringsprinciper gäller inte för trafik som är avsedd för processorn (mål-IP-adressen är samma som växeladressen) eller trafik som fångas till processorn.
- När du tillämpar en vidarebefordringsprincip globalt på alla gränssnitt måste next-hoppen finnas i standard-VRF om du inte anger en VRF som inte är standard med hjälp av kommandot set {ip | ipv6} next-hop ip-address vrf vrf-name i principkartan.
Konfigurationssyntax
Konfigurera klassmappning för att klassificera trafik
Vi kan klassificera (matcha) den inkommande trafiken genom att följa metoder i en klasskarta.
- Använda IPv4 eller IPv6 eller MAC-åtkomstlista
- Använda L2-L4-huvudfält
Kommandosyntax vid användning av åtkomstlista för att matcha trafiken i klasskartan.
Om vi konfigurerar åtkomstlistan så att den matchar trafiken i klasskartan måste du konfigurera åtkomstlistan.
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}
Kommandosyntax vid användning av L2-L4-huvudfält
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
Konfigurera principkarta
En PBR-vidarebefordringsprincip anger de vidarebefordringsåtgärder som ska vidtas för matchande trafik för principbaserad routning. En vidarebefordringsprincip stöder följande åtgärder:
- Ange nästa hopp – Dirigerar IPv4-trafik till ett IPv4-nästa hopp. dirigerar IPv6-trafik till nästa IPv6-hopp.
- Ange nästa hoppgrupp – Anger den grupp från vilken den bästa IPv4- eller IPv6-adressen för nästa hopp väljs.
- Ange gränssnitt – Vidarebefordra L2-trafik till ett angivet utgående gränssnitt.
- Ange gränssnitt null – Tar bort matchande trafik om null-gränssnittet har angetts eller om inget av de angivna next-hoppen kan nås eller om det angivna utgående gränssnittet inte är L2 och länkar upp.
- Ange replikeringsgrupp – Används för att replikera trafik till anycast-servrar som är utformade för att lösa hash-problemet enligt beskrivningen i RFC7690.
Kommandosyntax
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}
Konfigurera tjänstpolicy (tillämpa policykartan i gränssnittet)
I ett gränssnitt eller delgränssnitt:
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}
På VLAN-gränssnitt:
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# interface Vlan {vlan-id}
DELLSONiC(conf-if-Vlan)# service-policy type forwarding in {policy-map-name}
På portkanalgränssnitt,
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# interface PortChannel {portchannel-number}
DELLSONiC(conf-if-po)# service-policy type forwarding in {policy-map-name}
Globalt för alla switchgränssnitt
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}
Verifiera
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
Exempelkonfiguration
Låt oss titta på följande topologi.

Vi har ingen väg till 50.0.0.0/24 och 60.0.0.0/24 i DELLSONiC.
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
Mål:
Trafik till servergrupp 50.0.0.0/24 ska dirigeras till nästa hopp 20.0.0.2. Trafik till servergrupp 60.0.0.0/24 ska dirigeras till nästa hopp 30.0.0.2.
Konfiguration
Nu ska vi konfigurera klasskartan. Här klassificerar vi trafiken utifrån olika parametrar.
Klasskarta MATCH_IP_OF_SERVER-1 Matchningskriterierna är DST-IP 50.0.0.0/24.
I klasskartan MATCH_IP_OF_SERVER-2är matchningskriterierna 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#
Vi ska nu konfigurera principkartan.
Här definierar vi vad som är nästa åtgärd som ska vidtas om trafiken matchar ett villkor. I det här fallet, om trafiken matchar en specifik mål-IP-adress, vidarebefordrar du till en specifik IP-adress för nästa hopp.
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)#
Nu ska vi tillämpa policyn Policy map as service på gränssnittet 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
Kontrollera konfiguration
Låt oss kontrollera konfigurationen av klasskartan. Här kan vi se för MATCH_IP_OF_SERVER-1 Matchningskriterierna är DST-IP 50.0.0.0/24. I klasskartan MATCH_IP_OF_SERVER-2är matchningskriterierna 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#
Principkartan definierar vad som är nästa hopp för en trafik som klassificeras under en klasskarta.
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#
Tjänstprincipen definierar var principkartan ska tillämpas.
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#
Vad händer om nästa hopp är Ner.
Tänk på att nästa hopp 20.0.0.2 är nere. Se utdata nedan. Vi kan se från att visa servicepolicygränssnittet Eth 1/1 och visa service-policy policy-map FORWARD_TO_SERVER. 20.0.0.2 saknar "(selected)", medan 30.0.0.2 som kan nås har "(selected)".
Här ökar räknarna (paketmatchning och ram), men paketet tas bort eftersom nästa hopp inte kan nås.
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 kan nås och är vald. 20.0.0.2 kan inte nås och därför saknas den valda.
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