Dell Networking SONiC: Як налаштувати маршрутизацію на основі політик
摘要: У цій статті пояснюється, як налаштувати маршрутизацію на основі політик у Dell Networking SONiC на простому прикладі.
说明
ПередумовиМи використовуємо стандартні імена інтерфейсів для демонстрації концепцій. Дивіться статтю Dell Networking S-Series: Базова конфігурація інтерфейсу - SONiC 4.0 для отримання додаткової інформації про іменування інтерфейсів |
Індекс
- Що таке маршрутизація на основі правил?
- Кроки для налаштування маршрутизації на основі політик.
- Синтаксис конфігурації
- Приклад конфігурації
Що таке маршрутизація на основі правил?
Маршрутизація на основі політик (PBR) надає метод пересилання пакетів, перевизначаючи інформацію, доступну в таблиці маршрутизації IP. Ви можете впровадити політики, які вибірково змушують пакети йти різними шляхами. Традиційна IP-маршрутизація пересилає пакети лише на основі IP-адреси призначення в пакеті. PBR можна налаштувати для пересилання пакетів на основі інших критеріїв, таких як номери портів TCP/UDP, IP-адреса джерела, значення DSCP і прапорці TCP. Dell SONiC використовує сервісні політики на основі потоків для маршрутизації на основі політик. Політики пересилання складаються з карт класів, які вибирають пакети і встановлюють дії, які призводять до пересилання пакета в заздалегідь визначений наступний перехід або інтерфейс, минаючи шлях, визначений таблицями маршрутизації та пересилання. Ви можете визначити декілька значень інтерфейсу відповідності та виходу або наступного переходу в одній політиці. Ви можете застосувати правила переадресації до комутованого або маршрутизованого трафіку. Трафік може бути спрямований на ту саму VRF, яка використовується інтерфейсом проникнення, або на іншу VRF.
Використовуйте маршрутизацію на основі політик, щоб забезпечити рівний доступ, маршрутизацію з урахуванням протоколу, маршрутизацію з урахуванням джерела, маршрутизацію на основі інтерактивного порівняння з пакетним трафіком і маршрутизацію на основі виділених посилань. Маршрутизація на основі політик є більш гнучким механізмом маршрутизації пакетів, ніж маршрутизація призначення.
Кроки для налаштування маршрутизації на основі політик
Dell SONiC реалізує PBR, надаючи модульну структуру для класифікації трафіку та застосування дій переадресації, таких як встановлення IP-адреси наступного переходу, для вибраного трафіку.
Щоб налаштувати PBR:
- Класифікуйте (вибирайте) трафік для маршрутизації на основі політик за допомогою списків керування доступом (ACL) або полів L2, L3 або L4 у заголовках пакетів.
- На карті правил налаштуйте дії пересилання для кожного класифікованого потоку.
- Застосовуйте політику переадресації до інтерфейсів вхідних даних — глобально для всіх інтерфейсів комутаторів, визначеного інтерфейсу, VLAN або каналу портів

ПРИМІТКА: У Dell SONiC:
- Якщо вхідний трафік не знаходить збігу в жодному з тверджень, застосованих на карті правил в інтерфейсі/vlan/portchannel/глобально, він переспрямовується відповідно до стандартної таблиці маршрутів.
- Політика пересилання підтримується лише на інтерфейсах вхідних даних.
- Правила переадресації можуть пересилати лише вибраний трафік. вони не можуть перехоплювати, перемикати або направляти трафік до центрального процесора.
- Правила переадресації з діями «наступний перехід» і «наступна група переходів» застосовуються лише до маршрутизованого трафіку L3.
- Політики переадресації, які використовують інтерфейс виходу з каналу Ethernet або порту, застосовуються лише до комутованого трафіку L2.
- Політики переадресації не застосовуються до трафіку, призначеного для центрального процесора (IP-адреса призначення збігається з адресою комутатора) або трафіку, який перехоплюється на центральний процесор.
- Якщо ви застосовуєте політику пересилання глобально для всіх інтерфейсів, наступні переходи мають бути у типовій VRF, якщо ви не встановите нетиповий VRF за допомогою команди set {ip | ipv6} next-hop ip-address vrf vrf-name на карті правил.
Синтаксис конфігурації
Налаштуйте карту класів для класифікації трафіку
Ми можемо класифікувати (зіставити) вхідний трафік, дотримуючись методів у карті класів.
- Використання IPv4 або IPv6 або списку доступу до MAC
- Використання полів заголовка L2-L4
Синтаксис команд під час використання списку Access для узгодження трафіку на карті класів.
Якщо ми налаштовуємо список Access так, щоб він відповідав трафіку на карті Class, переконайтеся, що ви налаштували список доступу.
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 визначає, які дії з пересилання мають бути виконані для узгодження трафіку для маршрутизації на основі правил. Політика пересилання підтримується наведеними нижче діями.
- Set next hop - спрямовує трафік IPv4 на наступний перехід IPv4; спрямовує трафік IPv6 до наступного переходу IPv6.
- Set next-hop group - Визначає групу, з якої буде вибрано найкращу адресу IPv4 або IPv6 наступного переходу.
- Встановити інтерфейс - переспрямовувати трафік L2 на вказаний інтерфейс виходу.
- Встановити інтерфейс null - Скидає відповідний трафік, якщо встановлено нульовий інтерфейс, або якщо жоден із вказаних переходів не є доступним, або якщо вказаний інтерфейс виходу не є L2 і з'єднується.
- Встановити групу реплікації – використовується для реплікації трафіку на сервери anycast, призначений для вирішення проблеми хешування, як описано в 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)#
Застосуємо карту Policy як сервісну політику до інтерфейсу 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#
Що робити, якщо наступний стрибок буде вниз.
Розглянемо, що наступним стрибком 20.0.0.2 є Down. Див. Ми можемо побачити, як показати інтерфейс service-policy Eth 1/1 і показати карту політик service-policy FORWARD_TO_SERVER. У версії 20.0.0.2 пропущено «(вибране)», а у версії 30.0.0.2, яка доступна, є «(вибране)».
Тут лічильники (збіг пакетів і кадр) збільшаться, однак пакет відкинеться, оскільки наступний перехід буде недоступним.
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