TOC
- サマリ
- 概要
- 検証 - IP Precedence 条件による TE(L3VPN Per-Flow Steering) -
- 検証 - CoS 条件による TE(L2VPN Per-Flow Steering) -
- まとめ
サマリ
- 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
検証手順
以下の手順で検証します。
- Underlay & VPN & メトリック の設定
- LSP の定義
- ip-filter の定義
- ip-filter を VPN の ingress interface に適用
- ip-filter、LSP が適用されている事を確認
- 疎通確認
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_cos7
か pbf_default
へパケットを転送し、 pbf_cos7
、pbf_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 の間でループが発生するためです。
検証手順
以下の手順で検証します。
- Underlay & メトリック の設定
- EVI の設定
- PXC の設定
- PXC を用いた EVI 間の接続
- LSP の定義
- EVI と LSP の関連付け
- mac-filter の定義と EVI への適用
- 疎通確認
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 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-evpn
と sap 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)