Dell Networking SONiC : Configuration d’un routage basé sur des règles
摘要: Cet article explique comment configurer le routage basé sur des règles dans Dell Networking SONiC à l’aide d’un exemple simple.
说明
Configuration requiseNous utilisons des noms d’interface standard pour démontrer les concepts. Voir l’article Dell Networking série S : Configuration de l’interface de base - SONiC 4.0 pour plus d’informations sur la dénomination des interfaces |
Index
- Qu’est-ce qu’un routage basé sur des règles ?
- Étapes de configuration du routage basé sur des règles.
- Syntaxe de configuration
- Exemple de configuration
Qu’est-ce qu’un routage basé sur des règles ?
Le routage basé sur des règles (PBR) fournit une méthode pour transférer les paquets en remplaçant les informations disponibles dans la table de routage IP. Vous pouvez implémenter des règles qui provoquent de manière sélective des chemins d’accès différents pour les paquets. Le routage IP traditionnel transfère les paquets uniquement en fonction de l’adresse IP de destination dans le paquet. PBR peut être configuré pour transférer des paquets en fonction d’autres critères, tels que les numéros de port TCP/UDP, l’adresse IP source, la valeur DSCP et les balises TCP. Dell SONiC utilise des règles de service basées sur le flux pour le routage basé sur des règles. Les politiques de transfert se composent de cartes de classe qui sélectionnent des paquets et définissent des actions qui entraînent le transfert d’un paquet vers un prochain saut ou une interface prédéterminée, en contournant le chemin déterminé par les tables de routage et de transfert. Vous pouvez définir plusieurs valeurs d’interface de correspondance et de sortie ou de tronçon suivant dans la même règle. Vous pouvez appliquer des stratégies de transfert au trafic commuté ou routé. Le trafic peut être acheminé vers le même VRF que celui utilisé par l’interface d’entrée ou vers un VRF différent.
Utilisez le routage basé sur des règles pour fournir un accès égal, un routage sensible au protocole, un routage sensible à la source, un routage basé sur une comparaison interactive avec le trafic batch et un routage basé sur des liens dédiés. Le routage basé sur des règles est un mécanisme plus flexible pour l’acheminement des paquets que le routage de destination.
Étapes de configuration du routage basé sur des règles
Dell SONiC met en œuvre le PBR en fournissant un cadre modulaire pour classer le trafic et appliquer des actions de transfert, telles que la définition du prochain hop IP sur le trafic sélectionné.
Pour configurer PBR :
- Classez (sélectionnez) le trafic pour le routage basé sur des règles à l’aide des ACL ou des champs L2, L3 ou L4 dans les en-têtes de paquets.
- Dans une carte de règles, configurez les actions de transfert à effectuer sur chaque flux classifié.
- Appliquer la politique de transfert sur les interfaces d’entrée, globalement sur toutes les interfaces de commutateur, une interface spécifiée, un VLAN ou un canal de port

Remarque : Dans Dell SONiC :
- Si un trafic entrant ne trouve pas de correspondance dans l’une des instructions appliquées dans une carte de stratégie dans une interface/vlan/portchannel/globalement, il sera transféré conformément à la table de routage standard.
- Une règle de transfert est prise en charge uniquement sur les interfaces d’entrée.
- Les stratégies de transfert ne peuvent transférer que le trafic sélectionné ; ils ne peuvent pas intercepter, commuter ou acheminer le trafic vers le processeur.
- Les politiques de transfert avec des actions next-hop et next-hop-group s’appliquent uniquement au trafic L3 acheminé.
- Les règles de transfert qui utilisent une interface de sortie Ethernet ou de canal de port s’appliquent uniquement au trafic L2 commuté.
- Les stratégies de transfert ne s’appliquent pas au trafic destiné au processeur (l’adresse IP de destination est identique à l’adresse du commutateur) ou au trafic bloqué sur le processeur.
- Lorsque vous appliquez globalement une règle de transfert sur toutes les interfaces, les tronçons suivants doivent se trouver dans le VRF par défaut, sauf si vous définissez un VRF autre que celui par défaut à l’aide de la commande « set {ip | ipv6} next-hop ip-address vrf vrf-name » dans la carte des règles.
Syntaxe de configuration
Configurer la carte de classe pour classer le trafic
Nous pouvons classer (correspondre) le trafic entrant en suivant des méthodes dans une carte de classe.
- Utilisation d’une liste d’accès IPv4, IPv6 ou MAC
- Utilisation des champs d’en-tête L2-L4
Syntaxe de la commande lors de l’utilisation de la liste d’accès pour correspondre au trafic dans la carte de classe.
Si nous configurons la liste d’accès pour qu’elle corresponde au trafic de la carte de classe, assurez-vous de configurer la liste d’accès.
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 de commande lors de l’utilisation des champs d’en-tête 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
Configurer la carte des règles
Une règle de transfert PBR spécifie les actions de transfert à effectuer sur le trafic correspondant pour le routage basé sur des règles. Une règle de transfert prend en charge les actions suivantes :
- Définir le tronçon suivant : achemine le trafic IPv4 vers un tronçon suivant IPv4 ; achemine le trafic IPv6 vers un next-hop IPv6.
- Set next-hop group : spécifie le groupe dans lequel la meilleure adresse IPv4 ou IPv6 next-hop est choisie.
- Set interface : transfère le trafic L2 vers une interface de sortie spécifiée.
- Set interface null : supprime le trafic correspondant si l’interface nulle est définie ou si aucun des hops suivants spécifiés n’est accessible ou si l’interface de sortie spécifiée n’est pas L2 et la liaison.
- Définir un groupe de réplication : utilisé pour répliquer le trafic vers les serveurs Anycast, conçu pour résoudre le problème de hachage, comme décrit dans RFC7690.
Syntaxe de la commande
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}
Configurer la politique de service (Appliquer la carte de stratégie dans l’interface)
Sur une interface ou sous-interface :
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}
Sur les interfaces 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}
Sur les interfaces du canal de port,
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# interface PortChannel {portchannel-number}
DELLSONiC(conf-if-po)# service-policy type forwarding in {policy-map-name}
Globalement sur toutes les interfaces de commutateur
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}
Vérifier
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
Exemple de configuration
Considérons la topologie suivante.

Nous n’avons pas de route vers les versions 50.0.0.0/24 et 60.0.0.0/24 dans 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
Mission :
Le trafic vers la batterie de serveurs 50.0.0.0/24 doit être acheminé vers le prochain hop 20.0.0.2. Le trafic vers la batterie de serveurs 60.0.0.0/24 doit être acheminé vers le prochain hop 30.0.0.2.
Configuration
Configurons la carte des classes. Ici, nous classons le trafic en fonction de différents paramètres.
Carte des classes MATCH_IP_OF_SERVER-1 Le critère de correspondance est DST-IP 50.0.0.0/24.
Dans la carte de la classe MATCH_IP_OF_SERVER-2, les critères de correspondance sont 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#
Configurons Policy Map.
Nous définissons ici la prochaine action à effectuer si le trafic correspond à une condition. Dans ce cas, si le trafic correspond à une adresse IP de destination spécifique, transférez le trafic vers une adresse IP de saut suivante spécifique.
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)#
Appliquons la carte de stratégie en tant que politique de service à l’interface 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
Vérification de la configuration
Vérifions la configuration de la carte de classe. Ici, nous pouvons voir pour MATCH_IP_OF_SERVER-1 Les critères de correspondance sont DST-IP 50.0.0.0/24. Dans la carte de la classe MATCH_IP_OF_SERVER-2, les critères de correspondance sont 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#
La carte de stratégie définit le tronçon suivant pour un trafic classé sous une carte de classes.
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#
La politique de service définit l’endroit où la carte de stratégie doit être appliquée.
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#
Que se passe-t-il si le tronçon suivant est en panne ?
Considérons que le prochain hop 20.0.0.2 est en panne. Voir la sortie ci-dessous. Nous pouvons voir à partir de show l’interface service-policy Eth 1/1 et show service-policy policy-map FORWARD_TO_SERVER. Dans la version 20.0.0.2, il manque « (selected) », tandis que dans la version 30.0.0.2, qui est accessible, il manque « (selected) ».
Ici, les compteurs (paquet, correspondance et trame) s’incrémentent, mais le paquet est abandonné car le prochain saut n’est pas accessible.
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
La version 30.0.0.2 est accessible et sélectionnée. 20.0.0.2 n’est pas accessible et la sélection est donc manquante.
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