VxLAN ファクトリー。 パート1

こんにちは、ハブル。 私は現在、OTUS のネットワーク エンジニア コースのコース リーダーを務めています。
新規コースの募集開始に向けて 「ネットワークエンジニア」, VxLAN EVPN テクノロジーに関する一連の記事を用意しました。

VxLAN EVPN がどのように機能するかについては膨大な量の資料があるため、最新のデータセンターの問題を解決するためのさまざまなタスクと実践方法を収集したいと考えています。

VxLAN ファクトリー。 パート1

VxLAN EVPN テクノロジーに関するシリーズの最初の部分では、ネットワーク ファブリック上のホスト間の L2 接続を構成する方法を見ていきたいと思います。

すべての例は、スパイン/リーフ トポロジで組み立てられた Cisco Nexus 9000v 上で実行されます。 この記事では、アンダーレイ ネットワークのセットアップについては詳しく説明しません。

  1. アンダーレイネットワーク
  2. アドレス ファミリ l2vpn evpn の BGP ピアリング
  3. NVEのセットアップ
  4. 抑制-arp

アンダーレイネットワーク

使用されるトポロジは次のとおりです。

VxLAN ファクトリー。 パート1

すべてのデバイスでアドレス指定を設定しましょう。

Spine-1 - 10.255.1.101
Spine-2 - 10.255.1.102

Leaf-11 - 10.255.1.11
Leaf-12 - 10.255.1.12
Leaf-21 - 10.255.1.21

Host-1 - 192.168.10.10
Host-2 - 192.168.10.20

すべてのデバイス間に IP 接続があることを確認してみましょう。

Leaf21# sh ip route
<........>
10.255.1.11/32, ubest/mbest: 2/0                      ! Leaf-11 доступен чеерз два Spine
    *via 10.255.1.101, Eth1/4, [110/81], 00:00:03, ospf-UNDERLAY, intra
    *via 10.255.1.102, Eth1/3, [110/81], 00:00:03, ospf-UNDERLAY, intra
10.255.1.12/32, ubest/mbest: 2/0                      ! Leaf-12 доступен чеерз два Spine
    *via 10.255.1.101, Eth1/4, [110/81], 00:00:03, ospf-UNDERLAY, intra
    *via 10.255.1.102, Eth1/3, [110/81], 00:00:03, ospf-UNDERLAY, intra
10.255.1.21/32, ubest/mbest: 2/0, attached
    *via 10.255.1.22, Lo0, [0/0], 00:02:20, local
    *via 10.255.1.22, Lo0, [0/0], 00:02:20, direct
10.255.1.101/32, ubest/mbest: 1/0
    *via 10.255.1.101, Eth1/4, [110/41], 00:00:06, ospf-UNDERLAY, intra
10.255.1.102/32, ubest/mbest: 1/0
    *via 10.255.1.102, Eth1/3, [110/41], 00:00:03, ospf-UNDERLAY, intra

VPC ドメインが作成され、両方のスイッチが整合性チェックに合格し、両方のノードの設定が同一であることを確認してみましょう。

Leaf11# show vpc 

vPC domain id                     : 1
Peer status                       : peer adjacency formed ok
vPC keep-alive status             : peer is alive
Configuration consistency status  : success
Per-vlan consistency status       : success
Type-2 consistency status         : success
vPC role                          : primary
Number of vPCs configured         : 0
Peer Gateway                      : Disabled
Dual-active excluded VLANs        : -
Graceful Consistency Check        : Enabled
Auto-recovery status              : Disabled
Delay-restore status              : Timer is off.(timeout = 30s)
Delay-restore SVI status          : Timer is off.(timeout = 10s)
Operational Layer3 Peer-router    : Disabled

vPC status
----------------------------------------------------------------------------
Id    Port          Status Consistency Reason                Active vlans
--    ------------  ------ ----------- ------                ---------------
5     Po5           up     success     success               1

BGPピアリング

最後に、オーバーレイ ネットワークの設定に進むことができます。

この記事の一部として、次の図に示すように、ホスト間のネットワークを構成する必要があります。

VxLAN ファクトリー。 パート1

オーバーレイ ネットワークを構成するには、l2vpn evpn ファミリをサポートするスパイン スイッチとリーフ スイッチで BGP を有効にする必要があります。

feature bgp
nv overlay evpn

次に、リーフとスパインの間に BGP ピアリングを構成する必要があります。 セットアップを簡素化し、ルーティング情報の配布を最適化するために、Spine を Route-Reflector サーバーとして構成します。 セットアップを最適化するために、テンプレートを使用してすべての Leaf を構成に書き込みます。

Spine の設定は次のようになります。

router bgp 65001
  template peer LEAF 
    remote-as 65001
    update-source loopback0
    address-family l2vpn evpn
      send-community
      send-community extended
      route-reflector-client
  neighbor 10.255.1.11
    inherit peer LEAF
  neighbor 10.255.1.12
    inherit peer LEAF
  neighbor 10.255.1.21
    inherit peer LEAF

Leaf スイッチのセットアップは次のようになります。

router bgp 65001
  template peer SPINE
    remote-as 65001
    update-source loopback0
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.255.1.101
    inherit peer SPINE
  neighbor 10.255.1.102
    inherit peer SPINE

Spine で、すべての Leaf スイッチとのピアリングを確認してみましょう。

Spine1# sh bgp l2vpn evpn summary
<.....>
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.255.1.11     4 65001       7       8        6    0    0 00:01:45 0
10.255.1.12     4 65001       7       7        6    0    0 00:01:16 0
10.255.1.21     4 65001       7       7        6    0    0 00:01:01 0

ご覧のとおり、BGP には問題はありませんでした。 VxLAN の設定に進みましょう。 さらなる構成はスイッチのリーフ側でのみ行われます。 スパインはネットワークのコアとしてのみ機能し、トラフィックの送信のみに関与します。 すべてのカプセル化とパス決定の作業は、リーフ スイッチ上でのみ行われます。

NVEのセットアップ

NVE - ネットワーク仮想インターフェイス

セットアップを開始する前に、いくつかの用語を紹介しましょう。

VTEP - 仮想トンネル エンド ポイント、VxLAN トンネルが開始または終了するデバイス。 VTEP は必ずしもネットワーク デバイスである必要はありません。 VxLAN テクノロジーをサポートするサーバーもサーバーとして機能できます。 このトポロジでは、すべてのリーフ スイッチが VTEP です。

VNI - 仮想ネットワーク インデックス - VxLAN 内のネットワーク識別子。 VLAN と同様のことが言えます。 ただし、いくつかの違いがあります。 ファブリックを使用する場合、VLAN は XNUMX つのリーフ スイッチ内でのみ一意となり、ネットワーク全体には送信されません。 ただし、各 VLAN には、ネットワーク上ですでに送信されている VNI 番号を関連付けることができます。 それがどのようなもので、どのように使用できるかについては、さらに詳しく説明します。

VxLAN テクノロジーの機能を有効にし、VLAN 番号を VNI 番号に関連付ける機能を有効にしてみましょう。

feature nv overlay
feature vn-segment-vlan-based

VxLAN の動作を担当する NVE インターフェイスを設定しましょう。 このインターフェイスは、VxLAN ヘッダー内のフレームのカプセル化を担当します。 GRE のトンネル インターフェイスと類似することができます。

interface nve1
  no shutdown
  host-reachability protocol bgp ! используем BGP для передачи маршрутной информации
  source-interface loopback0    ! интерфейс  с которого отправляем пакеты loopback0

Leaf-21 スイッチでは、すべてが問題なく作成されます。 ただし、コマンドの出力を確認すると、 show nve peers、その後は空になります。 ここで、VPC 構成に戻る必要があります。 Leaf-11 と Leaf-12 はペアで動作し、VPC ドメインによって結合されていることがわかります。 これにより、次のような状況が得られます。

ホスト 2 は、リーフ 21 に 1 つのフレームを送信し、それをネットワーク経由でホスト 21 に送信します。 ただし、リーフ 1 は、ホスト 21 の MAC アドレスが XNUMX つの VTEP 経由で同時にアクセスできることを認識します。 この場合、Leaf-XNUMX は何をすべきでしょうか? 結局のところ、これはネットワークにループが発生する可能性があることを意味します。

この状況を解決するには、Leaf-11 と Leaf-12 が工場内で XNUMX つのデバイスとして機能する必要があります。 解決策は非常に簡単です。 トンネルを構築するループバック インターフェイスに、セカンダリ アドレスを追加します。 セカンダリ アドレスは両方の VTEP で同じである必要があります。

interface loopback0
 ip add 10.255.1.10/32 secondary

したがって、他の VTEP の観点からは、次のトポロジが得られます。

VxLAN ファクトリー。 パート1

つまり、Leaf-21 の IP アドレスと 11 つの Leaf-12 と Leaf-XNUMX の間の仮想 IP の間にトンネルが構築されます。 これで、XNUMX つのデバイスから MAC アドレスを問題なく学習できるようになり、トラフィックが XNUMX つの VTEP から別の VTEP に移動できるようになります。 XNUMX つの VTEP のどちらがトラフィックを処理するかは、Spine のルーティング テーブルを使用して決定されます。

Spine1# sh ip route
<.....>
10.255.1.10/32, ubest/mbest: 2/0
    *via 10.255.1.11, Eth1/1, [110/41], 1d01h, ospf-UNDERLAY, intra
    *via 10.255.1.12, Eth1/2, [110/41], 1d01h, ospf-UNDERLAY, intra
10.255.1.11/32, ubest/mbest: 1/0
    *via 10.255.1.11, Eth1/1, [110/41], 1d22h, ospf-UNDERLAY, intra
10.255.1.12/32, ubest/mbest: 1/0
    *via 10.255.1.12, Eth1/2, [110/41], 1d01h, ospf-UNDERLAY, intra

上でわかるように、アドレス 10.255.1.10 は XNUMX つのネクストホップを通じてすぐに利用可能になります。

この段階では、基本的な接続について説明しました。 NVE インターフェイスの設定に進みましょう。
すぐに Vlan 10 を有効にして、ホストの各リーフ上の VNI 10000 に関連付けましょう。 ホスト間にL2トンネルを設定しましょう

vlan 10                 ! Включаем VLAN на всех VTEP подключенных к необходимым хостам
  vn-segment 10000      ! Ассоциируем VLAN с номер VNI 

interface nve1
  member vni 10000      ! Добавляем VNI 10000 для работы через интерфейс NVE. для инкапсуляции в VxLAN
    ingress-replication protocol bgp    ! указываем, что для распространения информации о хосте используем BGP

次に、NVE ピアと BGP EVPN のテーブルを確認してみましょう。

Leaf21# sh nve peers
Interface Peer-IP          State LearnType Uptime   Router-Mac
--------- ---------------  ----- --------- -------- -----------------
nve1      10.255.1.10      Up    CP        00:00:41 n/a                 ! Видим что peer доступен с secondary адреса

Leaf11# sh bgp l2vpn evpn

   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)        ! От кого именно пришел этот l2VNI
*>l[3]:[0]:[32]:[10.255.1.10]/88                                   ! EVPN route-type 3 - показывает нашего соседа, который так же знает об l2VNI10000
                      10.255.1.10                       100      32768 i
*>i[3]:[0]:[32]:[10.255.1.20]/88
                      10.255.1.20                       100          0 i
* i                   10.255.1.20                       100          0 i

Route Distinguisher: 10.255.1.21:32777
* i[3]:[0]:[32]:[10.255.1.20]/88
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i

上では EVPN ルート タイプ 3 のルートのみが表示されています。このタイプのルートはピア (リーフ) について話していますが、ホストはどこにあるのでしょうか?
問題は、MAC ホストに関する情報が EVPN ルート タイプ 2 経由で送信されるということです。

ホストを表示するには、EVPN ルート タイプ 2 を構成する必要があります。

evpn
  vni 10000 l2
    route-target import auto   ! в рамках данной статьи используем автоматический номер для route-target
    route-target export auto

Host-2 から Host-1 に ping を実行してみましょう。

Firewall2# ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 data bytes
36 bytes from 192.168.10.2: Destination Host Unreachable
Request 0 timed out
64 bytes from 192.168.10.1: icmp_seq=1 ttl=254 time=215.555 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=254 time=38.756 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=254 time=42.484 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=254 time=40.983 ms

以下では、ホスト MAC アドレスを持つルート タイプ 2 が BGP テーブルに表示されていることがわかります - 5001.0007.0007 および 5001.0008.0007

Leaf11# sh bgp l2vpn evpn
<......>

   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216                      !  evpn route-type 2 и mac адрес хоста 1
                      10.255.1.10                       100      32768 i
*>i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216                      ! evpn route-type 2 и mac адрес хоста 2
* i                   10.255.1.20                       100          0 i
*>l[3]:[0]:[32]:[10.255.1.10]/88
                      10.255.1.10                       100      32768 i
Route Distinguisher: 10.255.1.21:32777
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i

次に、MAC ホストに関する情報を受け取ったアップデートに関する詳細情報を確認できます。 以下はコマンド出力のすべてではありません。

Leaf21# sh bgp l2vpn evpn 5001.0007.0007

BGP routing table information for VRF default, address family L2VPN EVPN
Route Distinguisher: 10.255.1.11:32777        !  отправил Update с MAC Host. Не виртуальный адрес VPC, а адрес Leaf
BGP routing table entry for [2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216,
 version 1507
Paths: (2 available, best #2)
Flags: (0x000202) (high32 00000000) on xmit-list, is not in l2rib/evpn, is not i
n HW

  Path type: internal, path is valid, not best reason: Neighbor Address, no labe
led nexthop
  AS-Path: NONE, path sourced internal to AS
    10.255.1.10 (metric 81) from 10.255.1.102 (10.255.1.102)    ! с кем именно строим VxLAN тоннель
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 10000         ! Номер VNI, который ассоциирован с VLAN, в котором находится Host
      Extcommunity: RT:65001:10000 SOO:10.255.1.10:0 ENCAP:8        ! Тут видно, что RT сформировался автоматически на основе номеров AS и VNI
      Originator: 10.255.1.11 Cluster list: 10.255.1.102
<........>

工場でフレームがどのように見えるかを見てみましょう。

VxLAN ファクトリー。 パート1

ARP の抑制

見事、ホスト間で L2 通信が確立され、そこで終了できるようになりました。 ただし、すべてがそれほど単純ではありません。 ホストが少ない限り問題はありません。 しかし、何百、何千ものホストがある状況を想像してみましょう。 どのような問題に直面する可能性がありますか?

この問題は BUM(ブロードキャスト、不明なユニキャスト、マルチキャスト) トラフィックです。 この記事では、ブロードキャスト トラフィックを処理するオプションについて検討します。
イーサネット ネットワークの主なブロードキャスト ジェネレーターは、ARP プロトコルを介したホスト自体です。

Nexus は、ARP リクエストに対抗するためのメカニズム、suppress-arp を実装しています。
この機能は次のように動作します。

  1. ホスト 1 は、そのネットワークのブロードキャスト アドレスに APR 要求を送信します。
  2. リクエストはリーフ スイッチに到達し、このリクエストをホスト 2 に向かうファブリックに渡す代わりに、リーフは自ら応答し、必要な IP と MAC を示します。

したがって、ブロードキャスト リクエストは工場に送信されませんでした。 しかし、Leaf が MAC アドレスしか知らない場合、これはどのように機能するのでしょうか?

すべては非常に単純です。EVPN ルート タイプ 2 は、MAC アドレスに加えて、MAC/IP の組み合わせを送信できます。 これを行うには、リーフ上の VLAN に IP アドレスを設定する必要があります。 どの IP を設定すればよいのかという疑問が生じます。 Nexus では、すべてのスイッチに分散 (同じ) アドレスを作成できます。

feature interface-vlan

fabric forwarding anycast-gateway-mac 0001.0001.0001    ! задаем virtual mac для создания распределенного шлюза между всеми коммутаторами

interface Vlan10
  no shutdown
  ip address 192.168.10.254/24          ! на всех Leaf задаем одинаковый IP
  fabric forwarding mode anycast-gateway    ! говорим использовать Virtual mac

したがって、ホストの観点からは、ネットワークは次のようになります。

VxLAN ファクトリー。 パート1

BGP l2route evpn を確認してみましょう

Leaf11# sh bgp l2vpn evpn
<......>

   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216
                      10.255.1.21                       100      32768 i
*>i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216
                      10.255.1.10                       100          0 i
* i                   10.255.1.10                       100          0 i
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.10.20]/248
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i

<......>

Route Distinguisher: 10.255.1.21:32777
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.10.20]/248
*>i                   10.255.1.20                       100          0 i

<......>

コマンド出力から、EVPN ルート タイプ 2 では、MAC に加えてホスト IP アドレスも表示されることがわかります。

では、suppress-arp の設定に戻りましょう。 この設定は、VNI ごとに個別に有効になります。

interface nve1
  member vni 10000   
    suppress-arp

次に、いくつかの複雑さが生じます。

  • この機能が動作するには、TCAM メモリにスペースが必要です。 以下に、suppress-arp の設定例を示します。

hardware access-list tcam region arp-ether 256

この設定には倍幅が必要です。 つまり、256 を設定した場合は、TCAM で 512 を解放する必要があります。TCAM のセットアップは、割り当てられたタスクのみに依存し、ネットワークごとに異なる場合があるため、この記事の範囲を超えています。

  • suppress-arp の実装は、すべてのリーフ スイッチで実行する必要があります。 ただし、VPC ドメイン内に存在するリーフ ペアで設定を行う場合、複雑さが生じる可能性があります。 TCAM が変更されると、ペア間の整合性が失われ、XNUMX つのノードが動作しなくなる可能性があります。 さらに、TCAM 変更設定を適用するには、デバイスの再起動が必要になる場合があります。

そのため、現在の状況において、実行中のファクトリにこの設定を実装する価値があるかどうかを慎重に検討する必要があります。

これでシリーズの最初の部分は終了です。 次のパートでは、ネットワークを異なる VRF に分離した VxLAN ファブリックを介したルーティングについて見ていきます。

そして今、私は皆さんを招待します 無料ウェビナー、その中でコースについて詳しく説明します。 このウェビナーに登録した最初の 20 名の参加者には、放送後 1 ~ 2 日以内に電子メールで割引証明書が届きます。

出所: habr.com

コメントを追加します