ルータ2台で始めるVRF入門(6)
経路情報のフィルタリング(VRF import/export map)
- 第1回: VRF 基礎の基礎
- 第2回: VRF とダイナミックルーティング
- 第3回: ルート漏洩(1): VRF間ルート漏洩
- 第4回: ルート漏洩(2): GRT-VRF間ルート漏洩
- 第5回: 経路情報のフィルタリング(OSPF再配布/BGP neighbor route-map)
- 第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 を使って経路別のコミュニティ設定をするとかでいろいろやれそう。ただ複雑になるのは確かなので使い方は慎重に…かな。