メインコンテンツへスキップ
  1. ネットワーク 記事一覧/
  2. MPLS記事一覧/

MPLS TEトンネルへのトラフィック誘導

目次

MPLS TEトンネルへのトラフィック誘導

MPLS TEのトンネルは、Upになっただけではトラフィックを運びません。経路表でトンネルが次ホップに選ばれて、はじめてパケットが入ります。トンネルにトラフィックを載せる3つの方法(autoroute announce、forwarding adjacency、スタティックルート)を解説し、IOS XR(XRd)のラボでどのルータの経路表が変わるかを確かめます。トンネルがどの経路を通るかはMPLS TEのCSPFと経路の制約で解説しています。

3つの誘導方法

方法 仕組み 経路表が変わるルータ
autoroute announce head-endが自分のSPFでトンネルを次ホップとして使う(IGPショートカット) head-endだけ
forwarding adjacency トンネルをIGPのリンクとして広告する エリア内の全ルータ
スタティックルート 指定した宛先だけをトンネルに向ける head-endだけ(指定した宛先のみ)

autoroute announce

RFC 3906は、head-endがSPFの途中でトンネルのtail-endに行き着いたとき、トンネルを次ホップにする方法を示しています。結果として、tail-endへのトラフィックだけでなく、tail-endより下流のノードへのトラフィックもトンネルを通ります。 tail-endより手前のノードは対象外です。

トンネルは広告されないので、ほかのルータは何も知りません。メトリックはtail-endまでのIGPのコストを引き継ぐので、経路表のメトリックは変わらず、次ホップだけがトンネルになります。

forwarding adjacency

トンネルをIGPのリンクとして広告し、エリア内の全ルータのSPFに入れます。この考え方はRFC 4206でforwarding adjacency(FA)として定められています。

  • OSPFではRouter-LSAにpoint-to-pointのリンクとして載ります。ルーティング隣接(Hello)はトンネル上に張りません
  • IGPのリンクは双方向でなければSPFに使われないので、逆向きのトンネルにも同じ設定が要ります
  • IOS XRはFAのリンクをメトリック1で広告します(forwarding-adjacencymetricで変えられます)。物理リンクより小さいので、ほかのルータのトラフィックもhead-endに引き寄せられます

シスコのIOS XRの設定ガイドは、FAに対応するIGPとしてIS-ISを挙げています。この記事の検証(XRd 26.1.1)ではOSPFでもRouter-LSAに載り、経路計算に使われました。

スタティックルート

宛先を指定してトンネルに向けます。管理距離が1なのでIGPの経路より優先され、変わるのは指定した宛先だけです。

VPNのトラフィックはBGPネクストホップの経路に従う

VPNの経路(VRFのプレフィックス)は、BGPのネクストホップ(相手PEのLoopback)で再帰的に解決されます。PE2のLoopback(9.9.9.9/32)への経路がトンネルを向けば、そのネクストホップを持つVPNの経路はすべてトンネルを通ります。 VRFのプレフィックスを個別にトンネルへ向ける必要はありません。

検証構成

PE1とPE2の間に、ホップ数の同じ3経路があります。IGPの最短は中ルートです。トンネル(PE1 → PE2)はaffinityで下ルートに固定しました。 トンネルに載ったかどうかが、CE1 → CE2のtracerouteに出るPの名前で分かります。

ルータ Lo0 役割
CE1 / CE2 1.1.1.1 / 10.10.10.10 AS 65101 / AS 65102(VRF CUST-A
PE1 2.2.2.2 head-end
P1 / P2 3.3.3.3 / 4.4.4.4 上ルート(OSPFコスト30/リンク)
P3 / P4 5.5.5.5 / 6.6.6.6 中ルート(10/リンク、IGPの最短)
P5 / P6 7.7.7.7 / 8.8.8.8 下ルート(20/リンク、トンネルが通る
PE2 9.9.9.9 tail-end、CE2の経路のBGPネクストホップ

検証の全体像

STEP 操作 確かめること
0 トンネルを作る(下ルート、誘導なし) トンネルはUpだが、CE1 → CE2は中ルートのまま
1 autoroute announce PE1の経路表だけが変わる。tail-endより先の宛先もトンネル経由になる
2 autorouteを外し、両方向のトンネルにforwarding-adjacency Router-LSAにPE1 - PE2のリンクが載り、P1・P3・P5の経路も変わる
3 FAを外し、9.9.9.9/32のスタティックルートをトンネルへ BGPネクストホップだけでVPNが追従する。ほかのルータは元に戻る
4 撤去(最終状態) STEP 0と同じに戻る

STEP 0:トンネルはUpでも使われない

STEP 0 PE1にcommitした設定
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 08:29:50.770 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
 ipv4 unnumbered Loopback0
 destination 9.9.9.9
 record-route
 affinity 0x2 mask 0x2
 path-option 10 dynamic
!
end
STEP 0 PE1 show mpls traffic-eng tunnels(経路)
  Path info (OSPF 1 area 0):
  Hop0: 10.2.7.7
  Hop1: 10.7.8.8
  Hop2: 10.8.9.9
  Hop3: 9.9.9.9

トンネルは下ルート(P5 → P6)でUpです。しかしCE2の経路のネクストホップ9.9.9.9は、IGPの中ルートで解決されています。

STEP 0 PE1 show cef vrf CUST-A 192.168.2.0/24 detail(抜粋)
   via 9.9.9.9/32, 3 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0x8856e168 0x0]
    recursion-via-/32
    next hop VRF - 'default', table - 0xe0000000
    next hop 9.9.9.9/32 via 24013/0/21
     next hop 10.2.5.5/32 GigabitEthernet0/0/0/2 labels imposed {24013 24013}
STEP 0 CE1 traceroute 192.168.2.1
RP/0/RP0/CPU0:CE1#traceroute 192.168.2.1 source 192.168.1.1
Sun Sep 13 08:36:58.683 UTC

Type escape sequence to abort.
Tracing the route to 192.168.2.1

 1  10.1.2.2 6 msec  4 msec  31 msec 
 2  10.2.5.5 [MPLS: Labels 24013/24013 Exp 0] 18 msec  17 msec  22 msec 
 3  10.5.6.6 [MPLS: Labels 24013/24013 Exp 0] 18 msec  16 msec  19 msec 
 4  10.6.9.9 [MPLS: Label 24013 Exp 0] 18 msec  16 msec  32 msec 
 5  10.9.10.10 23 msec  *  16 msec 

CE1 → CE2はP3・P4を通っています。ラベルは2段とも24013で、外側がLDP、内側がVPNのラベルです。

STEP 1:autoroute announce

STEP 1 PE1にcommitした設定
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 08:39:22.638 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
 autoroute announce
 !
!
end
STEP 1 PE1 show route(Loopbackの経路、抜粋)
O    3.3.3.3/32 [110/31] via 10.2.3.3, 00:25:51, GigabitEthernet0/0/0/1
O    4.4.4.4/32 [110/61] via 9.9.9.9, 00:05:21, tunnel-te0
                [110/61] via 10.2.3.3, 00:05:21, GigabitEthernet0/0/0/1
O    5.5.5.5/32 [110/11] via 10.2.5.5, 00:25:58, GigabitEthernet0/0/0/2
O    6.6.6.6/32 [110/21] via 10.2.5.5, 00:25:58, GigabitEthernet0/0/0/2
O    7.7.7.7/32 [110/21] via 10.2.7.7, 00:25:59, GigabitEthernet0/0/0/3
O    8.8.8.8/32 [110/41] via 10.2.7.7, 00:25:59, GigabitEthernet0/0/0/3
O    9.9.9.9/32 [110/31] via 9.9.9.9, 00:05:21, tunnel-te0

9.9.9.9/32の次ホップがtunnel-te0になりました。 メトリックは31のままで、次ホップだけが変わっています。PE2の先にあるP2のLoopback(4.4.4.4/32)にもtunnel-te0が加わり、上ルートとの2本のECMPになりました。tail-endより下流の宛先もトンネルを使うということです。一方、トンネルの途中にあるP5(7.7.7.7)・P6(8.8.8.8)と、中ルートのP4(6.6.6.6)は物理インタフェースのままです。

STEP 1 PE1 show cef vrf CUST-A 192.168.2.0/24 detail(抜粋)
   via 9.9.9.9/32, 3 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0x8856e168 0x0]
    recursion-via-/32
    next hop VRF - 'default', table - 0xe0000000
    next hop 9.9.9.9/32 via 24013/0/21
     next hop 9.9.9.9/32 tunnel-te0   labels imposed {ImplNull 24013}

VPNの経路も、ネクストホップ9.9.9.9/32を通じてトンネルで解決されました。外側のラベルはImplNullで、トンネルのラベルは出力インタフェース(tunnel-te0)側で積まれます。

ほかのルータの経路表は変わっていません。

STEP 1 P1 show route 9.9.9.9/32
RP/0/RP0/CPU0:P1#show route 9.9.9.9/32
Sun Sep 13 08:40:10.494 UTC

Routing entry for 9.9.9.9/32
  Known via "ospf 1", distance 110, metric 61, type intra area
  Installed Sep 13 08:21:51.141 for 00:18:19
  Routing Descriptor Blocks
    10.2.3.2, from 9.9.9.9, via GigabitEthernet0/0/0/0
      Route metric is 61
    10.3.4.4, from 9.9.9.9, via GigabitEthernet0/0/0/1
      Route metric is 61
  No advertising protos. 
STEP 1 P3 show route 9.9.9.9/32
RP/0/RP0/CPU0:P3#show route 9.9.9.9/32
Sun Sep 13 08:41:42.196 UTC

Routing entry for 9.9.9.9/32
  Known via "ospf 1", distance 110, metric 21, type intra area
  Installed Sep 13 08:21:51.143 for 00:19:51
  Routing Descriptor Blocks
    10.5.6.6, from 9.9.9.9, via GigabitEthernet0/0/0/1
      Route metric is 21
  No advertising protos. 
STEP 1 P5 show route 9.9.9.9/32
RP/0/RP0/CPU0:P5#show route 9.9.9.9/32
Sun Sep 13 08:43:11.597 UTC

Routing entry for 9.9.9.9/32
  Known via "ospf 1", distance 110, metric 41, type intra area
  Installed Sep 13 08:21:49.530 for 00:21:22
  Routing Descriptor Blocks
    10.7.8.8, from 9.9.9.9, via GigabitEthernet0/0/0/1
      Route metric is 41
  No advertising protos. 
STEP 1 CE1 traceroute 192.168.2.1
RP/0/RP0/CPU0:CE1#traceroute 192.168.2.1 source 192.168.1.1
Sun Sep 13 08:46:46.179 UTC

Type escape sequence to abort.
Tracing the route to 192.168.2.1

 1  10.1.2.2 6 msec  16 msec  5 msec 
 2  10.2.7.7 [MPLS: Labels 24014/24013 Exp 0] 18 msec  15 msec  15 msec 
 3  10.7.8.8 [MPLS: Labels 24014/24013 Exp 0] 25 msec  16 msec  43 msec 
 4  10.8.9.9 [MPLS: Label 24013 Exp 0] 16 msec  16 msec  18 msec 
 5  10.9.10.10 17 msec  *  17 msec 

CE1 → CE2が下ルート(P5・P6)に変わりました。外側のラベル24014がトンネル(RSVP)、内側の24013がVPNのラベルです。

STEP 2:forwarding adjacency

FAは両端に設定します。PE2には逆向き(PE2 → PE1)のトンネルを作り、同じく下ルートに固定しました。

STEP 2 PE1にcommitした設定
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 08:49:01.869 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
 no autoroute announce
 forwarding-adjacency
 !
!
end
STEP 2 PE2にcommitした設定
RP/0/RP0/CPU0:PE2#show configuration commit changes last 1
Sun Sep 13 08:48:56.033 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
 ipv4 unnumbered Loopback0
 destination 2.2.2.2
 record-route
 affinity 0x2 mask 0x2
 forwarding-adjacency
 !
 path-option 10 dynamic
!
end

PE1のRouter-LSAの先頭に、PE2(9.9.9.9)へのpoint-to-pointのリンクがメトリック1で加わりました。

STEP 2 PE1 show ospf database router self-originate
RP/0/RP0/CPU0:PE1#show ospf database router self-originate
Sun Sep 13 08:55:46.906 UTC


            OSPF Router with ID (2.2.2.2) (Process ID 1)

		Router Link States (Area 0)

  LS age: 239
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 2.2.2.2
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000007
  Checksum: 0xb2a9
  Length: 120
   Number of Links: 8

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 9.9.9.9
     (Link Data) Router Interface address: 0.0.0.9
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 2.2.2.2
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 3.3.3.3
     (Link Data) Router Interface address: 10.2.3.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 30

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.2.3.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 30

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 5.5.5.5
     (Link Data) Router Interface address: 10.2.5.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 10

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.2.5.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 10

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 7.7.7.7
     (Link Data) Router Interface address: 10.2.7.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 20

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.2.7.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 20

添付のPE1 - P3間のキャプチャーのNo.1777が、このRouter-LSAを運んだLS Updateです。

STEP 2 No.1777 LS Update(PE1 → P3、tshark -V 抜粋)
Internet Protocol Version 4, Src: 10.2.5.2, Dst: 224.0.0.5
        Message Type: LS Update (4)
        Source OSPF Router: 2.2.2.2
            LS Type: Router-LSA (1)
            Link State ID: 2.2.2.2
            Advertising Router: 2.2.2.2
            Sequence Number: 0x80000006
            Number of Links: 8
            Type: PTP      ID: 9.9.9.9         Data: 0.0.0.9         Metric: 1
            Type: Stub     ID: 2.2.2.2         Data: 255.255.255.255 Metric: 1
            Type: PTP      ID: 3.3.3.3         Data: 10.2.3.2        Metric: 30
            Type: Stub     ID: 10.2.3.0        Data: 255.255.255.0   Metric: 30
            Type: PTP      ID: 5.5.5.5         Data: 10.2.5.2        Metric: 10
            Type: Stub     ID: 10.2.5.0        Data: 255.255.255.0   Metric: 10
            Type: PTP      ID: 7.7.7.7         Data: 10.2.7.2        Metric: 20
            Type: Stub     ID: 10.2.7.0        Data: 255.255.255.0   Metric: 20
上のtshark出力のパケット(No.1777 LS Update)のpcapをダウンロード

PE1の経路表では、P2・P4・P6のLoopbackまでトンネル経由になりました。PE2の先へのコストがメトリック1で済むからです。

STEP 2 PE1 show route(Loopbackの経路、抜粋)
O    3.3.3.3/32 [110/31] via 10.2.3.3, 00:36:47, GigabitEthernet0/0/0/1
O    4.4.4.4/32 [110/32] via 0.0.0.0, 00:06:37, tunnel-te0
O    5.5.5.5/32 [110/11] via 10.2.5.5, 00:36:54, GigabitEthernet0/0/0/2
O    6.6.6.6/32 [110/12] via 0.0.0.0, 00:06:37, tunnel-te0
O    7.7.7.7/32 [110/21] via 10.2.7.7, 00:36:55, GigabitEthernet0/0/0/3
O    8.8.8.8/32 [110/22] via 0.0.0.0, 00:06:37, tunnel-te0
O    9.9.9.9/32 [110/2] via 0.0.0.0, 00:06:37, tunnel-te0

ほかのルータの経路表も変わりました。 3台とも9.9.9.9/32の次ホップがPE1を向いています。

STEP 2 P1 show route 9.9.9.9/32
RP/0/RP0/CPU0:P1#show route 9.9.9.9/32
Sun Sep 13 08:51:02.825 UTC

Routing entry for 9.9.9.9/32
  Known via "ospf 1", distance 110, metric 32, type intra area
  Installed Sep 13 08:49:01.460 for 00:02:01
  Routing Descriptor Blocks
    10.2.3.2, from 9.9.9.9, via GigabitEthernet0/0/0/0
      Route metric is 32
  No advertising protos. 
STEP 2 P3 show route 9.9.9.9/32
RP/0/RP0/CPU0:P3#show route 9.9.9.9/32
Sun Sep 13 08:52:36.673 UTC

Routing entry for 9.9.9.9/32
  Known via "ospf 1", distance 110, metric 12, type intra area
  Installed Sep 13 08:49:01.460 for 00:03:35
  Routing Descriptor Blocks
    10.2.5.2, from 9.9.9.9, via GigabitEthernet0/0/0/0
      Route metric is 12
  No advertising protos. 
STEP 2 P5 show route 9.9.9.9/32
RP/0/RP0/CPU0:P5#show route 9.9.9.9/32
Sun Sep 13 08:54:07.791 UTC

Routing entry for 9.9.9.9/32
  Known via "ospf 1", distance 110, metric 22, type intra area
  Installed Sep 13 08:49:01.460 for 00:05:06
  Routing Descriptor Blocks
    10.2.7.2, from 9.9.9.9, via GigabitEthernet0/0/0/0
      Route metric is 22
  No advertising protos. 

P3はSTEP 1までP4経由(メトリック21)でしたが、PE1に戻ってトンネルに入る経路(10 + 1 + 1 = 12)のほうが短くなりました。P5のtracerouteは、PE1に上がってからトンネルで自分自身(10.2.7.7)を通り直しています。

STEP 2 P5 traceroute 9.9.9.9
RP/0/RP0/CPU0:P5#traceroute 9.9.9.9 source 7.7.7.7
Sun Sep 13 08:54:26.626 UTC

Type escape sequence to abort.
Tracing the route to 9.9.9.9

 1  10.2.7.2 [MPLS: Label 24013 Exp 0] 15 msec  13 msec  14 msec 
 2  10.2.7.7 [MPLS: Label 24014 Exp 0] 27 msec  12 msec  14 msec 
 3  10.7.8.8 [MPLS: Label 24014 Exp 0] 14 msec  13 msec  13 msec 
 4  10.8.9.9 14 msec  *  16 msec 

STEP 3:スタティックルート

STEP 3 PE1にcommitした設定
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 08:59:58.517 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface tunnel-te0
 no forwarding-adjacency
!
router static
 address-family ipv4 unicast
  9.9.9.9/32 tunnel-te0
 !
!
end
STEP 3 PE2にcommitした設定
RP/0/RP0/CPU0:PE2#show configuration commit changes last 1
Sun Sep 13 08:59:52.143 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
no interface tunnel-te0
end

router staticはプレフィックス単位で追加しています。

STEP 3 PE1 show route 9.9.9.9/32
RP/0/RP0/CPU0:PE1#show route 9.9.9.9/32
Sun Sep 13 09:05:31.342 UTC

Routing entry for 9.9.9.9/32
  Known via "static", distance 1, metric 0 (connected)
  Installed Sep 13 08:59:57.812 for 00:05:33
  Routing Descriptor Blocks
    directly connected, via tunnel-te0
      Route metric is 0
  No advertising protos. 
STEP 3 PE1 show route(Loopbackの経路、抜粋)
O    3.3.3.3/32 [110/31] via 10.2.3.3, 00:46:39, GigabitEthernet0/0/0/1
O    4.4.4.4/32 [110/61] via 10.2.3.3, 00:05:39, GigabitEthernet0/0/0/1
                [110/61] via 10.2.5.5, 00:05:39, GigabitEthernet0/0/0/2
O    5.5.5.5/32 [110/11] via 10.2.5.5, 00:46:46, GigabitEthernet0/0/0/2
O    6.6.6.6/32 [110/21] via 10.2.5.5, 00:05:39, GigabitEthernet0/0/0/2
O    7.7.7.7/32 [110/21] via 10.2.7.7, 00:46:47, GigabitEthernet0/0/0/3
O    8.8.8.8/32 [110/41] via 10.2.7.7, 00:05:39, GigabitEthernet0/0/0/3
S    9.9.9.9/32 is directly connected, 00:05:33, tunnel-te0

9.9.9.9/32だけがスタティックでtunnel-te0を向き、ほかのLoopbackはIGPの経路に戻りました。VPNの経路は引き続きトンネルで解決されます。

STEP 3 PE1 show cef vrf CUST-A 192.168.2.0/24 detail(抜粋)
   via 9.9.9.9/32, 3 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0x8856e168 0x0]
    recursion-via-/32
    next hop VRF - 'default', table - 0xe0000000
    next hop 9.9.9.9/32 via 24013/0/21
     next hop 0.0.0.0/32 tunnel-te0   labels imposed {ImplNull 24013}

FAを外したので、PE1のRouter-LSAからPE2へのリンクが消えました(No.2411)。

STEP 3 No.2411 LS Update(PE1 → P3、tshark -V 抜粋)
Internet Protocol Version 4, Src: 10.2.5.2, Dst: 224.0.0.5
        Message Type: LS Update (4)
        Source OSPF Router: 2.2.2.2
            LS Type: Router-LSA (1)
            Link State ID: 2.2.2.2
            Advertising Router: 2.2.2.2
            Sequence Number: 0x80000008
            Number of Links: 7
            Type: Stub     ID: 2.2.2.2         Data: 255.255.255.255 Metric: 1
            Type: PTP      ID: 3.3.3.3         Data: 10.2.3.2        Metric: 30
            Type: Stub     ID: 10.2.3.0        Data: 255.255.255.0   Metric: 30
            Type: PTP      ID: 5.5.5.5         Data: 10.2.5.2        Metric: 10
            Type: Stub     ID: 10.2.5.0        Data: 255.255.255.0   Metric: 10
            Type: PTP      ID: 7.7.7.7         Data: 10.2.7.2        Metric: 20
            Type: Stub     ID: 10.2.7.0        Data: 255.255.255.0   Metric: 20
上のtshark出力のパケット(No.2411 LS Update)のpcapをダウンロード
STEP 3 P3 show route 9.9.9.9/32
RP/0/RP0/CPU0:P3#show route 9.9.9.9/32
Sun Sep 13 09:02:27.028 UTC

Routing entry for 9.9.9.9/32
  Known via "ospf 1", distance 110, metric 21, type intra area
  Installed Sep 13 08:59:51.374 for 00:02:35
  Routing Descriptor Blocks
    10.5.6.6, from 9.9.9.9, via GigabitEthernet0/0/0/1
      Route metric is 21
  No advertising protos. 
STEP 3 CE1 traceroute 192.168.2.1
RP/0/RP0/CPU0:CE1#traceroute 192.168.2.1 source 192.168.1.1
Sun Sep 13 09:07:32.982 UTC

Type escape sequence to abort.
Tracing the route to 192.168.2.1

 1  10.1.2.2 23 msec  6 msec  5 msec 
 2  10.2.7.7 [MPLS: Labels 24014/24013 Exp 0] 63 msec  17 msec  17 msec 
 3  10.7.8.8 [MPLS: Labels 24014/24013 Exp 0] 19 msec  18 msec  18 msec 
 4  10.8.9.9 [MPLS: Label 24013 Exp 0] 18 msec  18 msec  17 msec 
 5  10.9.10.10 19 msec  *  16 msec 

P3はP4経由に戻り、CE1 → CE2は下ルートのままです。

STEP 4:撤去

STEP 4 PE1にcommitした設定
RP/0/RP0/CPU0:PE1#show configuration commit changes last 1
Sun Sep 13 09:09:46.338 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
no interface tunnel-te0
router static
 address-family ipv4 unicast
  no 9.9.9.9/32 tunnel-te0
 !
!
end
STEP 4 CE1 traceroute 192.168.2.1
RP/0/RP0/CPU0:CE1#traceroute 192.168.2.1 source 192.168.1.1
Sun Sep 13 09:17:09.673 UTC

Type escape sequence to abort.
Tracing the route to 192.168.2.1

 1  10.1.2.2 18 msec  5 msec  5 msec 
 2  10.2.5.5 [MPLS: Labels 24013/24013 Exp 0] 16 msec  17 msec  17 msec 
 3  10.5.6.6 [MPLS: Labels 24013/24013 Exp 0] 67 msec  18 msec  17 msec 
 4  10.6.9.9 [MPLS: Label 24013 Exp 0] 19 msec  32 msec  17 msec 
 5  10.9.10.10 18 msec  *  20 msec 

CE1 → CE2は中ルートに戻りました。

3つの方法の比較

STEP 方法 PE1の9.9.9.9/32 P3の9.9.9.9/32 CE1 → CE2
0 なし 中ルート(Gi0/0/0/2) P4経由
1 autoroute announce tunnel-te0 P4経由
2 forwarding adjacency tunnel-te0(メトリック2) PE1経由
3 スタティックルート tunnel-te0(static) P4経由
4 なし 中ルート P4経由

設計上の注意

  • autorouteとスタティックルートは片方向です。 戻りのトラフィックを載せるには、PE2にもトンネルと設定が要ります
  • FAはトラフィックを引き寄せます。 メトリック1のリンクが増えるので、P5のように遠回りするルータが出ます。FAのメトリックは実際の経路のコストに合わせて設定します
  • FAは両方向のトンネルがそろって初めてSPFに使われます
  • VPNを載せるなら、トンネルに向ける宛先は相手PEのLoopback(BGPネクストホップ)です

検証Configおよびshow結果

各STEPで10台すべてから、次の種類をルータごとに分けて取得しています。検証Configはこの..._run.txtです(最終状態は最後のSTEPのもの)。

ファイル 内容
..._show.txt show version / show route / show ospf database router / show mpls traffic-eng tunnels / show cef vrf CUST-A(PEのみ)ほか
..._log.txt そのSTEPの範囲だけに絞ったshow logging
..._run.txt そのSTEP時点のshow running-config(=そのSTEPの検証Config)
..._ping.txt そのSTEPのping(50発、timeout 1秒)とtraceroute
..._oam.txt ping / traceroute mpls traffic-eng tunnel-te 0ping / traceroute mpls ipv4(PE1・PE2)
..._trace.txt show mpls traffic-eng trace head-end / linkshow rsvp trace signalling(コア8台)
..._commit.cfg そのSTEPで実際にcommitした設定だけ。 設定を変えたルータの分のみ

STEP 0:トンネルを作る(下ルート、誘導なし)

ルータ show出力 syslog running-config ping OAM trace commit
CE1 show log run ping - - -
PE1 show log run ping oam trace cfg
P1 show log run ping - trace -
P2 show log run - - trace -
P3 show log run ping - trace -
P4 show log run - - trace -
P5 show log run ping - trace -
P6 show log run - - trace -
PE2 show log run ping oam trace -
CE2 show log run ping - - -

STEP 1:autoroute announce

ルータ show出力 syslog running-config ping OAM trace commit
CE1 show log run ping - - -
PE1 show log run ping oam trace cfg
P1 show log run ping - trace -
P2 show log run - - trace -
P3 show log run ping - trace -
P4 show log run - - trace -
P5 show log run ping - trace -
P6 show log run - - trace -
PE2 show log run ping oam trace -
CE2 show log run ping - - -

STEP 2:autorouteを外し、両方向のトンネルにforwarding-adjacency

ルータ show出力 syslog running-config ping OAM trace commit
CE1 show log run ping - - -
PE1 show log run ping oam trace cfg
P1 show log run ping - trace -
P2 show log run - - trace -
P3 show log run ping - trace -
P4 show log run - - trace -
P5 show log run ping - trace -
P6 show log run - - trace -
PE2 show log run ping oam trace cfg
CE2 show log run ping - - -

STEP 3:FAを外し、9.9.9.9/32のスタティックルートをトンネルへ

ルータ show出力 syslog running-config ping OAM trace commit
CE1 show log run ping - - -
PE1 show log run ping oam trace cfg
P1 show log run ping - trace -
P2 show log run - - trace -
P3 show log run ping - trace -
P4 show log run - - trace -
P5 show log run ping - trace -
P6 show log run - - trace -
PE2 show log run ping oam trace cfg
CE2 show log run ping - - -

STEP 4:撤去(最終状態)

ルータ show出力 syslog running-config ping OAM trace commit
CE1 show log run ping - - -
PE1 show log run ping oam trace cfg
P1 show log run ping - trace -
P2 show log run - - trace -
P3 show log run ping - trace -
P4 show log run - - trace -
P5 show log run ping - trace -
P6 show log run - - trace -
PE2 show log run ping oam trace -
CE2 show log run ping - - -

PE1から出る3リンク(P1・P3・P5向け)のキャプチャー全体です。全STEPのOSPFとRSVPが入っています。

PE1 - P1間(上ルート)のキャプチャー全体をダウンロード

PE1 - P3間(中ルート)のキャプチャー全体をダウンロード

PE1 - P5間(下ルート)のキャプチャー全体をダウンロード

参考

出典 参照した箇所
RFC 3906 Calculating Interior Gateway Protocol (IGP) Routes Over Traffic Engineering Tunnels 2節(SPFでトンネルのtail-endを次ホップにする。tail-endより下流の宛先もトンネルを通る)、4.1節(絶対メトリックと相対メトリック)
RFC 4206 Label Switched Paths (LSP) Hierarchy with Generalized Multi-Protocol Label Switching (GMPLS) Traffic Engineering (TE) 1節(FAの定義、FAでつながるノードは通常ルーティング隣接を持たない)、3.1.1節(Link Typeはpoint-to-point)
Cisco IOS XR MPLS Configuration Guide「Implementing MPLS Traffic Engineering」 MPLS-TE Forwarding AdjacencyのRestrictions(双方向の設定、対応IGPとしてIS-IS)

FAのメトリック1とOSPFでの動作は、検証機(XRd 26.1.1)での観測です。