概要

OSPF Sham-linkが必要なMPLS-VPNのネットワーク構成について、設定ミスの切り分けと修正を行います。

ネットワーク構成

下記のネットワーク構成で、MPLS-VPNを通じてR4とR5間の通信ができるようにしたいと考えています。

図 MPLS-VPN 設定ミスの切り分けと修正 Part6 ネットワーク構成
図 MPLS-VPN 設定ミスの切り分けと修正 Part6 ネットワーク構成

プライマリ回線としてMPLS-VPNを利用します。プライマリ回線障害時のバックアップ回線としてR4-R5間をT1専用線で接続しています。ルータの役割は、次の通りです。

PEルータ:R1、R3
Pルータ :R2
CEルータ:R4、R5

PEルータであるR1、R3ではともにVRFとして次のように定義しています。

VRF名:VPN
RD:100:100
Import RT:100:100
Export RT:100:100

また、PE-CE間のルーティングは次の通りです。

R1-R4:OSPFエリア0
R3-R5:OSPFエリア0

設定概要

各ルータで行われているMPLS-VPNでの通信に関連する設定は次の通りです。

R1

ip vrf VPN
 rd 100:100
 route-target export 100:100
 route-target import 100:100
!
interface Loopback0
 ip address 192.168.0.1 255.255.255.255
!
interface FastEthernet0/0
 ip vrf forwarding VPN
 ip address 10.14.14.1 255.255.255.0
!
interface Serial1/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation ppp
 mpls ip
 no peer neighbor-route
!
router ospf 10 vrf VPN
 router-id 1.1.1.1
 log-adjacency-changes
 redistribute bgp 100 subnets
 network 10.0.0.0 0.255.255.255 area 0
!
router ospf 1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 neighbor 192.168.0.3 remote-as 100
 neighbor 192.168.0.3 update-source Loopback0
 no auto-summary
 !
 address-family vpnv4
  neighbor 192.168.0.3 activate
  neighbor 192.168.0.3 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf VPN
  redistribute ospf 10 vrf VPN
  no synchronization
 exit-address-family

R2

interface Loopback0
 ip address 192.168.0.2 255.255.255.255
!
interface Serial1/0
 ip address 192.168.12.2 255.255.255.0
 encapsulation ppp
 mpls ip
 no peer neighbor-route
!
interface Serial1/1
 ip address 192.168.23.2 255.255.255.0
 encapsulation ppp
 mpls ip
 no peer neighbor-route
!
router ospf 1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0

R3

ip vrf VPN
 rd 100:100
 route-target export 100:100
 route-target import 100:100
!
interface Loopback0
 ip address 192.168.0.3 255.255.255.255
!
interface FastEthernet0/0
 ip vrf forwarding VPN
 ip address 10.35.35.3 255.255.255.0
 duplex auto
 speed auto
!
interface Serial1/0
 ip address 192.168.23.3 255.255.255.0
 encapsulation ppp
 mpls ip
 no peer neighbor-route
!
router ospf 10 vrf VPN
 router-id 3.3.3.3
 log-adjacency-changes
 redistribute bgp 100 subnets
 network 10.0.0.0 0.255.255.255 area 0
!
router ospf 1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 neighbor 192.168.0.1 remote-as 100
 neighbor 192.168.0.1 update-source Loopback0
 no auto-summary
 !
 address-family vpnv4
  neighbor 192.168.0.1 activate
  neighbor 192.168.0.1 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf VPN
  redistribute ospf 10 vrf VPN
  no synchronization
 exit-address-family

R4

interface Loopback0
 ip address 172.16.4.4 255.255.255.0
 ip ospf network point-to-point
!
interface FastEthernet0/0
 ip address 10.14.14.4 255.255.255.0
!
interface Serial1/0
 ip address 172.16.45.4 255.255.255.0
!
router ospf 1
 router-id 4.4.4.4
 log-adjacency-changes
 network 10.0.0.0 0.255.255.255 area 0
 network 172.16.0.0 0.0.255.255 area 0

R5

interface Loopback0
 ip address 172.16.5.5 255.255.255.0
 ip ospf network point-to-point
!
interface FastEthernet0/0
 ip address 10.35.35.5 255.255.255.0
!
interface Serial1/0
 ip address 172.16.45.5 255.255.255.0
!
router ospf 1
 router-id 5.5.5.5
 log-adjacency-changes
 network 10.0.0.0 0.255.255.255 area 0
 network 172.16.0.0 0.0.255.255 area 0

トラブルの症状

R4-R5間の通信は可能ですが、MPLS-VPN経由ではなくT1経由で行われてしまっています。R4のルーティングテーブルとR4からR5の172.16.5.5へのTracerouteの結果は、次のようになります。

R4 show ip route/traceroute

R4#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     172.16.0.0/24 is subnetted, 3 subnets
C       172.16.45.0 is directly connected, Serial1/0
C       172.16.4.0 is directly connected, Loopback0
O       172.16.5.0 [110/65] via 172.16.45.5, 00:29:32, Serial1/0
     10.0.0.0/24 is subnetted, 2 subnets
O       10.35.35.0 [110/65] via 172.16.45.5, 00:29:32, Serial1/0
C       10.14.14.0 is directly connected, FastEthernet0/0
R4#traceroute 172.16.5.5 source 172.16.4.4

Type escape sequence to abort.
Tracing the route to 172.16.5.5

  1 172.16.45.5 36 msec *  20 msec

R4でSerial1/0をshutdownすると、MPLS-VPN経由で通信ができるようになりました。

R4 show ip route/traceroute(Serial1/0 shutdown)

R4#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R4(config)#interface serial 1/0
R4(config-if)#shutdown
*Mar  1 00:53:58.735: %OSPF-5-ADJCHG: Process 1, Nbr 5.5.5.5 on Serial1/0 
from FULL to DOWN, Neighbor Down: Interface down or detached
*Mar  1 00:54:00.699: %LINK-5-CHANGED: Interface Serial1/0, changed state to 
administratively down
*Mar  1 00:54:01.699: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, 
changed state to down
R4(config-if)#end
R4#
*Mar  1 00:54:05.807: %SYS-5-CONFIG_I: Configured from console by console
R4#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     172.16.0.0/24 is subnetted, 3 subnets
O IA    172.16.45.0 [110/66] via 10.14.14.1, 00:00:16, FastEthernet0/0
C       172.16.4.0 is directly connected, Loopback0
O IA    172.16.5.0 [110/3] via 10.14.14.1, 00:00:16, FastEthernet0/0
     10.0.0.0/24 is subnetted, 2 subnets
O IA    10.35.35.0 [110/2] via 10.14.14.1, 00:00:16, FastEthernet0/0
C       10.14.14.0 is directly connected, FastEthernet0/0
R4#traceroute 172.16.5.5 source 172.16.4.4

Type escape sequence to abort.
Tracing the route to 172.16.5.5

  1 10.14.14.1 36 msec 20 msec 8 msec
  2 192.168.12.2 [MPLS: Labels 17/22 Exp 0] 40 msec 60 msec 36 msec
  3 10.35.35.3 [MPLS: Label 22 Exp 0] 40 msec 28 msec 32 msec
  4 10.35.35.5 60 msec *  48 msec

しかし、Serial1/0をno shutdownでアクティブにすると、やはりR4-R5間の通信はT1回線経由で行わてしまいます。

問題

  • なぜR4-R5間の通信は、MPLS-VPN経由ではなくT1回線経由で行われてしまうのですか?
  • R4-R5間の通信をMPLS-VPN経由で行うためには、どのような設定をすればよいですか?

解答

なぜR4-R5間の通信は、MPLS-VPN経由ではなくT1回線経由で行われてしまうのですか?

PEルータでは、他の拠点のルートをMP-BGPで別のPEルータから学習するよりも、OSPFでCEルータから学習する方を優先する。そのため、PEルータは他の拠点のルートを接続しているCEルータには送信しない。つまり、CEルータは他の拠点のルートをPEルータから受信できない。その結果、パケットの転送経路はMPLS-VPN経由ではなくなってしまう。

PEルータでアドミニストレイティブディスタンスを調整して、他の拠点のルートを接続しているCEルータに送信できるようにしても、OSPFではエリア間ルートよりもエリア内ルートを優先するので、同じ結果になる。

このような構成で、正常時にMPLS-VPN経由で通信を行うためにはPEルータ間で、OSPF Sham-linkの設定が必要になる。

R4-R5間の通信をMPLS-VPN経由で行うためには、どのような設定をすればよいですか?

R1

interface Loopback10
 ip vrf forwarding VPN
 ip address 192.168.1.1 255.255.255.255
!
router ospf 10 vrf VPN
 area 0 sham-link 192.168.1.1 192.168.3.3
!
router bgp 100
 address-family ipv4 vrf VPN
  network 192.168.1.1 mask 255.255.255.255
 exit-address-family

R3

interface Loopback10
 ip vrf forwarding VPN
 ip address 192.168.3.3 255.255.255.255
!
router ospf 10 vrf VPN
 area 0 sham-link 192.168.3.3 192.168.1.1
!
router bgp 100
 address-family ipv4 vrf VPN
  network 192.168.3.3 mask 255.255.255.255

ワンポイント

  • OSPFではエリア間ルートよりもエリア内ルートを優先する
  • Sham-linkによって、MPLS-VPNバックボーンをまたがったOSPFエリアを構成できる

解説

MPLS-VPNで拠点を接続しているとき、CEルータは他の拠点のルートをPEルータから受信します。そのため、他の拠点へパケットをルーティングするときには、PEルータへ転送することになります。ところが、今回の問題のネットワーク構成ではPEルータは接続しているCEルータに他の拠点のルートを送信しなくなってしまいます。

具体的にR5の172.16.5.0/24のルートがどのように送信されるかに注目します。R5は172.16.5.0/24のルートをT1回線経由で直接R4へ送信します。また、PEルータであるR3へも送信します。

※OSPFなので実際にR5から送信されるのはLSAです。

R4は172.16.5.0/24をさらにPEルータのR1へ送信します。また、R3はOSPFルートをMP-BGPルートとして生成します。R3からMP-BGPルートとして、172.16.5.0/24をR1へ送信します。すると、R1は172.16.5.0/24のルートを複数受信することになります。

  • R4からOSPFルートとして(AD=110)
  • R3からMP-BGPルートとして(AD=200)

R1とR3は同一ASなので、MP-BGPルートはIBGPルートです。R1ではアドミニストレイティブディスタンスにより、172.16.5.0/24のルートはR4から受信したOSPFのルートが最適ルートになります。そのため、R1は172.16.5.0/24のルートをR4に送信することはなくなります。R4は172.16.5.0/24のルートをR5からのみ受信します。R4から172.16.5.0/24へパケットをルーティングするときには、当然、R5へ転送します。

図 172.16.5.0/24のルート
図 172.16.5.0/24のルート


アドミニストレイティブディスタンスを変更して、R1でMP-BGPルートが最適ルートになるようにすれば、R1から172.16.5.0/24のルートをR4へ転送できます。ですが、それでもR4から172.16.5.0/24へパケットをルーティングするときは、MPLS-VPN経由にはなりません。

R1からR4へ送信する172.16.5.0/24はエリア間ルートです。MPLS-VPN経由のOSPFルートは、エリア間ルートになります。そして、R5からR4へ送信する172.16.5.0/24はエリア内ルートです。OSPFでは、エリア間ルートよりもエリア内ルートをコストに関係なく優先します。そのため、R4で172.16.5.0/24の最適ルートはR5から受信したものになります。R4は172.16.5.0/24あてのパケットをR5へ転送します。

図 172.16.5.0/24のルート(AD調整)
図 172.16.5.0/24のルート(AD調整)


R5の172.16.5.0/24について考えていますが、同じことがR4の172.16.4.0/24にも当てはまります。拠点間の通信は、MPLS-VPN経由ではなくバックアップ用のT1回線経由で行われてしまいます。これを解消するためには、OSPF Sham-linkの設定が必要です。

Sham-linkによって、PEルータ間を仮想的なOSPFのポイントツーポイントネットワークで接続します。これにより、MPLS-VPNバックボーンをまたがったOSPFエリアを構成することができます。R1とR3でエリア0のSham-linkを設定すれば、MPLS-VPNバックボーンをまたがったOSPFエリア0を構成できます。各拠点のルートは、エリア内ルートになるのでコストによって最適ルートを選択することができます。Sham-linkはデフォルトでコスト1です。T1回線はコスト64なので、R4はコストを比較して、R1から受信した172.16.5.0/24のルートを最適ルートとします。その結果、R4から172.16.5.0/24へパケットをルーティングするときには、R1へ転送し、MPLS-VPN経由で通信が行われます。

図 172.16.5.0/24のルート(Sham-link)
図 172.16.5.0/24のルート(Sham-link)


R1とR3でのSham-linkの設定は、解答にあげているとおりです。Sham-linkを設定したあと、R1で次のコマンドでSham-linkを確認します。

  • show ip ospf 10 sham-links
  • show ip ospf 10 neighbor

R1 show ip ospf 10 sham-links/show ip ospf 10 neighbor

R1#show ip ospf 10 sham-links
Sham Link OSPF_SL1 to address 192.168.3.3 is up
Area 0 source address 192.168.1.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:09
    Adjacency State FULL (Hello suppressed)
    Index 2/2, retransmission queue length 0, number of retransmission 0
    First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
    Last retransmission scan length is 0, maximum is 0
    Last retransmission scan time is 0 msec, maximum is 0 msec
R1#show ip ospf 10 neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
3.3.3.3           0   FULL/  -           -        192.168.3.3     OSPF_SL1
4.4.4.4           1   FULL/DR         00:00:36    10.14.14.4      FastEthernet0/0

これを見ると、OSPF_SL1というSham-linkのインタフェース上でR1とR3がネイバーとなっていることがわかります。つまり、R1とR3はSham-linkを通じて、同一エリア(エリア0)に接続されています。Sham-linkのインタフェースはコスト1であることもわかります。また、R1のVRF「VPN」のルーティングテーブルは、次のようになります。

R1 show ip route vrf VPN

R1#show ip route vrf VPN

Routing Table: VPN
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     172.16.0.0/24 is subnetted, 3 subnets
O       172.16.45.0 [110/65] via 10.14.14.4, 01:01:00, FastEthernet0/0
O       172.16.4.0 [110/2] via 10.14.14.4, 01:01:00, FastEthernet0/0
O       172.16.5.0 [110/3] via 192.168.0.3, 01:01:00
     10.0.0.0/24 is subnetted, 2 subnets
O       10.35.35.0 [110/2] via 192.168.0.3, 01:01:00
C       10.14.14.0 is directly connected, FastEthernet0/0
     192.168.1.0/32 is subnetted, 1 subnets
C       192.168.1.1 is directly connected, Loopback10
     192.168.3.0/32 is subnetted, 1 subnets
B       192.168.3.3 [200/0] via 192.168.0.3, 01:01:14

また、R4のルーティングテーブルは次の通りです。

R4 show ip route

R4#show ip route
~省略~
Gateway of last resort is not set

     172.16.0.0/24 is subnetted, 3 subnets
C       172.16.45.0 is directly connected, Serial1/0
C       172.16.4.0 is directly connected, Loopback0
O       172.16.5.0 [110/4] via 10.14.14.1, 01:02:23, FastEthernet0/0
     10.0.0.0/24 is subnetted, 2 subnets
O       10.35.35.0 [110/3] via 10.14.14.1, 01:02:23, FastEthernet0/0
C       10.14.14.0 is directly connected, FastEthernet0/0
     192.168.1.0/32 is subnetted, 1 subnets
O E2    192.168.1.1 [110/1] via 10.14.14.1, 01:02:23, FastEthernet0/0
     192.168.3.0/32 is subnetted, 1 subnets
O E2    192.168.3.3 [110/1] via 10.14.14.1, 01:02:23, FastEthernet0/0

172.16.5.0/24の最適ルートはR1から受信したものになっています。R4から172.16.5.5へトレースルートを行うと、MPLS-VPNを経由していることがわかります。

R4 traceroute

R4#traceroute 172.16.5.5 source 172.16.4.4

Type escape sequence to abort.
Tracing the route to 172.16.5.5

  1 10.14.14.1 20 msec 20 msec 4 msec
  2 192.168.12.2 [MPLS: Labels 17/22 Exp 0] 40 msec 8 msec 20 msec
  3 10.35.35.3 [MPLS: Label 22 Exp 0] 24 msec 16 msec 16 msec
  4 10.35.35.5 16 msec *  52 msec