Dell Networking SONiC: Cómo configurar el enrutamiento basado en políticas
摘要: En este artículo, se explica cómo configurar el enrutamiento basado en políticas en Dell Networking SONiC con un ejemplo simple.
说明
Requisitos previosUtilizamos nomenclatura de interfaz estándar para demostrar los conceptos. Consulte el artículo Serie S de Dell Networking: Configuración básica de la interfaz: SONiC 4.0 para obtener más información sobre la asignación de nombres de interfaces |
Índice
- ¿Qué es el enrutamiento basado en políticas?
- Pasos para configurar el enrutamiento basado en políticas.
- Sintaxis de configuración
- Configuración de muestra
¿Qué es el enrutamiento basado en políticas?
El enrutamiento basado en políticas (PBR) proporciona un método para reenviar paquetes reemplazando la información disponible en la tabla de enrutamiento IP. Puede implementar políticas que selectivamente provoquen que los paquetes tomen rutas diferentes. El enrutamiento IP tradicional reenvía los paquetes solo en función de la dirección IP de destino en el paquete. PBR se puede configurar para reenviar paquetes en función de otros criterios, como los números de puerto TCP/UDP, la dirección IP de origen, el valor DSCP y las marcas TCP. Dell SONiC utiliza políticas de servicio basadas en el flujo para el enrutamiento basado en políticas. Las políticas de reenvío constan de mapas de clases que seleccionan paquetes y establecen acciones que hacen que un paquete se reenvíe a un próximo salto o interfaz predeterminados, omitiendo la ruta determinada por las tablas de enrutamiento y reenvío. Puede definir varias interfaces de coincidencia y salida o valores de próximo salto en la misma política. Puede aplicar políticas de reenvío al tráfico conmutado o enrutado. El tráfico se puede enrutar al mismo VRF utilizado por la interfaz de entrada o a un VRF diferente.
Utilice el enrutamiento basado en políticas para proporcionar igual acceso, enrutamiento sensible a protocolos, enrutamiento sensible al origen, enrutamiento basado en la comparación interactiva con el tráfico por lotes y enrutamiento basado en enlaces dedicados. El enrutamiento basado en políticas es un mecanismo más flexible para enrutar paquetes que el enrutamiento de destino.
Pasos para configurar el enrutamiento basado en políticas
Dell SONiC implementa PBR mediante una infraestructura modular para clasificar el tráfico y aplicar acciones de reenvío, como establecer el próximo salto de IP, en el tráfico seleccionado.
Para configurar el PBR:
- Clasifique (seleccione) el tráfico para el enrutamiento basado en políticas mediante ACL o los campos L2, L3 o L4 en los encabezados de paquetes.
- En un mapa de políticas, configure las acciones de reenvío que se llevarán a cabo en cada flujo clasificado.
- Aplique la política de reenvío en las interfaces de entrada: globalmente en todas las interfaces de switch, una interfaz especificada, una VLAN o un canal de puerto

NOTA: En Dell SONiC:
- Si un tráfico entrante no encuentra una coincidencia en ninguna de las instrucciones aplicadas en un mapa de políticas en una interfaz/VLAN/portchannel/globalmente, se reenviará según la tabla de rutas estándar.
- Una política de reenvío solo se admite en interfaces de entrada.
- Las políticas de reenvío solo pueden reenviar el tráfico seleccionado; no pueden capturar, cambiar ni enrutar el tráfico a la CPU.
- Las políticas de reenvío con acciones de próximo salto y grupo de próximo salto se aplican solo en el tráfico L3 enrutado.
- Las políticas de reenvío que utilizan una interfaz de salida de canal de puerto o Ethernet se aplican solo en el tráfico L2 conmutado.
- Las políticas de reenvío no se aplican al tráfico destinado a la CPU (la dirección IP de destino es la misma que la dirección del switch) ni al tráfico atrapado en la CPU.
- Cuando aplica una política de reenvío globalmente en todas las interfaces, los próximos saltos deben estar en el VRF predeterminado, a menos que configure un VRF no predeterminado mediante el comando set {ip | ipv6} next-hop ip-address vrf vrf-name en el mapa de políticas.
Sintaxis de configuración
Configurar el mapa de clases para clasificar el tráfico
Podemos clasificar (coincidir) el tráfico entrante siguiendo los métodos de un mapa de clases.
- Uso de IPv4, IPv6 o MAC Lista de acceso
- Uso de campos de encabezado L2-L4
Sintaxis del comando durante el uso de la lista de acceso para que coincida con el tráfico en el mapa de clase.
Si estamos configurando la lista de acceso para que coincida con el tráfico en el mapa de clase, asegúrese de configurar la lista de acceso.
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}
Sintaxis del comando durante el uso de campos de encabezado 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
Configurar el mapa de políticas
Una política de reenvío PBR especifica las acciones de reenvío que se deben realizar en el tráfico coincidente para el enrutamiento basado en políticas. Una política de reenvío admite las siguientes acciones:
- Establecer próximo salto: enruta el tráfico IPv4 a un próximo salto IPv4; enruta el tráfico IPv6 a un próximo salto IPv6.
- Set next-hop group: especifica el grupo desde el cual se elige la mejor dirección IPv4 o IPv6 del próximo salto.
- Set interface: reenvía el tráfico L2 a una interfaz de salida especificada.
- Set interface null: descarta el tráfico coincidente si la interfaz nula está configurada, si no se puede acceder a ninguno de los próximos saltos especificados o si la interfaz de egreso especificada no es L2 y no está activa.
- Set replication group: se utiliza para replicar el tráfico a servidores anycast, diseñado para resolver el problema de hash como se describe en RFC7690.
Sintaxis de comandos
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}
Configurar la política de servicio (aplicar el mapa de políticas en la interfaz)
En una interfaz o subinterfaz:
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}
En 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}
En las interfaces de canal de puerto,
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# interface PortChannel {portchannel-number}
DELLSONiC(conf-if-po)# service-policy type forwarding in {policy-map-name}
Globalmente en todas las interfaces de switch
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}
Verificar
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
Configuración de muestra
Consideremos la siguiente topología.

No tenemos una ruta a 50.0.0.0/24 y 60.0.0.0/24 en 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
Objetivo:
El tráfico a la granja de servidores 50.0.0.0/24 se enrutará al siguiente salto 20.0.0.2. El tráfico a la granja de servidores 60.0.0.0/24 se enrutará al siguiente salto 30.0.0.2.
Configuración
Configuremos el mapa de clase. Aquí clasificamos el tráfico en función de varios parámetros.
Mapa de clases MATCH_IP_OF_SERVER-1 El criterio de coincidencia es DST-IP 50.0.0.0/24.
En el mapa de clases MATCH_IP_OF_SERVER-2, los criterios de coincidencia son 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#
Configuremos el mapa de políticas.
Aquí definimos cuál es la siguiente acción que se debe realizar si el tráfico coincide con una condición. En este caso, si el tráfico coincide con una dirección IP de destino específica, reenvíe a una IP de próximo salto específica.
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)#
Apliquemos Policy map como política de servicio a la interfaz 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
Verificar configuración
Comprobemos la configuración del mapa de clase. Aquí podemos ver MATCH_IP_OF_SERVER-1 Los criterios de coincidencia son DST-IP 50.0.0.0/24. En el mapa de clases MATCH_IP_OF_SERVER-2, los criterios de coincidencia son 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#
El mapa de políticas define cuál es el siguiente salto para un tráfico clasificado en un mapa de clase.
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 política de servicio define dónde se aplicará el mapa de políticas.
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#
¿Qué sucede si el siguiente salto es Down?
Considere que el próximo salto 20.0.0.2 está inactivo. Consulte el resultado que aparece a continuación. Podemos ver en show the service-policy interface Eth 1/1 y show service-policy policy-map FORWARD_TO_SERVER. Falta "(seleccionado)" en 20.0.0.2, mientras que en 30.0.0.2, al que se puede acceder, aparece "(seleccionado)".
Aquí, los contadores (coincidencia de paquetes y trama) aumentarán; sin embargo, el paquete disminuirá a medida que no se pueda acceder al siguiente salto.
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 está accesible y seleccionado. No se puede acceder a 20.0.0.2 y, por lo tanto, falta la opción seleccionada.
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