[Multi-AS Segment Routing 検証連載 #20] Multi-AS の SR-MPLS + VPNv4 環境における AS 間での TE

サマリ

  • Multi-AS の SR-MPLS + VPNv4 環境で AS 間での TE を実現するため、ASBR 間 next-hop を PE で選択する方法を検証
  • next-hop ごとに VPN ラベルを生成する Nokia ASBR と、 BGP-LU で ASBR 間 next-hop をそのまま広告する Cisco ASBR の 2 通りで動作確認に成功

この記事は Multi-AS Segment Routing 検証連載の第 20 回です。 過去の記事一覧は こちら にあります。

概要

イノベーションセンターの吉田 晴信です。 業務では Multi-AS Segment Routing に関する技術検証をしています。

本記事では、Multi-AS での Segment Routing を活用した Traffic Engineering(SR-TE)の実現方法について紹介します。

Multi-AS での SR-TE で実現したい要求として、第 5 回の記事では下記の 2 点を挙げています。

  • (a) AS 内で意図した経路を選択したい(AS 内での TE)
  • (b) 他 AS との接続経路を選択したい(AS 間での TE)

(a) の実現方法については第 5 回の記事で説明しています。本記事では (b) の実現方法を説明します。

Inter-AS Option B における (b) の実現方法

本記事では MPLS Inter-AS Option B を前提に SR-MPLS + VPNv4 で (b) を実施する方法を紹介し動作検証を行います。

はじめに、Option B で (b) を実施する際の課題を説明します。 (b) を実施する場合、下記の 3 種のラベルが必要です。

  • ASBR に到達するまでのラベル
  • ASBR から先を示すラベル
  • VPN を識別するラベル

ラベルの処理としては、「 ASBR に到達するまでのラベル」は ASBR 到達までに Pop されますが、 「 ASBR から先を示すラベル」と「 VPN を識別するラベル」は Pop されません。

「 ASBR から先を示すラベル」は ASBR で next-hop を選択する際に Pop され、 「 VPN を識別するラベル」は ASBR 間 で VPN を識別するのに必要であるため Swap されます。 つまり、ASBR では Pop と Swap の 2 つの処理を同時に行う必要があります。

ですが、現状 Cisco/Juniper/Nokia 機器では「 ASBR から先を示すラベル」と「 VPN を識別するラベル」を同時に ASBR で処理する機能がありません。 つまり、(b) を 1 つの ASBR につき 1 ラベルのみ処理する方法で実現する必要があります。

実現方法として、本記事では下記の 2 点を紹介します。

  • (1) ASBR で next-hop ごとの VPN ラベルを生成する方法
  • (2) ASBR で Egress Peer に対する EPE ラベルを生成し、 VPN ラベルは対向 AS の ASBR が生成したものを利用する方法

(1) ASBR で next-hop ごとの VPN ラベルを生成する方法

1 点目の方法では、next-hop ごとに受信した NLRI 単位で経路に異なる VPN ラベルを生成します。

これにより、VPN ラベルは ASBR 間 next-hop に対応します。 そして経路を PE に広告することで、PE で ASBR 間 next-hop を選択できます。

この方法は Nokia ASBR で使用できることを確認しています。

(2) ASBR で Egress Peer に対する EPE ラベルを生成し、 VPN ラベルは対向 AS の ASBR が生成したものを利用する方法

2 点目の方法では、自 AS の ASBR で Egress Peer に対応する EPE ラベルを生成します。

EPE ラベルを生成した経路は RFC3107 で標準化されている BGP-LU を使用し PE に広告します。

VPN 経路は対向 AS の ASBR から Inter-AS の VPN ラベルがついた状態で自 AS の ASBR で受信されます。 自 AS の ASBR から PE にこの経路を広告しますが、このとき経路の next-hop-self を使用せずそのまま広告します。 PE は 対向 AS の ASBR のアドレスを EPE ラベルがついた状態で学習できているため、 next-hop を書き換えない状態でも経路の解決が可能です。

以上により、PE で対向 AS の ASBR を選択でき、自 AS の ASBR では EPE ラベルを処理するだけなので転送可能となり、 VPN ラベルも 対向 AS の ASBR で解釈可能なため問題なく通信できます。

この方法は Cisco ASBR で使用できることを確認しています。

検証

本記事では (1) と (2) の方法で PE において ASBR 間 next-hop を選択できることを確認します。

前提である Multi-AS の SR-MPLS + VPNv4 の設定は 第 12 回の記事 をご参照ください。 また、(1) と (2) 両方で経路選択するため、ルートポリシーを用いて weight/LP を変更する方法を採用しています。

(1) の検証

(1) は下記のトポロジーで検証します。

使用した各ルーターのバージョンは下記の通りです。

  • 1-PE01: IOS XR 7.9.2
  • 1-PE02、1-ASBR02、1-ASBR03、1-PE04: Junos OS 22.3R1.11
  • 1-PE03、1-ASBR01: SR OS 22.7.R1

検証の手順は下記の通りです。

  1. ルートポリシーの設定
  2. VPN ラベルの確認
  3. traceroute による VPN の通信経路確認

1. ルートポリシーの設定

1-ASBR01 から受信した経路を選択するため、各 PE でルートポリシーを設定します。 今回設定するルートポリシーは下記の 2 つです。

  1. BGP で vrf-100 に対して、次に経由する AS が 65002 の経路を広告されたとき、その経路の weight を 10000 にする。
  2. BGP で vrf-200 に対して、次に経由する AS が 65003 の経路を広告されたとき、その経路の weight を 10000 にする。

これにより、vrf-100 の通信では AS65002 に直接転送する経路が選択され、 vrf-200 の通信では AS65003 を経由して AS65002 に転送する経路が選択されます。 トラフィックの流れは下記の通りです。

1-PE01 におけるルートポリシーの設定例です。

as-path-set as-65002
  neighbor-is '65002'
end-set
!
as-path-set as-65003
  neighbor-is '65003'
end-set
!
route-policy asbr-selection-based-rd
  if rd in rds-select-65002 and as-path in as-65002 then
    set weight 10000
  endif
  if rd in rds-select-65002 and as-path in as-65003 then
    set weight 1000
  endif
  if rd in rds-select-65003 and as-path in as-65003 then
    set weight 10000
  endif
  if rd in rds-select-65003 and as-path in as-65002 then
    set weight 1000
  endif
  pass
end-policy
!

また、ASBR が広告した経路にルートポリシーを適用するため、下記を設定します。

router bgp 65001
 neighbor-group ibgp
  address-family vpnv4 unicast
   route-policy asbr-selection-based-rd in
  !
 !
!

本記事では紹介していませんが、1-PE02 と 1-PE03 についても同じ内容を設定します。 なお、この節で紹介した設定は経路選択するためのものであり、(1) 実現のために第 12 回の記事から追加設定はありません。

2. VPN ラベルの確認

1-ASBR01 で生成された VPN ラベルを確認します。 下記の通り ASBR 間 next-hop ごとに異なる VPN ラベルが生成されていることがわかります。

[/]
A:user@1-ASBR01# /show router bgp inter-as-label

===============================================================================
BGP Inter-AS labels
Flags: B - entry has backup, P - entry is promoted
===============================================================================
NextHop                       Received       Advertised     Label
                              Label          Label          Origin
-------------------------------------------------------------------------------
10.100.1.2                    36             524280         External
10.100.1.2                    37             524279         External
10.100.2.2                    22             524278         External
10.100.2.2                    23             524277         External
10.255.1.1                    24002          524284         Internal
10.255.1.1                    24003          524283         Internal
10.255.1.2                    16             524274         Internal
10.255.1.2                    17             524273         Internal
10.255.1.3                    524284         524276         Internal
10.255.1.3                    524286         524275         Internal
-------------------------------------------------------------------------------
Total Labels allocated:   10
===============================================================================

1-PE01 に上記で生成された VPN ラベルが広告されているか確認します。 下記は 1-PE01 における vrf-100 の経路ですが、1-ASBR01 で確認した VPN ラベルが広告されていることがわかります。

RP/0/RP0/CPU0:1-PE01#show bgp vpnv4 unicast rd 65002:100 labels

(snip)

Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop        Rcvd Label      Local Label
Route Distinguisher: 65002:100
Route Distinguisher Version: 525
*>i192.168.4.0/24     10.255.1.4      524280          nolabel
* i                   10.255.1.4      524278          nolabel

Processed 1 prefixes, 2 paths

vrf-200 も同じです。

RP/0/RP0/CPU0:1-PE01#show bgp vpnv4 unicast rd 65002:200 labels

(snip)

Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop        Rcvd Label      Local Label
Route Distinguisher: 65002:200
Route Distinguisher Version: 524
* i192.168.14.0/24    10.255.1.4      524279          nolabel
*>i                   10.255.1.4      524277          nolabel

Processed 1 prefixes, 2 paths

1-PE02 と 1-PE03 の vrf-100 と vrf-200 でも同様の経路が確認できます。

3. traceroute による VPN の通信経路確認

PE から ASBR 間 next-hop が選択できているか確認するため、 traceroute コマンドを実行します。

1-PE01 vrf-100 -> 1-PE04 vrf-100

1-PE01 の vrf-100 から 1-PE04 の vrf-100 に対して traceroute を実行します。 結果、AS65002 へ直接転送されました。 また、1-PE02 と 1-PE03 の vrf-100 でも同様の結果となりました。

RP/0/RP0/CPU0:1-PE01#traceroute 192.168.4.254 vrf 100
Fri Jan 26 10:19:06.080 JST

Type escape sequence to abort.
Tracing the route to 192.168.4.254

 1  10.100.1.1 [MPLS: Labels 16004/524280 Exp 0] 4 msec  3 msec  3 msec
 2  10.100.1.2 [MPLS: Label 36 Exp 0] 3 msec  3 msec  3 msec
 3  192.168.4.254 3 msec  3 msec  4 msec

1-PE01 vrf-200 -> 1-PE04 vrf-200

1-PE01 の vrf-200 から 1-PE04 の vrf-200 に対して traceroute を実行します。 結果、AS65003 を経由し AS65002 へ転送されました。 また、1-PE02 と 1-PE03 の vrf-200 でも同様の結果となりました。

RP/0/RP0/CPU0:1-PE01#traceroute 192.168.14.254 vrf 200
Fri Jan 26 10:19:10.027 JST

Type escape sequence to abort.
Tracing the route to 192.168.14.254

 1  10.100.2.1 [MPLS: Labels 16004/524277 Exp 0] 3 msec  2 msec  2 msec
 2   *  *  *
 3  10.100.3.1 [MPLS: Label 37 Exp 0] 4 msec  3 msec  4 msec
 4  192.168.14.254 4 msec  3 msec  3 msec

(2) の検証

(2) は下記のトポロジーで検証します。 なお (1) と検証時期が異なるため、環境が少し違います。

各ルーターのバージョンは下記の通りです。

  • 2-PE01、2-ASBR01、2-ASBR02、2-ASBR03、2-PE04: IOS XR 7.9.2
  • 2-PE02: SR OS 23.3.R3
  • 2-PE03: Junos OS 22.3R1.11

検証の手順は下記の通りです。

  1. EPE ラベルを生成する設定
  2. BGP-LU の設定
  3. ルートポリシーの設定
  4. PE での EPE ラベル確認
  5. traceroute による VPN の通信経路確認

1. EPE ラベルを生成する設定

Egress Peer に対して EPE ラベルを生成するため、2-ASBR01 に下記を設定します。

router bgp 65001
 neighbor 10.100.1.2
  egress-engineering
  peer-node-sid index 100
 !
 neighbor 10.100.2.2
  egress-engineering
  peer-node-sid index 200
 !
!
mpls static
 interface GigabitEthernet0/0/0/2
 !
 interface GigabitEthernet0/0/0/3
 !
!

生成された EPE ラベルは下記のコマンドで確認できます。

RP/0/RP0/CPU0:2-ASBR01#show bgp egress-engineering
Mon Dec  4 19:46:30.145 JST

 Egress Engineering Object: 10.100.1.2/32 (0x7f38b4250e28)
       EPE Type: Peer
        Nexthop: 10.100.1.2
        Version: 30, rn_version: 30
          Flags: 0x00000026
      Local ASN: 65001
     Remote ASN: 65002
      Local RID: 10.255.1.3
     Remote RID: 10.255.1.3
  Local Address: 10.100.1.1
      First Hop: 10.100.1.2
           NHID: 2
            IFH: 0x1000028
          Label: 15100, Refcount: 4
        rpc_set: 0x7f3858002300, ID: 14

 Egress Engineering Object: 10.100.2.2/32 (0x7f38b4250f20)
       EPE Type: Peer
        Nexthop: 10.100.2.2
        Version: 31, rn_version: 31
          Flags: 0x00000026
      Local ASN: 65001
     Remote ASN: 65003
      Local RID: 10.255.1.3
     Remote RID: 10.255.1.1
  Local Address: 10.100.2.1
      First Hop: 10.100.2.2
           NHID: 3
            IFH: 0x1000020
          Label: 15200, Refcount: 4
        rpc_set: 0x7f3858002570, ID: 15

2. BGP-LU の設定

生成した EPE ラベルを PE に広告するため、2-ASBR01 で BGP-LU を設定します。

router bgp 65001
 address-family ipv4 unicast
  advertise epe-bgp labeled-unicast
  allocate-label all
 !
 neighbor 10.255.1.1
  use neighbor-group ibgp
  address-family ipv4 labeled-unicast
 !
 neighbor 10.255.1.2
  use neighbor-group ibgp
  address-family ipv4 labeled-unicast
 !
 neighbor 10.255.1.4
  use neighbor-group ibgp
  address-family ipv4 labeled-unicast

下記は 2-PE01 における BGP-LU の設定です。 本記事では紹介していませんが、2-PE02 と 2-PE03 についても同じ内容を設定します。

router bgp 65001
 address-family ipv4 unicast
  allocate-label all
 !
 neighbor 10.255.1.3
  use neighbor-group ibgp
  address-family ipv4 labeled-unicast

3. ルートポリシーの設定

経路を選択するため、ルートポリシーを設定します。 設定は (1) と同じなので省略します。 トラフィックの流れは下記の通りです。

4. PE での EPE ラベル確認

2-ASBR01 で生成された EPE ラベルが BGP-LU で PE に広告されているか確認します。

2-PE01 で下記のコマンドを実行すると、 2-ASBR01 から EPE ラベルが広告されていることがわかります。

RP/0/RP0/CPU0:2-PE01#show bgp ipv4 labeled-unicast 10.100.1.2/32
Mon Dec  4 20:08:01.877 JST
BGP routing table entry for 10.100.1.2/32
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                   3            3
Last Modified: Dec  4 19:57:00.035 for 00:11:01
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    10.255.1.3 (metric 20) from 10.255.1.3 (10.255.1.3)
      Received Label 15100
      Origin IGP, localpref 100, valid, internal, best, group-best, labeled-unicast
      Received Path ID 0, Local Path ID 1, version 3

RP/0/RP0/CPU0:2-PE01#show bgp ipv4 labeled-unicast 10.100.2.2/32
Mon Dec  4 20:07:41.067 JST
BGP routing table entry for 10.100.2.2/32
Versions:
  Process           bRIB/RIB  SendTblVer
  Speaker                   2            2
Last Modified: Dec  4 19:57:00.035 for 00:10:41
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    10.255.1.3 (metric 20) from 10.255.1.3 (10.255.1.3)
      Received Label 15200
      Origin IGP, localpref 100, valid, internal, best, group-best, labeled-unicast
      Received Path ID 0, Local Path ID 1, version 2

また、vrf-100 と vrf-200 の経路を確認すると、 VPN ラベルを付与する経路の次に、EPE ラベルを付与する経路が選択されることを確認できます。

RP/0/RP0/CPU0:2-PE01#show route vrf 100

(snip)

C    192.168.1.0/24 is directly connected, 13w5d, GigabitEthernet0/0/0/1
L    192.168.1.254/32 is directly connected, 13w5d, GigabitEthernet0/0/0/1
B    192.168.2.0/24 [200/0] via 10.255.1.2 (nexthop in vrf default), 1d01h
B    192.168.2.254/32 [200/0] via 10.255.1.2 (nexthop in vrf default), 1d01h
B    192.168.3.0/24 [200/0] via 10.100.1.2 (nexthop in vrf default), 03:25:39

(snip)

RP/0/RP0/CPU0:2-PE01#show route vrf 200

(snip)

C    192.168.11.0/24 is directly connected, 13w4d, GigabitEthernet0/0/0/2
L    192.168.11.254/32 is directly connected, 13w4d, GigabitEthernet0/0/0/2
B    192.168.12.0/24 [200/0] via 10.255.1.2 (nexthop in vrf default), 00:01:45
B    192.168.12.254/32 [200/0] via 10.255.1.2 (nexthop in vrf default), 00:01:45
B    192.168.13.0/24 [200/0] via 10.100.2.2 (nexthop in vrf default), 00:03:15

(snip)

2-PE02 と 2-PE03 でも同じ情報が広告されています。

5. traceroute による VPN の通信経路確認

PE から ASBR 間 next-hop が選択できているか確認するため、traceroute コマンドを実行します。

2-PE01 vrf-100 -> 2-PE04 vrf-100

2-PE01 の vrf-100 から 2-PE04 の vrf-100 に対して traceroute を実行します。 結果、AS65002 へ直接転送されました。 また、2-PE02 と 2-PE03 の vrf-100 でも同様の結果となりました。

RP/0/RP0/CPU0:2-PE01#traceroute 192.168.3.254 vrf 100
Tue Dec  5 21:31:08.445 JST

Type escape sequence to abort.
Tracing the route to 192.168.3.254

 1  10.1.1.2 [MPLS: Labels 15100/24007 Exp 0] 3 msec  2 msec  2 msec
 2  10.100.1.2 [MPLS: Label 24007 Exp 0] 3 msec  2 msec  2 msec
 3  10.1.1.1 4 msec *  4 msec

2-PE01 vrf-200 -> 2-PE04 vrf-200

2-PE01 の vrf-200 から 2-PE04 の vrf-200 に対して traceroute を実行します。 結果、AS65003 を経由し AS65002 へ転送されました。 また、2-PE02 と 2-PE03 の vrf-200 でも同様の結果となりました。

RP/0/RP0/CPU0:2-PE01#traceroute 192.168.13.254 vrf 200
Tue Dec  5 21:31:26.660 JST

Type escape sequence to abort.
Tracing the route to 192.168.13.254

 1  10.1.1.2 [MPLS: Labels 15200/32004 Exp 0] 3 msec  2 msec  2 msec
 2  10.100.2.2 [MPLS: Label 32004 Exp 0] 3 msec  3 msec  2 msec
 3  10.100.3.1 [MPLS: Label 24009 Exp 0] 2 msec  2 msec  2 msec
 4  10.1.1.1 4 msec  *  4 msec

まとめ

本記事では、Multi-AS の SR-MPLS + VPNv4 環境で AS 間での TE を実現するため、 ASBR 間 next-hop を PE で選択する方法と検証結果を紹介しました。

(1) の方法では、ASBR 間 next-hop ごとに受信した NLRI 単位で経路に異なる VPN ラベルを生成し、PE に広告できました。 こちらは Nokia ASBR を使用し確認しました。

(2) の方法では、まず自 AS の ASBR で Egress Peer に対応する EPE ラベルを生成し、BGP-LU で PE に広告しました。 また、対向 AS の ASBR から広告される VPN ラベルを付与する経路の next-hop を書き換えずに PE へ広告しました。 結果、PE で対向 AS の ASBR を選択できるようになり、自 AS の ASBR では EPE ラベルを処理するだけでよくなりました。 こちらは Cisco ASBR を使用し確認しました。

以上の方法に加えて、Cisco/Juniper/Nokia PE でルートポリシーを設定し、 選択したい VPN 経路の weight を大きくすることにより、PE から次に経由する AS を選択できました。

© NTT Communications Corporation All Rights Reserved.