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

VRF とダイナミックルーティング

論理構成

ここから 2 台構成です。

ここでは

  • VRF で分離した環境は分離したまま。
  • それぞれの分離された環境内に他の L3 機材を入れて動的ルーティングで環境を拡張しよう。
  • とはいえそんなにデバイスがあるわけじゃないから対向側も VRF で用意してしまえ。

という状態です。

設定
  • 全体的な操作
    • exprtr02 は exprtr01 と同様に VRF をつくります。
    • GRT 同士は static route で通信できるようにします。
    • expvrf01 はこの後の話で使うので今は放置。
    • expvrf02 と expvrf12 は、BGP で経路交換をします。
    • expvrf03 と expvrf13 は、OSPF で経路交換をします。
  • 注意点
    • VRFごとに各ルーティングプロトコル(プロセス)の設定があります。
      • OSPF は "router ospf ... vrf" でどの VRF インスタンスにひもづけるプロセスなのかを指定します。この場合、"capability vrf-lite" が必要になる点に注意。*1
      • BGP はひとつのルーティングプロセスの中に複数のVRFの設定が入ります。このへん、MPBGP とかアドレスファミリ(AF)の話とかを知らないとなかなかついて行くのが難しいです。確認のところで出しますが、address-family ipv4 vrf で VRF ごとの経路をBGPプロセスにくべると、経路情報は vpnv4 として管理されるようです。

exprtr1 設定(追加分):

  • GRT/exprtr1
ip route 10.0.0.10 255.255.255.255 10.2.0.2
ip route 10.3.0.0 255.255.255.0 10.2.0.2
!
router bgp 64601
 bgp router-id 10.0.0.0
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
end
  • expvrf01
router bgp 64601
!
 address-family ipv4 vrf expvrf01
  redistribute connected
 exit-address-family
!
end
  • expvrf02
router bgp 64601
!
 address-family ipv4 vrf expvrf02
  bgp router-id 10.0.0.2
  redistribute connected
  neighbor 10.2.2.2 remote-as 64601
  neighbor 10.2.2.2 update-source Vlan722
  neighbor 10.2.2.2 activate
 exit-address-family
!
end
  • expvrf03
router bgp 64601
!
 address-family ipv4 vrf expvrf03
  redistribute connected
 exit-address-family
!
router ospf 64601 vrf expvrf03
 router-id 0.0.0.3
 capability vrf-lite
 passive-interface default
 no passive-interface Vlan723
 network 10.0.0.3 0.0.0.0 area 0
 network 10.1.3.0 0.0.0.255 area 0
 network 10.2.3.0 0.0.0.255 area 0
end

exprtr2 設定:

  • GRT/exprtr2
interface Loopback0
 ip address 10.0.0.10 255.255.255.255
!
interface Vlan720
 ip address 10.2.0.2 255.255.255.0
!
interface Vlan810
 ip address 10.3.0.1 255.255.255.0
!
ip route 10.0.0.0 255.255.255.255 10.2.0.1
ip route 10.1.0.0 255.255.255.0 10.2.0.1
!
router bgp 64601
 bgp router-id 10.0.0.10
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
!
end
  • expvrf12
ip vrf expvrf12
 rd 64601:12
 route-target export 64601:12
 route-target import 64601:12
!
!
interface Loopback2
 ip vrf forwarding expvrf12
 ip address 10.0.0.12 255.255.255.255
!
interface Vlan722
 ip vrf forwarding expvrf12
 ip address 10.2.2.2 255.255.255.0
!
interface Vlan812
 ip vrf forwarding expvrf12
 ip address 10.3.2.1 255.255.255.0
!
interface Vlan822
 ip vrf forwarding expvrf12
 ip address 10.4.2.1 255.255.255.0
!
router bgp 64601
!
 address-family ipv4 vrf expvrf12
  bgp router-id 10.0.0.12
  redistribute connected
  neighbor 10.2.2.1 remote-as 64601
  neighbor 10.2.2.1 update-source Vlan722
  neighbor 10.2.2.1 activate
 exit-address-family
!
end
  • expvrf13
Current configuration : 707 bytes
ip vrf expvrf13
 rd 64601:13
 route-target export 64601:13
 route-target import 64601:13
!
!
interface Loopback3
 ip vrf forwarding expvrf13
 ip address 10.0.0.13 255.255.255.255
!
interface Vlan723
 ip vrf forwarding expvrf13
 ip address 10.2.3.2 255.255.255.0
!
interface Vlan813
 ip vrf forwarding expvrf13
 ip address 10.3.3.1 255.255.255.0
!
interface Vlan823
 ip vrf forwarding expvrf13
 ip address 10.4.3.1 255.255.255.0
!
router ospf 64601 vrf expvrf13
 router-id 0.0.0.13
 capability vrf-lite
 passive-interface default
 no passive-interface Vlan723
 network 10.0.0.13 0.0.0.0 area 0
 network 10.2.3.0 0.0.0.255 area 0
 network 10.3.3.0 0.0.0.255 area 0
 network 10.4.3.0 0.0.0.255 area 0
!
確認

各 Neighbor の状態確認。

  • expvrf02 (BGP)
    • 普通に show ip bgp neighbors とかでは出ない (これは IPv4 AF で neighbor つながってる場合)。vpnv4 を指定するとこんな感じで表示される。
exprtr1#sh ip bgp vpnv4 all summary
BGP router identifier 10.0.0.0, local AS number 64601
BGP table version is 12, main routing table version 12
11 network entries using 1760 bytes of memory
12 path entries using 672 bytes of memory
5/4 BGP path/bestpath attribute entries using 680 bytes of memory
3 BGP extended community entries using 72 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 3184 total bytes of memory
BGP activity 11/0 prefixes, 12/0 paths, scan interval 60 secs

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.2.2.2        4        64601      64      64       12    0    0 00:53:07        4
exprtr1#
  • expvrf03 (OSPF)
exprtr1#sh ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
0.0.0.13          1   FULL/DR         00:00:34    10.2.3.2        Vlan723
exprtr1#

経路情報 (exprtr1 側のみ):

  • GRT/exprtr1
    • 当然、static が増えるだけ。
exprtr1#sh ip route
(略)
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
C        10.0.0.0/32 is directly connected, Loopback0
S        10.0.0.10/32 [1/0] via 10.2.0.2
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
S        10.3.0.0/24 [1/0] via 10.2.0.2
exprtr1#
  • expvrf01
    • 変化なしなので省略
  • expvrf02
    • expvrf12の持っている経路が入ってくる。
exprtr1#sh ip route vrf expvrf02
(略)
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks
C        10.0.0.2/32 is directly connected, Loopback2
B        10.0.0.12/32 [200/0] via 10.2.2.2, 00:31:03
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:31:03
B        10.4.2.0/24 [200/0] via 10.2.2.2, 00:22:34
exprtr1#
  • expvrf03
    • expvrf13の持っている経路が入ってくる。
exprtr1#sh ip route vrf expvrf03
(略)
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks
C        10.0.0.3/32 is directly connected, Loopback3
O        10.0.0.13/32 [110/2] via 10.2.3.2, 00:39:41, Vlan723
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
O        10.3.3.0/24 [110/2] via 10.2.3.2, 00:39:41, Vlan723
O        10.4.3.0/24 [110/2] via 10.2.3.2, 00:22:07, Vlan723
exprtr1#

BGP 経路情報:

  • show ip bgp vpnv4 all で VPNv4 AF の経路情報を表示できます。
    • 各 VRF の情報が入っています。(expvrf01 みたいに、今回直接使わないところも address-family ipv4 vrf で全部入れてしまっていますが、これはこの後で使っていきます。)
    • 今回は、expvrf02 は BGP で経路情報を交換するので、BGP Router ID を個別に設定しています。
    • GRT の情報は IPv4 AF なのでこのコマンドでは出ません。
exprtr1#sh ip bgp vpnv4 all
BGP table version is 12, local router ID is 10.0.0.0
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, x best-external, f RT-Filter

Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 64601:1 (default for vrf expvrf01)
*> 10.0.0.1/32      0.0.0.0                  0         32768 ?
*> 10.1.1.0/24      0.0.0.0                  0         32768 ?
Route Distinguisher: 64601:2 (default for vrf expvrf02) VRF Router ID 10.0.0.2
*> 10.0.0.2/32      0.0.0.0                  0         32768 ?
*>i10.0.0.12/32     10.2.2.2                 0    100      0 ?
*> 10.1.2.0/24      0.0.0.0                  0         32768 ?
* i10.2.2.0/24      10.2.2.2                 0    100      0 ?
*>                  0.0.0.0                  0         32768 ?
*>i10.3.2.0/24      10.2.2.2                 0    100      0 ?
*>i10.4.2.0/24      10.2.2.2                 0    100      0 ?
Route Distinguisher: 64601:3 (default for vrf expvrf03)
*> 10.0.0.3/32      0.0.0.0                  0         32768 ?
*> 10.1.3.0/24      0.0.0.0                  0         32768 ?
*> 10.2.3.0/24      0.0.0.0                  0         32768 ?
exprtr1#
まとめ
  • VRF ごとに static/dynamic routing を使うことができます。
    • BGP の場合は address-family ipv4 vrf
    • OSPF の場合は router ospf vrf
    • 今回入れてないですが、static route の場合は ip route vrf になります。
  • VRF の経路情報は address-family vpnv4 で BGP テーブルに入ります。BGP テーブルに入れて、いろいろ制御かけます。というのは今後やります。