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の場合:
  • 着信トラフィックが interface/vlan/portchannel/globally のポリシーマップで適用されたステートメントのいずれにも一致しない場合、標準ルートテーブルに従って転送されます。
  • 転送ポリシーは、入力インターフェイスでのみサポートされます。
  • 転送ポリシーは、選択したトラフィックのみを転送できます。CPU へのトラフィックのトラップ、スイッチ、ルーティングはできません。
  • ネクストホップおよびネクストホップグループアクションの転送ポリシーは、ルーティングされた L3 トラフィックにのみ適用されます。
  • イーサネットまたはポート チャネル出力インターフェイスを使用する転送ポリシーは、スイッチド L2 トラフィックにのみ適用されます。
  • 転送ポリシーは、CPU 宛てのトラフィック(宛先 IP アドレスはスイッチ アドレスと同じ)や CPU にトラップされたトラフィックには適用されません。
  • すべてのインターフェイスに転送ポリシーをグローバルに適用する場合、ポリシー マップで set {ip | ipv6} next-hop ip-address vrf vrf-name コマンドを使用してデフォルト以外の VRF を設定しない限り、ネクストホップはデフォルト 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 転送ポリシーは、ポリシーベースルーティングの一致するトラフィックに対して実行する転送アクションを指定します。転送ポリシーは、次のアクションをサポートします。

  • [ネクスト ホップの設定(Set next hop)]:IPv4 トラフィックを IPv4 ネクストホップにルーティングします。IPv6トラフィックをIPv6ネクストホップにルーティングします。
  • [ネクストホップ グループの設定] - 最適なネクストホップIPv4またはIPv6アドレスが選択されるグループを指定します。
  • Set interface: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

 

サンプル設定

次のトポロジーについて考えてみましょう。

トポロジ

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 にルーティングされます。
 

Configuration

クラスマップを設定してみましょう。ここでは、さまざまなパラメータに基づいてトラフィックを分類します。
クラス マップ 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#

 

次のホップがダウンしている場合はどうなりますか。

ネクスト ホップ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にアクセスできないため、selectedが見つかりません。

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