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 通过提供模块化框架来实施 PBR 来对流量进行分类并对所选流量应用转发操作,例如设置 IP 下一跳。

要配置 PBR,请执行以下操作:

  1. 使用 ACL 或数据包标头中的 L2、L3 或 L4 字段对基于策略的路由的流量进行分类(选择)。
  2. 在策略映射中,配置要对每个分类流执行的转发操作。
  3. 在入口接口上应用转发策略 - 在所有交换机接口、指定接口、VLAN 或端口通道上全局应用转发策略
简而言之:

配置基于策略的路由的步骤


提醒:在 Dell SONiC 中:
  • 如果传入流量在 interface/vlan/portchannel/globally策略映射中应用的任何语句中未找到匹配项,它将根据标准路由表进行转发。
  • 转发策略仅在入口接口上受支持。
  • 转发策略只能转发选定的流量;它们无法捕获、切换流量或将流量路由到 CPU。
  • 具有下一跃点和下一跃点组操作的转发策略仅适用于路由的 L3 流量。
  • 使用以太网或端口通道出口接口的转发策略仅适用于交换的 L2 流量。
  • 转发策略不适用于发往 CPU 的流量(目标 IP 地址与交换机地址相同)或困在 CPU 上的流量。
  • 在所有接口上全局应用转发策略时,下一跃点必须位于默认 VRF 中,除非您在策略映射中使用 set {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 下一跳。
  • Set next-hop group— 指定从中选择最佳下一跃点 IPv4 或 IPv6 地址的组。
  • 设置接口 — 将 L2 流量转发到指定的出口接口。
  • Set interface 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)#

让我们将策略映射作为服务策略应用于接口以太网 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 已关闭。请参阅下面的输出。我们可以从 show service-policy interface Eth 1/1 和 show service-policy policy-map 中看到 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

受影响的产品

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
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。