JANOG 53 NETCON 問題解説 Level 4-4
JANOG 53 にスタッフ(NETCON委員)として参加させていただきました。 作成した問題について、回答と解説を記載します。
Level 4-4 MPLS sham-link の問題
技術要素
・MPLS
構成解説
・CSR1000v x 3, XRd x 2, linux x 2
問題文
Site-AとSite-BはMPLS網を使用して拠点間通信をしています。MPLS網に障害が発生したときのため、従量課金制のバックアップ用回線を用意して、CE1とCE2を直接接続するリンクを新たに追加したところ、Site-AとSite-B間の通信が平常時もバックアップ用回線を通ってしまうようになりました。なお、CEではバックアップ用回線のOSPF COSTを 100 に設定しています。
Site-AとSite-B間の通信が、通常時はMPLS網を通り、MPLS網が使用できない場合のみバックアップ回線を使用するように、PEの設定を修正してください。 通常時
PC1:~# traceroute -n 192.168.2.100 traceroute to 192.168.2.100 (192.168.2.100), 30 hops max, 46 byte packets 1 192.168.1.1 0.690 ms 0.389 ms 0.388 ms 2 172.16.10.1 0.830 ms 0.653 ms 0.702 ms 3 172.16.20.1 2.080 ms 1.899 ms 1.722 ms 4 172.16.20.2 2.285 ms 1.856 ms 1.919 ms 5 192.168.2.100 1.839 ms 1.873 ms 1.778 ms |
MPLS網障害発生時
PC1:~# traceroute -n 192.168.2.100 traceroute to 192.168.2.100 (192.168.2.100), 30 hops max, 46 byte packets 1 192.168.1.1 0.628 ms 0.417 ms 0.357 ms 2 172.16.100.2 1.064 ms 0.856 ms 0.819 ms 3 192.168.2.100 0.981 ms 0.882 ms 0.830 ms |
【制約】
・CE1/CE2にはログインできません ・本件の解決のため、PE1とPE2のそれぞれにLoopbackインターフェースを1つ作成できます。 ・PBRを使用してはいけません ・MPLS網障害発生時の動作確認には、PE1の G4 を shutdown してください ・参考:CE1/CE2では、初期状態では以下のようになっています
RP/0/RP0/CPU0:CE1#show ospf interface brief Thu Dec 28 06:10:19.232 UTC
* Indicates MADJ interface, (P) Indicates fast detect hold down state
Interfaces for OSPF 1
Interface PID Area IP Address/Mask Cost State Nbrs F/C Gi0/0/0/1 1 10 172.16.10.2/30 1 DR 1/1 Gi0/0/0/2 1 10 192.168.1.1/24 1 DR 0/0 Gi0/0/0/3 1 10 172.16.100.1/30 100 BDR 1/1
RP/0/RP0/CPU0:CE2#show ospf interface brief Thu Dec 28 06:11:23.555 UTC
* Indicates MADJ interface, (P) Indicates fast detect hold down state
Interfaces for OSPF 1
Interface PID Area IP Address/Mask Cost State Nbrs F/C Gi0/0/0/1 1 10 172.16.20.2/30 1 DR 1/1 Gi0/0/0/2 1 10 192.168.2.1/24 1 DR 0/0 Gi0/0/0/3 1 10 172.16.100.2/30 100 DR 1/1
RP/0/RP0/CPU0:CE2#show route ospf Thu Dec 28 06:11:28.138 UTC
O 172.16.10.0/30 [110/101] via 172.16.100.1, 00:03:28, GigabitEthernet0/0/0/3 O 192.168.1.0/24 [110/101] via 172.16.100.1, 00:03:28, GigabitEthernet0/0/0/3 |
問題解説 【状態確認】PC1からPC2に対して、ping と traceroute を試してみます。
PC1:~# ping -c 5 192.168.2.100 PING 192.168.2.100 (192.168.2.100) 56(84) bytes of data. 64 bytes from 192.168.2.100: icmp_seq=1 ttl=62 time=1.43 ms 64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=1.30 ms 64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=1.29 ms 64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=1.34 ms 64 bytes from 192.168.2.100: icmp_seq=5 ttl=62 time=1.24 ms
--- 192.168.2.100 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4004ms rtt min/avg/max/mdev = 1.241/1.320/1.428/0.062 ms
PC1:~# traceroute -n 192.168.2.100 traceroute to 192.168.2.100 (192.168.2.100), 30 hops max, 46 byte packets 1 192.168.1.1 0.777 ms 0.427 ms 0.390 ms 2 172.16.100.2 2.713 ms 0.872 ms 0.887 ms 3 192.168.2.100 0.929 ms 0.864 ms 0.841 ms |
バックアップリンクを経由してしまっています。
原因は後述しますが、この問題を解決するには、PE1/PE2で sham-link を構成する必要があります。
参考:sham-linkの設定https://www.infraexpert.com/study/mpls11.html
PE1とPE2に sham-link 用に Lo1 を作成します。
(IPアドレスは他のインターフェースとバッティングしなければ何でもOKです)
PE1
int lo1 ip vrf forwarding Customer-X ip add 172.16.3.1 255.255.255.255 |
PE2
int lo1 ip vrf forwarding Customer-X ip add 172.16.3.2 255.255.255.255 |
作成したLo1のアドレス帯をBGPでアドバタイズします。
PE1
router bgp 65001 address-family ipv4 vrf Customer-X network 172.16.3.1 mask 255.255.255.255 |
PE2
router bgp 65001 address-family ipv4 vrf Customer-X network 172.16.3.2 mask 255.255.255.255 |
OSPFで sham-link の設定をします。
PE1
router ospf 2 vrf Customer-X area 10 sham-link 172.16.3.1 172.16.3.2 |
PE2
router ospf 2 vrf Customer-X area 10 sham-link 172.16.3.2 172.16.3.1 |
sham-link がUPしていることを確認します。
PE1
PE1#show ip ospf 2 interface brief Interface PID Area IP Address/Mask Cost State Nbrs F/C SL0 2 10 0.0.0.0/0 1 P2P 1/1 Gi4 2 10 172.16.10.1/30 1 BDR 1/1
PE1#show ip ospf 2 sham-links Sham Link OSPF_SL0 to address 172.16.3.2 is up Area 10 source address 172.16.3.1 Run as demand circuit DoNotAge LSA allowed. Cost of using 1 State POINT_TO_POINT, Timer intervals configured, Hello 10, Dead 40, Wait 40, Hello due in 00:00:00 Adjacency State FULL (Hello suppressed) Index 1/2/2, retransmission queue length 0, number of retransmission 0 First 0x0(0)/0x0(0)/0x0(0) Next 0x0(0)/0x0(0)/0x0(0) Last retransmission scan length is 0, maximum is 0 Last retransmission scan time is 0 msec, maximum is 0 msec |
再度PC1からPC2に traceroute を試してみます。
PC1:~# traceroute -n 192.168.2.100 traceroute to 192.168.2.100 (192.168.2.100), 30 hops max, 46 byte packets 1 192.168.1.1 0.690 ms 0.499 ms 0.419 ms 2 172.16.10.1 32.705 ms 0.609 ms 0.669 ms 3 172.16.20.1 15.431 ms 1.639 ms 1.589 ms 4 172.16.20.2 9.117 ms 1.837 ms 1.734 ms 5 192.168.2.100 1.940 ms 1.824 ms 1.793 ms |
MPLS網を経由するようになりました。
MPLS網の障害発生時を想定して、PE1の G4 を shut してみます。
PE1
int g4 shutdown |
PC1からtraceします。
PC1:~# traceroute -n 192.168.2.100 traceroute to 192.168.2.100 (192.168.2.100), 30 hops max, 46 byte packets 1 192.168.1.1 0.692 ms 0.442 ms 0.388 ms 2 172.16.100.2 1.110 ms 0.935 ms 0.808 ms 3 192.168.2.100 0.844 ms 0.917 ms 1.069 ms |
バックアップリンクを経由します。
MPLS網の復旧を想定して、no shut します。
PE1
int g4 no shutdown |
30秒程度待ってから、PC1からtraceします。
PC1:~# traceroute -n 192.168.2.100 traceroute to 192.168.2.100 (192.168.2.100), 30 hops max, 46 byte packets 1 192.168.1.1 0.677 ms 0.464 ms 0.378 ms 2 172.16.10.1 0.736 ms 0.614 ms 0.723 ms 3 172.16.20.1 1.811 ms 1.555 ms 1.536 ms 4 172.16.20.2 1.967 ms 1.859 ms 1.675 ms 5 192.168.2.100 1.694 ms 1.646 ms 1.809 ms |
MPLS網経由に戻っています。
【初期状態でバックアップリンクを経由してしまっていた理由】
MPLSで PE-CE 間でOSPFを使用する場合、PE同士のOSPFプロセスIDを一致させると
MPLS網がスーパーバックボーンとなり、PEがABRのように動作します。
対向拠点の情報は LSA Type 3 で広報されます。
LSA Type 3 のため、PE上では「O IA」(エリア間ルート)としてルーティングテーブルに経路を載せます。
RP/0/RP0/CPU0:CE1#show route ospf Thu Dec 28 07:08:19.692 UTC
O IA 172.16.20.0/30 [110/2] via 172.16.10.1, 00:00:07, GigabitEthernet0/0/0/1 O IA 172.16.100.0/30 [110/102] via 172.16.10.1, 00:00:06, GigabitEthernet0/0/0/1 O IA 192.168.2.0/24 [110/3] via 172.16.10.1, 00:00:07, GigabitEthernet0/0/0/1 |
しかしバックアップリンクを構成したことにより、エリアID 10 内で直接LSAを交換するため、
「O」(エリア内ルート)となってしまい、バックアップリンクを通ります。
バックアップリンクの OSPF Cost は 100 に設定されていますが、
エリア間ルート「O IA」よりもエリア内ルート「O」が優先されるため、Cost の比較は行われません。
RP/0/RP0/CPU0:CE1#show route ospf Thu Dec 28 07:13:33.457 UTC
O 172.16.20.0/30 [110/101] via 172.16.100.2, 00:00:01, GigabitEthernet0/0/0/3 O 192.168.2.0/24 [110/101] via 172.16.100.2, 00:00:01, GigabitEthernet0/0/0/3 |
sham-link はPE間の仮想リンクとして動作し、LSA Type 1 のまま対向拠点の経路情報を広報します。
MPLS網から学習するルートが「O」(エリア内ルート)となり、ここで Cost が比較され、
Cost値の低いMPLS網に向くようになります。
RP/0/RP0/CPU0:CE1#show route ospf Thu Dec 28 06:16:03.401 UTC
O E2 172.16.3.1/32 [110/1] via 172.16.10.1, 00:03:02, GigabitEthernet0/0/0/1 O E2 172.16.3.2/32 [110/1] via 172.16.10.1, 00:02:13, GigabitEthernet0/0/0/1 O 172.16.20.0/30 [110/3] via 172.16.10.1, 00:02:08, GigabitEthernet0/0/0/1 O 192.168.2.0/24 [110/4] via 172.16.10.1, 00:02:08, GigabitEthernet0/0/0/1 |
正解例 以下のようにPE1/PE2に sham-link の設定を追加します。
PE1
int lo1 ip vrf forwarding Customer-X ip add 172.16.3.1 255.255.255.255
router bgp 65001 address-family ipv4 vrf Customer-X network 172.16.3.1 mask 255.255.255.255
router ospf 2 vrf Customer-X area 10 sham-link 172.16.3.1 172.16.3.2 |
PE2
int lo1 ip vrf forwarding Customer-X ip add 172.16.3.2 255.255.255.255
router bgp 65001 address-family ipv4 vrf Customer-X network 172.16.3.2 mask 255.255.255.255
router ospf 2 vrf Customer-X area 10 sham-link 172.16.3.2 172.16.3.1 |
初期config
PE1
hostname PE1 no ip domain lookup
ip vrf Customer-X rd 65001:100 route-target export 65001:100 route-target import 65001:100
no mpls ip propagate-ttl
interface Loopback0 ip address 1.1.1.1 255.255.255.255
interface GigabitEthernet3 no shutdown ip address 172.16.1.1 255.255.255.0
interface GigabitEthernet4 no shutdown ip vrf forwarding Customer-X ip address 172.16.10.1 255.255.255.252
router ospf 2 vrf Customer-X router-id 1.1.1.1 redistribute bgp 65001 network 172.16.10.1 0.0.0.0 area 10
router ospf 1 router-id 1.1.1.1 network 1.1.1.1 0.0.0.0 area 0 network 172.16.1.1 0.0.0.0 area 0 mpls ldp autoconfig
router bgp 65001 bgp router-id 1.1.1.1 bgp log-neighbor-changes no bgp default ipv4-unicast neighbor 100.100.100.100 remote-as 65001 neighbor 100.100.100.100 update-source Loopback0
address-family vpnv4 neighbor 100.100.100.100 activate neighbor 100.100.100.100 send-community extended exit-address-family
address-family ipv4 vrf Customer-X redistribute ospf 2 exit-address-family |
PE2
hostname PE2 no ip domain lookup
ip vrf Customer-X rd 65001:100 route-target export 65001:100 route-target import 65001:100
no mpls ip propagate-ttl
interface Loopback0 ip address 2.2.2.2 255.255.255.255
interface GigabitEthernet3 no shutdown ip address 172.16.2.2 255.255.255.0
interface GigabitEthernet4 no shutdown ip vrf forwarding Customer-X ip address 172.16.20.1 255.255.255.252
router ospf 2 vrf Customer-X router-id 2.2.2.2 redistribute bgp 65001 network 172.16.20.1 0.0.0.0 area 10
router ospf 1 router-id 2.2.2.2 network 2.2.2.2 0.0.0.0 area 0 network 172.16.2.2 0.0.0.0 area 0 mpls ldp autoconfig
router bgp 65001 bgp router-id 2.2.2.2 bgp log-neighbor-changes no bgp default ipv4-unicast neighbor 100.100.100.100 remote-as 65001 neighbor 100.100.100.100 update-source Loopback0
address-family vpnv4 neighbor 100.100.100.100 activate neighbor 100.100.100.100 send-community extended exit-address-family
address-family ipv4 vrf Customer-X redistribute ospf 2 exit-address-family |
P1
hostname P1 no ip domain lookup
interface Loopback0 ip address 100.100.100.100 255.255.255.255
interface GigabitEthernet3 no shutdown ip address 172.16.1.100 255.255.255.0
interface GigabitEthernet4 no shutdown ip address 172.16.2.100 255.255.255.0
router ospf 1 router-id 100.100.100.100 network 100.100.100.100 0.0.0.0 area 0 network 172.16.1.100 0.0.0.0 area 0 network 172.16.2.100 0.0.0.0 area 0 mpls ldp autoconfig
router bgp 65001 bgp router-id 100.100.100.100 bgp log-neighbor-changes no bgp default ipv4-unicast neighbor 1.1.1.1 remote-as 65001 neighbor 1.1.1.1 update-source Loopback0 neighbor 2.2.2.2 remote-as 65001 neighbor 2.2.2.2 update-source Loopback0
address-family vpnv4 neighbor 1.1.1.1 activate neighbor 1.1.1.1 send-community extended neighbor 1.1.1.1 route-reflector-client neighbor 2.2.2.2 activate neighbor 2.2.2.2 send-community extended neighbor 2.2.2.2 route-reflector-client exit-address-family |
CE1
hostname CE1
interface GigabitEthernet0/0/0/1 no shutdown ipv4 address 172.16.10.2 255.255.255.252
interface GigabitEthernet0/0/0/2 no shutdown ipv4 address 192.168.1.1 255.255.255.0
interface GigabitEthernet0/0/0/3 no shutdown ipv4 address 172.16.100.1 255.255.255.252
router ospf 1 area 10 interface GigabitEthernet0/0/0/1
interface GigabitEthernet0/0/0/2 passive enable
interface GigabitEthernet0/0/0/3 cost 100 |
CE2
hostname CE2
interface GigabitEthernet0/0/0/1 no shutdown ipv4 address 172.16.20.2 255.255.255.252
interface GigabitEthernet0/0/0/2 no shutdown ipv4 address 192.168.2.1 255.255.255.0
interface GigabitEthernet0/0/0/3 no shutdown ipv4 address 172.16.100.2 255.255.255.252
router ospf 1 area 10 interface GigabitEthernet0/0/0/1
interface GigabitEthernet0/0/0/2 passive enable
interface GigabitEthernet0/0/0/3 cost 100 |
Comments