はじめに
前回はVXLAN/EVPNを構成する技術要素について解説しました。
今回は、Cisco Modeling Labs(CML2)を使用して、実際にVXLAN/EVPN環境を構築するための設定方法を解説します。
目的
本記事の目的は以下のとおりです。
- 物理構成図を参照しながら、VXLAN/EVPNの構築手順を理解する。
- OSPFによるアンダーレイネットワークを構築する。
- BGP EVPNによるオーバーレイネットワークを構築する。
- VXLANを利用したL2延伸およびL3ルーティングを実現する。
- 設定後の確認コマンドと疎通確認方法を理解する。
検証環境
本記事では、Cisco Nexus 9000vを使用します。
主な構成要素は以下のとおりです。
| 項目 | 内容 |
|---|---|
| エミュレーター | Cisco Modeling Labs(CML2) |
| ネットワークOS | Cisco NX-OS 10.3(1) |
| Spineスイッチ | 2台 |
| Leafスイッチ | 4台 |
| アンダーレイルーティング | OSPF |
| オーバーレイ制御プレーン | BGP EVPN(iBGP) |
| BGP AS番号 | 65000 |
| BUMトラフィック転送 | IPマルチキャスト(PIM-SM) |
| デフォルトゲートウェイ | Distributed Anycast Gateway |
※本記事の設定例は、NX-OS 10.3(1)を使用した検証環境を基にしています。機種やNX-OSのバージョンによって、コマンドの対応状況や制約が異なる場合があります。
物理構成図
今回の環境では、2台のSpineスイッチと4台のLeafスイッチでSpine-Leaf構成を構築します。
SpineスイッチはBGPのRoute Reflector(RR)およびPIMのAnycast-RPとして動作します。
LeafスイッチはVTEPとして動作し、サーバ間のL2通信および異なるVLAN間のL3通信を実現します。
主なIPアドレス・VNI情報
| 項目 | 設定値 |
|---|---|
| BGP AS番号 | 65000 |
| SpineSW1 Loopback1 | 1.1.1.1/32 |
| SpineSW2 Loopback1 | 2.2.2.2/32 |
| LeafSW4 Loopback1 | 6.6.6.6/32 |
| LeafSW4 VTEPアドレス | 16.16.16.16/32 |
| PIM Anycast-RP | 11.11.11.11/32 |
| VLAN 140 | 172.21.140.0/24 |
| VLAN 141 | 172.21.141.0/24 |
| VLAN 140のL2 VNI | 50140 |
| VLAN 141のL2 VNI | 50141 |
| L3 VNI | 50999 |
| VRF | Tenant-1 |
全体構成
今回の検証環境は、Spineスイッチ2台、Leafスイッチ4台、Desktop3台で構成します。
SpineスイッチはRoute Reflector(RR)およびPIM Anycast-RPとして動作し、LeafスイッチはVTEPとして動作します。
各Leafスイッチは2台のSpineスイッチに接続することで、アンダーレイネットワークの経路冗長性を確保します。
装置一覧・IPアドレス
| ホスト名 | 役割 | Loopback1(Router ID) | VTEP用Loopback | 管理IP(mgmt0) |
|---|---|---|---|---|
| SpineSW1 | RR / PIM Anycast-RP | 1.1.1.1/32 | ― | 192.168.0.201/24 |
| SpineSW2 | RR / PIM Anycast-RP | 2.2.2.2/32 | ― | 192.168.0.202/24 |
| LeafSW1 | VTEP | 3.3.3.3/32 | Lo13:13.13.13.13/32 | 192.168.0.203/24 |
| LeafSW2 | VTEP | 4.4.4.4/32 | Lo14:14.14.14.14/32 | 192.168.0.204/24 |
| LeafSW3 | VTEP | 5.5.5.5/32 | Lo15:15.15.15.15/32 | 192.168.0.205/24 |
| LeafSW4 | VTEP | 6.6.6.6/32 | Lo16:16.16.16.16/32 | 192.168.0.206/24 |
- Loopback1は、OSPF Router IDおよびBGP Router IDとして使用します。
- LeafスイッチのVTEP用Loopbackは、NVEインターフェースの送信元として使用します。
- SpineSW1とSpineSW2のLoopback11には、共通のPIM Anycast-RPアドレス
11.11.11.11/32を設定します。 - 管理ネットワークは
192.168.0.0/24で、デフォルトゲートウェイは192.168.0.1です。
Spine–Leaf間の物理接続
SpineスイッチとLeafスイッチ間は、すべてL3インターフェースとして構成し、OSPFおよびPIM-SMを有効化します。
| 接続元 | 接続元ポート | 接続元IP | 接続先 | 接続先ポート | 接続先IP |
|---|---|---|---|---|---|
| SpineSW1 | Eth1/1 | 10.1.1.1/30 | LeafSW1 | Eth1/1 | 10.1.1.2/30 |
| SpineSW1 | Eth1/2 | 10.1.1.5/30 | LeafSW2 | Eth1/1 | 10.1.1.6/30 |
| SpineSW1 | Eth1/3 | 10.1.1.9/30 | LeafSW3 | Eth1/1 | 10.1.1.10/30 |
| SpineSW1 | Eth1/4 | 10.1.1.13/30 | LeafSW4 | Eth1/1 | 10.1.1.14/30 |
| SpineSW2 | Eth1/1 | 10.1.2.1/30 | LeafSW1 | Eth1/2 | 10.1.2.2/30 |
| SpineSW2 | Eth1/2 | 10.1.2.5/30 | LeafSW2 | Eth1/2 | 10.1.2.6/30 |
| SpineSW2 | Eth1/3 | 10.1.2.9/30 | LeafSW3 | Eth1/2 | 10.1.2.10/30 |
| SpineSW2 | Eth1/4 | 10.1.2.13/30 | LeafSW4 | Eth1/2 | 10.1.2.14/30 |
※すべてのSpine–Leaf間リンクでMTUを9216バイトに設定します。
Desktopの接続先・IPアドレス
CML2上のDesktopは、Leafスイッチのアクセスポートに接続します。
| Desktop | 接続先スイッチ | 接続先ポート | VLAN | IPアドレス | デフォルトGW |
|---|---|---|---|---|---|
| Desktop1(左端) | LeafSW1 | Eth1/11 | 140 | 172.21.140.100/24 | 172.21.140.1 |
| Desktop2(右側・VLAN140) | LeafSW3 | Eth1/11 | 140 | 172.21.140.200/24 | 172.21.140.1 |
| Desktop3(右側・VLAN141) | LeafSW3 | Eth1/10 | 141 | 172.21.141.200/24 | 172.21.141.1 |
今回の構成では、Desktop1とDesktop2をVLAN 140に所属させ、VXLANによるL2延伸を検証します。
また、Desktop3をVLAN 141に所属させることで、Distributed Anycast Gatewayを利用したVLAN間ルーティングを検証します。
なお、LeafSW2およびLeafSW4には、今回のDesktopを接続していません。
VLAN・VNI・VRFの対応関係
| VLAN | VNI | 種別 | VRF | IPセグメント |
|---|---|---|---|---|
| 140 | 50140 | L2 VNI | Tenant-1 | 172.21.140.0/24 |
| 141 | 50141 | L2 VNI | Tenant-1 | 172.21.141.0/24 |
| 999 | 50999 | L3 VNI | Tenant-1 | ― |
VLAN 140とVLAN 141のSVIには、Distributed Anycast Gatewayとして共通のIPアドレスを設定します。
- VLAN 140:
172.21.140.1/24 - VLAN 141:
172.21.141.1/24 - Anycast Gateway MAC:
0000.2222.3333
VLAN 999はL3 VNIに対応する内部VLANであり、サーバ接続用のVLANではありません。
ルーティング・VXLAN関連設定
| 項目 | 設定内容 |
|---|---|
| アンダーレイルーティング | OSPF Area 0 |
| オーバーレイ制御プレーン | MP-BGP EVPN(iBGP) |
| BGP AS番号 | 65000 |
| Route Reflector | SpineSW1、SpineSW2 |
| マルチキャストルーティング | PIM Sparse Mode |
| PIM Anycast-RP | 11.11.11.11 |
| VTEP | LeafSW1~LeafSW4 |
| BUMトラフィック転送 | IP Multicast |
| VNI 50140のマルチキャストグループ | 239.0.0.140 |
| VNI 50141のマルチキャストグループ | 239.0.0.141 |
| テナントVRF | Tenant-1 |
| ARP Suppression | 有効 |
| Distributed Anycast Gateway | 有効 |
構成に関する補足
本構成では、SpineスイッチはVXLANトンネルの終端にはなりません。
SpineスイッチはアンダーレイのL3転送を担当するとともに、BGP EVPNのRoute ReflectorとしてLeafスイッチ間のEVPNルート交換を仲介します。
一方、LeafスイッチはVTEPとしてVXLANのカプセル化とデカプセル化を行います。
同一VLANに所属するDesktop間の通信はL2 VNIを利用し、異なるVLAN間の通信ではDistributed Anycast GatewayとL3 VNIを利用したルーティングを行います。
コンフィグの作成
以降では、基本的にSpineスイッチ1台とLeafスイッチ1台の設定例を使用して解説します。
Spine側はSpineSW2、Leaf側はLeafSW4を例とします。
他のスイッチについては、ルータID、Loopbackアドレス、インターフェースのIPアドレスなどを変更してください。
なお、各スイッチのコンフィグ全体はPart4に掲載しています。
1. アンダーレイネットワークの構築(OSPF)
最初に、SpineスイッチとLeafスイッチ間のIPネットワークを構築します。
設計方針
- ルーティングプロトコルにはOSPFを使用する。
- OSPFのRouter IDにはLoopback1のIPアドレスを使用する。
- Spine-Leaf間のリンクはPoint-to-Pointとして設定し、DR/BDRの選出を不要とする。
- VXLANのカプセル化によるオーバーヘッドを考慮し、アンダーレイのMTUを9216バイトに設定する。
- BGPピアリング用のLoopbackアドレスとVTEPアドレスをOSPFで到達可能にする。
VXLANでは、元のEthernetフレームをUDP/IPでカプセル化します。
一般的なIPv4 VXLANでは、外側に約50バイトのヘッダーが追加されます。そのため、アンダーレイのMTUが不足すると、パケットのフラグメンテーションや破棄が発生する可能性があります。
本環境では、Spine-Leaf間のMTUを9216バイトとします。
※MTUは経路上の機器で整合性を確保する必要があります。サーバ側のMTUまで9216バイトに統一する必要はありません。
SpineSW2
feature ospf
router ospf UNDERLAY-NET
router-id 2.2.2.2
interface loopback1
ip address 2.2.2.2/32
ip ospf network point-to-point
ip router ospf UNDERLAY-NET area 0.0.0.0
interface Ethernet1/1
no shutdown
mtu 9216
ip address 10.1.2.1/30
ip ospf network point-to-point
no ip ospf passive-interface
ip router ospf UNDERLAY-NET area 0.0.0.0
interface Ethernet1/2
no shutdown
mtu 9216
ip address 10.1.2.5/30
ip ospf network point-to-point
no ip ospf passive-interface
ip router ospf UNDERLAY-NET area 0.0.0.0
interface Ethernet1/3
no shutdown
mtu 9216
ip address 10.1.2.9/30
ip ospf network point-to-point
no ip ospf passive-interface
ip router ospf UNDERLAY-NET area 0.0.0.0
interface Ethernet1/4
no shutdown
mtu 9216
ip address 10.1.2.13/30
ip ospf network point-to-point
no ip ospf passive-interface
ip router ospf UNDERLAY-NET area 0.0.0.0
copy running-config startup-config
LeafSW4
feature ospf
router ospf UNDERLAY-NET
router-id 6.6.6.6
interface loopback1
ip address 6.6.6.6/32
ip ospf network point-to-point
ip router ospf UNDERLAY-NET area 0.0.0.0
interface Ethernet1/1
no shutdown
mtu 9216
ip address 10.1.1.14/30
ip ospf network point-to-point
no ip ospf passive-interface
ip router ospf UNDERLAY-NET area 0.0.0.0
interface Ethernet1/2
no shutdown
mtu 9216
ip address 10.1.2.14/30
ip ospf network point-to-point
no ip ospf passive-interface
ip router ospf UNDERLAY-NET area 0.0.0.0
copy running-config startup-config
動作確認
show ip interface brief
show ip ospf neighbor
show ip route
show ip route ospf
show ip ospf neighborでは、Spine-Leaf間でOSPFのネイバーがFULL状態になっていることを確認します。
また、他のスイッチのLoopbackアドレスがOSPFによって学習されていることを確認します。
2. SpineSWとLeafSW間のiBGPネイバー構築
続いて、SpineスイッチとLeafスイッチ間でBGPネイバーを構築します。
設計方針
- すべてのスイッチでAS番号65000を使用する。
- iBGPを使用する。
- SpineスイッチをRoute Reflector(RR)として動作させる。
- BGPネイバーの送信元にはLoopback1を使用する。
- BGPタイマーをデフォルトより短く設定する。
通常、iBGPでは、学習したiBGPルートを別のiBGPピアへ再広告しません。
この制約に対応する方法として、フルメッシュ構成やRoute Reflectorを使用する方法があります。
本環境では、SpineスイッチをRoute Reflectorとして使用することで、Leafスイッチ同士の直接的なBGPピアリングを不要とします。
SpineSW2
feature bgp
router bgp 65000
router-id 2.2.2.2
timers bgp 5 15
address-family ipv4 unicast
template peer LEAF-PEER
remote-as 65000
update-source loopback1
address-family ipv4 unicast
send-community
send-community extended
route-reflector-client
neighbor 3.3.3.3
inherit peer LEAF-PEER
neighbor 4.4.4.4
inherit peer LEAF-PEER
neighbor 5.5.5.5
inherit peer LEAF-PEER
neighbor 6.6.6.6
inherit peer LEAF-PEER
copy running-config startup-config
LeafSW4
feature bgp
router bgp 65000
router-id 6.6.6.6
timers bgp 5 15
address-family ipv4 unicast
neighbor 1.1.1.1
remote-as 65000
update-source loopback1
address-family ipv4 unicast
send-community
send-community extended
neighbor 2.2.2.2
remote-as 65000
update-source loopback1
address-family ipv4 unicast
send-community
send-community extended
copy running-config startup-config
動作確認
show ip bgp summary
以下はSpineスイッチ側の確認例です。
Neighbor V AS Up/Down State/PfxRcd
3.3.3.3 4 65000 00:02:49 0
4.4.4.4 4 65000 00:02:32 0
5.5.5.5 4 65000 00:02:11 0
6.6.6.6 4 65000 00:02:06 0
State/PfxRcdに数値が表示されていれば、BGPセッションがEstablished状態であることを確認できます。
なお、この段階ではIPv4 Unicastのアドレスファミリについて確認しています。
EVPNのアドレスファミリについては、後述する手順で設定します。
※BGPタイマーの短縮は検証環境向けです。本番環境ではBFDの利用や障害検知設計を含めて検討してください。
3. BUMトラフィックの転送方式としてマルチキャストを使用
VXLANでは、以下のトラフィックをBUMトラフィックと呼びます。
- Broadcast
- Unknown Unicast
- Multicast
本環境では、BUMトラフィックの配送にIPマルチキャストを使用します。
設計方針
- PIM Sparse Mode(PIM-SM)を使用する。
- SpineスイッチをPIM Anycast-RPとして使用する。
- RPの共通アドレスを11.11.11.11とする。
- 2台のSpineスイッチでRPの冗長化を行う。
- LeafスイッチのVTEP用LoopbackアドレスをOSPFで広告する。
なお、PIM Anycast-RPとVXLANのDistributed Anycast Gatewayは異なる機能です。
PIM Anycast-RPはマルチキャストのRPを冗長化する仕組みであり、Distributed Anycast Gatewayは各Leafスイッチで共通のデフォルトゲートウェイを提供する仕組みです。
SpineSW2
feature pim
interface loopback11
ip address 11.11.11.11/32
ip pim sparse-mode
ip ospf network point-to-point
ip router ospf UNDERLAY-NET area 0.0.0.0
ip pim rp-address 11.11.11.11 group-list 224.0.0.0/4
ip pim anycast-rp 11.11.11.11 1.1.1.1
ip pim anycast-rp 11.11.11.11 2.2.2.2
interface Ethernet1/1
ip pim sparse-mode
interface Ethernet1/2
ip pim sparse-mode
interface Ethernet1/3
ip pim sparse-mode
interface Ethernet1/4
ip pim sparse-mode
interface loopback1
ip pim sparse-mode
copy running-config startup-config
この設定では、11.11.11.11を共通のRPアドレスとして使用し、1.1.1.1と2.2.2.2をAnycast-RPの構成メンバーとして指定しています。
また、224.0.0.0/4はIPv4マルチキャストアドレス全体を表します。
ただし、本環境でVXLANのBUM転送に使用するマルチキャストグループは239.0.0.140と239.0.0.141です。
本番環境では、RPが担当するグループ範囲を必要なアドレスに限定することが望ましいでしょう。
※もう一方のSpineスイッチにも、Anycast-RPに関する設定が必要です。
LeafSW4
feature pim
interface loopback16
ip address 16.16.16.16/32
ip ospf network point-to-point
ip router ospf UNDERLAY-NET area 0.0.0.0
ip pim sparse-mode
ip pim rp-address 11.11.11.11 group-list 224.0.0.0/4
interface Ethernet1/1
ip pim sparse-mode
interface Ethernet1/2
ip pim sparse-mode
interface loopback1
ip pim sparse-mode
copy running-config startup-config
動作確認
show ip pim neighbor
show ip pim rp
show ip mroute
show ip route 11.11.11.11
show ip pim neighborで、Spine-Leaf間のPIMネイバー関係を確認します。
また、show ip pim rpでRPアドレスが正しく認識されていることを確認します。
BUMトラフィックが発生した後は、show ip mrouteでマルチキャストルーティングエントリを確認できます。
4. VXLAN/EVPNの有効化とVLAN・VNIの紐づけ
続いて、LeafスイッチでVXLAN/EVPNを有効化します。
LeafSW4
feature nv overlay
feature vn-segment-vlan-based
nv overlay evpn
spanning-tree vlan 1,140,141,999 priority 4096
vlan 140
name L2-VNI-140-Tenant1
vn-segment 50140
vlan 141
name L2-VNI-141-Tenant1
vn-segment 50141
vlan 999
vn-segment 50999
copy running-config startup-config
コマンドの解説
| コマンド | 説明 |
|---|---|
feature nv overlay |
VXLAN機能を有効化 |
feature vn-segment-vlan-based |
VLANベースのVNIマッピングを有効化 |
nv overlay evpn |
BGP EVPNによるVXLAN制御プレーンを有効化 |
vn-segment 50140 |
VLAN 140をL2 VNI 50140に紐づけ |
vn-segment 50141 |
VLAN 141をL2 VNI 50141に紐づけ |
vn-segment 50999 |
VLAN 999をL3 VNI 50999に紐づけ |
今回の構成では、以下の対応関係になります。
| VLAN | VNI | 用途 |
|---|---|---|
| 140 | 50140 | L2 VNI |
| 141 | 50141 | L2 VNI |
| 999 | 50999 | L3 VNI |
L2 VNIは、VXLANを利用して同一L2ネットワークを延伸するために使用します。
一方、L3 VNIはテナントVRFに関連付けられ、VXLANファブリック内でL3ルーティングを行うために使用します。
なお、VLAN 999はサーバ接続用のVLANではなく、L3 VNIに対応する内部VLANです。
※STP Priorityの設定は本検証構成に合わせたものであり、VXLAN/EVPNの有効化に必須の設定ではありません。
動作確認
show vlan brief
show running-config vlan
show vxlan
5. SVIの作成とDistributed Anycast Gatewayの設定
次に、VLAN間のルーティングを実現するためのSVIとVRFを設定します。
Distributed Anycast Gatewayを使用することで、複数のLeafスイッチが同じIPアドレスと仮想MACアドレスを持つデフォルトゲートウェイとして動作できます。
LeafSW4
まず、SVI機能を有効化します。
feature interface-vlan
続いて、テナント用のVRFを作成します。
vrf context Tenant-1
vni 50999
rd auto
address-family ipv4 unicast
route-target both auto
route-target both auto evpn
VRF関連コマンドの解説
| コマンド | 説明 |
|---|---|
vrf context Tenant-1 |
テナント用VRFを作成 |
vni 50999 |
VRFにL3 VNIを割り当て |
rd auto |
RDを自動設定 |
address-family ipv4 unicast |
IPv4ルート用のアドレスファミリを設定 |
route-target both auto |
VPNルートのImport/Export RTを自動設定 |
route-target both auto evpn |
EVPN用のImport/Export RTを自動設定 |
今回のようなiBGPベースのVXLAN/EVPNでは、RDおよびRTを自動設定できます。
ただし、eBGPなど構成が異なる場合には、RTの手動設定が必要になる場合があります。
Anycast Gatewayの設定
fabric forwarding anycast-gateway-mac 0000.2222.3333
このコマンドで、Distributed Anycast Gatewayに使用する仮想MACアドレスを指定します。
同じVXLANファブリック内でDistributed Anycast Gatewayを提供するLeafスイッチには、共通の仮想MACアドレスを設定します。
VLAN 140のSVI
interface Vlan140
no shutdown
vrf member Tenant-1
no ip redirects
ip address 172.21.140.1/24
fabric forwarding mode anycast-gateway
VLAN 141のSVI
interface Vlan141
no shutdown
vrf member Tenant-1
no ip redirects
ip address 172.21.141.1/24
fabric forwarding mode anycast-gateway
L3 VNI用のSVI
interface Vlan999
no shutdown
vrf member Tenant-1
ip forward
VLAN 999のSVIにはIPアドレスを設定しません。
ip forwardを設定することで、IPアドレスを持たないSVIをL3 VNI用のルーティングインターフェースとして使用します。
各コマンドの補足
vrf member Tenant-1
SVIをテナント用VRFに所属させます。
fabric forwarding mode anycast-gateway
対象SVIをDistributed Anycast Gatewayとして動作させます。
ip forward
IPアドレスを持たないL3 VNI用SVIで、IP転送を有効化します。
BGPへのルート再配送について
テナントVRFのConnectedルートをBGPへ再配送し、EVPN Type-5ルートなどによるIPプレフィックスの広告を行う場合には、構成に応じて追加設定が必要です。
例えば、以下のようなルートマップを使用できます。
route-map overlay_subnets permit 10
match tag 11111
SVI側で対象ルートにタグを付与します。
interface Vlan140
ip address 172.21.140.1/24 tag 11111
interface Vlan141
ip address 172.21.141.1/24 tag 11111
続いて、BGPのテナントVRF配下に再配送設定を追加します。
router bgp 65000
vrf Tenant-1
address-family ipv4 unicast
redistribute direct route-map overlay_subnets
なお、上記は追加のルート広告を行う場合の設定例です。
すべてのLeafスイッチで対象VLANのSVIを持つ今回の検証構成では、必要なEVPNルートの種類や実際の転送動作を踏まえ、導入要否を判断してください。
動作確認
show vrf
show ip interface brief vrf Tenant-1
show ip route vrf Tenant-1
6. VTEPの設定
次に、LeafスイッチにNVE(Network Virtualization Edge)インターフェースを作成します。
NVEインターフェースは、VXLANトンネルの終端となる論理インターフェースです。
LeafSW4
interface nve1
no shutdown
host-reachability protocol bgp
source-interface loopback16
member vni 50140
mcast-group 239.0.0.140
member vni 50141
mcast-group 239.0.0.141
member vni 50999 associate-vrf
copy running-config startup-config
コマンドの解説
| コマンド | 説明 |
|---|---|
interface nve1 |
NVEインターフェースを作成 |
host-reachability protocol bgp |
BGP EVPNをホスト到達性情報の交換に使用 |
source-interface loopback16 |
VTEPの送信元インターフェースを指定 |
member vni 50140 |
L2 VNI 50140を追加 |
mcast-group 239.0.0.140 |
VNI 50140のBUM配送用マルチキャストグループを指定 |
member vni 50141 |
L2 VNI 50141を追加 |
mcast-group 239.0.0.141 |
VNI 50141のBUM配送用マルチキャストグループを指定 |
member vni 50999 associate-vrf |
L3 VNIをVRFに関連付け |
VTEPの送信元アドレスについて
source-interface loopback16で指定したLoopback16のIPアドレスが、VXLANパケットのOuter IPヘッダーに使用されます。
今回のLeafSW4では以下のアドレスとなります。
16.16.16.16/32
このIPアドレスに対して、他のVTEPからIP到達性があることが必要です。
BUMトラフィックについて
今回の構成では、BUMトラフィックの配送にIPマルチキャストを使用しています。
そのため、L2 VNIごとにマルチキャストグループを設定しています。
なお、VXLAN/EVPNではBUMトラフィックの配送方法として、BGP EVPNを使用したIngress Replicationも利用できます。
Ingress Replicationを使用する場合には、アンダーレイでBUM配送用のPIMマルチキャストを構築する必要はありません。
動作確認
show interface nve1
show nve peers
show nve vni
show vxlan
7. L2 VNIでEVPNを有効化
続いて、BGP EVPNのアドレスファミリを有効化します。
BGP EVPNは、VTEP間でMACアドレスやIPアドレスなどの到達性情報を交換するために使用します。
設計方針
- iBGPを使用する。
- SpineスイッチをRoute Reflectorとして使用する。
- Extended Communityを送信する。
- L2 VNIのRDおよびRTを自動設定する。
SpineSW2
nv overlay evpn
router bgp 65000
address-family l2vpn evpn
retain route-target all
template peer LEAF-PEER
address-family l2vpn evpn
send-community
send-community extended
route-reflector-client
copy running-config startup-config
retain route-target allは、ローカルに対応するVNIを持たないRoute Reflectorでも、受信したEVPNルートを保持して再広告できるようにする設定です。
また、route-reflector-clientを設定することで、LeafスイッチをRoute Reflectorのクライアントとして扱います。
LeafSW4
router bgp 65000
address-family l2vpn evpn
neighbor 1.1.1.1
address-family l2vpn evpn
send-community
send-community extended
neighbor 2.2.2.2
address-family l2vpn evpn
send-community
send-community extended
copy running-config startup-config
続いて、EVPNで使用するL2 VNIを定義します。
evpn
vni 50140 l2
rd auto
route-target import auto
route-target export auto
vni 50141 l2
rd auto
route-target import auto
route-target export auto
copy running-config startup-config
RDとRTについて
RD(Route Distinguisher)
EVPNルートを一意に識別するために使用します。
RT(Route Target)
EVPNルートをどのVNIやVRFでImport/Exportするかを制御するために使用します。
今回のような同一AS内のiBGP構成では、autoを使用することで設定を簡略化できます。
ただし、RDおよびRTの自動生成方式は、対象となるVNIやVRF、機種、NX-OSバージョンによって異なる場合があります。
動作確認
show bgp l2vpn evpn summary
show bgp l2vpn evpn
show nve peers
show nve vni
show bgp l2vpn evpn summaryでは、EVPNアドレスファミリのBGPセッションを確認します。
show bgp l2vpn evpnでは、EVPNルートの学習状況を確認できます。
8. スイッチポートへのVLANの割り当て
続いて、サーバ接続用のスイッチポートにVLANを割り当てます。
LeafSW
VLAN 140用のアクセスポートを設定します。
interface Ethernet1/11
no shutdown
switchport
switchport mode access
switchport access vlan 140
VLAN 141用のアクセスポートを設定します。
interface Ethernet1/10
no shutdown
switchport
switchport mode access
switchport access vlan 141
設定を保存します。
copy running-config startup-config
動作確認
show vlan brief
show interface status
show interface Ethernet1/10 switchport
show interface Ethernet1/11 switchport
なお、サーバ接続ポートのMTUについては、接続するサーバのNIC設定や通信要件に応じて設定してください。
VXLANによるカプセル化はVTEP間で行われるため、サーバ接続ポートのMTUをアンダーレイと同じ9216バイトにすることは必須ではありません。
9. ARP Suppression(ARP抑制)の設定
VXLAN/EVPNでは、ARP Suppressionを使用することでARPブロードキャストの転送量を削減できます。
ARP Suppressionが有効な場合、LeafスイッチはEVPNで学習したMACアドレスとIPアドレスの対応情報などを利用し、ARP要求に対してローカルで応答できます。
TCAMの設定
プラットフォームによっては、ARP Suppressionを使用するためにTCAM領域の調整が必要です。
今回の検証環境では、以下の設定を使用しました。
hardware access-list tcam region vpc-convergence 0
hardware access-list tcam region arp-ether 512
copy running-config startup-config
TCAM設定を反映するため、必要に応じて再起動します。
reload
※TCAMの構成変更が必要かどうか、また使用するコマンドや割り当て可能なサイズは機種・NX-OSバージョンによって異なります。実機では事前確認が必要です。
ARP Suppressionの有効化
再起動後、NVEインターフェースでARP Suppressionを有効化します。
interface nve1
member vni 50140
suppress-arp
member vni 50141
suppress-arp
copy running-config startup-config
ARP Suppressionの動作
通常、ARP要求は同一L2ネットワーク内にブロードキャストされます。
一方、ARP Suppressionが有効な場合、LeafスイッチはEVPNで学習したホスト情報を使用してARP要求に応答できます。
これにより、不要なARPブロードキャストがVXLANファブリック全体に転送されることを抑制します。
ただし、必要なMAC/IP情報を保持していない場合には、ARP要求がフラッディングされる場合もあります。
なお、一般的なProxy ARPとの違いについては、ARP SuppressionがEVPNで配布されたホスト情報を利用して、L2ネットワーク内のARPフラッディングを最適化する機能である点を押さえておくとよいでしょう。
動作確認
show running-config interface nve1
show nve vni
show ip arp suppression-cache
※確認コマンドはNX-OSのバージョンやプラットフォームによって異なる場合があります。
10. DesktopへのIPアドレス設定
最後に、CML2上のDesktopにIPアドレスを設定します。
左端のDesktop(VLAN 140)
CML2のDesktopへログインします。
検証環境の初期認証情報は以下のとおりです。
Username: cisco
Password: cisco
IPアドレスを設定します。
sudo ip addr add 172.21.140.100/24 dev eth0
sudo ip route add default via 172.21.140.1
設定確認を行います。
ip addr show
ip route show
ping 172.21.140.1
右端のDesktop(VLAN 140)
sudo ip addr add 172.21.140.200/24 dev eth0
sudo ip route add default via 172.21.140.1
設定確認を行います。
ip addr show
ip route show
ping 172.21.140.1
右端のDesktop(VLAN 141)
sudo ip addr add 172.21.141.200/24 dev eth0
sudo ip route add default via 172.21.141.1
設定確認を行います。
ip addr show
ip route show
ping 172.21.141.1
疎通確認
すべてのDesktopにIPアドレスを設定したら、以下の疎通確認を実施します。
同一VLAN間の通信確認
VLAN 140のDesktopから実行します。
ping 172.21.140.200
同じVLAN 140に所属するDesktop間で通信できることを確認します。
この通信では、VXLANを利用したL2延伸が正しく動作していることを確認できます。
異なるVLAN間の通信確認
VLAN 141のDesktopから実行します。
ping 172.21.140.100
ping 172.21.140.200
異なるVLAN間で通信できることを確認します。
この通信では、Distributed Anycast GatewayによるL3ルーティングが正しく動作していることを確認できます。
疎通できない場合の確認項目
疎通できない場合は、以下の順序で確認すると、原因を切り分けやすくなります。
| 確認対象 | 確認コマンド |
|---|---|
| OSPFネイバー | show ip ospf neighbor |
| アンダーレイの経路 | show ip route |
| BGP EVPNネイバー | show bgp l2vpn evpn summary |
| EVPNルート | show bgp l2vpn evpn |
| VTEP間の接続 | show nve peers |
| VNIの状態 | show nve vni |
| PIMネイバー | show ip pim neighbor |
| PIM RP | show ip pim rp |
| マルチキャスト経路 | show ip mroute |
| MACアドレス学習 | show mac address-table |
| VRFのルーティング | show ip route vrf Tenant-1 |
特に、以下の点を確認してください。
- 各VTEPのLoopbackアドレスに到達できること。
- BGP EVPNのネイバーがEstablished状態であること。
- 対象VNIが正しく設定されていること。
- PIMによるマルチキャスト転送経路が構築されていること。
- 各DesktopのIPアドレスとデフォルトゲートウェイが正しいこと。
まとめ
本記事では、Cisco Nexus 9000vを使用してVXLAN/EVPNを構築するための一連の設定方法を解説しました。
構築手順を整理すると、以下のようになります。
- OSPFによるアンダーレイネットワークの構築
- Spine-Leaf間のiBGPネイバー構築
- PIMによるBUMトラフィック転送経路の構築
- VXLAN/EVPNの有効化とVNIの設定
- SVIとDistributed Anycast Gatewayの設定
- VTEPの設定
- BGP EVPNのアドレスファミリとRD/RTの設定
- サーバ接続ポートへのVLANの割り当て
- ARP Suppressionの設定
- DesktopのIP設定と疎通確認
VXLAN/EVPNは複数の技術要素を組み合わせるため、設定項目が多くなります。
しかし、アンダーレイ、オーバーレイ、VTEP、EVPNルート交換、L2/L3転送という役割を分けて理解すると、全体の構成を把握しやすくなります。
参考資料
- Cisco Nexus 9000 Series NX-OS VXLAN Configuration Guide, Release 10.3(x)
- Cisco Nexus 9000 Series NX-OS Multicast Routing Configuration Guide