[Multi-AS Segment Routing 検証連載 #17] Per-Flow Steering using SR OS

TOC

サマリ

  • SR-MPLS で構成されたネットワークにおいて、Per-Flow Steering を実現
  • SR OS で IP Precedence に基づいた Traffic Engineering (TE) の検証に成功
  • SR OS で Class of Service (CoS) に基づいた TE の検証に成功

この記事は Multi-AS Segment Routing 検証連載の第 17 回です。目次は こちら

概要

イノベーションセンターの岩田です。普段の業務では Multi-AS Segment Routing に関する技術検証や、ベンチャー企業への技術支援でスマートフォンアプリケーション開発業務などを行なっています。

第 8 回の記事で IOS XR + Junos の 2 つのベンダー機器で構成される L3VPN において 指定した 5-tuple や IP Precedence に関する条件に従って TE を実現する方法を紹介しました。 今回は新たに Nokia SR OS(Service Router Operating System)を加えた 3 つのベンダー機器から構成される環境において、IP Precedence 条件に従う TE と、CoS 条件に従う TE を実現する方法を紹介します。

検証 - IP Precedence 条件による TE(L3VPN Per-Flow Steering) -

検証項目とトポロジー

以下のような構成で、IP Precedence に基づく TE が実現できるかを検証します。

なお本記事では下記のバージョンで検証しました。

  • rt01: SR OS 22.7.R1
  • rt02: IOS XR 7.4.1
  • rt03: Junos 21.3R1.9
  • rt04: SR OS 22.7.R1

検証手順

以下の手順で検証します。

  1. Underlay & VPN & メトリック の設定
  2. LSP の定義
  3. ip-filter の定義
  4. ip-filter を VPN の ingress interface に適用
  5. ip-filter、LSP が適用されている事を確認
  6. 疎通確認

1. Underlay & VPN & メトリック の設定

設定は省略します。Underlay & VPN の設定は第 12 回を、メトリックの設定は第 15 回の記事をそれぞれ参照ください。

以下のように L3VPN が構築できている事を確認します。

rt01

[ro:/configure]
A:user@rt01# /show router bgp routes vpn-ipv4
===============================================================================
 BGP Router ID:10.255.0.1       AS:65000       Local AS:65000
===============================================================================
 Legend -
 Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid
                 l - leaked, x - stale, > - best, b - backup, p - purge
 Origin codes  : i - IGP, e - EGP, ? - incomplete

===============================================================================
BGP VPN-IPv4 Routes
===============================================================================
Flag  Network                                            LocalPref   MED
      Nexthop (Router)                                   Path-Id     IGP Cost
      As-Path                                                        Label
-------------------------------------------------------------------------------
u*>i  65000:100:192.168.123.0/24                         100         None
      10.255.0.4                                         None        20
      No As-Path                                                     524284
u*>i  65000:100:192.168.123.254/32                       100         0
      10.255.0.4                                         None        20
      No As-Path                                                     524284
-------------------------------------------------------------------------------
Routes : 2
===============================================================================

rt04

[/]
A:user@rt04# /show router bgp routes vpn-ipv4
===============================================================================
 BGP Router ID:10.255.0.4       AS:65000       Local AS:65000
===============================================================================
 Legend -
 Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid
                 l - leaked, x - stale, > - best, b - backup, p - purge
 Origin codes  : i - IGP, e - EGP, ? - incomplete

===============================================================================
BGP VPN-IPv4 Routes
===============================================================================
Flag  Network                                            LocalPref   MED
      Nexthop (Router)                                   Path-Id     IGP Cost
      As-Path                                                        Label
-------------------------------------------------------------------------------
u*>i  65000:100:192.168.23.0/24                          100         None
      10.255.0.1                                         None        20
      No As-Path                                                     524284
u*>i  65000:100:192.168.23.254/32                        100         0
      10.255.0.1                                         None        20
      No As-Path                                                     524284
-------------------------------------------------------------------------------
Routes : 2
===============================================================================

2. LSP の定義

IP Precedence が 3 の時に適用する LSP を設定します。

[ex:/configure router "Base" mpls]
A:user@rt01# info
    path "rt01_rt03_rt04" {
        admin-state enable
        hop 10 {
            sid-label 16003
        }
        hop 20 {
            sid-label 16004
        }
    }
    lsp "for_precedence3" {
        admin-state enable
        type p2p-sr-te
        to 10.254.0.4
        primary "rt01_rt03_rt04" {
        }
    }

3. ip-filter の定義

受信したパケットの IP Precedence の値に応じて適切な LSP を適用するために ip-filter を定義します。

[ex:/configure]
A:user@rt01# info filter ip-filter for_cust-a
    filter-id 1
    entry 1 {
        match {
            dscp cs3
        }
        action {
            forward {
                vprn-target {
                    bgp-nh 10.255.0.4
                    vprn "cust-a"
                    lsp "for_precedence3"
                }
            }
        }
    }
    entry 100 {
        action {
            accept
        }
    }

4. ip-filter を VPN の ingress interface に適用

定義した ip-filter を cust-a の sap(service access point) の ingress パラメータとして適用します。

[gl:/configure]
A:user@rt01# /info service vprn "cust-a" interface "to_cust-a" sap 1/1/c3/1:0
    admin-state enable
    ingress {
        filter {
            ip "for_cust-a"
        }
    }

5. ip-filter、LSP が適用されている事を確認

定義した filter が適用されていることと、パケットの転送先が指定した LSP になっていることを確認します。

[/]
A:user@rt01# show filter ip "for_cust-a" | no-more

===============================================================================
IP Filter
===============================================================================
Filter Id           : 1                            Applied        : Yes
Scope               : Template                     Def. Action    : Drop
Type                : Normal
Shared Policer      : Off
System filter       : Unchained
Radius Ins Pt       : n/a
CrCtl. Ins Pt       : n/a
RadSh. Ins Pt       : n/a
PccRl. Ins Pt       : n/a
Entries             : 3
Sub-Entries         : 4
Description         : (Not Specified)
Filter Name         : for_cust-a
-------------------------------------------------------------------------------
Filter Match Criteria : IP
-------------------------------------------------------------------------------
Entry               : 1
Description         : (Not Specified)
Log Id              : n/a
Src. IP             : 0.0.0.0/0
Src. Port           : n/a
Dest. IP            : 0.0.0.0/0
Dest. Port          : n/a
Protocol            : Undefined
Dscp                : cs3
ICMP Type           : Undefined                    ICMP Code      : Undefined
Fragment            : Off                          Src Route Opt  : Off
Sampling            : Off                          Int. Sampling  : On
IP-Option           : 0/0                          Multiple Option: Off
Tcp-flag            : (Not Specified)
Option-pres         : Off
Egress PBR          : Disabled
Primary Action      : Forward (VPRN Target)
  BGP NH Address    : 10.255.0.4
  Router            : 100
  LSP               : for_precedence3
  Service Label     : 16
  Extended Action   : None
Secondary Action    : None
PBR Down Action     : Forward (entry-default)
Downloaded Action   : Primary
Dest. Stickiness    : None                         Hold Remain    : 0
Ing. Matches        : 0 pkts
Egr. Matches        : 0 pkts

Entry               : 100
Description         : (Not Specified)
Log Id              : n/a
Src. IP             : 0.0.0.0/0
Src. Port           : n/a
Dest. IP            : 0.0.0.0/0
Dest. Port          : n/a
Protocol            : Undefined
Dscp                : Undefined
ICMP Type           : Undefined                    ICMP Code      : Undefined
Fragment            : Off                          Src Route Opt  : Off
Sampling            : Off                          Int. Sampling  : On
IP-Option           : 0/0                          Multiple Option: Off
Tcp-flag            : (Not Specified)
Option-pres         : Off
Egress PBR          : Disabled
Primary Action      : Forward
Ing. Matches        : 75 pkts (5970 bytes)
Egr. Matches        : 0 pkts

===============================================================================

また、LSP が Up していることも確認します。

[/]
A:user@rt01# show router mpls sr-te-lsp

===============================================================================
MPLS SR-TE LSPs (Originating)
===============================================================================
LSP Name                                            Tun     Protect   Adm  Opr
  To                                                Id      Path
-------------------------------------------------------------------------------
for_precedence3                                     4       N/A       Up   Up
  10.254.0.4
-------------------------------------------------------------------------------
LSPs : 1
===============================================================================

6. 疎通確認

以下のように、想定した TE を実現できている事が確認できました。

IP Precedence が 3 の時の TE 結果

user@vm01:~$ traceroute 192.168.123.1 -t 96 -n -q 1
traceroute to 192.168.123.1 (192.168.123.1), 30 hops max, 60 byte packets
 1  192.168.23.254  1.997 ms
 2  10.1.3.2  3.714 ms
 3  192.168.123.254  3.606 ms
 4  192.168.123.1  3.549 ms

それ以外のパケットの時の TE 結果

user@vm01:~$ traceroute 192.168.123.1 -n -q 1
traceroute to 192.168.123.1 (192.168.123.1), 30 hops max, 60 byte packets
 1  192.168.23.254  1.192 ms
 2  10.1.2.2  2.918 ms
 3  192.168.123.254  2.497 ms
 4  192.168.123.1  2.484 ms

また、パケットカウンタを確認すると受信したパケットが各 entry に振り分けられたことが確認できます。

[/]
A:user@rt01# show filter ip "for_cust-a" counters

===============================================================================
IP Filter
===============================================================================
Filter Id           : 1                            Applied        : Yes
Scope               : Template                     Def. Action    : Drop
Type                : Normal
Shared Policer      : Off
System filter       : Unchained
Radius Ins Pt       : n/a
CrCtl. Ins Pt       : n/a
RadSh. Ins Pt       : n/a
PccRl. Ins Pt       : n/a
Entries             : 3
Sub-Entries         : 4
Description         : (Not Specified)
Filter Name         : for_cust-a
-------------------------------------------------------------------------------
Filter Match Criteria : IP
-------------------------------------------------------------------------------
Entry               : 1
Ing. Matches        : 25 pkts (1950 bytes)
Egr. Matches        : 0 pkts

Entry               : 100
Ing. Matches        : 100 pkts (7920 bytes)
Egr. Matches        : 0 pkts

===============================================================================

検証 - CoS 条件による TE(L2VPN Per-Flow Steering) -

検証項目とトポロジー

以下のような構成の L2VPN 上で、CoS(Class of Service)に基づく TE を実現できるかを検証します。

なお本記事では下記のバージョンで検証しました。

  • rt01: SR OS 22.7.R1
  • rt02: IOS XR 7.4.1
  • rt03: Junos 21.3R1.9
  • rt04: Junos 21.3R1.9

SR OS を PE として用いる際の L2VPN Per-Flow Steering の実現方法

SR OS において、L2VPN Per-Flow Steering を行うためのコマンドや機能はないため、 以下に示す構成のように、複数の EVPN Instance (EVI) とインスタンス間を接続するための port cross-connect(PXC)、mac-filter の機能を組み合わせて実現する必要があります。

rt01 において、対向 PE(rt04)から送られてきたパケットは pbf において受信します。 vm01 から受信したパケットは pbf で受信した後、CoS の値に応じて pbf_cos7pbf_default へパケットを転送し、 pbf_cos7pbf_default から送信します。

これを実現するためには、以下の要件を満たすように設定する必要があります。

  • 要件 1 : CoS に基づいた EVI への転送を優先するため、 PBF を行う EVI (EVI 4000) は EVPN で経路を受信させない

仮に EVI 4000 に対向 rt04 の経路が存在するとそちらが優先され、転送用 EVI が使用されなくなるためです。

  • 要件 2 :転送用 EVI が 対向 MAC アドレスとポートの組み合わせを誤って学習しないように、EVPN 越しに受け取った BUM トラフィックをパケット転送用の EVI (EVI 14000、EVI 24000) へ転送させない

仮に EVI 4000 から EVI 14000 に BUM を転送してしまうと、EVI 14000 はその送信元 MAC アドレスをみて、転送先を EVPN 経路ではなく EVI 4000 に戻るポートへ指定するテーブルを作成してしまい、 EVI 4000 と EVI 14000 の間でループが発生するためです。

検証手順

以下の手順で検証します。

  1. Underlay & メトリック の設定
  2. EVI の設定
  3. PXC の設定
  4. PXC を用いた EVI 間の接続
  5. LSP の定義
  6. EVI と LSP の関連付け
  7. mac-filter の定義と EVI への適用
  8. 疎通確認

1. Underlay & メトリック の設定

省略します。 Underlay & VPN の設定は第 13 回を、メトリックの設定は第 15 回の記事をそれぞれ参照ください。

2. EVI の設定

PBF 用のインスタンス 1 つと、転送用のインスタンス 2 つ、計 3 つのインスタンスを立てます。

要件 1 を満たすために経路送受信を reject するポリシーを作成し、以下のように適用します。

  • PBF 用のインスタンス: vsi import 時に適用する(経路を受信しない)
  • 転送用のインスタンス: vsi export 時に適用する(経路を送信しない)

経路送受信を拒否するためのポリシー

[gl:/configure]
A:user@rt01# info policy-options policy-statement "all-reject"
    entry 1 {
        action {
            action-type reject
        }
    }

PBF 用 EVI

[gl:/configure service vpls "pbf"]
A:user@rt01# info
    admin-state enable
    service-id 4000
    customer "cust-a"
    bgp 1 {
        route-distinguisher "10.255.0.1:4000"
        vsi-import ["all-reject"]
        route-target {
            export "target:65000:4000"
            import "target:65000:4000"
        }
    }
    bgp-evpn {
        evi 4000
        mpls 1 {
            admin-state enable
            auto-bind-tunnel {
                resolution filter
                resolution-filter {
                    sr-isis true
                }
            }
        }
    }
    sap 1/1/c4/1:4001 {
        admin-state enable
    }

CoS が 0(デフォルト値)のパケット転送用 EVI

[gl:/configure service vpls "pbf_default"]
A:user@rt01# info
    admin-state enable
    service-id 14000
    customer "cust-a"
    bgp 1 {
        route-distinguisher "10.255.0.1:14000"
        vsi-export ["all-reject"]
        route-target {
            import "target:65000:4000"
        }
    }
    bgp-evpn {
        evi 14000
        mpls 1 {
            admin-state enable
            auto-bind-tunnel {
                resolution any
            }
        }
    }

CoS が 7 のパケット転送用 EVI

[gl:/configure service vpls "pbf_cos7"]
A:user@rt01# info
    admin-state enable
    service-id 24000
    customer "cust-a"
    bgp 1 {
        route-distinguisher "10.255.0.1:24000"
        vsi-export ["all-reject"]
        route-target {
            import "target:65000:4000"
        }
    }
    bgp-evpn {
        evi 24000
        mpls 1 {
            admin-state enable
            auto-bind-tunnel {
                resolution any
            }
        }
    }

3. PXC の設定

EVI 同士を接続するために PXC を設定します。 PXC には物理ポートを消費するモードと消費しないモードがありますが、本記事の検証では後発で開発された後者を使用します。

以下のように pxc port を接続し、EVI 同士を接続します。

  • pxc-1.a: pbf_default <-> pxc-1.b: pbf
  • pxc-2.a: pbf_cos7 <-> pxc-2.b: pbf

PXC の詳しい仕様を知りたい方は こちら を参照ください。

card 1 {
    card-type iom-1
    mda 1 {
        mda-type me6-100gb-qsfp28
        xconnect {
            mac 1 {
                loopback 1 {
                    bandwidth 100
                }
                loopback 2 {
                    bandwidth 100
                }
            }
        }
    }
}
port-xc {
    pxc 1 {
        admin-state enable
        port-id 1/1/m1/1
    }
    pxc 2 {
        admin-state enable
        port-id 1/1/m1/2
    }
}
port 1/1/m1/1 {
    admin-state enable
}
port 1/1/m1/2 {
    admin-state enable
}
port pxc-1.a {
    admin-state enable
    ethernet {
        mode hybrid
        encap-type dot1q
    }
}
port pxc-1.b {
    admin-state enable
    ethernet {
        mode hybrid
        encap-type dot1q
    }
}
port pxc-2.a {
    admin-state enable
    ethernet {
        mode hybrid
        encap-type dot1q
    }
}
port pxc-2.b {
    admin-state enable
    ethernet {
        mode hybrid
        encap-type dot1q
    }
}

設定した PXC port が Up していることを確認します。

A:user@rt01# /show port

===============================================================================
Ports on Slot 1
===============================================================================
Port          Admin Link Port    Cfg  Oper LAG/ Port Port Port   C/QS/S/XFP/
Id            State      State   MTU  MTU  Bndl Mode Encp Type   MDIMDX
-------------------------------------------------------------------------------
1/1/c1        Up         Link Up                          conn   100GBASE-LR4*
1/1/c1/1      Up    Yes  Up      9212 9212    - hybr dotq cgige
1/1/c2        Up         Link Up                          conn   100GBASE-LR4*
1/1/c2/1      Up    Yes  Up      9212 9212    - hybr dotq cgige
1/1/c3        Up         Link Up                          conn   100GBASE-LR4*
1/1/c3/1      Up    Yes  Up      1506 1506    - hybr dotq cgige
1/1/c4        Up         Link Up                          conn   100GBASE-LR4*
1/1/c4/1      Up    Yes  Up      9212 9212    - hybr dotq cgige
1/1/c5        Up         Link Up                          conn   100GBASE-LR4*
1/1/c5/1      Up    No   Down    9212 9212    - hybr dotq cgige
1/1/c6        Up         Link Up                          conn   100GBASE-LR4*
1/1/c6/1      Up    No   Down    9212 9212    - hybr dotq cgige
1/1/m1/1      Up         Link Up                          anchor
1/1/m1/2      Up         Link Up                          anchor

===============================================================================
Ports on Slot A
===============================================================================
Port          Admin Link Port    Cfg  Oper LAG/ Port Port Port   C/QS/S/XFP/
Id            State      State   MTU  MTU  Bndl Mode Encp Type   MDIMDX
-------------------------------------------------------------------------------
A/1           Up    Yes  Up      1514 1514    - netw null faste  MDI
A/3           Down  No   Down    1514 1514    - netw null faste
A/4           Down  No   Down    1514 1514    - netw null faste

===============================================================================
Ports on Port Cross Connect 1
===============================================================================
Port          Admin Link Port    Cfg  Oper LAG/ Port Port Port   C/QS/S/XFP/
Id            State      State   MTU  MTU  Bndl Mode Encp Type   MDIMDX
-------------------------------------------------------------------------------
pxc-1.a       Up    Yes  Up      9208 9208    - hybr dotq cgige
pxc-1.b       Up    Yes  Up      9208 9208    - hybr dotq cgige

===============================================================================
Ports on Port Cross Connect 2
===============================================================================
Port          Admin Link Port    Cfg  Oper LAG/ Port Port Port   C/QS/S/XFP/
Id            State      State   MTU  MTU  Bndl Mode Encp Type   MDIMDX
-------------------------------------------------------------------------------
pxc-2.a       Up    Yes  Up      9208 9208    - hybr dotq cgige
pxc-2.b       Up    Yes  Up      9208 9208    - hybr dotq cgige
===============================================================================

4. PXC を用いた EVI 間の接続

PXC を Virtual Private LAN Service (VPLS) の SAP として設定することで EVI に PXC port を接続します。 要件 2 で述べた EVI pbf において EVPN 経由で受け取った BUM トラフィックを PXC へ流さないようにするため、split horizon group の設定を bgp-evpnsap pxc-x.b:0 の階層へ追加します。

[gl:/configure]
A:user@rt01# info service
    vpls "pbf" {
        bgp-evpn {
                split-horizon-group "SHG-pbf"
        }
        split-horizon-group "SHG-pbf" {
        }
        sap pxc-1.b:0 {
            admin-state enable
            split-horizon-group "SHG-pbf"
        }
        sap pxc-2.b:0 {
            admin-state enable
            split-horizon-group "SHG-pbf"
        }
    }
    vpls "pbf_cos7" {
        sap pxc-2.a:0 {
            admin-state enable
        }
    }
    vpls "pbf_default" {
        sap pxc-1.a:0 {
            admin-state enable
        }
    }

各 EVI で PXC が紐づいていることが確認できます。

[/]
A:user@rt01# show service id 4000 sap

===============================================================================
SAP(Summary), Service 4000
===============================================================================
PortId                          SvcId      Ing.  Ing.    Egr.  Egr.   Adm  Opr
                                           QoS   Fltr    QoS   Fltr
-------------------------------------------------------------------------------
pxc-1.b:0                       4000       1     none    1     none   Up   Up
pxc-2.b:0                       4000       1     none    1     none   Up   Up
1/1/c4/1:4001                   4000       1     mac     1     none   Up   Up
-------------------------------------------------------------------------------
Number of SAPs : 3
-------------------------------------------------------------------------------
===============================================================================

[/]
A:user@rt01# show service id 14000 sap

===============================================================================
SAP(Summary), Service 14000
===============================================================================
PortId                          SvcId      Ing.  Ing.    Egr.  Egr.   Adm  Opr
                                           QoS   Fltr    QoS   Fltr
-------------------------------------------------------------------------------
pxc-1.a:0                       14000      1     none    1     none   Up   Up
-------------------------------------------------------------------------------
Number of SAPs : 1
-------------------------------------------------------------------------------
===============================================================================

[/]
A:user@rt01# show service id 24000 sap

===============================================================================
SAP(Summary), Service 24000
===============================================================================
PortId                          SvcId      Ing.  Ing.    Egr.  Egr.   Adm  Opr
                                           QoS   Fltr    QoS   Fltr
-------------------------------------------------------------------------------
pxc-2.a:0                       24000      1     none    1     none   Up   Up
-------------------------------------------------------------------------------
Number of SAPs : 1
-------------------------------------------------------------------------------
===============================================================================

5. LSP の定義

転送用の各 EVI にて受信した経路に対し、設計に従った LSP を定義することで EVI へ関連付けを行います。 定義した LSP と EVI の関連付けには admin-tag 機能を用います。

Dynamic TE の LSP と admin-tag を定義します。

[gl:/configure routing-options]
A:user@rt01# info
    admin-tags {
        admin-tag "tag-igp-metric" { }
        admin-tag "tag-te-metric" { }
        route-admin-tag-policy "RATP-igp" {
            include "tag-igp-metric" { }
        }
        route-admin-tag-policy "RATP-te" {
            include "tag-te-metric" { }
        }
    }

[gl:/configure router "Base" mpls]
A:user@rt01# info
    path "metric-te-path" {
        admin-state enable
    }
    lsp "dynamic-metric-IGP" {
        admin-state enable
        type p2p-sr-te
        to 10.255.0.4
        vprn-auto-bind true
        path-computation-method local-cspf
        metric-type igp
        admin-tag "tag-igp-metric" { }
        primary "metric-te-path" {
            admin-state enable
        }
    }
    lsp "dynamic-metric-TE" {
        admin-state enable
        type p2p-sr-te
        to 10.255.0.4
        vprn-auto-bind true
        path-computation-method local-cspf
        metric-type te
        admin-tag "tag-te-metric" { }
        primary "metric-te-path" {
            admin-state enable
        }
    }

6. EVI と LSP の関連付け

EVI の経路 import 時に admin-tag を指定することで特定の LSP と紐づけます。

[gl:/configure policy-options]
A:user@rt01# info
    community "target-4000" {
        member "target:65000:4000" { }
    }
    policy-statement "import-cos7" {
        entry 1 {
            from {
                community {
                    name "target-4000"
                }
            }
            action {
                action-type accept
                admin-tag-policy "RATP-te"
            }
        }
    }
    policy-statement "import-default" {
        entry 1 {
            from {
                community {
                    name "target-4000"
                }
            }
            action {
                action-type accept
                admin-tag-policy "RATP-igp"
            }
        }
    }

[gl:/configure service vpls "pbf_default"]
A:user@rt01# info
    bgp 1 {
        vsi-import ["import-default"]
    }

[gl:/configure service vpls "pbf_cos7"]
A:user@rt01# info
    bgp 1 {
        vsi-import ["import-cos7"]
    }

7. mac-filter の定義と EVI への適用

CoS=7 のパケットのみを pxc-2.b:0、その他を pxc-1.b:0 へ転送する filter を定義し、 pbf の SAP interface へ適用します。

[gl:/configure filter mac-filter "for_vpls-4000"]
A:user@rt01# info
    filter-id 4001
    entry 1 {
        match {
            dot1p {
                priority 7
                mask 7
            }
        }
        action {
            forward {
                sap {
                    vpls "pbf"
                    sap-id  pxc-2.b:0
                }
            }
        }
    }
    entry 10 {
        action {
            forward {
                sap {
                    vpls "pbf"
                    sap-id  pxc-1.b:0
                }
            }
        }
    }

作成した filter が適用されている事と、パケットの転送先が指定した LSP になっている事を確認します。

[/]
A:user@rt01# show filter mac "for_vpls-4000"

===============================================================================
Mac Filter
===============================================================================
Filter Id           : 4001                         Applied        : Yes
Scope               : Template                     Def. Action    : Drop
Entries             : 2                            Type           : normal
Description         : (Not Specified)
Filter Name         : for_vpls-4000
-------------------------------------------------------------------------------
Filter Match Criteria : Mac
-------------------------------------------------------------------------------
Entry               : 1                            FrameType      : Ethernet
Description         : (Not Specified)
Log Id              : n/a
Src Mac             : Undefined
Dest Mac            : Undefined
Dot1p               : 7/7                          Ethertype      : Undefined
DSAP                : Undefined                    SSAP           : Undefined
Snap-pid            : Undefined                    ESnap-oui-zero : Undefined
Primary Action      : Forward (SAP)
  Next Hop          : pxc-2.b:0
  Service Id        : 4000
  PBR Target Status : Up
Secondary Action    : None
PBR Down Action     : Drop (entry-default)
Downloaded Action   : Primary
Dest. Stickiness    : None                         Hold Remain    : 0
Ing. Matches        : 22829 pkts (2417234 bytes)
Egr. Matches        : 0 pkts

Entry               : 10                           FrameType      : Ethernet
Description         : (Not Specified)
Log Id              : n/a
Src Mac             : Undefined
Dest Mac            : Undefined
Dot1p               : Undefined                    Ethertype      : Undefined
DSAP                : Undefined                    SSAP           : Undefined
Snap-pid            : Undefined                    ESnap-oui-zero : Undefined
Primary Action      : Forward (SAP)
  Next Hop          : pxc-1.b:0
  Service Id        : 4000
  PBR Target Status : Up
Secondary Action    : None
PBR Down Action     : Drop (entry-default)
Downloaded Action   : Primary
Dest. Stickiness    : None                         Hold Remain    : 0
Ing. Matches        : 30271 pkts (3202038 bytes)
Egr. Matches        : 0 pkts

===============================================================================

8. 疎通確認

CoS の値に応じてそれぞれ適切な経路が選択され TE が実現できているかどうかは、 monitor port コマンドを用いて各ポートから送信されているパケットの増減を確認することで確認します。

CoS=0 のとき (default)

vm01で ping を打ちながら monitor port を実行します。 1/1/c1/1 ポートから送信されるパケットが増えているかを確認することで、上図の青色の経路を通っていることを確認します。

user@vm01:~$ ping 192.168.29.2 -i 0.2

output packet の数を確認すると 1/1/c1/1 ポートから送信されるパケットが多いことから、 IGP Metric が最小となるような経路を通っていることが確認できます。

[/]
A:user@rt01# monitor port 1/1/c1/1 interval 5

===============================================================================
Monitor statistics for Port 1/1/c1/1
===============================================================================
                                                   Input                 Output
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
At time t = 0 sec (Base Statistics)
-------------------------------------------------------------------------------
Octets                                        1429860905              564867974
Packets                                          4502761                4898538
Errors                                                 0                      0

-------------------------------------------------------------------------------
At time t = 5 sec (Mode: Delta)
-------------------------------------------------------------------------------
Octets                                              3100                   3100
Packets                                               25                     25
Errors                                                 0                      0

-------------------------------------------------------------------------------
At time t = 10 sec (Mode: Delta)
-------------------------------------------------------------------------------
Octets                                              4783                   3310
Packets                                               28                     28
Errors                                                 0                      0

...

[/]
A:user@rt01# monitor port 1/1/c2/1 interval 5

===============================================================================
Monitor statistics for Port 1/1/c2/1
===============================================================================
                                                   Input                 Output
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
At time t = 0 sec (Base Statistics)
-------------------------------------------------------------------------------
Octets                                         141881464              513956143
Packets                                          1605842                4452348
Errors                                                 0                      0

-------------------------------------------------------------------------------
At time t = 5 sec (Mode: Delta)
-------------------------------------------------------------------------------
Octets                                               263                    120
Packets                                                3                      1
Errors                                                 0                      0

-------------------------------------------------------------------------------
At time t = 10 sec (Mode: Delta)
-------------------------------------------------------------------------------
Octets                                                 0                    200
Packets                                                0                      2
Errors                                                 0                      0

...

CoS=7 のとき (default)

CoS を変更後、vm01で ping を打ちながら monitor port を実行します。 1/1/c2/1 ポートから送信されるパケットが増えているかを確認することで、上図の青色の経路を通っていることを確認します。

user@vm01:~$ sudo ip l set dev ens194.4001 type vlan egress-qos-map 0:7
user@vm01:~$ ping 192.168.29.2 -i 0.2

output packet の数を確認すると 1/1/c2/1 ポートから送信されるパケットが多いことから、 TE Metric が最小となるような経路を通っていることが確認できます。

[/]
A:user@rt01# monitor port 1/1/c1/1 interval 5

===============================================================================
Monitor statistics for Port 1/1/c1/1
===============================================================================
                                                   Input                 Output
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
At time t = 0 sec (Base Statistics)
-------------------------------------------------------------------------------
Octets                                        1430139849              565046533
Packets                                          4504418                4900028
Errors                                                 0                      0

-------------------------------------------------------------------------------
At time t = 5 sec (Mode: Delta)
-------------------------------------------------------------------------------
Octets                                              4699                    144
Packets                                               27                      2
Errors                                                 0                      0

-------------------------------------------------------------------------------
At time t = 10 sec (Mode: Delta)
-------------------------------------------------------------------------------
Octets                                              3250                    197
Packets                                               27                      2
Errors                                                 0                      0

...

A:user@rt01# monitor port 1/1/c2/1 interval 5

===============================================================================
Monitor statistics for Port 1/1/c2/1
===============================================================================
                                                   Input                 Output
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
At time t = 0 sec (Base Statistics)
-------------------------------------------------------------------------------
Octets                                         141893876              513997471
Packets                                          1605984                4452709
Errors                                                 0                      0

-------------------------------------------------------------------------------
At time t = 5 sec (Mode: Delta)
-------------------------------------------------------------------------------
Octets                                                79                   3300
Packets                                                1                     27
Errors                                                 0                      0

-------------------------------------------------------------------------------
At time t = 10 sec (Mode: Delta)
-------------------------------------------------------------------------------
Octets                                                 0                   3186
Packets                                                0                     26
Errors                                                 0                      0

...

以上で、想定した L2VPN Per-Flow Steering が実現できていることが確認できました。

まとめ

IOS XR 、Junos と SR OS の Multi-vendor 環境における L3VPN、L2VPN 上での Per-Flow Steering の検証結果を紹介しました。 特に L2 での Per-Flow 実現は SR OS に専用の機能が無いため、機能を組み合わせて実現する必要がありました。 次回の記事では TI-LFA を利用した 高速迂回(Fast Reroute)について紹介予定です。

(2023/10/30 追記) 公開しました:[Multi-AS Segment Routing 検証連載 #18] TI-LFA を用いた障害時の高速迂回 と Microloop の回避 (using SR OS with IOS XR / Junos)

© NTT Communications Corporation All Rights Reserved.