0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#3:CML無償版でVRF学んでみる(MPLS L3VPNでの片方向ルートリーク検証)

Last updated at Posted at 2025-10-06

本記事は、Cisco Modeling Labs(CML)無償版を用いて
MPLS L3VPN環境での VRF間ルートリーク(片方向VPNv4配布) を再現した学習記録です。

ソフトウェア著作権および商標はすべて Cisco Systems, Inc. に帰属します。
本記事は個人の非商用検証を目的としたもので、Cisco社の正式な見解を示すものではありません。


⚠️ 構文に関する注記

注記:前回の記事(CMLでVRFの基礎学習を行った回)では、
以下のような 旧構文(ip vrf 形式) を使用していました:

ip vrf VRF-A
 rd 100:1
 description VRF-A-Department
interface Ethernet0/0
ip vrf forwarding VRF-A

しかし、本記事では IOS-XE (17.x 系) 環境に基づく新構文
vrf definitionrouter ospf <proc> vrf <VRF> で設定しました。

vrf definition VRF-A
 rd 100:1
 address-family ipv4
   route-target export 100:100
   route-target import 100:100
 exit-address-family
router ospf 20 vrf VRF-A
 network 10.1.1.0 0.0.0.255 area 0

旧構文も理解の助けになりますが、
今回は、新しめのIOS-XE環境での構文形式で設定してみました。


🧩 トポロジ構成

image.png

  • ルータ構成:5台(CML無償版制限内)
  • 各ノード:IOL
  • 接続:Ethernet インターフェース
  • PE1 ↔ PE2 は Loopback経由で VPNv4ピアリング
  • MPLS + LDP + OSPF + MP-BGP

  • MPLS + OSPF + MP-BGP 構成
  • PE1 → PE2 のみ VPNv4 経路配布(片方向リーク)
  • CE1/CE2 は VRFを持たない(グローバルルーティング)

PE1(経路広告側)

hostname PE1
!
vrf definition VRF-A
 rd 100:1
 address-family ipv4
  route-target export 100:100
  route-target import 100:100
 exit-address-family
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!
interface Ethernet0/0
 vrf forwarding VRF-A
 ip address 10.1.1.1 255.255.255.0
 no shut
!
interface Ethernet0/1
 ip address 192.0.12.1 255.255.255.252
 mpls ip
 no shut
!
router ospf 10
 router-id 1.1.1.1
 network 1.1.1.1 0.0.0.0 area 0
 network 192.0.12.0 0.0.0.3 area 0
!
router ospf 20 vrf VRF-A
 router-id 10.1.1.1
 network 10.1.1.0 0.0.0.255 area 0
!
mpls ldp router-id Loopback0 force
!
router bgp 65000
 bgp router-id 1.1.1.1
 neighbor 2.2.2.2 remote-as 65000
 neighbor 2.2.2.2 update-source Loopback0
 !
 address-family vpnv4
  neighbor 2.2.2.2 activate
  neighbor 2.2.2.2 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf VRF-A
  redistribute ospf 20
 exit-address-family

PE2(経路受信側)

hostname PE2
!
vrf definition VRF-B
 rd 100:2
 address-family ipv4
  route-target export 200:200
  route-target import 100:100
 exit-address-family
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
!
interface Ethernet0/0
 vrf forwarding VRF-B
 ip address 10.2.2.1 255.255.255.0
 no shut
!
interface Ethernet0/1
 ip address 192.0.23.2 255.255.255.252
 mpls ip
 no shut
!
router ospf 10
 router-id 2.2.2.2
 network 2.2.2.2 0.0.0.0 area 0
 network 192.0.23.0 0.0.0.3 area 0
!
router ospf 20 vrf VRF-B
 router-id 10.2.2.1
 network 10.2.2.0 0.0.0.255 area 0
!
mpls ldp router-id Loopback0 force
!
router bgp 65000
 bgp router-id 2.2.2.2
 neighbor 1.1.1.1 remote-as 65000
 neighbor 1.1.1.1 update-source Loopback0
 !
 address-family vpnv4
  neighbor 1.1.1.1 activate
  neighbor 1.1.1.1 send-community extended
 exit-address-family

MPLS L3VPN 片方向ルートリーク構成

① CE1 → PE1(顧客側ネットワーク内の転送)

CE1 が CE2 宛パケット(10.2.2.2)を送信。
CE1 はスタティックルートで「10.2.2.0/24 → 10.1.1.1(PE1)」を指定。

確認コマンド

CE1# show ip route

出力例
image.png
✅ CE1 → PE1 への経路あり。

② PE1(VRF-Aで経路検索 → MPLSラベル付加)

  • PE1は「送信側」なので、BGP経路(受信)は存在せず、VPNv4広告側としての動作確認
  • VPNv4経路情報をもとに MPLSラベルを付加して Core へ送信。

確認コマンド

show ip route vrf VRF-A
show bgp vpnv4 unicast all
show mpls forwarding-table 2.2.2.2 32

出力例
image.png
⚠️「B」(BGP経路) が無いのは正しい。
片方向リークのため VRF-B側の経路は受信していない。

出力例
image.png
PE1 は自身のVRF-A経路をVPNv4として広告中。
「Path」欄の「?」は、OSPF→BGPへの再配布で経路の起点が不明(incomplete)として扱われるため。networkコマンドで明示広告した場合は「i」と表示されます。

出力例
image.png
✅ MPLSラベル付加済みで、Coreへ転送準備完了。

③ Pノード(MPLSラベルスイッチ)

  • Pノードは MPLSラベルを見て転送。IPヘッダは見ない。

確認コマンド

P# show mpls forwarding-table

出力例
image.png
✅ 中継ノードはVPNを意識せずラベル転送。

④ PE2(MPLS Core → VRF-B)

  • PE2 は受信ラベルを POP し、VRF-B を識別してルーティング。
  • VRF-B はRT:100:100 を import しているため、PE1(VRF-A) の経路を取り込む。

確認コマンド

PE2# show vrf detail VRF-B
PE2# show ip route vrf VRF-B
PE2# show bgp vpnv4 unicast all

出力例
image.png
Import RT:100:100 が設定されていれば、PE1(VRF-A)からの経路を受信。

image.png
B 10.1.1.0/24 [200/0] via 1.1.1.1 ※VPNv4経路の次ホップ(PE1のLoopback)

image.png

✅PE2がPE1からVPNv4経路を正常に受信している状態

  • Route Distinguisher: 100:1 は、PE1側(VRF-A)から受信したVPNv4経路を表します。
    → *>i の「i」は iBGP(MP-BGP)経由で受信 したことを意味します。
  • Route Distinguisher: 100:2 (default for vrf VRF-B) は、PE2自身のVRF-Bを表します。
    → 同一の 10.1.1.0/24 がVRF-BのRIB(ルーティングテーブル)にもインポート済み。
    これにより、PE2はPE1(1.1.1.1)からVPNv4経路を受信し、自身のVRF-Bに 10.1.1.0/24 (VRF-A側ネットワーク) を取り込んでいることが確認できます。
  • 片方向リーク構成では、PE1→PE2方向のみ VPNv4経路が存在するため、逆方向(PE2→PE1)にはこのエントリが表示されません。

⑤ CE2(VPN外ネットワーク内で受信)

  • CE2 は PE2 からのルーティング情報を基にローカルで転送。

確認コマンド

CE2# show ip route

出力例
image.png

⚠️ 戻り経路がないため、CE2 から CE1 へのルートは存在しない。

✅ まとめ:片方向VPNv4リーク構成の確認ポイント

本構成は、PE1 → PE2 方向のみ VPNv4 経路が配布される「片方向リーク構成」 です。
各プロセスで確認すべきコマンドと、出力に現れるポイントを以下に整理します。

段階 動作内容 主確認コマンド 出力に現れるポイント
① CE1 → PE1 CE1がスタティックルートを使用し、VRF-A側のPE1へパケット転送 show ip route (CE1) S 10.2.2.0/24 via 10.1.1.1 が表示される
② PE1(VRF-A) VRF-Aルーティングテーブルを検索し、VPNv4経路として広告 show ip route vrf VRF-A
show bgp vpnv4 unicast all
VRF-A内に C 10.1.1.0/24 のみ。
?付きの経路がVPNv4に広告されている
③ Pノード(コア) MPLSラベルを用いて単純転送(ラベルスイッチング) show mpls forwarding-table IP非参照、Local → Outgoing ラベル変換を確認
④ PE2(VRF-B) PE1から受信したVPNv4経路をVRF-Bへインポート show vrf detail VRF-B
show ip route vrf VRF-B
show bgp vpnv4 unicast all
VRF-Bに B 10.1.1.0/24 [200/0] via 1.1.1.1 が存在し、経路受信を確認
⑤ CE2 VRF-B経由でパケットを受信(戻り経路なし) show ip route (CE2) C 10.2.2.0/24 のみ存在(片方向到達)

あと、調べていくうちに「特定prefixだけ許可したい」「経路数を絞りたい」というroute-map方式を使うのもあるようですが、ちょっと複雑なので!またの機会にやってみます!

机上の勉強だけでは、理解進みにくかったVRFでしたが、CMLで設定コンフィグ投入して、想定した出力結果になるように、何度も入れ直してみることで学習進められました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?