Cisco Japan Blog

Cisco Nexus スイッチで VXLAN EVPN ファブリックを作ろう!

2 min read



次世代データセンター ネットワークのコア テクノロジーとして、VXLAN(Virtual eXtensible LAN)への注目度が高まっています。今回は、VXLAN をおさらいしつつ、NX-OS でのコンフィグレーションを紹介したいと思います。

VXLAN の実装方式

仮想ネットワーク技術の代名詞的な存在である VXLAN には、ネットワークの構成手法として 3 つの方式があります。

  • VXLAN EVPN(Ethernet VPN)方式
  • OVSDB 方式
  • Multicast 方式

(1) VXLAN EVPN(RFC 7432 / draft-sd-l2vpn-evpn-overlay

この方式は、MP-BGP を用いてホストの IP アドレスや MAC アドレス、VNI、VTEP(VXLAN Tunnel End Point) peer 情報などを各 VTEP デバイス(NVE [Network Virtualization Endpoint]デバイス)同士が BGP ルーティング プロトコルを活用し、自律的に情報をやりとりしながらネイバー関係を構築することができる手法です。つまり、Overlay を作るための専用コントローラーは不要で、土台となる Underlay(物理ネットワーク)上で IP レベルの疎通性と MTU サイズ 1,550 バイト以上を透過することができれば、自律分散アーキテクチャとしてダイナミックに仮想ネットワークを構成することができます。BUM(Broadcast, Unknown unicast, Multicast)トラフィック処理は、Ingress-replication と呼ばれる機能により ASIC レベルでパケットを複製し、VXLAN でカプセル化してリモート VTEP デバイスへ配信します。もちろんワイヤ レート性能をサポートします。

IETF ドラフトに従った VXLAN EVPN 対応の VTEP デバイスとしては、Cisco Nexus スイッチCisco ASR 9000 シリーズ、Juniper、Alcatel-Lucent などがあげられます。

(2) OVSDB(RFC 7047)

この方式は、専用コントローラーが存在し、JSON ベースの管理プロトコルを用いてコントローラーから各VTEP デバイス(OVS [Open vSwitch] やハードウェア スイッチ)に対して、その VTEP デバイス配下に接続された VM の IP アドレスや MAC アドレス、VNI などの仮想ネットワーク情報を管理および設定することができます。つまり、OVSDB [Open vSwitch Database Management Protocol] コントローラーが、すべての VTEP デバイスを管理する集中管理型モデルと言えます。BUM トラフィック処理は、OVSDB コントローラが制御し、代表 VTEP デバイスからリモート VTEP デバイスへ配信する形式を取ります。

専用コントローラーとしては Open Daylight や VMware NSX、Nuage VSC などが代表的なものになります。

(3) Multicast(Flood&Learn)

この方式は、Underlay ネットワーク上で Multicast ルーティングを動かすことで、VTEP アドレスの検出や VM の IP アドレスや MAC アドレスの検出などすべて Flood & Learn により実現しています。仕組みはシンプルですが、実際の導入を考えると既存の Underlay ネットワーク上で Multicast ルーティング(PIM [(Protocol-Independent Multicast)])を有効化する必要があり、またリモート VTEP デバイスの検出やホスト間通信にもフラッティング パケットが発生するため、面倒なネットワークとなってしまいます。この方式は、複数のベンダー間にて VXLAN ネットワークを大規模に展開する際など、相互接続性の観点から選択されることがあります。

どれが一番最適化というと一長一短です。たとえば、仮想化されたサーバは VXLAN で収容し、ストレージは VLAN で収容するといったケースもありますし、物理デバイスと仮想デバイスがシステムごとに異なるケースもあります。いずれの場合も、ソフトウェア VTEP とハードウェア VTEP の共存が重要となります。

個人的な所感として、現在、VXLAN EVPN と OVSDB が、VXLAN 導入における 2 強と考えています。実際、仮想マシンの有無とは関係なく、既存の L2 ファブリックから L3 ファブリック(IP ファブリック)へのマイグレーションとして VXLAN ファブリックを導入するケースも増えています。ハードウェア VTEP デバイスのみで、様々な VM、物理マシン、ストレージ、ファイアウォール、ロードバランサなどを収容することができるからです。

NX-OS での VXLAN のコンフィグ

さて、NX-OS での VXLAN のコンフィグについて紹介していきましょう。Cisco Nexus 9000 シリーズをベースに設定方法について説明していきたいと思います。

まず Feature コマンドで次の 4 つの機能を有効化します。

  • BGP 機能
  • VXLAN 機能
  • VLAN ベースの VXLAN
  • VXLAN の EVPN コントロール プレーン

feature bgp
feature nv overlay
feature vn-segment-vlan-based
nv overlay evpn

また、VTEP インターフェイス(NVE)に関連付けするループバック インターフェイスも作成します。Secondary で指定している IP アドレスは、2 台の Nexus スイッチで VTEP 冗長構成を作成する際の VIP(Virtual IP)アドレスに当たるものです。そのため vPC(Virtual Port Channel)も有効化も必要になります。

feature vpc
feature lacp

interface loopback1
ip address 10.0.20.1/32
ip address 10.0.20.3/32 secondary
ip router ospf 1 area 0.0.0.0

MP-BGP(EVPN)の設定を行います。この例では、Leaf スイッチから MP-BGP RR(Route Reflector)である 10.0.10.11 と 10.0.10.12 に対して BGP ネイバーを確立しています。

router bgp 65535
router-id 10.0.10.1
log-neighbor-changes
neighbor 10.0.10.11
remote-as 65535
update-source loopback0
address-family l2vpn evpn
send-community both
neighbor 10.0.10.12
remote-as 65535
update-source loopback0
address-family l2vpn evpn
send-community both

仮想ネットワーク(L2VNI)と VXLAN トンネル インターフェイスを作成します。この例では、VLAN10 と VNI 30010 をマッピングして、L2-VNI の EVPN インスタンスを作成しています。1 台の Leaf スイッチでは、VLAN と VNI のマッピングは 1対1 の関係である必要があります。

vlan 10
vn-segment 30010
evpn
vni 30010 l2
rd auto
route-target import auto
route-target export auto

VXLAN トンネル インターフェイスにソース インターフェイスとして作成したループバック1 のインターフェイスを指定します。また、member vni コマンドで L2 VNI をトンネル インターフェイスに関連付けし、その L2VNI 毎にBUM トラフィックの扱い方を、ユニキャストで処理するのか、マルチキャストで処理するのか指定します。この例では Ingress replication コマンドによってユニキャスト モードが指定されています。

int nve1
no shut
source-interface loopback1
host-reachability protocol bgp
member vni 30010
ingress-replication protocol bgp

ここで show コマンドを使って、VLAN と VXLAN のマッピング情報を確認しましょう。

# show vxlan
Vlan            VN-Segment
====            ==========
10              30010

# show nve vni
Codes: CP - Control Plane        DP - Data Plane
UC - Unconfigured         SA - Suppress ARP
Interface VNI      Multicast-group   State Mode Type [BD/VRF]      Flags
--------- -------- ----------------- ----- ---- ------------------ -----
nve1      30010    UnicastBGP        Up    CP   L2 [10]

さらに EVPN の状況も確認しましょう。どの EVPN Update Type で、情報を正しく受信できているのか詳細を見ることができます。以下の例では、Route type2 のアップデートで「1010.10101.0001」の MAC アドレス向けの経路は、ネクスト ホップとして 10.0.20.3 であることがわかります。「*」マークはベストパスを意味しています。

# show bgp l2vpn evpn
BGP routing table information for VRF default, address family L2VPN EVPN
BGP table version is 52, local router ID is 10.0.10.1
Status: s-suppressed, x-deleted, S-stale, d-dampened, h-history, *-valid, >-best
Path type: i-internal, e-external, c-confed, l-local, a-aggregate, r-redist, I-injected
Origin codes: i - IGP, e - EGP, ? - incomplete, | - multipath, & - backup
Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.0.10.1:32777    (L2VNI 30001)
*>l[2]:[0]:[0]:[48]:[1010.1010.0001]:[0]:[0.0.0.0]/216
10.0.20.3                         100      32768 i
* i[2]:[0]:[0]:[48]:[1010.1010.0002]:[0]:[0.0.0.0]/216
10.0.20.6                         100          0 i
*>i                   10.0.20.6                         100          0 i
*>l[3]:[0]:[32]:[10.0.20.3]/88
10.0.20.3                         100      32768 i
*>i[3]:[0]:[32]:[10.0.20.6]/88
10.0.20.6                         100          0 i
* i                   10.0.20.6                         100          0 i

VXLAN ルーティングが必要な方は、L3 VNI を作成する必要があります。L3 VNI とは、実体として VRF(Virtual Routing and Forwarding)と 1対1 でマッピングされています。L3 VNI として必要となるコンフィグレーションを以下に記載します。

この例では、L3 VNI が 50001 でそれにマッピングされる VLAN が 101、VRF 名が VRF1 となっています。VLAN 101 の SVI(Switch Virtual Interface)を設定することが必須です。この場合の SVI は Interface VLAN101 で定義されていますが、これが未定義の場合、L3 VNI のステータスが「UP」になりませんのでご注意ください。また、IP アドレスを持たない SVI にて IP パケット転送を有効化するため、ip forward コマンドも必要になります。

vlan 101
vn-segment 50001
vrf context VRF1
vni 50001
rd auto
address-family ipv4 unicast
route-target both auto
route-target both auto evpn

Interface Vlan101
no shutdown
vrf member VRF1
ip forward

Interface nve 1
member vni 50001 associate-vrf

Nexus / NX-OS では、サーバ対してどの Leaf スイッチでも常に同一のデフォルト ゲートウェアを提供することができる機能「Distributed Anycast GW」があります。この機能で利用するデフォルト ゲートウェアの MAC アドレスを指定します。

fabric forwarding anycast-gateway-mac aaaa.bbbb.cccc

そして、Leaf スイッチのダウンリンク(サーバ ポート)にて fabric forwarding mode anycast-gateway コマンドを使って Distributed Anycast GW 機能を有効化してください。この例では 192.168.0.254/24 と 192.168.1.254/24 が、サーバのデフォルト ゲートウェイ アドレスです。

interface Vlan10
no shutdown
vrf member VRF1
ip address 192.168.0.254/24
fabric forwarding mode anycast-gateway

interface Vlan11
no shutdown
vrf member VRF1
ip address 192.168.1.254/24
fabric forwarding mode anycast-gateway

Nexus / NX-OS によって VXLAN ブリッジングおよび VXLAN ルーティングが可能な VXLAN ファブリックの基本的なコンフィグレーションについてご紹介させていただきました。

現在の L2 ファブリックから IP ファブリックへ移行を検討されている方のご参考になれば幸いです。

 

Authors

大平 伸一

テクニカルソリューションズアーキテクト

システムズエンジニアリング SDN応用技術室

コメントを書く