目次
概要
異なるVRF間で通信できるようにするためにVRFルートリークの設定を行います。MP-BGPを利用するとVRFルートリークの制御をより柔軟に行うことができます。MP-BGPによるVRFルートリークについて解説します。
関連記事
スタティックルートを利用したVRFルートリークについて、以下の記事で解説しています。
MP-BGPによるVRFルートリークの設定例を以下の記事にまとめています。
VRFルートリークのポイント
VRFルートリークのポイントは、「通信させたいネットワークのルート情報を異なるVRF間で共有する」ことです。通常、VRFのルーティングテーブルには他のVRFのルート情報は登録されません。VRFルートリークによって、VRFのルーティングテーブルに異なるVRFのルート情報を登録します。
具体的に以下のネットワーク構成で、VRF「AAA」の192.168.1.0/24とVRF「BBB」の172.16.1.0/24間のみ通信可能にする例を考えます。
大事なことは、ルーティングの原則です。「ルーティングテーブルに登録されているネットワーク宛ての通信はできる」ということです。そのために、VRF「AAA」とVRF「BBB」の両方のルーティングテーブルに通信させたい「192.168.1.0/24」と「172.16.1.0/24」のルート情報を登録すればOKです。つまり、VRF「AAA」とVRF「BBB」のルーティングテーブルで、「192.168.1.0/24」と「172.16.1.0/24」のルート情報を共有します。VRF「AAA」のルーティングテーブルにVRF「BBB」の「172.16.1.0/24」のルート情報を登録します。そして、VRF「BBB」のルーティングテーブルにVRF「AAA」の「192.168.1.0/24」のルート情報を登録します。
このようなVRF間で特定のルート情報を共有できるようにするために、MP-BGPを利用すると柔軟な制御ができます。
MP-BGPとは
さて、MP-BGPによるVRFルートリークについて考えるために、「MP-BGPとは」から話を進めましょう。
MP-BGPとは、MPLS-VPNを実現するためのPEルータ間で利用するルーティングプロトコルです。MP-BGPは、32ビットのIPv4アドレス以外のさまざまなアドレス情報(address-family)を扱えるようにしているBGPの拡張です。
MPLS-VPNにおいて、32ビットのIPv4アドレスにRD(Route Distinguisher)を付加した96ビットのVPNv4ルートを扱うためにMP-BGPを利用します。VPNv4ルートとすることで、MPLS-VPNを利用するユーザのアドレス範囲が重複していても問題ありません。
VPNv4ルート
VRFの32ビットのIPv4ルートを96ビットのVPNv4ルートに変換します。そのために、VRFの64ビットのRDを付加します。VPNv4ルートはBGPルートなので、AS_PATH、ORIGINなどさまざまなBGPアトリビュートも付加します。その中で重要なのがRoute Target(RT)です。RTはBGPの拡張コミュニティアトリビュートの一種です。RTによって、VPNv4ルートをどのVRFで扱うべきなのかを識別します。RTは64ビットの数値ですが、一般的に「<AS番号>:<任意の番号>」というフォーマットで表記します。
VRFには、Import RTとExport RTを設定します。VRF内のIPv4ルートをVPNv4ルートとして生成するには、VRF内のBGPへ再配送を行います。または、VRF内のBGPでnetworkコマンドを設定してもOKです。すると、VRF内のBGPルートにRDを付加してVPNv4ルートとしてMP-BGPテーブルに登録されます。このとき、Export RTが付加されます。
以下の図は、VPNv4ルートを生成する簡単な例です。VRF「AAA」内でOSPFルートとして「192.168.1.0/24」を学習していることを想定しています。VPNv4ルートとして生成するためには、VRF「AAA」でOSPFからBGPへ再配送します。すると、192.168.1.0/24はRDが付加されて「1:100:192.168.1.0/24」という96ビットのアドレスとして、MP-BGPテーブルに登録されます。そして、1:100のRTも付加されます。
そして、VRFのImport RTによってMP-BGPのVPNv4ルートをどのVRFで扱うべきかを識別します。Import RTに指定しているRTを持つVPNv4ルートをVRF内のBGPテーブルに登録します。
以下の図は、Import RTの考え方の例です。ローカルで生成したVPNv4ルートだとわかりづらいので、他のMP-BGPネイバーから「1:100:192.168.100.0/24 RT 1:100」というVPNv4ルートを受信しているという例です。他のMP-BGPネイバーから受信したVPNv4ルートはMP-BGPテーブルに登録されます。そして、RT 1:100が付加されていると、Import RT 1:100のVRF「AAA」のルートとして扱います。32ビットの192.168.100.0/24としてVRF「AAA」のBGPテーブルに登録されます。
この例で192.168.100.0/24をVRF「AAA」で扱うのはRDが1:100だからではありません。RTが1:100だからです。この点を勘違いしないように注意してください。また、例として他のMP-BGPネイバーから受信したVPNv4ルートを考えていますが、ローカルで生成したVPNv4ルートでも同じです。
RDとRTは役割が違う
RDとRTを同じ値に設定していることが多いのですが、RDとRTは全く役割が違っているので注意してください。RDは重複アドレスを扱えるようにするために、32ビットのIPv4アドレスを96ビットのVPNv4アドレスへ拡張するためのものです。そして、RTによってVPNv4アドレスをどのVRFで扱うかを制御します。
MPLS-VPNでユーザの拠点を単純にフルメッシュで接続するだけなら、何も考えずにRDとRTを同じ値にしておけば大丈夫です。フルメッシュではなくて、エクストラネットを設定したいとか、特定のルートだけをハブ&スポークにしたいという場合に、RTを細かく制御します。
なお、RTは1つだけでなく複数付加できます。そして、VRFに対してImport/Export RTを複数設定できます。ルートごとにRTを追加で付加することもできます。
MP-BGPによるVRFルートリークの仕組み
VRFルートリークのポイントをあらためて振り返ります。
「通信させたいネットワークのルート情報を異なるVRF間で共有すること」
そのための仕組みは次の通りです。
- 共有させたいルートに追加のRTを付加する
- ルートを共有させたいVRFのImport RTに追加のRTも設定する
これだけです。簡単ですね?では、具体的に考えましょう。
VRF「AAA」とVRF「BBB」のルーティングテーブルで「192.168.1.0/24」と「172.16.1.0/24」を共有したいので、この2つのルートに追加でRTを付加します。値は何でもいいのですが、「100:100」とします。そして、VRF「AAA」とVRF「BBB」のImport RTの設定に「100:100」も追加します。
VRF名 | RD | Import RT | Export RT |
AAA | 1:100 | 1:100 100:100 | 1:100 100:100(192.168.1.0/24のみ追加) |
BBB | 2:100 | 2:100 100:100 | 2:100 100:100(172.16.1.0/24のみ追加) |
こうした設定をすると、R1でMP-BGPテーブルに登録されるVPNv4ルートは以下の図のようになります。
VRF「AAA」の「192.168.1.0/24」とVRF「BBB」の「172.16.1.0/24」に追加で共通のRT「100:100」を付加しています。RT「100:100」はVRF「AAA」とVRF「BBB」のImport RTになっています。そのため、192.168.1.0/24のルートがVRF「BBB」のBGPテーブルに登録されます。また、172.16.1.0/24のルートがVRF「AAA」のBGPテーブルに登録されます。そして、それらのルートはBGPルートとしてルーティングテーブルに登録されます。
つまり、VRF「AAA」とVRF「BBB」で「192.168.1.0/24」と「172.16.1.0/24」のルートが共有されていることになります。
MP-BGPによるVRFルートリークの設定と確認
MP-BGPによるVRFルートリークの設定として、MP-BGPに関する設定コマンドとVRFに関する設定コマンドを解説します。
MP-BGPに関する設定
MP-BGPのVPNv4ルートを生成します。MP-BGPのVRFで適切なルーティングプロセスから再配送します。または、networkコマンドを利用します。
MP-BGPの設定
(config)#router bgp <AS>
(config-router)#bgp router-id <router-id>
(config-router)#address-family ipv4 vrf <vrf-name>
(config-router-af)#redstirbitute <routing-process>
(config-router-af)#network <network> mask <subnetmask>
<AS> : AS番号
<router-id> : BGPルータID
<vrf-name> : VRF名
<routing-process> : 再配送元のルーティングプロセス
<network> : ネットワークアドレス
<subnetmask> : サブネットマスク
なお、MPLS-VPNを構築するときにはMPLSやMP-BGPネイバーの設定も必要です。単体のルータでVRFルートリークを行うだけなら、MPLSやMP-BGPネイバーは設定しなくても大丈夫です。
VRFに関する設定
VRFでRDおよび適切なImport RT/Export RTを設定します。グローバルコンフィグレーションモードで次のコマンドを入力します。
VRFの設定
(config)#ip vrf <vrf-name>
(config-vrf)#rd <RD>
(config-vrf)#route-target import <RT>
(config-vrf)#route-target export <RT>
(config-vrf)#export map <route-map-name>
<vrf-name> : VRF名
<RD> : RD
<RT> : RT
<route-map-name> : ルートマップ名
インタフェースにVRFを割り当てるための設定は省略しています。route-target import/exportは複数設定可能です。また、特定のルートに対して追加のRTを付加するために、export mapコマンドでルートマップを関連付けます。ルートマップによって、追加のRTを付加するルートの条件と、付加するRTを指定します。ルートマップで追加のRTを設定するためのコマンドは次の通りです。
ルートマップ RTの付加
(config)#route-map <map-name> {permit|deny} [<seq>]
(config-route-map)#match <condition>
(config-route-map)#set extcommunity rt <RT> [additive]
<map-name> : ルートマップ名
<seq> : シーケンス番号
<condition> : 追加のRTを付加するルートの条件
<RT> : RT
additiveを付けないとRTは上書きされます。RTを「追加」するならadditiveを付けてください。
関連記事
ルートマップについて、以下の記事も合わせてご覧ください。
確認コマンド
以下は、MP-BGPのVPNv4ルートおよびVRFの設定を確認するための主な確認コマンドです。
コマンド | 内容 |
#show bgp vpnv4 unicast all | すべてのVRFのVPNv4ルートを表示します。 |
#show bgp vpnv4 unicast vrf <vrf-name> | 指定したVRFのVPNv4ルートを表示します。 |
#show ip route vrf <vrf-name> | VRFのルーティングテーブルを表示します。 |
#show ip vrf [detail] | VRFの情報を表示します。detailをつけると詳細情報です。 |
#show route-map | ルートマップの条件とアクションを表示します。 |
show bgp vpnv4 unicast all
show bgp vpnv4 unicast allコマンドですべてのVRFのVPNv4ルートを表示します。
show bgp vpnv4 unicast all
R1#show bgp vpnv4 unicast all BGP table version is 27, 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.0.0/24 0.0.0.0 0 32768 ? *> 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 ? Route Distinguisher: 2:100 (default for vrf BBB) *> 172.16.0.0/24 0.0.0.0 0 32768 ? *> 172.16.1.0/24 172.16.0.3 409600 32768 ? *> 172.16.2.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 ?
プレフィクスを指定すると、付加されているRTもわかります。
show bgp vpnv4 unicast all <prefix>
R1#show bgp vpnv4 unicast all 192.168.1.0 BGP routing table entry for 1:100:192.168.1.0/24, version 19 Paths: (1 available, best #1, table AAA) 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 RT:100: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 23/nolabel BGP routing table entry for 2:100:192.168.1.0/24, version 22 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
show bgp vpnv4 unicast vrf <vrf-name>
show bgp vpnv4 unicast vrfコマンドでVRFごとのVPNv4ルートを表示します。
show bgp vpnv4 unicast vrf
R1#show bgp vpnv4 unicast vrf AAA BGP table version is 27, 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.0.0/24 0.0.0.0 0 32768 ? *> 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 ?
show ip route vrf <vrf-name>
show ip route vrfコマンドでVRFのルーティングテーブルを表示します。
show ip route vrf
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, 2 subnets B 172.16.0.0 is directly connected, 01:37:26, FastEthernet0/1 B 172.16.1.0 [20/409600] via 172.16.0.3 (BBB), 01:37:26, 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:47:55, FastEthernet0/0 O 192.168.2.0/24 [110/11] via 192.168.0.2, 01:47:55, FastEthernet0/0
show ip vrf [detail]
show ip vrfでVRFの情報を表示します。detailをつけて詳細を表示するとImport RT/Export RTもわかります。import map/export mapで関連付けているルートマップ名も確認できます。
show ip vrf [detail]
R1#show ip vrf Name Default RD Interfaces AAA 1:100 Fa0/0 BBB 2:100 Fa0/1 R1#show ip vrf detail VRF AAA; default RD 1:100; default VPNIDInterfaces: Fa0/0 Connected addresses are not in global routing table Export VPN route-target communities RT:1:100 Import VPN route-target communities RT:100:100 RT:1:100 No import route-map Export route-map: ROUTE-LEAK-EX VRF label distribution protocol: not configured VRF label allocation mode: per-prefix 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:100:100 RT:2:100 No import route-map Export route-map: ROUTE-LEAK-EX VRF label distribution protocol: not configured VRF label allocation mode: per-prefix
show route-map
show route-mapコマンドでimport map/export mapで関連付けているルートマップの内容を表示します。
show route-map
R1#show route-map route-map ROUTE-LEAK-EX, permit, sequence 10 Match clauses: ip address (access-lists): 1 Set clauses: extended community RT:100:100 additive Policy routing matches: 0 packets, 0 bytes route-map ROUTE-LEAK-EX, permit, sequence 100 Match clauses: Set clauses: Policy routing matches: 0 packets, 0 bytes
必要ならmatch条件で関連付けているACLやプレフィクスリストも確認してください。
関連記事
まとめ
ポイント
- MP-BGPを利用するとVRFルートリークの制御をより柔軟に行うことができます。
- VRFルートリークのポイントは、「通信させたいネットワークのルート情報を異なるVRF間で共有すること」です。
- MP-BGPによるVRFルートリークの仕組みは以下の通りです。
- 共有させたいルートに追加のRTを付加する
- ルートを共有させたいVRFにImport RTに追加のRTも設定する
- VRFのexport mapの設定によって、特定のルートのみに追加のRTを付加できます。
IPルーティング応用
- DNSラウンドロビン方式の負荷分散
- 負荷分散装置(ロードバランサ)の仕組み
- ルーティングプロセス ~実行中のルーティングプロトコル用のプログラム~
- 複数のルーティングプロトコルの利用
- 再配送(再配布) ~ルーティングドメイン境界で必須の設定~
- Cisco再配送(再配布)の設定 ~redistributeコマンド~
- Cisco 再配送の設定例 ~OSPFとRIPの双方向再配送~
- 再配送 設定ミスの切り分けと修正 Part1
- 再配送 設定ミスの切り分けと修正 Part2
- 再配送 設定ミスの切り分けと修正 Part3
- 再配送 設定ミスの切り分けと修正 Part4
- 再配送 設定ミスの切り分けと修正 Part5
- 再配送 設定ミスの切り分けと修正 Part6
- オフセットリスト(offset-list) ~ルート情報のメトリックを加算~
- オフセットリストの設定例 RIP
- オフセットリストの設定例 EIGRP
- ルートフィルタの概要
- ルートフィルタのポイント
- ディストリビュートリストによるルートフィルタの設定
- Ciscoディストリビュートリストによるルートフィルタの設定例
- プレフィクスリスト(prefix-list)によるルートフィルタの設定
- Ciscoプレフィクスリストによるルートフィルタの設定例
- Ciscoルートマップ(route-map)の概要 ~何をどう処理するか~
- Ciscoルートマップの設定
- Ciscoルートマップ(route-map)設定のポイント
- Ciscoルートマップによる再配送時のルート制御の設定例
- ポリシーベースルーティングの設定例
- GREトンネルインタフェース ~仮想的なポイントツーポイント接続~
- GREトンネルインタフェースの設定例
- GREトンネルの注意点 ~フラッピングしないように~
- オーバーレイネットワークとアンダーレイネットワーク
- ルート制御 ケーススタディ Part1
- ルート制御 ケーススタディ Part2
- ルート制御 ケーススタディ Part3
- VRF/VRF-Liteの概要 ~仮想的にルータを分割する~
- VRFの設定と確認コマンド [Cisco]
- VRF-Liteによるレイヤ3VPNの設定例 [Cisco]
- VRFルートリーク(スタティックルート)
- VRFルートリーク(スタティックルート)の設定例
- VRFルートリーク(MP-BGP)
- VRFルートリーク(MP-BGP)の設定例
- [FVRFの仕組み] FVRF(Front door VRF)とは
- [FVRFの仕組み] ポイントツーポイントGREトンネル:FVRFなし
- [FVRFの仕組み] ポイントツーポイントGREトンネル : FVRFあり(tunnel vrfコマンド)
- [FVRFの仕組み] IPSec VTI : FRVRFあり
- [FVRFの仕組み] IPSec VTI : FVRFあり 設定例
- [FVRFの仕組み] DMVPN : FVRFあり
- [FVRFの仕組み] DMVPN : FVRFあり 設定例 Part1
- [FVRFの仕組み] DMVPN : FVRFあり 設定例 Part2
- tunnel vrfコマンド
- tunnel vrfコマンドの設定例
- [演習] ルーティングループの防止
- [演習] 企業ネットワーク構築演習 Part1:拠点1の構築
- [演習] 企業ネットワーク構築演習 Part2:拠点2/拠点3の構築
- [演習] 企業ネットワーク構築演習 Part3:広域イーサネットの接続
- [演習] 企業ネットワーク構築演習 Part4:インターネット(AS1/AS2)の構築
- [演習] 企業ネットワーク構築演習 Part5:インターネットへの接続
- [演習] 企業ネットワーク構築演習 Part6:インターネットVPNの構築