こんにちは。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つの原因がありました。
- IPv6が有効化」されておらず、IS-ISのNeighborが上がっていなかった。
- VRFに対してLocator異なるLocatorが割り当てられていた。
- 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が通るようになります