我正在尝试用使用 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
故障排除输出
不确定这里最相关的是什么,但我在下面包含了一些基本信息
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
在任一交换机或服务器上启动接口bond0
。LACP 统计数据显示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>
配置
我用来执行配置的两个主要来源是:
- http://bgphelp.com/2017/04/01/vlan-over-evpn-vxlan-configuration/
- https://blog.noc.grnet.gr/2016/09/28/lab-on-evpn-vxlan-on-juniper-qfx5100-switches-3/
来自 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;
}
}
}