Cisco実機で学ぶBGP EVPN VXLAN(第1回):基本のL2ネットワーク構築編

本シリーズ記事は、エンタープライズネットワークにおける重要な技術であるBGP EVPN VXLANについて、基本から応用まで段階的に解説し、理解を深めていただくことを目的としています。

その第一回として、今回はCiscoの実機を使い、BGP EVPN VXLANの基本となるL2ネットワークをゼロから構築する手順と、その確認方法を具体的に紹介します。

なお、本記事はエンタープライズネットワークにおけるルーティングおよびスイッチングに関する知識を有する方を対象としています。

概要

BGP EVPN VXLANとは

BGP EVPN VXLANは、データセンターやクラウド環境で広く採用されるオーバーレイ技術です。

VXLAN(Virtual Extensible LAN)によるL2延伸と、EVPN(Ethernet VPN)によるBGPベースのコントロールプレーンを組み合わせています。

利点

  • 高い拡張性: L3ベースのUnderlayにより、ECMPを利用した効率的な帯域利用とスケールアウトが可能です。
  • 柔軟性: 物理的な場所にとらわれず、どこにでも仮想ネットワークを延伸できます。
  • 効率的なルーティング: 各Leafスイッチがゲートウェイとなる分散ルーティングにより、トラフィックの最適化(ヘアピニングの解消)が実現します。

構築のポイント

BGP EVPN VXLANの構築は、物理ネットワーク層である「Underlay」と、仮想ネットワーク層である「Overlay」の2段階で考えます。

Underlayネットワーク

  • IGP (今回はOSPF): VTEP(VXLANトンネルの端点)間でIP疎通を確保するためのルーティングプロトコルです。
  • マルチキャスト: BUMトラフィック(Broadcast, Unknown Unicast, Multicast)を転送するために設定します。

Overlayネットワーク

  • BGP EVPN: MACアドレスなどの到達性情報を交換するためのコントロールプレーンです。
  • VXLAN: L2フレームをカプセル化して転送するためのデータプレーンです。

検証環境

機器構成

  • Spine:C9300-48S
  • Leaf × 2:C9300L-48P-4X
  • Client × 2:WS-C3750X-24T-S(今回はスイッチをクライアント役として使用します。)

OSバージョン

IOS-XE 17.18.01(全機器共通)

ネットワーク構成図

※ 本記事の構成図は検証用であり、実際の本番環境とは異なります。

IPアドレス設計

本記事のIPアドレスは検証用であり、実際の本番環境とは異なります。

Spine:
Loopback0:10.0.0.3/32
Loopback1: 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:10.0.0.1/32
Loopback1: 192.168.0.1/32
Spine向け物理IF:192.168.1.1/24
Leaf2:
Loopback0:10.0.0.2/32
Loopback1: 192.168.0.2/32
Spine向け物理IF:192.168.2.1/24
クライアント:
VLAN 101, L2 VNI 10001
Client1 IP: 192.168.101.1/24
Client2 IP: 192.168.101.2/24

構築手順

手順1: Underlayネットワークの構築 (OSPF & PIM)

まず、VTEP間でIP疎通を確保するためにOSPFを設定し、BUMトラフィック転送用にPIM(マルチキャスト)を有効にします。

Spine 設定例
! OSPFとPIMのためのLoopbackインターフェース設定
interface Loopback0
 ip address 10.0.0.3 255.255.255.255
 ip ospf 1 area 0
!
interface Loopback1
 ip address 192.168.0.3 255.255.255.255
 ip pim sparse-mode
 ip ospf 1 area 0
!
interface Loopback2
 ip address 10.0.0.4 255.255.255.255
 ip pim sparse-mode
 ip ospf 1 area 0
!
! Leafへの物理インターフェース設定
interface GigabitEthernet1/0/1
 no switchport
 ip address 192.168.1.2 255.255.255.0
 ip pim sparse-mode
 ip ospf network point-to-point
 ip ospf 1 area 0
!
interface GigabitEthernet1/0/3
 no switchport
 ip address 192.168.2.2 255.255.255.0
 ip pim sparse-mode
 ip ospf network point-to-point
 ip ospf 1 area 0
!
! OSPFルーターID設定
router ospf 1
 router-id 10.0.0.3
!
! PIM RPアドレス指定
ip pim rp-address 10.0.0.4
Leaf1 設定例
! Loopbackインターフェース設定
interface Loopback0
 ip address 10.0.0.1 255.255.255.255
 ip ospf 1 area 0
!
interface Loopback1
 ip address 192.168.0.1 255.255.255.255
 ip pim sparse-mode
 ip ospf 1 area 0
!
! Spineへの物理インターフェース設定
interface GigabitEthernet1/0/1
 no switchport
 ip address 192.168.1.1 255.255.255.0
 ip pim sparse-mode
 ip ospf network point-to-point
 ip ospf 1 area 0
!
! クライアント接続用インターフェース設定
interface GigabitEthernet1/0/11
 switchport access vlan 101
 switchport mode access
!
! OSPFルーターID設定
router ospf 1
 router-id 10.0.0.1
!
! PIM RPアドレス指定
ip pim rp-address 10.0.0.4

Leaf2も同様に、IPアドレスやインターフェース番号を適宜変更して設定しますが、詳細IPはネットワーク図を参照してください。

手順2: Overlayネットワークの構築 (BGP EVPN & VXLAN)

次に、Underlay上にVXLANトンネルを構築し、コントロールプレーンとしてBGP EVPNを設定します。

Spine 設定例 (BGP Route Reflector)
router bgp 1
 bgp router-id 10.0.0.3
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 ! BGPネイバーとしてLeaf1, Leaf2を指定
 neighbor 10.0.0.1 remote-as 1
 neighbor 10.0.0.1 update-source Loopback0
 neighbor 10.0.0.2 remote-as 1
 neighbor 10.0.0.2 update-source Loopback0
 !
 address-family l2vpn evpn
  ! L2VPN EVPNアドレスファミリーを有効化
  neighbor 10.0.0.1 activate
  neighbor 10.0.0.1 send-community both
  neighbor 10.0.0.1 route-reflector-client
  neighbor 10.0.0.2 activate
  neighbor 10.0.0.2 send-community both
  neighbor 10.0.0.2 route-reflector-client
 exit-address-family
Leaf1 設定例 (VTEP)
! L2VPN EVPNの基本設定
l2vpn evpn
 replication-type static
 router-id Loopback1
!
! VLANとVNIのマッピング
l2vpn evpn instance 101 vlan-based
 encapsulation vxlan
!
vlan configuration 101
 member evpn-instance 101 vni 10001
!
! VXLANトンネルインターフェース(NVE)の設定
interface nve1
 no ip address
 source-interface Loopback1
 host-reachability protocol bgp
 member vni 10001 mcast-group 225.0.0.101
!
! BGP設定
router bgp 1
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 ! BGPネイバーとしてSpineを指定
 neighbor 10.0.0.3 remote-as 1
 neighbor 10.0.0.3 update-source Loopback0
 !
 address-family l2vpn evpn
  ! L2VPN EVPNアドレスファミリーを有効化
  neighbor 10.0.0.3 activate
  neighbor 10.0.0.3 send-community both
 exit-address-family

Leaf2も同様に設定します。

ステータス確認

設定後、以下のコマンドで各プロトコルが正しく動作しているかを確認します。

OSPFネイバー確認

Underlayの疎通性確認として、SpineとLeaf間で正しくネイバーを確立しているか確認します。

State カラムが FULL になっていれば成功です。

Spineでの実行例
Spine#show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.0.2          0   FULL/  -        00:00:39     192.168.2.1      GigabitEthernet1/0/3
192.168.0.1          0   FULL/  -        00:00:39    192.168.1.1      GigabitEthernet1/0/1

BGP EVPNピア確認

OverlayのコントロールプレーンはBGPになります。そこで、Spine (RR) とLeaf間で正しくピアを確立しているか確認します。

Spine (RR) とLeaf間で正しくピアを確立し、経路を交換しているか確認します。State/PfxRcd カラムに具体的なPrefix受信数が表示されていれば正常です。

Spineでの実行例
Spine#show bgp l2vpn evpn summary
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.0.0.1        4            1      15      11        9    0    0 00:05:38        3
10.0.0.2        4            1       8      12        9    0    0 00:03:03        3
Leaf1での実行例
Leaf1#show bgp l2vpn evpn summary
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.0.0.3        4            1      12      16       17    0    0 00:06:51        3

NVEピア確認

VXLANトンネルの対向先(VTEP)をBGP経由で正しく認識できているか確認します。

対向のLeafのVTEP IPアドレス(Peer-IP)が表示され、state が UP になっていれば成功です。

Leaf1での実行例
Leaf1#show nve peers
Interface  VNI      Type Peer-IP          RMAC/Num_RTs   eVNI     state flags UP time
nve1       10001    L2CP 192.168.0.2      3              10001      UP   N/A  00:04:51
Leaf2での実行例
Leaf2#show nve peers
Interface  VNI      Type Peer-IP          RMAC/Num_RTs   eVNI     state flags UP time
nve1       10001    L2CP 192.168.0.1      3              10001      UP   N/A  00:04:06

EVPN経路確認

クライアントのMAC/IPアドレス情報が、BGPのType-2経路として学習されているか確認します。

実行例結果のように、[2]で始まるType-2経路と、末尾にクライアントのIPアドレス(192.168.101.1 や 192.168.101.2)が表示されている行から、Leafがアドバタイズしているクライアント情報が示されています。

Leaf1での実行例
Leaf1#show bgp l2vpn evpn all (抜粋)
     Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 192.168.0.1:101
 *>   [2][192.168.0.1:101][0][48][00005E005300][32][192.168.101.1]/24
                      0.0.0.0                            32768 ?
Route Distinguisher: 192.168.0.2:101
 *>i  [2][192.168.0.2:101][0][48][00005E005301][32][192.168.101.2]/24
                      192.168.0.2              0    100      0 ?

マルチキャスト経路確認

BUMトラフィック転送に使われるマルチキャストの経路が、PIMによって正しく構築されているか確認します。

(*, 225.0.0.101) のような、VNIにマッピングしたマルチキャストグループのエントリが存在し、RPアドレス(10.0.0.4)が正しく認識されていることが重要なポイントです。

また、225.0.0.101は、EVPN-VXLANにおけるBUMトラフィック(Broadcast、Unknown Unicast、Multicast)の転送に利用されるマルチキャストグループです。

Spineでの実行例
Spine#show ip mroute
IP Multicast Routing Table
...
(*, 225.0.0.101), 00:36:41/00:03:20, RP 10.0.0.4, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet1/0/3, Forward/Sparse, 00:35:51/00:03:03, flags:
    GigabitEthernet1/0/1, Forward/Sparse, 00:36:41/00:03:20, flags:

まとめ

上記の確認を終え、BGP EVPN VXLANの基本となるL2ネットワークを構築しました。

今回はEVPN-VXLANによる複雑なL2ネットワークを、段階的に構築・検証しました。各プロトコルの役割と相互連携を実機で確認することで、より明確なイメージを持つことができます。

次回は、Leafスイッチでパケットキャプチャを実施し、EVPN-VXLANの挙動をより詳細に解析します。実際のトラフィックを確認することで、コントロールプレーンとデータプレーンの動作をさらに深く理解していきます。

執筆担当者プロフィール
鄭 秋怡

鄭 秋怡(日本ビジネスシステムズ株式会社)

CTS本部 SNIに所属の鄭です。エンタープライズのお客さまに向けて、ネットワークの設計、構築、検証などを経験してきました。現在はネットワーク機器メーカーのお客さま先に常駐し、技術支援を担当しています。

担当記事一覧