Dell Networking SONiC. Как настроить маршрутизацию на основе политик
摘要: В этой статье на простом примере объясняется, как настроить маршрутизацию на основе политик в Dell Networking SONiC.
说明
Предварительные условияДля демонстрации концепций мы используем стандартные имена интерфейсов. См . статью Dell Networking серии S. Basic Interface Configuration — SONiC 4.0 для получения дополнительной информации об именовании интерфейсов |
Указатель
- Что такое маршрутизация на основе политик?
- Действия по настройке маршрутизации на основе политик.
- Синтаксис конфигурации
- Пример конфигурации
Что такое маршрутизация на основе политик?
Маршрутизация на основе политик (PBR) предоставляет метод пересылки пакетов путем переопределения информации, доступной в таблице маршрутизации IP. Можно реализовать политики, которые выборочно заставляют пакеты выбирать разные пути. Традиционная IP-маршрутизация пересылает пакеты только на основе IP-адреса назначения в пакете. PBR может быть настроен на пересылку пакетов на основе других критериев, таких как номера портов TCP/UDP, IP-адрес источника, значение DSCP и флаги TCP. Dell SONiC использует политики обслуживания на основе потоков для маршрутизации на основе политик. Политики переадресации состоят из карт классов, которые выбирают пакеты и задают действия, которые приводят к пересылке пакета на предварительно определенный следующий переход или интерфейс в обход пути, определенного таблицами маршрутизации и переадресации. В одной политике можно определить несколько значений интерфейса сопоставления и исходящего трафика или следующего перехода. К коммутируемому или маршрутизируемому трафику можно применять политики пересылки. Трафик может направляться в тот же VRF, который используется интерфейсом входящего трафика, или в другой VRF.
Используйте маршрутизацию на основе политик для обеспечения равного доступа, маршрутизацию с учетом протокола, маршрутизацию с учетом источника, маршрутизацию на основе интерактивного сравнения с пакетным трафиком и маршрутизацию на основе выделенных каналов. Маршрутизация на основе политик является более гибким механизмом для маршрутизации пакетов, чем маршрутизация назначения.
Действия по настройке маршрутизации на основе политик
Dell SONiC реализует PBR, предоставляя модульную платформу для классификации трафика и применения действий переадресации, таких как установка IP-адреса следующего перехода, для выбранного трафика.
Чтобы настроить PBR, выполните следующие действия.
- Классифицируйте (выбирайте) трафик для маршрутизации на основе политик с помощью списков контроля доступа или полей L2, L3 или L4 в заголовках пакетов.
- На схеме политик настройте действия пересылки для каждого классифицированного потока.
- Применить политику переадресации к входящим интерфейсам глобально ко всем интерфейсам коммутатора, указанному интерфейсу, сети VLAN или агрегированному каналу

ПРИМЕЧАНИЕ. В Dell SONiC:
- Если входящий трафик не находит совпадения ни в одной из инструкций, применяемых в сопоставлении политик в interface/vlan/portchannel/global, он будет перенаправлен в соответствии со стандартной таблицей маршрутизации.
- Политика переадресации поддерживается только на интерфейсах входящего трафика.
- Политики переадресации могут перенаправлять только выбранный трафик; они не могут улавливать, переключать или направлять трафик на ЦП.
- Политики переадресации с действиями следующего перехода и следующей группы перехода применяются только к маршрутизируемому трафику L3.
- Политики переадресации, использующие исходящий интерфейс Ethernet или агрегированного канала, применяются только к коммутируемому трафику L2.
- Политики переадресации не применяются к трафику, предназначенному для ЦП (IP-адрес назначения совпадает с адресом коммутатора), или к трафику, захваченному ЦП.
- Когда вы применяете политику перенаправления глобально на всех интерфейсах, следующие переходы должны находиться в VRF по умолчанию, если только вы не зададите VRF не по умолчанию с помощью команды set {ip | ipv6} next-hop ip-address vrf vrf-name на карте политик.
Синтаксис конфигурации
Настройка карты классов для классификации трафика
Мы можем классифицировать (сопоставлять) входящий трафик, следуя методам в карте классов.
- Использование списка доступа по IPv4, IPv6 или MAC-адресу
- Использование полей заголовков L2–L4
Синтаксис команды при использовании списка доступа для сопоставления трафика в сопоставлении классов.
Если мы настраиваем список доступа в соответствии с трафиком на карте классов, обязательно настройте список доступа.
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}
Синтаксис команды при использовании полей заголовков 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
Настройка карты политик
Политика пересылки PBR определяет действия по пересылке, которые необходимо предпринять при сопоставлении трафика для маршрутизации на основе политик. Политика переадресации поддерживает следующие действия:
- Установить следующий прыжок — маршрутизирует трафик IPv4 на следующий прыжок IPv4; Направляет трафик IPv6 в следующий транзитный узел IPv6.
- Задать группу следующего перехода — указывает группу, из которой выбирается наилучший IPv4- или IPv6-адрес для следующего перехода.
- Настройка интерфейса — перенаправление трафика L2 на указанный исходящий интерфейс.
- Set interface null — отбрасывает соответствующий трафик, если задан интерфейс null, или если ни один из указанных следующих переходов не доступен, или если указанный исходящий интерфейс не является L2 и соединением.
- Задать группу репликации — используется для репликации трафика на серверы произвольной адресации с целью устранения проблемы хеширования, как описано в разделе RFC7690.
Синтаксис команд
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}
Настройка политики обслуживания (применение карты политик в интерфейсе)
В интерфейсе или субинтерфейсе:
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}
На интерфейсах 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}
На интерфейсах канала порта,
admin@DELLSONiC:~$ sonic-cli
DELLSONiC# configure
DELLSONiC(config)# interface PortChannel {portchannel-number}
DELLSONiC(conf-if-po)# service-policy type forwarding in {policy-map-name}
Глобально на всех интерфейсах коммутатора
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}
Проверка
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
Пример конфигурации
Рассмотрим следующую топологию.

У нас нет пути к 50.0.0.0/24 и 60.0.0.0/24 в 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
Цель.
Трафик фермы серверов 50.0.0.0/24 необходимо направить на следующий переход 20.0.0.2. Трафик фермы серверов 60.0.0.0/24 должен быть направлен на следующий переход 30.0.0.2.
Настройка
Давайте настроим карту классов. Здесь мы классифицируем трафик по различным параметрам.
Карта классов MATCH_IP_OF_SERVER-1 Критерий соответствия: DST-IP 50.0.0.0/24.
На карте классов MATCH_IP_OF_SERVER-2, критерии соответствия: 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#
Давайте настроим карту политик.
Здесь мы определяем, какое следующее действие следует предпринять, если трафик соответствует условию. В этом случае, если трафик соответствует определенному IP-адресу назначения, выполняется переадресация на определенный IP-адрес следующего перехода.
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)#
Применим карту политик в качестве политики службы к интерфейсу 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
Проверка конфигурации
Проверим конфигурацию карты классов. Здесь мы можем увидеть для MATCH_IP_OF_SERVER-1 Критерии соответствия: DST-IP 50.0.0.0/24. На карте классов MATCH_IP_OF_SERVER-2, критерии соответствия: 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#
Карта политик определяет, каким будет следующий переход для трафика, классифицированного в соответствии с картой классов.
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#
Политика службы определяет, где должна применяться карта политик.
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#
Что делать, если следующий прыжок будет Down?
Предположим, что следующий прыжок 20.0.0.2 не работает. См. вывод ниже. Можно просмотреть интерфейс «сервис-политика» Eth 1/1 и показать карту политик-политики службы-политики FORWARD_TO_SERVER. В 20.0.0.2 отсутствует «(selected)», а в 30.0.0.2, который доступен, есть «(selected)».
Здесь счетчики (совпадение пакетов и кадр) будут увеличиваться, однако пакет будет отбрасываться, так как следующий переход будет недоступен.
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. 20.0.0.2 недоступен, поэтому выбранное значение отсутствует.
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