Dell Networking SONiC: Como configurar o roteamento baseado em política
摘要: Este artigo explica como configurar o roteamento baseado em políticas no Dell Networking SONiC com um exemplo simples.
说明
Pré-requisitosEstamos usando nomenclaturas de interface padrão para demonstrar os conceitos. Consulte o artigo Dell Networking série S: Configuração básica da interface — SONiC 4.0 para obter mais informações sobre nomenclatura de interface |
Índice
- O que é roteamento baseado em política?
- Etapas para configurar o Roteamento Baseado em Política.
- Sintaxe de configuração
- Exemplo de configuração
O que é roteamento baseado em política?
O roteamento baseado em política (PBR) fornece um método para encaminhar pacotes, substituindo as informações disponíveis na tabela de roteamento IP. Você pode implementar políticas que seletivamente fazem com que os pacotes tomem caminhos diferentes. O roteamento IP tradicional encaminha pacotes com base apenas no endereço IP de destino no pacote. PBR pode ser configurado para encaminhar pacotes com base em outros critérios, como números de porta TCP/UDP, endereço IP de origem, valor DSCP e indicadores TCP. O Dell SONiC usa políticas de serviço baseadas em fluxo para roteamento baseado em políticas. As políticas de encaminhamento consistem em mapas de classes que selecionam pacotes e definem ações que fazem com que um pacote seja encaminhado para um próximo salto ou interface predeterminado, ignorando o caminho determinado pelas tabelas de roteamento e encaminhamento. Você pode definir vários valores de interface de correspondência e saída ou de próximo salto na mesma política. Você pode aplicar políticas de encaminhamento ao tráfego comutado ou roteado. O tráfego pode ser roteado para o mesmo VRF usado pela interface de entrada ou para um VRF diferente.
Use roteamento baseado em política para fornecer acesso igual, roteamento sensível a protocolo, roteamento sensível à origem, roteamento baseado em comparação interativa com tráfego em lote e roteamento baseado em links dedicados. O roteamento baseado em política é um mecanismo mais flexível para roteamento de pacotes do que o roteamento de destino.
Etapas para configurar o Roteamento Baseado em Políticas
O Dell SONiC implementa PBR fornecendo uma estrutura modular para classificar o tráfego e aplicar ações de encaminhamento, como definir o próximo salto de IP, no tráfego selecionado.
Para configurar o PBR:
- Classificar (selecionar) o tráfego para roteamento baseado em política usando ACLs ou os campos L2, L3 ou L4 nos cabeçalhos de pacote.
- Em um mapa de políticas, configure as ações de encaminhamento a serem executadas em cada fluxo classificado.
- Aplicar a política de encaminhamento em interfaces de entrada – globalmente em todas as interfaces de switch, uma interface especificada, uma VLAN ou um port channel

Nota: No Dell SONiC:
- Se um tráfego de entrada não encontrar uma correspondência em nenhuma das declarações aplicadas em um mapa de políticas em uma interface/vlan/portchannel/global, ele será encaminhado de acordo com a tabela de rota padrão.
- Uma política de encaminhamento é compatível somente em interfaces de entrada.
- As políticas de encaminhamento só podem encaminhar o tráfego selecionado; eles não podem interceptar, alternar ou rotear o tráfego para a CPU.
- As políticas de encaminhamento com ações de grupo de próximo salto e próximo salto se aplicam somente ao tráfego de L3 roteado.
- As políticas de encaminhamento que usam uma interface de saída Ethernet ou de port channel aplicam-se somente ao tráfego de L2 comutado.
- As políticas de encaminhamento não se aplicam ao tráfego destinado à CPU (o endereço IP de destino é o mesmo que o endereço do switch) ou ao tráfego preso à CPU.
- Quando você aplica uma política de encaminhamento globalmente em todas as interfaces, os próximos saltos devem estar no VRF padrão, a menos que você defina um VRF não padrão usando o comando set {ip | ipv6} next-hop ip-address vrf vrf-name no mapa de políticas.
Sintaxe de configuração
Configurar o mapa de classe para classificar o tráfego
Podemos classificar (corresponder) o tráfego de entrada seguindo métodos em um mapa de classes.
- Usando a lista de acesso IPv4, IPv6 ou MAC
- Usando campos de cabeçalho L2-L4
Sintaxe do comando ao usar a lista de acesso para corresponder ao tráfego no mapa de classes.
Se estivermos configurando a lista de acesso para corresponder ao tráfego no mapa de classes, certifique-se de configurar a lista de acesso.
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}
Sintaxe do comando ao usar campos de cabeçalho 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 o mapa de políticas
Uma política de encaminhamento PBR especifica as ações de encaminhamento a serem realizadas em relação ao tráfego correspondente para roteamento baseado em política. Uma política de encaminhamento é compatível com as seguintes ações:
- Set next hop - Roteia o tráfego IPv4 para um próximo salto IPv4; roteia o tráfego IPv6 para um próximo salto IPv6.
- Set next-hop group - Especifica o grupo do qual é escolhido o melhor endereço IPv4 ou IPv6 do próximo salto.
- Set interface – encaminha o tráfego L2 para uma interface de saída especificada.
- Set interface null - Descarta o tráfego correspondente se a interface nula estiver definida ou se nenhum dos próximos saltos especificados estiver acessível ou se a interface de saída especificada não for L2 e se conectar.
- Set replication group - Usado para replicar o tráfego para servidores anycast, projetado para resolver o problema de hash conforme descrito em RFC7690.
Sintaxe de comando
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 política de serviço (aplicar mapa de política na interface)
Em uma interface ou subinterface:
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}
Em 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}
Nas interfaces de port channel,
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 em todas as 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}
Verificação
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
Exemplo de configuração
Vamos considerar a topologia a seguir.

Não temos uma rota para 50.0.0.0/24 e 60.0.0.0/24 no 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:
O tráfego para o farm de servidores 50.0.0.0/24 deve ser roteado para o próximo hop 20.0.0.2. O tráfego para o farm de servidores 60.0.0.0/24 deve ser roteado para o próximo hop 30.0.0.2.
Configuração
Vamos configurar o mapa de classes. Aqui classificamos o tráfego com base em vários parâmetros.
Mapa da classe MATCH_IP_OF_SERVER-1 O critério de correspondência é DST-IP 50.0.0.0/24.
No mapa de classe MATCH_IP_OF_SERVER-2, os critérios de correspondência são 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#
Vamos configurar o mapa de políticas.
Aqui definimos qual é a próxima ação a ser tomada se o tráfego corresponder a uma condição. Nesse caso, se o tráfego corresponder a um endereço IP de destino específico, encaminhe para um IP específico do próximo salto.
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)#
Vamos aplicar o mapa de política como política de serviço à 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
Verificação da configuração
Vamos verificar a configuração do mapa de classes. Aqui podemos ver por MATCH_IP_OF_SERVER-1 Os critérios de correspondência são DST-IP 50.0.0.0/24. No mapa de classe MATCH_IP_OF_SERVER-2, os critérios de correspondência são 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#
O mapa de políticas define qual é o próximo salto para um tráfego classificado em um mapa 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#
A política de serviço define onde o mapa de políticas deve ser aplicado.
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#
E se o próximo salto estiver inativo?
Considere que o próximo salto 20.0.0.2 está inativo. Veja a saída abaixo. Podemos ver em show the service-policy interface Eth 1/1 e show service-policy policy-map FORWARD_TO_SERVER. O 20.0.0.2 não tem "(selecionado)", enquanto o 30.0.0.2, que está acessível, tem "(selecionado)".
Aqui, os contadores (correspondência de pacote e quadro) aumentarão, no entanto, o pacote será solto, pois o próximo salto não está acessível.
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á acessível e selecionado. A versão 20.0.0.2 não pode ser acessada e, portanto, a opção selecionada está ausente.
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