本シリーズ記事は、現代のエンタープライズネットワークにおける重要技術である「BGP EVPN VXLAN」について、基礎から応用までを段階的に解説し、技術的な理解を深めていただくことを目的としています。
前回の記事では、L2ネットワークの延伸(L2VNI)を構築してみました。
今回はその続きとして、Cisco Catalyst 9300シリーズの実機を用い、BGP EVPN VXLANにおけるL3ネットワーク(L3VNI)を構築する手順と、その動作確認方法を具体的に紹介します。
なお、本記事はエンタープライズネットワークにおけるルーティングおよびスイッチングに関する基礎知識を有する方を対象としています。
また、UnderlayやL2VNIの詳細は一回目記事にで、構築済みです。
BGP EVPN VXLANにおけるL3VNI
前回のL2VNI構築では、異なるLeafスイッチ配下の同一VLAN(サブネット)間での通信を実現しました。
今回のL3VNI構築では、異なるVLAN(サブネット)間での通信をVXLANファブリック上で実現します。
技術要素
これを実現するために、以下の技術要素を組み合わせます。
VRF (Virtual Routing and Forwarding)
仮想的なルーティングテーブルを作成し、テナントやセグメントごとの通信を分離します。1台のルータ上で複数の独立したルーティングテーブルを保持する技術です。
L3VNI (Layer 3 VXLAN Network Identifier)
VRFごとのルーティング情報をVXLAN上で転送するために使用する識別子で、VRF間のルーティングトラフィックをカプセル化するために使用されるVNIです。
Distributed Anycast Gateway (DAG)
すべてのLeafスイッチに同じデフォルトゲートウェイ(IPアドレスとプラットフォーム共通のAnycast MAC)を持たせることで、端末の移動(モビリティ)を容易にし、デフォルトゲートウェイへの通信を最適化する分散ゲートウェイ方式です。
関連用語
構築に入る前に、関連用語を簡単に整理します。
RT (Route Target)
BGP EVPNにおいて、どのVRFに経路情報をインポート/エクスポートするかを制御する拡張コミュニティ属性です。
Stitching
EVPNルートとVRF内のIPルートを紐付ける(縫い合わせる)動作を指します。
BGP L2VPN EVPN
MACアドレスやIPアドレス情報を運ぶためのBGPのアドレスファミリです。
NVE (Network Virtualization Endpoint)
VXLANのカプセル化/非カプセル化を行う論理インターフェースです。
EVPNルートタイプ5(IP Prefix Route)
EVPN上でIPプレフィックス(サブネット情報)を運ぶためのルートタイプです。Type 2ルートが主にMACアドレスやIP/MACの対応情報(MAC/IPルート)を扱うのに対し、Type 5ルートはVRF単位のIPプレフィックス(例:192.168.101.0/24, 192.168.102.0/24)を広告し、L3VNI経由で異なるLeaf間のL3到達性を実現します。
show bgp l2vpn evpn all コマンドにより、Type 5ルートが正しく交換されているのかを確認できます。
検証環境
前回L2VNIの構成時、UnderlayのOSPFやPIM等は設定しました。それに対し、今回はL3VNIの設定を新規に追加します。また、追加部分を赤字で表現します。
機器構成
- Spine: Cisco C9300-48S × 1
- Leaf: Cisco C9300L-48P-4X × 2
- Client: Cisco WS-C3750X-24T-S × 2(クライアント端末として代用)
- OSバージョン: IOS-XE 17.18.01(全機器共通)
IPアドレス設計
Spine設定
- Loopback0 (Router-ID): 10.0.0.3/32
- Loopback1 (NVE Source): 192.168.0.3/32
- PIM RP: 10.0.0.4
- Leaf1向け物理IF: 192.168.1.2/24
- Leaf2向け物理IF: 192.168.2.2/24
Leaf1設定
- Loopback0 (Router-ID): 10.0.0.1/32
- Loopback1 (NVE Source): 192.168.0.1/32
- SVI 101 (Gateway): 192.168.101.2/24
- SVI 102 (Gateway): 192.168.102.2/24
- Spine向け物理IF: 192.168.1.1/24
Leaf2設定
- Loopback0 (Router-ID): 10.0.0.2/32
- Loopback1 (NVE Source): 192.168.0.2/32
- SVI 101 (Gateway): 192.168.101.2/24
- SVI 102 (Gateway): 192.168.102.2/24
- Spine向け物理IF: 192.168.2.1/24
クライアント設定
- Client1: 192.168.101.1/24 (VLAN 101, L2 VNI 10101)
- Client2: 192.168.102.1/24 (VLAN 102, L2 VNI 10102)
構成図
二つの階層の構成イメージ図は下記になります。
※ 本構成図は検証用に作成されたもので、本番環境とは異なます。
Underlay

Overlay

構築手順
以下の設定を共通設定として、各Leafスイッチに追加し、L3通信を構築していきます。
※Leaf1/Leaf2で同一設定になります。rd 1:1 や route-target 1:1、vlan 888 などの数値について、本検証環境では便宜上この値を使用します。
VRFおよびRoute Target (RT) の設定
テナント用VRF「JBS」を作成し、RD(Route Distinguisher)とRTを設定します。
stitching キーワードを付与することで、EVPN上のIPプレフィックスルート(Type 5)と、VRF内のルーティング情報を相互に紐づけ、L3VNI経由のIP到達性を実現しています。
今回の検証では、任意の値で「1:1」を設定します。
vrf definition JBS rd 1:1 ! address-family ipv4 route-target export 1:1 route-target import 1:1 route-target export 1:1 stitching route-target import 1:1 stitching exit-address-family
BGP L2VPN EVPNの設定
EVPNインスタンスの設定と、BGPネイバー設定を行います。
VRF配下の経路をEVPNへアドバタイズする設定もここに含まれます。
l2vpn evpn replication-type static router-id Loopback1
! L2VNIの設定
vlan configuration 101
member evpn-instance 101 vni 10101
vlan configuration 102
member evpn-instance 102 vni 10102
! l2vpn evpn instance 101 vlan-based encapsulation vxlan l2vpn evpn instance 102 vlan-based encapsulation vxlan
router bgp 1 bgp log-neighbor-changes no bgp default ipv4-unicast neighbor 10.0.0.3 remote-as 1 neighbor 10.0.0.3 update-source Loopback0 ! address-family ipv4 exit-address-family ! address-family l2vpn evpn neighbor 10.0.0.3 activate neighbor 10.0.0.3 send-community both exit-address-family ! ! VRF JBSのアドレスファミリを設定 address-family ipv4 vrf JBS advertise l2vpn evpn redistribute static redistribute connected exit-address-family
L3VNIの設定
L3ルーティング用のVNI(ここでは10888)を定義し、VLANに関連付けます。
後ほど show l2vpn evpn evi 101 detail コマンドでも、Vlan888とL3 VNI 10888の関連付けが確認できることを見ていきます。
vlan 888
!
vlan configuration 888 member vni 10888
Distributed Anycast Gateway (DAG) の設定
各VLANインターフェース(SVI)をVRF「JBS」に所属させ、ゲートウェイIPアドレスを設定します。
Leaf1、Leaf2ともに同じIPアドレスを設定することでDAGを実現します。
interface Vlan101 vrf forwarding JBS ip address 192.168.101.2 255.255.255.0 !
interface Vlan102 vrf forwarding JBS ip address 192.168.102.2 255.255.255.0
NVEインターフェースの設定
NVEインターフェースにL3VNI(10888)をVRF「JBS」に関連付けて追加します。
interface nve1 no ip address source-interface Loopback1 host-reachability protocol bgp member vni 10888 vrf JBS member vni 10102 mcast-group 225.0.0.102 member vni 10101 mcast-group 225.0.0.101
疎通確認
設定が正しく反映されているかの確認として、Client1からClient2に対して、Pingを実施します。
Client1#ping 192.168.102.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.102.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/4/9 ms
Pingが成功し、疎通確認ができました。
ステータス確認
疎通確認できたため、ここからは各ステータスを確認します。
Leaf1での確認
OSPFネイバーの確認
ネイバーとのステータスがFullとなり、Underlayネットワークが正常であることを確認します。
Leaf1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.0.0.3 0 FULL/ - 00:00:36 192.168.1.2 GigabitEthernet1/0/1
BGP EVPNルートの確認
Route Distinguisher: 1:1 (default for vrf JBS) のセクションにて、タイプ5ルート(IP Prefix Route)が学習されていることを確認します。
Leaf1#show bgp l2vpn evpn all ... Route Distinguisher: 1:1 (default for vrf JBS) *> [5][1:1][0][24][192.168.101.0]/17 0.0.0.0 0 32768 ? *>i [5][1:1][0][24][192.168.102.0]/17 192.168.0.2 0 100 0 ?
EVPNインスタンスの確認
L3 VNIとして 10888 が正しくマッピングされていることが確認できます。
Leaf1#show l2vpn evpn evi 101 detail EVPN instance: 101 (VLAN Based) RD: 192.168.0.1:101 (auto) Import-RTs: 1:101 Export-RTs: 1:101 ... Vlan: 101 Protected: False Ethernet-Tag: 0 State: Established Flood Suppress: Attached Core If: Vlan888 Access If: Vlan101 NVE If: nve1 RMAC: 0000.5E00.5306
Core Vlan: 888 L2 VNI: 10101 L3 VNI: 10888 VTEP IP: 192.168.0.1 Originating Router: 192.168.0.1 MCAST IP: 225.0.0.101 VRF: JBS IPv4 IRB: Enabled IPv6 IRB: Disabled Pseudoports: GigabitEthernet1/0/11 service instance 101 Routes: 2 MAC, 1 MAC/IP ...
VRFルーティングテーブルの確認
VRF「JBS」のルーティングテーブルに、BGP経由で対向Leaf配下のサブネット(192.168.102.0/24)が学習されています。
Leaf1#show ip route vrf JBS ... B 192.168.102.0/24 [200/0] via 192.168.0.2, 11:36:13, Vlan888 B 192.168.102.1/32 [200/0] via 192.168.0.2, 02:34:12, Vlan888
NVEピアの確認
L3CP(Layer 3 Control Plane)としてLeaf2(192.168.0.2)とピアが確立されています。
Leaf1#show nve peers Interface VNI Type Peer-IP RMAC/Num_RTs eVNI state flags UP time nve1 10888 L3CP 192.168.0.2 0000.5E00.5305 10888 UP A/M/4 11:36:12
Leaf2での確認
Leaf2側でも同様に、Leaf1配下のサブネット(192.168.101.0/24)がBGP経由で学習されていることが確認できます。
Leaf2#show ip route vrf JBS ... B 192.168.101.0/24 [200/0] via 192.168.0.1, 11:38:22, Vlan888 B 192.168.101.1/32 [200/0] via 192.168.0.1, 02:08:16, Vlan888
Spineでの確認
SpineスイッチはRoute Reflectorとして機能しており、EVPNルートを中継しています。
show bgp l2vpn evpn all コマンドにより、各Leafからアドバタイズされたルート(タイプ2 MAC/IPルート、タイプ5 IPプレフィックスルート)を保持していることが確認できます。
Spine#show bgp l2vpn evpn all ... Route Distinguisher: 1:1 *>i [5][1:1][0][24][192.168.101.0]/17 192.168.0.1 0 100 0 ? *>i [5][1:1][0][24][192.168.102.0]/17 192.168.0.2 0 100 0 ?
まとめ
本記事では、Cisco機器を用いたBGP EVPN VXLANにおけるL3VNIを構築しました。構築において、以下のポイントが重要です。
- VRFとL3VNIの連携
- stitching 設定により、異なるルーティング情報をVXLAN上で交換可能になります。
- Anycast Gateway
- 各Leafで同一ゲートウェイIPを持つことで、フラットなL3ネットワーク基盤が構築されます。
- EVPNルートタイプ5
- EVPNルートタイプ5(IP Prefix Route)が正しく交換され、異なるLeaf間でのL3到達性が確保されます。
最後に
BGP EVPN VXLANは設定項目が多く複雑に感じますが、一つ一つの技術要素(VRF, BGP, VXLAN)の役割を整理することで、全体の構成も見えるようになります。
次回は、パケットキャプチャを実施し、ヘッダーの中身を確認したいと思います。
鄭 秋怡(日本ビジネスシステムズ株式会社)
CTS本部 SNIに所属の鄭です。エンタープライズのお客さまに向けて、ネットワークの設計、構築、検証などを経験してきました。現在はネットワーク機器メーカーのお客さま先に常駐し、技術支援を担当しています。
担当記事一覧