Dell Networking SONiC:如何設定原則式路由

摘要: 本文透過簡單範例說明如何在 Dell Networking SONiC 中設定原則式路由。

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

说明

先決條件

我們使用標準介面命名來演示概念。請參閱文章 Dell Networking S 系列:基本介面組態 - SONiC 4.0 ,以取得有關介面命名的詳細資訊


索引

 

什麼是基於策略的路由?

基於策略的路由 (PBR) 提供了一種通過覆蓋IP路由表中的可用資訊來轉發數據包的方法。您可以實施有選擇地使數據包採用不同路徑的策略。傳統IP路由僅根據數據包中的目標IP位址轉發數據包。可以將 PBR 配置為根據其他條件轉發數據包,例如 TCP/UDP 埠號、源 IP 位址、DSCP 值和 TCP 標誌。Dell SONiC 使用以流程為基礎的服務原則進行原則式路由。轉發策略由類映射組成,這些類映射選擇數據包並設置導致數據包轉發到預定下一躍點或介面的操作,繞過路由表和轉發表確定的路徑。您可以在同一策略中定義多個匹配和出口介面或下一躍點值。您可以將轉發策略應用於交換或路由流量。流量可以路由到入口介面使用的同一 VRF 或不同的 VRF。

使用基於策略的路由提供平等訪問、協定敏感路由、源敏感路由、基於與批量流量交互比較的路由和基於專用鏈路的路由。與目標路由相比,基於策略的路由是一種更靈活的數據包路由機制。
 

設定原則式路由的步驟

Dell SONiC 透過提供模組化架構來分類流量,並在所選流量上套用轉送動作 (例如設定 IP 下一躍點),藉此實作 PBR。

若要設定 PBR:

  1. 使用 ACL 或數據包標頭中的 L2、L3 或 L4 欄位對基於策略的路由的流量進行分類(選擇)。
  2. 在策略映射中,配置要對每個分類流採取的轉發操作。
  3. 在入口介面上應用轉發策略 - 在所有交換機介面、指定介面、VLAN 或埠通道上全域應用
簡而言之:

設定原則式路由的步驟


注意:在 Dell SONiC 中:
  • 如果傳入流量在介面/VLAN/埠通道/全域的策略映射中應用的任何語句中找不到匹配項,它將按照標準路由表轉發。
  • 轉發策略僅在入口介面上受支援。
  • 轉發策略只能轉發選定的流量;它們無法捕獲、切換或將流量路由到 CPU。
  • 具有下一躍點和下一躍點組操作的轉發策略僅適用於路由的 L3 流量。
  • 使用乙太網或埠通道出口介面的轉發策略僅適用於交換的 L2 流量。
  • 轉送原則不適用於發往 CPU 的流量 (目的地 IP 位址與交換器位址相同) 或困入 CPU 的流量
  • 在所有介面上全域應用轉發策略時,下一躍點必須位於預設 VRF 中,除非您在策略映射中使用設置 {ip | ipv6} 下一躍點 ip-address vrf vrf-name 命令設置非預設 VRF。

 

組態語法

設定類映射以對流量進行分類

我們可以通過類映射中的以下方法對傳入流量進行分類(匹配)。

  1. 使用 IPv4 或 IPv6 或 MAC 存取清單
  2. 使用 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 流量轉發到指定的出口介面。
  • 設置介面 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

 

範例組態

讓我們考慮以下拓撲。

拓樸

我們在 DELLSONiC 中沒有通往 50.0.0.0/24 和 60.0.0.0/24 的路由。

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 為 Down。請參閱下面的輸出。我們可以從 show service-policy interface Eth 1/1 和 show service-policy policy-map 中看到 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

受影响的产品

Enterprise SONiC Distribution, PowerSwitch S5212F-ON, PowerSwitch S5224F-ON, PowerSwitch S5232F-ON, PowerSwitch S5248F-ON, PowerSwitch S5296F-ON, PowerSwitch Z9264F-ON, PowerSwitch Z9432F-ON
文章属性
文章编号: 000222385
文章类型: How To
上次修改时间: 07 3月 2024
版本:  4
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。