ルータ2台で始めるVRF入門(1)
はじめに
ネットワークの仮想化ごにょごにょとか言われちゃったりする昨今、皆様いかがお過ごしでしょうか。
ネットワークの仮想化と言えばまずまっさきに出てくるのが VLAN なのですが、これは L2 broadcast domain の仮想化と分離なわけです。キャンパスネットワークなんかだともう VLAN アタリマエでどこに行っても必ず使われているでしょうおそらく。で、もう少し最近になって使われている技術に VRF (VRF-Lite) があります。これは L3 Routing/Forwarding の仮想化ってことで、今回取り上げるのはこれ。こいつを、自宅 Lab の定番、Cisco 1812J を 2台つかって、基本設定と経路操作の話を見ていこうと思っています。
ちなみに、ざっと内容書いてみたらたぶん全6回くらいになります なりました。
- 第1回: VRF 基礎の基礎
- 第2回: VRF とダイナミックルーティング
- 第3回: ルート漏洩(1): VRF間ルート漏洩
- 第4回: ルート漏洩(2): GRT-VRF間ルート漏洩
- 第5回: 経路情報のフィルタリング(OSPF再配布/BGP neighbor route-map)
- 第6回: 経路情報のフィルタリング(VRF import/export map)
[追記 2013-01-06]
VRFとは
物理構成
用意する物:
物理構成は上図の通り。必要な構成は全部 VLAN で作るので、物理構成はルータ 2 台を 1 本の線でつなぐだけ。今回は Fa2 を選択。これを trunk port として設定しておきます。
interface FastEthernet2 switchport mode trunk no ip address end
Fa0 は管理用のリモートアクセスなので全部シリアルでやるなら要りません。今回、管理系の接続は vrf "mgmt" というのを作ってチュートリアル上は見えないようにしてあります。(この辺はまた別途。)
VRF 基礎の基礎
設定
単純に、VRF をつくってみます。
- GRT (Global Routing Table: デフォルトで存在する規定のルーティングテーブルです。)
interface Loopback0 ip address 10.0.0.0 255.255.255.255 ! interface Vlan720 ip address 10.2.0.1 255.255.255.0 ! interface Vlan800 ip address 10.1.0.1 255.255.255.0 !
- expvrf01
exprtr1#sh run vrf expvrf01 ip vrf expvrf01 rd 64601:1 route-target export 64601:1 route-target import 64601:1 ! ! interface Loopback1 ip vrf forwarding expvrf01 ip address 10.0.0.1 255.255.255.255 ! interface Vlan801 ip vrf forwarding expvrf01 ip address 10.1.1.1 255.255.255.0 ! end
- expvrf02
exprtr1#sh run vrf expvrf02 ip vrf expvrf02 rd 64601:2 route-target export 64601:2 route-target import 64601:2 ! ! interface Loopback2 ip vrf forwarding expvrf02 ip address 10.0.0.2 255.255.255.255 ! interface Vlan722 ip vrf forwarding expvrf02 ip address 10.2.2.1 255.255.255.0 ! interface Vlan802 ip vrf forwarding expvrf02 ip address 10.1.2.1 255.255.255.0 ! end
- expvrf03
exprtr1#sh run vrf expvrf03 ip vrf expvrf03 rd 64601:3 route-target export 64601:3 route-target import 64601:3 ! ! interface Loopback3 ip vrf forwarding expvrf03 ip address 10.0.0.3 255.255.255.255 ! interface Vlan723 ip vrf forwarding expvrf03 ip address 10.2.3.1 255.255.255.0 ! interface Vlan803 ip vrf forwarding expvrf03 ip address 10.1.3.1 255.255.255.0 ! end
確認
各 VRF のパラメータの確認:
exprtr1#sh ip vrf Name Default RD Interfaces expvrf01 64601:1 Lo1 Vl801 expvrf02 64601:2 Lo2 Vl722 Vl802 expvrf03 64601:3 Lo3 Vl723 Vl803 mgmt 65535:1 Fa0 exprtr1#
各 VRF の持っている経路情報の確認:
- Route/GRT
exprtr1#sh ip route Codes: L - local, 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, H - NHRP, l - LISP + - replicated route, % - next hop override Gateway of last resort is not set 10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks C 10.0.0.0/32 is directly connected, Loopback0 C 10.1.0.0/24 is directly connected, Vlan800 L 10.1.0.1/32 is directly connected, Vlan800 C 10.2.0.0/24 is directly connected, Vlan720 L 10.2.0.1/32 is directly connected, Vlan720 exprtr1#
- Route/expvrf01
exprtr1#sh ip route vrf expvrf01 Routing Table: expvrf02 (略) Gateway of last resort is not set 10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks C 10.0.0.1/32 is directly connected, Loopback1 C 10.1.1.0/24 is directly connected, Vlan801 L 10.1.1.1/32 is directly connected, Vlan801 exprtr1#
- Route/expvrf02
exprtr1#sh ip route vrf expvrf02 Routing Table: expvrf03 (略) Gateway of last resort is not set 10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks C 10.0.0.2/32 is directly connected, Loopback2 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 exprtr1#
- Route/expvrf03
exprtr1#sh ip route vrf expvrf03 Routing Table: expvrf03 (略) Gateway of last resort is not set 10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks C 10.0.0.3/32 is directly connected, Loopback3 C 10.1.3.0/24 is directly connected, Vlan803 L 10.1.3.1/32 is directly connected, Vlan803 C 10.2.3.0/24 is directly connected, Vlan723 L 10.2.3.1/32 is directly connected, Vlan723 exprtr1#
どの VRF の経路も、VRF に直接ひもづけられた L3 インタフェースの情報だけで、他の VRF が持つ経路は見えないことがわかります。
まとめ
- VRF をつくることで VRF ごとに経路情報を分離することができます。
- VLAN(L2 broadcast domain) -- Routed Interface -- VRF という対応になります。
- VRF によって分離された環境は、そのままでは相互に通信することはありまさん。なぜなら、自分のルーティングテーブルの中には自分が持っている経路しかないからです。たとえば宛先の経路が他所の VRF が持っている経路であっても、自分のルーティングテーブルに経路情報がなければ、パケットが入ってきたところで転送しようがありません。
- だからこそ「分離している」と言っているので当然なのですが。ただ、分離するだけでは柔軟性がないので、VRF 間通信を実現するための方法があります。それは今後説明していきます。
- 今回は説明とか後の話の都合、各 VRF が持っている IP アドレスは重複していなません。が、VRF が持つ経路情報は、他の VRF が持つアドレス空間として重複していてもかまわないです。
*1:実際自分がそうなってます。動作としてはだいたいわかるんだけど、何がどういう仕掛けでそうなっているのかとか見えないと何ともね。というのもあってここで整理し直していたり。