ルータ2台で始めるVRF入門(6)

経路情報のフィルタリング(VRF import/export map)

VRF import map と export map

簡単に言ってしまうと、VRF へ経路を import/export するときにルートマップかける仕掛け…というだけ。単純に ACL 使って経路フィルタしても良いし、BGP プロセス内で設定する物なので RT コミュニティとかを条件やアクションに設定することもできる。

論理構成

引き続きなので同じ。

設定(import map)
  • expvrf01
ip vrf expvrf01
rd 64601:1
 import map MAP_EXPVRF01_ROUTE
 route-target export 64601:1
 route-target import 64601:1
 route-target import 64601:2
 route-target import 64601:3
!
route-map MAP_EXPVRF01_ROUTE permit 10
 match ip address ACL_EXPVRF01_ROUTE
!
ip access-list standard ACL_EXPVRF01_ROUTE
 deny   10.4.2.0 0.0.0.255
 permit any
!

いきなりだけどこの時点で問題があって、import map と import ipv4 は両方同時には設定できないみたい。

exprtr1(config-vrf)#import map MAP_EXPVRF01_ROUTE
Disable IPv4 Unicast import first

とかになってしまうし、先に import map を設定した上で import ipv4 を設定すると import map が上書きされて消えてしまう。そもそも import コマンド自体、VRFごとのひとつの設定ってことのようで。仕方がないので、いったん GRT との通信はあきらめる。

確認(import map)
  • expvrf01
exprtr1#sh ip route vrf expvrf01

Routing Table: expvrf01
(略)
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 16 subnets, 2 masks
C        10.0.0.1/32 is directly connected, Loopback1
B        10.0.0.2/32 is directly connected (expvrf02), 00:00:06, Loopback2
B        10.0.0.3/32 is directly connected (expvrf03), 00:00:06, Loopback3
B        10.0.0.12/32 [200/0] via 10.2.2.2 (expvrf02), 00:16:35
C        10.1.1.0/24 is directly connected, Vlan801
L        10.1.1.1/32 is directly connected, Vlan801
B        10.1.2.0/24 is directly connected (expvrf02), 00:00:06, Vlan802
L        10.1.2.1/32 is directly connected, Vlan802
B        10.1.3.0/24 is directly connected (expvrf03), 00:00:06, Vlan803
L        10.1.3.1/32 is directly connected, Vlan803
B        10.2.2.0/24 is directly connected (expvrf02), 00:00:06, Vlan722
L        10.2.2.1/32 is directly connected, Vlan722
B        10.2.3.0/24 is directly connected (expvrf03), 00:00:06, Vlan723
L        10.2.3.1/32 is directly connected, Vlan723
B        10.3.2.0/24 [200/0] via 10.2.2.2 (expvrf02), 00:16:35
B        10.4.3.0/24 [20/2] via 10.2.3.2 (expvrf03), 00:00:06, Vlan723
exprtr1#
  • expvrf02
exprtr1#sh ip route vrf expvrf02

Routing Table: expvrf02
(略)
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 11 subnets, 2 masks
B        10.0.0.1/32 is directly connected (expvrf01), 00:16:05, Loopback1
C        10.0.0.2/32 is directly connected, Loopback2
B        10.0.0.12/32 [200/0] via 10.2.2.2, 00:16:34
B        10.1.1.0/24 is directly connected (expvrf01), 00:16:05, Vlan801
L        10.1.1.1/32 is directly connected, Vlan801
C        10.1.2.0/24 is directly connected, Vlan802
L        10.1.2.1/32 is directly connected, Vlan802
C        10.2.2.0/24 is directly connected, Vlan722
L        10.2.2.1/32 is directly connected, Vlan722
B        10.3.2.0/24 [200/0] via 10.2.2.2, 00:16:34
B        10.4.2.0/24 [200/0] via 10.2.2.2, 00:16:34

GRT 側の経路はあきらめたとして、一応やりたいことはできているようだ。

設定(export map)

export map では、export する側で経路情報につける RT コミュニティ情報の色分けをすることになる。インポートする側でも import map でコミュニティ情報を条件に指定して、特定の経路だけインポートするって言うのはできると思うけど、そもそも export する側で RT を分けずに一緒くたにしてしまっているのであれば ACL or prefix-list に頼ることになるので、export map で RT の色分けして、import は route-target import で RT 指定してインポートするだけ、という方向になるだろう。

  • expvrf01
    • import ipv4 は戻しておく。
ip vrf expvrf01
 rd 64601:1
 import ipv4 unicast map GRT_MAP
 route-target export 64601:1
 route-target import 64601:1
 route-target import 64601:2
 route-target import 64601:3
!
  • expvrf02
    • 漏洩させてもよい経路にだけ RT コミュニティをセットする。
ip vrf expvrf02
 rd 64601:2
 export map MAP_EXPVRF02_ROUTE
 route-target import 64601:2
 route-target import 64601:1
!
route-map MAP_EXPVRF02_ROUTE permit 10
 match ip address ACL_EXPVRF02_ROUTE
 set extcommunity rt 64601:2
!
ip access-list standard ACL_EXPVRF02_ROUTE
 permit 10.3.2.0 0.0.0.255
!
確認(export map)
  • expvrf01
exprtr1#sh ip route vrf expvrf01

Routing Table: expvrf01
(略)
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 15 subnets, 2 masks
B        10.0.0.0/32 is directly connected, 00:00:28, Loopback0
C        10.0.0.1/32 is directly connected, Loopback1
B        10.0.0.3/32 is directly connected (expvrf03), 02:42:30, Loopback3
B        10.0.0.10/32 [20/0] via 10.2.0.2, 00:00:28
B        10.1.0.0/24 is directly connected, 00:00:28, Vlan800
C        10.1.1.0/24 is directly connected, Vlan801
L        10.1.1.1/32 is directly connected, Vlan801
B        10.1.3.0/24 is directly connected (expvrf03), 02:42:30, Vlan803
L        10.1.3.1/32 is directly connected, Vlan803
B        10.2.0.0/24 is directly connected, 00:00:28, Vlan720
B        10.2.3.0/24 is directly connected (expvrf03), 02:42:30, Vlan723
L        10.2.3.1/32 is directly connected, Vlan723
B        10.3.0.0/24 [20/0] via 10.2.0.2, 00:00:28
B        10.3.2.0/24 [200/0] via 10.2.2.2 (expvrf02), 02:43:02
B        10.4.3.0/24 [20/2] via 10.2.3.2 (expvrf03), 02:42:30, Vlan723
exprtr1#
  • expvrf02
exprtr1#sh ip route vrf expvrf02

Routing Table: expvrf02
(略)
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 11 subnets, 2 masks
B        10.0.0.1/32 is directly connected (expvrf01), 02:42:47, Loopback1
C        10.0.0.2/32 is directly connected, Loopback2
B        10.0.0.12/32 [200/0] via 10.2.2.2, 00:04:53
B        10.1.1.0/24 is directly connected (expvrf01), 02:42:47, Vlan801
L        10.1.1.1/32 is directly connected, Vlan801
C        10.1.2.0/24 is directly connected, Vlan802
L        10.1.2.1/32 is directly connected, Vlan802
C        10.2.2.0/24 is directly connected, Vlan722
L        10.2.2.1/32 is directly connected, Vlan722
B        10.3.2.0/24 [200/0] via 10.2.2.2, 02:43:19
B        10.4.2.0/24 [200/0] via 10.2.2.2, 00:04:53
exprtr1#
まとめ
  • export map をつかうと、route-target export コマンドではできなかった経路別の RT コミュニティ設定ができる。
  • 漏洩したい経路をコントロールしたい場合は export map を使って経路別のコミュニティ設定をするとかでいろいろやれそう。ただ複雑になるのは確かなので使い方は慎重に…かな。