【データセンタネットワーク】手を動かしてEVPN-VXLANを理解しよう!

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

今回は、前回の「【データセンタネットワーク編】EVPN-VXLANとは?(EVPN/VXLAN概要編)」で説明した内容の実機確認を行なっていきます。

動作確認では、アンダーレイを「OSPF」、オーバレイを「BGP」で設定し、iBGP構成のEVPN-VXLANを構築していきます。

実際に手を動かし、EVPN-VXLANを理解しよう!

検証環境の構成図

今回、EVE-NGで構築した検証環境は以下の構成になります。

 拠点B 
 拠点B 
 拠点A
 拠点A
    AS65000
    AS65000
 AS1
 AS1
Router1
Lo0 10.0.0.1/32
Lo1 100.1.1.1/32
Router1…
Router2
Lo0 10.0.0.2/32
Router2…
Router3
Lo0 10.0.0.3/32
Router3…
Router4
Lo0 10.0.0.4/32
Router4…
Router5
Lo0 10.0.0.5/32
Router5…
vlan100: 192.168.200.254/24
nve1: vni10100
vlan100: 192.168.200.254/24…
vlan100: 192.168.200.254/24
nve1: vni10100
vlan100: 192.168.200.254/24…
vlan100: 192.168.200.1/24
vlan100: 192.168.200.1/24
vlan100: 192.168.200.2/24
vlan100: 192.168.200.2/24
L2SW1
L2SW1
L2SW2
L2SW2
Text is not SVG – cannot display

上記の構成では、VXLANグループIDであるVNIは「10100」とし、VXLANのエンドポイントなるVTEPは「Router4」と「Router5」の2つのルータになります。

ここまでの説明だと「拠点A」と「拠点B」の通信は普通にできるのではないか?と思うと思います。

確かに経路やコストの設定方法次第では到達性が確保できると思います。

しかし、それはL2NWではなくL3NWになります。

やはり、L2NWで接続するためにはL2VPNを使うしかないのです。

では、早速EVPN-VXLANのConfigを見ていきましょう。

EVPN-VXLANのConfig(Nexus OS)

今回の検証では「Cisco Nexus OS」を利用しているため、このOSの設定例となります。

また、BGPやOSPFの基本的な設定に関する説明は割愛しますが、Configは最後に掲載します。

VTEP(エンドポイント)の設定

まず、VTEP特有の設定を以下に記載します。

feature interface-vlan
feature vn-segment-vlan-based
feature nv overlay

nv overlay evpn
fabric forwarding anycast-gateway-mac 2020.0000.00aa
vlan 100
  vn-segment 10100

interface nve1
  no shutdown
  host-reachability protocol bgp
  source-interface loopback0
  member vni 10100
    ingress-replication protocol bgp
evpn
  vni 10100 l2
    rd auto
    route-target import auto
    route-target export auto

router bgp 65000
 neighbor 10.0.0.2
    address-family l2vpn evpn
    send-community
    send-community extended

まずはNXOSの特徴でもありますが、利用する機能を「feature XXX」で定義する必要があります。

また、「nv overray evpn」から「vlan100」までの部分の説明は以下のとおりです。

nv overlay evpn #EVPNのEnable or Disable
fabric forwarding anycast-gateway-mac 2020.0000.00aa  #VTEPの仮想MACアドレスを定義
vlan 100
  vn-segment 10100 #VLANベースのVXLANを利用する際に必要なVNI定義

ここでの注意点は、同じNWに属させるVTEPでは「fabric forwarding anycast-gateway-mac」で指定するMACアドレスは同一にする必要があることです。

この理由は、VTEPを仮想的な1つのスイッチとして見立てるため、同一にする必要があります。

次に「nve」についてです。

interface nve1
  no shutdown
  host-reachability protocol bgp #到達可能性のアドバタイズメントにBGPを利用する設定
  source-interface loopback0 
  member vni 10100               #VXLAN VNIとNVE IFを紐づける設定
    ingress-replication protocol bgp #VNIのBUMトラフィック送受信のenable

NVEとは「EncapsulationとDecapsulationが発生する仮想IF」を指します。

このIF設定を行わないとEVPN-VXLANによるトンネルが生成されないのです。

最後に「EVPNとBGP」になります。

ここではEVPN-VXLANで利用するRD/RT値の設定を行い、BGPではL2VPNによる経路広報の設定も行います。

evpn
  vni 10100 l2
    rd auto
    route-target import auto
    route-target export auto

router bgp 65000
 neighbor 10.0.0.2
    address-family l2vpn evpn
    send-community
    send-community extended

VTEP(エンドポイント)以外の設定

VTEP以外の設定では、以下の設定街、EVPN-VXLANの設定という意味では他に必要ありません

nv overlay evpn

router bgp 65000
  neighbor 10.0.0.2
    address-family l2vpn evpn
      send-community
      send-community extended

設定を終えた後は状態確認をしてみよう!

設定を終えた後は、状態確認を行なっていきましょう。

VTEPでの状態確認コマンドは以下のとおりとなります。

show ip ospf neighbors 
show ip bgp summary
show ip route 
show bgp l2vpn evpn summary 
show bgp l2vpn evpn 
show nve peers detail 

まずは「show ip ospf neighbor」と「show ip bgp summary」による確認です。

Router4# show ip ospf neighbors
 OSPF Process ID 100 VRF default
 Total number of neighbors: 1
 Neighbor ID     Pri State            Up Time  Address         Interface
 10.0.0.2          1 FULL/ -          03:02:41 10.0.4.1        Eth1/2

Router4# show ip bgp summary
BGP summary information for VRF default, address family IPv4 Unicast
BGP router identifier 10.0.0.4, local AS number 65000
BGP table version is 16, IPv4 Unicast config peers 3, capable peers 3
7 network entries and 9 paths using 1948 bytes of memory
BGP attribute entries [3/516], BGP AS path entries [1/6]
BGP community entries [0/0], BGP clusterlist entries [0/0]

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.0.0.2        4 65000     194     194       16    0    0 03:02:32 4
10.0.0.3        4 65000     193     194       16    0    0 03:02:17 3
10.0.0.5        4 65000     193     193       16    0    0 03:02:01 1

上記出力よりPeerがしっかり張れていることがわかります。

その上で、「show ip route」によるルーティングテーブルの状態を見てみましょう。

Router4# show ip route
IP Route Table for VRF "default"
'*' denotes best ucast next-hop
'**' denotes best mcast next-hop
'[x/y]' denotes [preference/metric]
'%<string>' in via output denotes VRF <string>

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.0.0.2, [200/0], 03:02:31, bgp-65000, internal, tag 65000
10.0.0.1/32, ubest/mbest: 1/0
    *via 10.0.1.1, [200/0], 03:02:29, bgp-65000, internal, tag 1
10.0.0.2/32, ubest/mbest: 1/0
    *via 10.0.4.1, Eth1/2, [110/20], 03:02:36, ospf-100, intra
10.0.0.3/32, ubest/mbest: 1/0
    *via 10.0.4.1, Eth1/2, [110/30], 03:02:36, ospf-100, intra
10.0.0.4/32, ubest/mbest: 2/0, attached
    *via 10.0.0.4, Lo0, [0/0], 03:20:45, local
    *via 10.0.0.4, Lo0, [0/0], 03:20:45, direct
10.0.0.5/32, ubest/mbest: 1/0
    *via 10.0.4.1, Eth1/2, [110/40], 03:02:13, ospf-100, intra
10.0.3.0/30, ubest/mbest: 1/0
    *via 10.0.4.1, Eth1/2, [110/20], 03:02:36, ospf-100, intra
10.0.4.0/30, ubest/mbest: 1/0, attached
    *via 10.0.4.2, Eth1/2, [0/0], 03:02:49, direct
10.0.4.2/32, ubest/mbest: 1/0, attached
    *via 10.0.4.2, Eth1/2, [0/0], 03:02:49, local
10.0.5.0/30, ubest/mbest: 1/0
    *via 10.0.4.1, Eth1/2, [110/30], 03:02:36, ospf-100, intra
100.1.1.1/32, ubest/mbest: 1/0
    *via 10.0.1.1, [200/0], 03:02:29, bgp-65000, internal, tag 1
192.168.200.0/24, ubest/mbest: 1/0, attached
    *via 192.168.200.254, Vlan100, [0/0], 03:20:45, direct
192.168.200.1/32, ubest/mbest: 1/0, attached
    *via 192.168.200.1, Vlan100, [190/0], 03:19:25, hmm
192.168.200.254/32, ubest/mbest: 1/0, attached
    *via 192.168.200.254, Vlan100, [0/0], 03:20:45, local

この状態を見ると「192.168.200.0/24」宛の経路は存在しますが、「192.168.200.254 direct or hmm」になっていることがわかるため、Router4から「192.168.200.2」への経路は見えない状態となっています。

では、L2VPNの状態をしっかりみていきましょう。

Router4# show bgp l2vpn evpn summary
BGP summary information for VRF default, address family L2VPN EVPN
BGP router identifier 10.0.0.4, local AS number 65000
BGP table version is 19, L2VPN EVPN config peers 3, capable peers 3
6 network entries and 6 paths using 1224 bytes of memory
BGP attribute entries [5/860], BGP AS path entries [0/0]
BGP community entries [0/0], BGP clusterlist entries [0/0]

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.0.0.2        4 65000     194     194       19    0    0 03:02:32 0
10.0.0.3        4 65000     193     194       19    0    0 03:02:17 0
10.0.0.5        4 65000     193     193       19    0    0 03:02:01 2

上記出力より各ルータとL2VPN EVPNによるBGP Peerが張れていることがわかります。

そして、受信経路を見てみるとどうなっているか?

Router4# show bgp l2vpn evpn
BGP routing table information for VRF default, address family L2VPN EVPN
BGP table version is 19, Local Router ID is 10.0.0.4
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, 2 - best2

   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.0.0.4:32867    (L2VNI 10100)
*>l[2]:[0]:[0]:[48]:[5001.0006.8064]:[0]:[0.0.0.0]/216
                      10.0.0.4                          100      32768 i
*>i[2]:[0]:[0]:[48]:[5001.0007.8064]:[0]:[0.0.0.0]/216
                      10.0.0.5                          100          0 i
*>l[3]:[0]:[32]:[10.0.0.4]/88
                      10.0.0.4                          100      32768 i
*>i[3]:[0]:[32]:[10.0.0.5]/88
                      10.0.0.5                          100          0 i

Route Distinguisher: 10.0.0.5:32867
*>i[2]:[0]:[0]:[48]:[5001.0007.8064]:[0]:[0.0.0.0]/216
                      10.0.0.5                          100          0 i
*>i[3]:[0]:[32]:[10.0.0.5]/88
                      10.0.0.5                          100          0 i

各MACアドレス宛のNetworkに対し、Nexthopがしっかり割り当てられています。

ちなみに「5001.0007.8064」はL2SW2のVLAN100に設定されたアドレスでした。

そして、最後にNVE IFの状態を見ていきます。

Router4# show nve peers detail
Details of nve Peers:
----------------------------------------
Peer-Ip: 10.0.0.5
    NVE Interface       : nve1
    Peer State          : Up
    Peer Uptime         : 03:02:00
    Router-Mac          : n/a
    Peer First VNI      : 10100
    Time since Create   : 03:02:00
    Configured VNIs     : 10100
    Provision State     : peer-add-complete
    Learnt CP VNIs      : 10100
    vni assignment mode : SYMMETRIC
    Peer Location       : N/A

しっかりとPeer先がRouter5の「10.0.0.5」になっていることがわかります。

実際にL2SW1からL2SW2宛にPingとTracerouteを実行してもしっかり疎通可能です。

Host1#ping 192.168.200.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.200.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 7/9/16 ms
Host1#traceroute 192.168.200.2
Type escape sequence to abort.
Tracing the route to 192.168.200.2
VRF info: (vrf in name/id, vrf out name/id)
  1 192.168.200.2 11 msec 10 msec *

Config一覧

この章ではVTEPとVTEP以外のルータの設定を記載します。(参考に)

VTEPルータの設定
!Command: show running-config
!Running configuration last done at: Wed Sep 25 04:53:21 2024
!Time: Wed Sep 25 04:59:30 2024

version 9.3(13) Bios:version
hostname Router4
vdc Router4 id 1
  limit-resource vlan minimum 16 maximum 4094
  limit-resource vrf minimum 2 maximum 4096
  limit-resource port-channel minimum 0 maximum 511
  limit-resource u4route-mem minimum 248 maximum 248
  limit-resource u6route-mem minimum 96 maximum 96
  limit-resource m4route-mem minimum 58 maximum 58
  limit-resource m6route-mem minimum 8 maximum 8

nv overlay evpn
feature ospf
feature bgp
feature interface-vlan
feature vn-segment-vlan-based
feature lldp
feature nv overlay

no password strength-check
#username/password部分は割愛
ip domain-lookup
copp profile strict
rmon event 1 log trap public description FATAL(1) owner PMON@FATAL
rmon event 2 log trap public description CRITICAL(2) owner PMON@CRITICAL
rmon event 3 log trap public description ERROR(3) owner PMON@ERROR
rmon event 4 log trap public description WARNING(4) owner PMON@WARNING
rmon event 5 log trap public description INFORMATION(5) owner PMON@INFO

fabric forwarding anycast-gateway-mac 2020.0000.00aa
vlan 1,100
vlan 100
  vn-segment 10100

vrf context management

interface Vlan1

interface Vlan100
  no shutdown
  ip address 192.168.200.254/24
  ip ospf passive-interface
  ip router ospf 100 area 0.0.0.0
  fabric forwarding mode anycast-gateway

interface nve1
  no shutdown
  host-reachability protocol bgp
  source-interface loopback0
  member vni 10100
    ingress-replication protocol bgp

interface Ethernet1/1
  switchport access vlan 100
  speed 1000

interface Ethernet1/2
  no switchport
  speed 1000
  ip address 10.0.4.2/30
  ip ospf cost 10
  ip ospf network point-to-point
  ip router ospf 100 area 0.0.0.0
  no shutdown

interface loopback0
  ip address 10.0.0.4/32
  ip ospf cost 10
  ip ospf network point-to-point
  ip router ospf 100 area 0.0.0.0
icam monitor scale

line console
line vty
boot nxos bootflash:/nxos.9.3.13.bin
router ospf 100
  router-id 10.0.0.4
router bgp 65000
  router-id 10.0.0.4
  address-family ipv4 unicast
    network 10.0.0.4/32
  neighbor 10.0.0.2
    remote-as 65000
    update-source loopback0
    address-family ipv4 unicast
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.0.0.3
    remote-as 65000
    update-source loopback0
    address-family ipv4 unicast
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.0.0.5
    remote-as 65000
    update-source loopback0
    address-family ipv4 unicast
    address-family l2vpn evpn
      send-community
      send-community extended
evpn
  vni 10100 l2
    rd auto
    route-target import auto
    route-target export auto
VTEPではないルータの設定
!Command: show running-config
!Running configuration last done at: Wed Sep 25 04:51:42 2024
!Time: Wed Sep 25 04:55:57 2024

version 9.3(13) Bios:version
hostname Router2
vdc Router2 id 1
  limit-resource vlan minimum 16 maximum 4094
  limit-resource vrf minimum 2 maximum 4096
  limit-resource port-channel minimum 0 maximum 511
  limit-resource u4route-mem minimum 248 maximum 248
  limit-resource u6route-mem minimum 96 maximum 96
  limit-resource m4route-mem minimum 58 maximum 58
  limit-resource m6route-mem minimum 8 maximum 8

nv overlay evpn
feature ospf
feature bgp
feature lldp

no password strength-check
rmon event 1 log trap public description FATAL(1) owner PMON@FATAL
rmon event 2 log trap public description CRITICAL(2) owner PMON@CRITICAL
rmon event 3 log trap public description ERROR(3) owner PMON@ERROR
rmon event 4 log trap public description WARNING(4) owner PMON@WARNING
rmon event 5 log trap public description INFORMATION(5) owner PMON@INFO

ip route 0.0.0.0/0 Null0
vlan 1

vrf context management

interface Ethernet1/1
  no switchport
  speed 1000
  ip address 10.0.1.2/30
  no shutdown

interface Ethernet1/2
  no switchport
  speed 1000
  ip address 10.0.4.1/30
  ip ospf cost 10
  ip ospf network point-to-point
  ip router ospf 100 area 0.0.0.0
  no shutdown

interface Ethernet1/3
  no switchport
  speed 1000
  ip address 10.0.3.1/30
  ip ospf cost 10
  ip ospf network point-to-point
  ip router ospf 100 area 0.0.0.0
  no shutdown

interface loopback0
  ip address 10.0.0.2/32
  ip ospf cost 10
  ip ospf network point-to-point
  ip router ospf 100 area 0.0.0.0
icam monitor scale

line console
line vty
boot nxos bootflash:/nxos.9.3.13.bin
router ospf 100
  router-id 10.0.0.2
router bgp 65000
  router-id 10.0.0.2
  address-family ipv4 unicast
    network 10.0.0.2/32
  neighbor 10.0.0.3
    remote-as 65000
    update-source loopback0
    address-family ipv4 unicast
      default-originate
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.0.0.4
    remote-as 65000
    update-source loopback0
    address-family ipv4 unicast
      default-originate
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.0.0.5
    remote-as 65000
    update-source loopback0
    address-family ipv4 unicast
      default-originate
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.0.1.1
    remote-as 1
    update-source Ethernet1/1
    address-family ipv4 unicast

各パケットの中身をのぞいてみよう!

設定と状態確認を終えたところで、各区間でパケットの中身を見てみましょう。

L2SW2<->VTEP(Router5)間のICMPパケット

最初に、ユーザを模擬したL2SW2からL2SW1にPingを打った際のパケットの状態をみていきます。

この区間では、EVPN-VXLANエリアに入っていないため、Encapsulationされていないパケットになることが想定となります。

WireSharkによるパケットキャプチャを実施すると想定通りになっていることがわかります。

EVPN-VXLANトンネル内を通過するパケットは?

次に、Encapsulationされている区間のパケットを見ていきましょう。

今回確認した区間はRouter2とRouter4間になります。

では、実際どうなのか?

上記パケットの中身を見るとしっかりEncapsulationされています。

イメージとしてはこんな感じです!

L2SW1とL2SW2に設定したVLAN100のMACアドレスはOriginal Ethernetヘッダに格納されていることがわかります。

EVPN-VXLANトンネル確立時のパケットは?

最後にEVPN-VXLANを確立した際に流れるBGPパケットの中身を見ていきます。

最初のパケットはNVE IFがUPした際にRouter5からRouter4に送信されたBGP Updateメッセージになります。

このパケットを見ると次のことがわかります。

  1. MP_REACH_NLRI
    • AFI L2VPN(EVPN)によるUPDATEメッセージであること
    • Nexthopを10.0.0.5で広報していること
  2. NLRI
    • Route-Typeが「Type 2」の「MAC/IPアドレスの広報」
    • RD値が「10.0.0.5:32867」
    • MACアドレスが「50:01:00:07:80:64」
メッセージタイプ用途
Type1(Ethernet-AD Route)– ESの経路とESに属するEVIリストの広報
Type2(MAC/IP Advertisement Route)– MACアドレスやIPアドレスの広報(到達性も含む)
– MAC/IPの紐付け
Type3(Multicast E-Tag Route)– マルチキャストトンネルのエンドポイント検知
Type4(Ethernet Segment Route)– DF選択と冗長グループの選定
Type5(IP Prefix Route)– IP Prefixの広報
EVPNメッセージタイプ表

次の画像は、EVPN Type3のマルチキャストトンネルのエンドポイントを通知している部分になります。

これらの内容は正常性確認で実行した「show bgp l2vpn evpn」の結果と一致します。

このメッセージはあくまでRouter5からRouter4へのUPDATEです。

次にRouter4からRouter5へのUPDATEメッセージも見ていきましょう。

同じように上記からL2SW1/Router4側の経路がUPDATEされていることがわかります。

マルチキャスト部分も同様です。

最後に

今回はEVPN-VXLANのiBGPによる構築を勉強したのでまとめてみました。

次回はeBGPによる構築もまとめていきたいと思います。

  • URLをコピーしました!

この記事を書いた人

目次