概要

MP-BGPによるVRFルートリークによって、異なるVRF間で通信できるようにする設定例です。それぞれの設定の意味がわかりやすくなるように、手順を細かく区切って設定していきます。

関連記事

CiscoでのVRFの設定と確認コマンドは以下の記事で解説しています。

VRFの設定と確認コマンド [Cisco]
https://www.n-study.com/advanced-iprouting/cisco-vrf-configuration
CiscoルータでVRFによって1台のルータを仮想的に分割するための設定と確認コマンドについて解説します。

MP-BGPによるVRFルートリークの仕組みについて、以下の記事で解説しています。

ネットワーク構成

設定条件

  • VRF「AAA」の192.168.1.0/24とVRF「BBB」の172.16.1.0/24間でのみ通信できるようにします。
  • MP-BGPによるVRFルートリークの設定を行います。

初期設定

R1でVRF「AAA」とVRF「BBB」を作成しています。RD、Import RT/Export RTおよび割り当てているインタフェースは次のようになります。

VRF名RDImport RTExport RTインタフェース
AAA1:1001:1001:100Fa0/0
BBB2:1002:1002:100Fa0/1

また、VRF「AAA」内のルーティングができるようにR1/R2でOSPFの設定を行っています。同様にVRF「BBB」内でルーティングできるようにR1/R3でEIGRPの設定も行っています。

R1 初期設定抜粋(Click)

hostname R1
!
ip vrf AAA
 rd 1:100
 route-target export 1:100
 route-target import 1:100
!
ip vrf BBB
 rd 2:100
 route-target export 2:100
 route-target import 2:100
!
interface FastEthernet0/0
 ip vrf forwarding AAA
 ip address 192.168.0.1 255.255.255.0
!
interface FastEthernet0/1
 ip vrf forwarding BBB
 ip address 172.16.0.1 255.255.255.0
!
router eigrp 1
 auto-summary
 !
 address-family ipv4 vrf BBB
  network 172.16.0.0
  no auto-summary
  autonomous-system 1
 exit-address-family
 eigrp router-id 1.1.1.1
!
router ospf 1 vrf AAA
 router-id 1.1.1.1
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0

R2 初期設定抜粋(Click)

hostname R2
!
interface Loopback1
 ip address 192.168.1.2 255.255.255.0
!
interface Loopback2
 ip address 192.168.2.2 255.255.255.0
!
interface FastEthernet0/0
 ip address 192.168.0.2 255.255.255.0
!
router ospf 1
 router-id 2.2.2.2
 log-adjacency-changes
 network 192.168.0.0 0.0.255.255 area 0

R3 初期設定抜粋(Click)

hostname R3
!
interface Loopback1
 ip address 172.16.1.3 255.255.255.0
!
interface Loopback2
 ip address 172.16.2.3 255.255.255.0
!
interface FastEthernet0/0
 ip address 172.16.0.3 255.255.255.0
!
router eigrp 1
 network 172.16.0.0
 no auto-summary
 eigrp router-id 3.3.3.3

設定と確認

Step1:VRF間の通信の確認

VRFルートリークの設定を行っていない状態でVRF間の通信を確認します。R2からR3へPingを実行します。

R2 VRF間の通信の確認

R2#ping 172.16.1.3 source loopback 1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.2
.....
Success rate is 0 percent (0/5)
R2#ping 172.16.1.3 source loopback 2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.2
.....
Success rate is 0 percent (0/5)
R2#ping 172.16.2.3 source loopback 1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.2
.....
Success rate is 0 percent (0/5)
R2#ping 172.16.2.3 source loopback 2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.2
.....
Success rate is 0 percent (0/5)

VRF「AAA」とVRF「BBB」間の通信はできないことがわかります。

Step2:VRF「AAA」のルートをVPNv4ルートとして生成

VRF「AAA」のルートをVPNv4ルートとしてMP-BGPテーブルに生成します。R1のVRF「AAA」において、OSPFからBGPへ再配送します。

R1 VPNv4ルートの生成(VRF「AAA」)

router bgp 65001
 bgp router-id 1.1.1.1
!
 address-family ipv4 vrf AAA
  redistribute ospf 1 vrf AAA

Step3:VPNv4ルートの確認

Step2で生成したVPNv4ルートを確認します。R1でshow bgp vpnv4 unicast allコマンドを利用します。

R1 VPNv4ルートの確認

R1#show bgp vpnv4 unicast all
BGP table version is 7, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 1:100 (default for vrf AAA)
*> 192.168.0.0      0.0.0.0                  0         32768 ?
*> 192.168.1.0      192.168.0.2             11         32768 ?
*> 192.168.2.0      192.168.0.2             11         32768 ?
R1#show bgp vpnv4 unicast all 192.168.1.0
BGP routing table entry for 1:100:192.168.1.0/24, version 4
Paths: (1 available, best #1, table AAA)
Flag: 0x820
  Not advertised to any peer
  Local
    192.168.0.2 from 0.0.0.0 (1.1.1.1)
      Origin incomplete, metric 11, localpref 100, weight 32768, valid, sourced, best
      Extended Community: RT:1:100 OSPF DOMAIN ID:0x0005:0x000000010200
        OSPF RT:0.0.0.0:2:0 OSPF ROUTER ID:1.1.1.1:0
      mpls labels in/out 17/nolabel

VPNv4ルートには、Export RT「1:100」が付加されています。

Step4:VRF「BBB」へのルートリークの設定

条件に基づいてVRF「AAA」の「192.168.1.0/24」のルートをVRF「BBB」のルーティングテーブルに登録します。リークするルート「192.168.1.0/24」に追加でRT「100:100」を付加します。特定のルートに追加でRTを付加するためにVRF「AAA」内でexport mapでルートマップを関連付けます。

R1 リークするルートに追加のRTを付加

ip vrf AAA
 export map ROUTE-LEAK-EX
!
access-list 1 permit 192.168.1.0
!
route-map ROUTE-LEAK-EX permit 10
 match ip address 1
 set extcommunity rt  100:100 additive
!
route-map ROUTE-LEAK-EX permit 100

そして、リーク先のVRF「BBB」でリークするルート「192.168.1.0/24」に付加したRT「100:100」を受け入れるようにImport RTを追加します。

R1 VRF「BBB」 Import RTを追加

ip vrf BBB
 route-target import 100:100

Step5:VRF「BBB」へのルートリークの確認

VRF「AAA」の「192.168.1.0/24」がVRF「BBB」へリークされていることを確認します。

R1 VRF「BBB」へのルートリークの確認

R1#show ip vrf detail BBB
VRF BBB; default RD 2:100; default VPNID 
  Interfaces:
    Fa0/1
  Connected addresses are not in global routing table
  Export VPN route-target communities
    RT:2:100
  Import VPN route-target communities
    RT:2:100                 RT:100:100
  No import route-map
  No export route-map
  VRF label distribution protocol: not configured
  VRF label allocation mode: per-prefix
R1#show bgp vpnv4 unicast all
BGP table version is 9, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 1:100 (default for vrf AAA)
*> 192.168.0.0      0.0.0.0                  0         32768 ?
*> 192.168.1.0      192.168.0.2             11         32768 ?
*> 192.168.2.0      192.168.0.2             11         32768 ?
Route Distinguisher: 2:100 (default for vrf BBB)
*> 192.168.1.0      192.168.0.2             11         32768 ?
R1#show bgp vpnv4 unicast vrf BBB 192.168.1.0
BGP routing table entry for 2:100:192.168.1.0/24, version 9
Paths: (1 available, best #1, table BBB)
  Not advertised to any peer
  Local, imported path from 1:100:192.168.1.0/24
    192.168.0.2 from 0.0.0.0 (1.1.1.1)
      Origin incomplete, metric 11, localpref 100, weight 32768, valid, external, best
      Extended Community: RT:1:100 RT:100:100
        OSPF DOMAIN ID:0x0005:0x000000010200 OSPF RT:0.0.0.0:2:0
        OSPF ROUTER ID:1.1.1.1:0
R1#show ip route vrf BBB

Routing Table: BBB
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.0.0 is directly connected, FastEthernet0/1
D       172.16.1.0 [90/409600] via 172.16.0.3, 00:21:11, FastEthernet0/1
D       172.16.2.0 [90/409600] via 172.16.0.3, 00:21:11, FastEthernet0/1
B    192.168.1.0/24 [20/11] via 192.168.0.2 (AAA), 00:08:46, FastEthernet0/0

VRF「AAA」の「192.168.1.0/24」がVRF「BBB」へリークされています。VRF「BBB」では、BGPルートとして「192.168.1.0/24」がルーティングテーブルに登録されます。

以下の図は、Step2~Step5の設定によってVRF「AAA」のルート「192.168.1.0/24」がVRF「BBB」にリークされる様子を表しています。

図 VRFルートリークの様子
図 VRFルートリークの様子

あとは、この逆方向、すなわち、VRF「BBB」の「172.16.1.0/24」をVRF「AAA」にリークすればOKです。考え方は同じです。

Step6:VRF「BBB」の「172.16.1.0/24」をVRF「AAA」へリークする設定

考え方は同じなので、逆方向の設定はまとめて行います。なお、追加のRTを付加するためのルートマップ「ROUTE-LEAK-EX」は使い回せます。対象のネットワークアドレスを指定するACL1に172.16.1.0/24をpermitする条件を追加すればいいだけです。

R1 VRF「BBB」の「172.16.1.0/24」をVRF「AAA」へリーク

ip vrf AAA
 route-target import 100:100
!
ip vrf BBB
 export map ROUTE-LEAK-EX
!
router bgp 65001
address-family ipv4 vrf BBB
  redistribute eigrp 1
!
access-list 1 permit 172.16.1.0

Step7:VRF「BBB」の「172.16.1.0/24」をVRF「AAA」へリークする確認

VRF「BBB」の「172.16.1.0/24」をVRF「AAA」にリークされていることを確認します。

R1 VRF「AAA」へのルートリークの確認

R1#show bgp vpnv4 unicast vrf AAA
BGP table version is 17, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 1:100 (default for vrf AAA)
*> 172.16.1.0/24    172.16.0.3          409600         32768 ?
*> 192.168.0.0      0.0.0.0                  0         32768 ?
*> 192.168.1.0      192.168.0.2             11         32768 ?
*> 192.168.2.0      192.168.0.2             11         32768 ?
R1#show ip route vrf AAA

Routing Table: AAA
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, 1 subnets
B       172.16.1.0 [20/409600] via 172.16.0.3 (BBB), 00:06:12, FastEthernet0/1
C    192.168.0.0/24 is directly connected, FastEthernet0/0
O    192.168.1.0/24 [110/11] via 192.168.0.2, 00:45:07, FastEthernet0/0
O    192.168.2.0/24 [110/11] via 192.168.0.2, 00:45:07, FastEthernet0/0

VRF「AAA」のルーティングテーブルにVRF「BBB」の「172.16.1.0/24」が登録されています。

Step8:VRF間の通信の確認

R1でVRFルートリークの設定が完了したので、VRF間の通信を確認します。R2からR3へPingします。

R2 VRF間の通信の確認

R2#ping 172.16.1.3 source loopback 1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.2
.....
Success rate is 0 percent (0/5)

———————-

まだ、VRF間で「192.168.1.0/24」と「172.16.1.0/24」の間の通信はできません。R1でリークした他のVRFのルートはBGPルートです。ルートリークしただけでは、R2やR3にはルートがアドバタイズされていません。この時点でのR2/R3のルーティングテーブルは以下の通りです。

R2

R2#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

C    192.168.0.0/24 is directly connected, FastEthernet0/0
C    192.168.1.0/24 is directly connected, Loopback1
C    192.168.2.0/24 is directly connected, Loopback2

R3

R3#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.0.0 is directly connected, FastEthernet0/0
C       172.16.1.0 is directly connected, Loopback1
C       172.16.2.0 is directly connected, Loopback2

R1でリークした他のVRFのルートを、それぞれのVRFで利用しているルーティングプロトコルでアドバタイズしなければいけません。

Step9:リークしたルートをVRF内でアドバタイズ

R1でリークした他のVRFのルートをVRF内のルーティングプロトコルでアドバタイズします。リークした他のVRFルートはBGPルートです。そのため、BGPからVRF内のルーティングプロトコルへ再配送します。

R1 リークしたルートをVRF内でアドバタイズ

router eigrp 1
address-family ipv4 vrf BBB
  redistribute bgp 65001 metric 100000 100 255 1 1500
!
router ospf 1 vrf AAA
 redistribute bgp 65001 subnets

これで条件通りVRF「AAA」の「192.168.1.0/24」とVRF「BBB」の「172.16.1.0/24」間の通信を行うための設定はすべて完了です。

Step9:VRF間の通信の確認

R1/R2/R3のルーティングテーブルを確認します。

R1 ルーティングテーブル

R1#show ip route vrf AAA

Routing Table: AAA
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, 1 subnets
B       172.16.1.0 [20/409600] via 172.16.0.3 (BBB), 00:27:03, FastEthernet0/1
C    192.168.0.0/24 is directly connected, FastEthernet0/0
O    192.168.1.0/24 [110/11] via 192.168.0.2, 01:05:58, FastEthernet0/0
O    192.168.2.0/24 [110/11] via 192.168.0.2, 01:05:58, FastEthernet0/0
R1#show ip route vrf BBB

Routing Table: BBB
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.0.0 is directly connected, FastEthernet0/1
D       172.16.1.0 [90/409600] via 172.16.0.3, 01:06:32, FastEthernet0/1
D       172.16.2.0 [90/409600] via 172.16.0.3, 01:06:32, FastEthernet0/1
B    192.168.1.0/24 [20/11] via 192.168.0.2 (AAA), 00:54:08, FastEthernet0/0

R2 ルーティングテーブル

R2#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, 1 subnets
O E2    172.16.1.0 [110/409600] via 192.168.0.1, 00:03:16, FastEthernet0/0
C    192.168.0.0/24 is directly connected, FastEthernet0/0
C    192.168.1.0/24 is directly connected, Loopback1
C    192.168.2.0/24 is directly connected, Loopback2

R3 ルーティングテーブル

R3#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.0.0 is directly connected, FastEthernet0/0
C       172.16.1.0 is directly connected, Loopback1
C       172.16.2.0 is directly connected, Loopback2
D EX 192.168.1.0/24 [170/307200] via 172.16.0.1, 00:03:25, FastEthernet0/0

そして、R2からR3へPingします。

R2 VRF間の通信の確認

R2#ping 172.16.1.3 source loopback 1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/37/44 ms
R2#ping 172.16.1.3 source loopback 2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.2
.....
Success rate is 0 percent (0/5)
R2#ping 172.16.2.3 source loopback 1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.2
.....
Success rate is 0 percent (0/5)
R2#ping 172.16.2.3 source loopback 2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.2
.....
Success rate is 0 percent (0/5)

条件通りVRF「AAA」の「192.168.1.0/24」とVRF「BBB」の「172.16.1.0/24」間の通信ができていることがわかります。

R1の設定コマンドのまとめ

ここまでの手順でR1に設定したVRFルートリークの設定コマンドは以下です。

R1 VRFルートリーク設定コマンドのまとめ

ip vrf AAA
 export map ROUTE-LEAK-EX
 route-target import 100:100
!
ip vrf BBB
 export map ROUTE-LEAK-EX
 route-target import 100:100
!
router eigrp 1
 address-family ipv4 vrf BBB
  redistribute bgp 65001 metric 100000 100 255 1 1500
!
router ospf 1 vrf AAA
 redistribute bgp 65001 subnets
!
router bgp 65001
 bgp router-id 1.1.1.1
 !
 address-family ipv4 vrf BBB
  redistribute eigrp 1
 !
 address-family ipv4 vrf AAA
  redistribute ospf 1 vrf AAA
!
access-list 1 permit 192.168.1.0
access-list 1 permit 172.16.1.0
!
route-map ROUTE-LEAK-EX permit 10
 match ip address 1
 set extcommunity rt  100:100 additive
!
route-map ROUTE-LEAK-EX permit 100
!

IPルーティング応用