瞻博网络 QFX5110 - 启用 VXLAN 后,EVPN-VXLAN 以太网交换表为空

网络工程 瞻博网络 虚拟局域网 evpn
2021-07-22 07:59:44

我正在尝试用使用 VXLAN 的 EVPN 多宿主替换我们现有的集群交换方式进行多机箱 LAG。我的理解是我们应该能够用 evpn-multihoming 替换我们拥有的任何 LAG。

原因是我想摆脱虚拟机箱共享路由引擎的单点故障(我们遇到了一些问题),这是使用 VXLAN 迁移到脊叶网络的垫脚石的一部分。所以现在利用这一点是有意义的。

我正在尝试实现应该是相当基本的设置 - 两个 QFX 5110 交换机带有 ESI LAG 和 EVPN,以在两个独立交换机之间共享 MAC。

问题

从根本上说,我的问题是我无法通过 EVPN 进行远程 MAC 学习。

  • 一旦我将任何 VXLAN VNI 配置添加到我现有的 VLAN100 中,我ethernet-switching table就完全空了,没有显示 MAC。并且没有数据包的本地桥接。连接完全丢失。
{master:0}
root@core-01> show ethernet-switching table

{master:0}
root@core-01>

  • 如果我从 VLAN100 中删除 VXLAN 配置,MAC 会显示在ethernet-switching table并且我可以使本地桥接工作,但不是远程桥接。
    • 我得到了一些通过 BGP EVPN 共享的路由,但我只得到了类型 1、3 或 4 的路由,从来没有类型 2。
    • 我的理解是我需要类型 2 路由来学习实际的 MAC。
    • 我的 vtep 接口显示为 vlan 100 的成员,但从未列为任何 MAC 的转发选项。

设置详情

  • 使用 OSPF 学习环回
  • 使用 iBGP 作为我的底层。
  • 仅使用单个 EVPN 实例。
  • 不使用任何路由实例/VRF - 现在只是默认的全局表。
  • 使用 Junos 17.3R1.10

EVPN 多宿主设置

故障排除输出

不确定这里最相关的是什么,但我在下面包含了一些基本信息

root@core-01> show route receive-protocol bgp 10.10.216.170

inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)

:vxlan.inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)

inet6.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)

bgp.evpn.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
  3:10.10.216.170:100::100::10.10.216.170/248 IM
*                         10.10.216.170               100        I
  4:10.10.216.170:0::650000100113044501:10.10.216.170/296 ES
*                         10.10.216.170               100        I

default-switch.evpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
  3:10.10.216.170:100::100::10.10.216.170/248 IM
*                         10.10.216.170               100        I

__default_evpn__.evpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
  4:10.10.216.170:0::650000100113044501:10.10.216.170/296 ES
*                         10.10.216.170               100        I


root@core-01> show evpn instance
                            Intfs       IRB intfs         MH      MAC addresses
Instance                    Total   Up  Total   Up  Nbrs  ESIs    Local  Remote
__default_evpn__                                       1
default-switch                114    2      0    0     1     1        0       0

{master:0}
{master:0}
root@core-01> show vlans

Routing instance        VLAN name             Tag          Interfaces
default-switch          VLAN100               100
                                                           ae1.0*
                                                           ge-0/0/2.0*
                                                           vtep.32769*

编辑:重新启动略有帮助

重新启动两台交换机后,我现在可以看到以太网交换表已填充,并且我看到了 EVPN 类型 2 路由,因此似乎正在学习 MAC。在重新启动的过程中,我无法访问两个交换机之一,因此我需要解决这个问题并继续进行故障排除。

不幸的是,即使情况看起来好多了,我仍然没有网络连接。

{master:0}
root@core-02> show ethernet-switching table

MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static
           SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC)


Ethernet switching table : 5 entries, 5 learned
Routing instance : default-switch
   Vlan                MAC                 MAC      Logical                Active
   name                address             flags    interface              source
   VLAN100             00:15:fa:b6:76:41   D        vtep.32769             10.10.216.169
   VLAN100             00:15:fa:bc:18:01   D        vtep.32769             10.10.216.169
   VLAN100             00:1d:aa:56:4b:b8   D        vtep.32769             10.10.216.169
   VLAN100             c0:67:af:0a:9d:c0   D        vtep.32769             10.10.216.169
   VLAN100             e8:65:49:d5:43:40   D        vtep.32769             10.10.216.169

我看到来自另一台交换机的 EVPN 2 类路由:

root@core-02> show route receive-protocol bgp 10.10.216.169

inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)

:vxlan.inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)

inet6.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)

bgp.evpn.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
  2:10.10.216.169:100::100::00:15:fa:b6:76:41/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::00:15:fa:bc:18:01/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::00:1d:aa:56:4b:b8/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::c0:42:d0:03:b1:01/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::c0:67:af:0a:9d:c0/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::e8:65:49:d5:43:40/304 MAC/IP
*                         10.10.216.169               100        I
  3:10.10.216.169:100::100::10.10.216.169/248 IM
*                         10.10.216.169               100        I

default-switch.evpn.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
  2:10.10.216.169:100::100::00:15:fa:b6:76:41/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::00:15:fa:bc:18:01/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::00:1d:aa:56:4b:b8/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::c0:42:d0:03:b1:01/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::c0:67:af:0a:9d:c0/304 MAC/IP
*                         10.10.216.169               100        I
  2:10.10.216.169:100::100::e8:65:49:d5:43:40/304 MAC/IP
*                         10.10.216.169               100        I
  3:10.10.216.169:100::100::10.10.216.169/248 IM
*                         10.10.216.169               100        I

更新 2:JunOS 更新修复了 LACP 错误

  • 如上所述,在重新启动两台交换机后,我开始看到 2 类路由,并开始看到通过ethernet-switching table.

  • 下一个问题是在连接到服务器的任一 LAG 接口上都没有 MAC 学习。这是因为尽管ge-0/0/1两台交换机都已启动,但流量仍拒绝通过,因此 LACP 不会ae1在任一交换机或服务器上启动接口bond0LACP 统计数据显示Port Disabled这是由于 LACP 内没有发生开始事件:https : //www.juniper.net/documentation/en_US/junos/topics/reference/command-summary/show-lacp-interfaces.html

  • 我发现如果我删除了 LACP+LAG 配置(我没有尝试只是关闭 LACP 活动模式),我会配置一个单独的 VLAN 100 访问端口来代替,我可以立即连接到服务器。

  • 我知道ae1在启用 VXLAN+EVPN 之前我的 LACP 配置工作正常,所以我把这归结为 JunOS 中的另一个可能的错误,就像我之前必须重新启动交换机一样。

修复

基于此,我决定升级到当前的 JTAC 推荐版本。

这已经奏效了。我升级了:

  • 来自:JunOS 17.3R1
  • 至:JunOS 20.2R2.11

在每台交换机上执行此操作后,立即ae1出现在该交换机上,并且 MAC 学习ae1开始工作,并且我具有完全可达性。

我无法确认在我的 VLAN100 上启用 VXLAN VNI 映射后,JunOS 升级是否可以避免重新启动的需要,但鉴于我没有阅读任何有关必须重新启动的内容,我想说升级也可以解决这个问题。

这是我的工作 EVPN 路由:

{master:0}
root@core-02> show route protocol evpn

inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)

:vxlan.inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)

inet6.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)

bgp.evpn.0: 15 destinations, 15 routes (15 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1:10.10.216.170:0::650000100113044501::FFFF:FFFF/192 AD/ESI
                   *[EVPN/170] 02:38:08
                       Indirect
1:10.10.216.170:100::650000100113044501::0/192 AD/EVI
                   *[EVPN/170] 02:38:09
                       Indirect
3:10.10.216.170:100::100::10.10.216.170/248 IM
                   *[EVPN/170] 02:38:07
                       Indirect
4:10.10.216.170:0::650000100113044501:10.10.216.170/296 ES
                   *[EVPN/170] 02:38:09
                       Indirect

default-switch.evpn.0: 12 destinations, 12 routes (12 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1:10.10.216.170:100::650000100113044501::0/192 AD/EVI
                   *[EVPN/170] 02:38:09
                       Indirect
3:10.10.216.170:100::100::10.10.216.170/248 IM
                   *[EVPN/170] 02:38:07
                       Indirect

__default_evpn__.evpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1:10.10.216.170:0::650000100113044501::FFFF:FFFF/192 AD/ESI
                   *[EVPN/170] 02:38:08
                       Indirect
4:10.10.216.170:0::650000100113044501:10.10.216.170/296 ES
                   *[EVPN/170] 02:38:09
                       Indirect

{master:0}
root@core-02>

配置

我用来执行配置的两个主要来源是:

来自 core-01:

root@core-01# show vlans
VLAN100 {
    vlan-id 100;
    vxlan {
        vni 100;
        ingress-node-replication;
    }
}
default {
    vlan-id 1;
    l3-interface irb.0;
}

root@core-01# show protocols
bgp {
    group internal-peers {
        type internal;
        description "iBGP Peers";
        local-address 10.10.216.169;
        family evpn {
            signaling;
        }
        authentication-key  ## SECRET-DATA
        peer-as 65000;
        neighbor 10.10.216.170;
    }
}
ospf {
    reference-bandwidth 100g;
    area 0.0.0.0 {
        interface et-0/0/49.0 {
            authentication {
                md5 66 key  ## SECRET-DATA
            }
        }
        interface et-0/0/51.0 {
            authentication {
                md5 66 key  ## SECRET-DATA
            }
        }
        interface lo0.0 {
            passive;
        }
    }
}
evpn {
    vni-options {
        vni 100 {
            vrf-target export target:1:100; ## Warning: 'export' is deprecated
        }
    }
    encapsulation vxlan;
    multicast-mode ingress-replication;
    extended-vni-list all;
}

policy-options {
    policy-statement underlay-import {
        term VXLAN100 {
            from community VXLAN100;
            then accept;
        }
    }
    community VXLAN100 members target:1:100;
}
switch-options {
    vtep-source-interface lo0.0;
    route-distinguisher 10.10.216.169:100;
    vrf-import underlay-import;
    vrf-target target:65000:100;
}


root@core-01# show interfaces ge-0/0/1
description "Test - Server NIC#1";
ether-options {
    802.3ad ae1;
}

root@core-01# show interfaces ae1
description "Test - Server";
mtu 9216;
esi {
    00:65:00:00:10:01:13:04:45:01;
    all-active;
}
aggregated-ether-options {
    lacp {
        active;
        periodic fast;
        system-id 65:00:00:10:01:00;
    }
}
unit 0 {
    family ethernet-switching {
        interface-mode access;
        vlan {
            members VLAN100;
        }
    }
}

1个回答

TLDR:根据此 JTAC 文档,将JunOS更新为 QFX 5110 的最新推荐版本:https ://kb.juniper.net/InfoCenter/index?page=content&id=KB21476&actp=METADATA#qfx_series

Junos 18.4R2-S5 和后续服务版本/20.2R2

这是我修复初始空 MAC 表错误的方法:

  • 重新启动两台交换机后,我开始看到 2 类路由,并开始看到通过ethernet-switching table. 只需重新启动一次即可使此错误消失。

这是我修复 LAG/LACP 错误的方法:

  • 我发现如果我删除了 LACP+LAG 配置(我没有尝试只是关闭 LACP 活动模式),我会配置一个单独的 VLAN 100 访问端口来代替,我可以立即连接到服务器。

  • 为了解决这个问题,即使启用了 LACP,我从:JunOS 17.3R1升级到:JunOS 20.2R2.11

在每台交换机上执行此操作后,立即ae1出现在该交换机上,并且 MAC 学习ae1开始工作,并且我具有完全可达性。

有关应用此修复程序后工作 EVPN 路由 + MAC 学习的更多详细信息,请参阅原始帖子。