JANOG53 NETCON 問題解説 (Level 5-1)

トラシュー

こんにちは。NETCON委員のizuminです。

JANOG53では問題を作成したので解説します!
ここでは私が作成した4問のうちLevel 5-1
その他の3問はこちら。

問題

下記の図のようなSRv6がデータプレーンとなるL3VPNネットワークがあります。

JANOG1 <=> JANOG2
NETCON1 <=> NETCON2
で疎通が取れるようにしてください。

達成条件
・JANOG1 <=> JANOG2でPingによる疎通ができること。
・NETCON1 <=> NETCON2でPingによる疎通ができること。

制約
・AS65000内の通信はIPv6の通信のみ利用可能です。

解説-設定例

RR

interface G0/0/0/0
+ ipv6 enable

P1

interface G0/0/0/0
+ ipv6 enable

PE1

router bgp 65000
 vrf JANOG
  address-family ipv4 unicast
   segment-routing srv6
+   locator LOC1
 
router isis 1
 address-family ipv6 unicast
  segment-routing srv6
+   locator LOC1

PE2

   router bgp 65000
    vrf NETCON
     address-family ipv4 unicast
      segment-routing srv6
+      locator LOC1
-      locator LOC2

解説-概要

この問題では主に3つの原因がありました。

  1. IPv6が有効化」されておらず、IS-ISのNeighborが上がっていなかった。
  2. VRFに対してLocator異なるLocatorが割り当てられていた。
  3. Locatorから割り当てられているSIDがIS-ISで広報されていなかった。

これらを一つ一つ是正することで通信できるようになります。

解説-詳細

今回の問題ではSRv6をデータプレーンとしたL3VPNの構成の問題です。
SRv6はその名の通り、Segment RoutingをIPv6を用いて実現するソースルーティング手法です。
Segment RouintgはIPv6以外でもMPLSのラベルをスタックすることで柔軟な制御を実施することもできますが、SRv6ではIPv6の拡張ヘッダ(SRH)を利用して柔軟な制御が可能です。

今回の問題ではそのようなSRv6にてコンフィグに誤りがあり、正常な通信ができない状態となります。

今回のTopologyを確認してみます。
構成としてはシンプルでAS65001, AS65002はカスタマーサイドとしていて機器が収容されています。
それぞれのASはバックボーンであるAS65000に対してeBGPで接続されており、バックボーンの境界に位置するPEがSRv6のヘッドエンド, エンドポイントとして動作します。
今回の問題はSRv6を利用したL3VPNのため、バックボーンを跨いで経路交換が可能です。L3VPNではVRFやネクストホップ単位で分離することが可能ですが、この問題ではper-VRFで分離しています。

そして、問題を解く上で重要なのはSegmentRoutingを実現するのに必要なSIDを広報するIS-IS,
L3VPNでvpnv4経路を交換するためのBGPとなります。これらの状態が正常かを一つずつ確認することが問題を解く鍵となります。

IPv6の有効化

まず初めに、今回の問題ではPE間でvpnv4経路を交換するためにRRとiBGP接続が必要になります。
RRとiBGPでNeighborを確立するためには各機器のLoopbackに設定されたIPv6アドレスを交換する必要があります。
PE1の設定を見てみます。下記部分に注目してください。Neighborはfd00:ffff:4::1となっています。
show route ipv6で経路を確認しましょう。MGMTのデフォルトしか存在せず、BGPを確立できません。

router bgp 65000
 neighbor fd00:ffff:4::1
  remote-as 65000
  update-source Loopback0
  address-family vpnv4 unicast
   encapsulation-type srv6
  !
 
RP/0/RP0/CPU0:PE1#show route ipv6 fd00:ffff:4::1
 
Routing entry for ::/0
  Known via "static", distance 1, metric 0, candidate default path
  Installed Dec  7 16:15:28.738 for 1d02h
  Routing Descriptor Blocks
    2001:172:20:20::1, via MgmtEth0/RP0/CPU0/0
      Route metric is 0
  No advertising protos.

最初にやるべきことはNeighbor先のIPv6アドレスに疎通することです。なぜRRのLoopbackアドレスが見えていないのか?

router bgp 65000
 neighbor fd00:ffff:4::1
  remote-as 65000
  update-source Loopback0
  address-family vpnv4 unicast
   encapsulation-type srv6
  !
 
RP/0/RP0/CPU0:PE1#show route ipv6 fd00:ffff:4::1
 
Routing entry for ::/0
  Known via "static", distance 1, metric 0, candidate default path
  Installed Dec  7 16:15:28.738 for 1d02h
  Routing Descriptor Blocks
    2001:172:20:20::1, via MgmtEth0/RP0/CPU0/0
      Route metric is 0
  No advertising protos.

RRにログインすると間違いなくLoopbackアドレスはあります。ただおかしなことに、IS-ISで学習した経路がありません。
IS-ISのNeighborを確認するとNeighborが存在しないようです。これはおかしい。

RP/0/RP0/CPU0:RR#show route ipv6
 
Gateway of last resort is 2001:172:20:20::1 to network ::
 
S*   ::/0
      [1/0] via 2001:172:20:20::1, 1d02h, MgmtEth0/RP0/CPU0/0
C    2001:172:20:20::/64 is directly connected,
      1d02h, MgmtEth0/RP0/CPU0/0
L    2001:172:20:20::9/128 is directly connected,
      1d02h, MgmtEth0/RP0/CPU0/0
L    fd00:ffff:4::1/128 is directly connected,
      1d02h, Loopback0
 
RP/0/RP0/CPU0:RR#show isis neighbors
Fri Dec  8 18:55:27.420 UTC
 
IS-IS 1 neighbors:
System Id      Interface        SNPA           State Holdtime Type IETF-NSF

設定を確認するとInterfaceでIPv6がenableされていないことがわかります。
P1側も同様です。P1とRRでIPv6をenableします。

RP/0/RP0/CPU0:RR#show isis interface gigabitEthernet 0/0/0/0
Fri Dec  8 18:56:13.300 UTC
 
GigabitEthernet0/0/0/0      Enabled
  Adjacency Formation:      Disabled (No cfg topology can participate)
  Prefix Advertisement:     Disabled (No cfg topology can participate)
  Bandwidth:                1000000
 
  Circuit Type:             level-1-2
  Media Type:               P2P
  Circuit Number:           0
 
  CLNS I/O
    Protocol State:         Up
    MTU:                    1497
    SNPA:                   aac1.ab0f.2fd9
    Layer-2 Multicast:
      All ISs:              Listening
 
  IPv6 Unicast Topology:    Enabled
    Adjacency Formation:    Disabled (Not up in intf protocol stack)
    Prefix Advertisement:   Disabled (Not up in intf protocol stack)
          Policy (L1/L2):   -/-
    Metric (L1/L2):         10/10
    Metric fallback:
      Bandwidth (L1/L2):    Inactive/Inactive
      Anomaly (L1/L2):      Inactive/Inactive
    Weight (L1/L2):         0/0
    MPLS Max Label Stack:   1/3/7/7 (PRI/BKP/SRTE/SRAT)
    MPLS LDP Sync (L1/L2):  Disabled/Disabled
    FRR (L1/L2):            L1 Not Enabled     L2 Not Enabled
      FRR Type:             None               None
 
  IPv6 Address Family:      Enabled
    Protocol State:         Down (IPv6 absent in intf protocol stack)
    Forwarding Address(es): Unknown (IPv6 absent in intf protocol stack)
    Global Prefix(es):      None (No global addresses are configured)
 
  PME Link Delays and Loss: -

IPv6をenableしたらPE1にRRのLoopbackが聞こえてくるようになりました。Pingも通るようになりました。
BGPの状態も確認します。RRとiBGPが接続できているようです。

RP/0/RP0/CPU0:PE1#show bgp vpnv4 unicast summary
BGP is operating in STANDALONE mode.
 
 
Process       RcvTblVer   bRIB/RIB   LabelVer  ImportVer  SendTblVer  StandbyVer
Speaker             121        121        121        121         121           0
 
Neighbor        Spk    AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down  St/PfxRcd
fd00:ffff:4::1    0 65000    1593    1580      121    0    0 00:01:00          2

LocatorをVRFに割り当てる

ここまでの設定ではまだ疎通ができません。
BGPが上がったのでvpnv4の経路が受信できました。状態を確認します。
VRFが分かれています。ただVRF NETCONだけ経路を受信できていないようです。これはおかしいのでPE2のBGP設定を確認します。

RP/0/RP0/CPU0:PE1#show bgp vpnv4 unicast
 
   Network            Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 65000:10 (default for vrf JANOG)
Route Distinguisher Version: 121
*> 10.0.0.0/30        0.0.0.0                  0         32768 ?
*>i10.0.0.4/30        fd00:ffff:3::1           0    100      0 ?
*> 192.168.1.0/24     10.0.0.2                               0 65001 i
*>i192.168.2.0/24     fd00:ffff:3::1                100      0 65002 i
Route Distinguisher: 65000:20 (default for vrf NETCON)
Route Distinguisher Version: 109
*> 10.0.0.0/30        0.0.0.0                  0         32768 ?
*> 192.168.1.0/24     10.0.0.2                               0 65001 i
 
Processed 6 prefixes, 6 paths

Configを確認するとvrf JANOGのみlocatorが割り当てられています。vrf NETCONにも必要なのでlocatorを割り当てます。
同様にPE1でもvrf NETCONにlocatorが割り当てられていません。割り当てます。

割り当てが完了するとSIDが綺麗に経路が見えるようになります。

Route Distinguisher: 65000:10 (default for vrf JANOG)
Route Distinguisher Version: 109
*>i10.0.0.0/30        fd00:ffff:1::1           0    100      0 ?
*> 10.0.0.4/30        0.0.0.0                  0         32768 ?
*>i192.168.1.0/24     fd00:ffff:1::1                100      0 65001 i
*> 192.168.2.0/24     10.0.0.6                               0 65002 i
Route Distinguisher: 65000:20 (default for vrf NETCON)
Route Distinguisher Version: 105
*>i10.0.0.0/30        fd00:ffff:1::1           0    100      0 ?
*> 10.0.0.4/30        0.0.0.0                  0         32768 ?
*>i192.168.1.0/24     fd00:ffff:1::1                100      0 65001 i
*> 192.168.2.0/24     10.0.0.6                               0 65002 i

SIDの広報

ここまでの設定が完了したのにまだ疎通できません。
一旦SRv6のSIDや経路を確認します。

RP/0/RP0/CPU0:PE2#show route vrf JANOG
Gateway of last resort is not set
 
B    10.0.0.0/30 [200/0] via fd00:ffff:1::1 (nexthop in vrf default), 00:03:12
C    10.0.0.4/30 is directly connected, 1d02h, GigabitEthernet0/0/0/0.10
L    10.0.0.5/32 is directly connected, 1d02h, GigabitEthernet0/0/0/0.10
B    192.168.1.0/24 [200/0] via fd00:ffff:1::1 (nexthop in vrf default), 00:03:12
B    192.168.2.0/24 [20/0] via 10.0.0.6, 00:41:58
RP/0/RP0/CPU0:PE2#show bgp vpnv4 unicast received-sids
 
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 Received Sid
Route Distinguisher: 65000:10 (default for vrf JANOG)
Route Distinguisher Version: 109
*>i10.0.0.0/30 fd00:ffff:1::1 fd00:ffff:1:e000::
*> 10.0.0.4/30 0.0.0.0 NO SRv6 Sid
*>i192.168.1.0/24 fd00:ffff:1::1 fd00:ffff:1:e000::
*> 192.168.2.0/24 10.0.0.6 NO SRv6 Sid
Route Distinguisher: 65000:20 (default for vrf NETCON)
Route Distinguisher Version: 105
*>i10.0.0.0/30 fd00:ffff:1::1 fd00:ffff:1:e002::
*> 10.0.0.4/30 0.0.0.0 NO SRv6 Sid
*>i192.168.1.0/24 fd00:ffff:1::1 fd00:ffff:1:e002::
*> 192.168.2.0/24 10.0.0.6 NO SRv6 Sid

Received Sidを確認します。
SRv6は自分に到達したパケットのdestination Addressを見て転送および処理を実行します。
自身のSIDを確認してみます。

RP/0/RP0/CPU0:PE2#show segment-routing srv6 sid
Fri Dec 8 19:25:03.558 UTC
 
*** Locator: 'LOC1' ***
 
SID Behavior Context Owner State RW
-------------------------- ---------------- -------------------------------- ------------------ ----- --
fd00:ffff:3:: uN (PSP/USD) 'default':3 sidmgr InUse Y
fd00:ffff:3:e000:: uA (PSP/USD) [Gi0/0/0/1, Link-Local]:0 isis-1 InUse Y
fd00:ffff:3:e001:: uDT4 'JANOG' bgp-65000 InUse Y
fd00:ffff:3:e002:: uDT4 'NETCON' bgp-65000 InUse Y

上記のようにSIDがアサインされていることがわかりました。
PE2からPE1のSIDに対して経路があるか確認してみると、PE1のSIDに対するルーティングがないことがわかります。
PE1にてIS-ISでIPv6の経路広報が足りていないようです。
PE2と同様にPE1でもIS-ISでSIDを広報するようにします。
また、アサインしているLoopbackはLOC1の範囲からアサインしています。
Loopbackを/48にアサインし直してもLocator単位で広報されることになって正解となるかも?

ここまでの作業が完了すると無事にPingが通るようになります

コメント

タイトルとURLをコピーしました