刚刚发生了什么 (WJH)
刚刚发生了什么 (WJH) 提供对网络问题的实时可见性,并具有两个组件
- WJH 代理使您能够使用诸如 NVIDIA NetQ 等工具流式传输详细和上下文相关的遥测数据,以进行交换机外分析。
- WJH 服务 (
what-just-happened
) 使您能够通过查看丢弃的数据包来诊断网络问题。WJH 可以监控第 1 层、第 2 层、第 3 层、隧道、缓冲区和 ACL 相关问题。Cumulus Linux 默认启用并运行 WJH 服务。
配置 WJH
您可以选择要监控的数据包丢弃,方法是创建通道并设置要监控的数据包丢弃类别(第 1 层、第 2 层、第 3 层、隧道、缓冲区和 ACL)。
NVUE 不提供用于设置缓冲区和 ACL 数据包丢弃类别的命令。您必须编辑 /etc/what-just-happened/what-just-happened.json
文件。请参阅“Linux 命令”选项卡。
以下示例配置了两个单独的通道
forwarding
通道监控第 2 层、第 3 层和隧道数据包丢弃。layer-1
通道监控第 1 层数据包丢弃。
cumulus@switch:~$ nv set system wjh channel forwarding trigger l2
cumulus@switch:~$ nv set system wjh channel forwarding trigger l3
cumulus@switch:~$ nv set system wjh channel forwarding trigger tunnel
cumulus@switch:~$ nv set system wjh channel layer-1 trigger l1
cumulus@switch:~$ nv config apply
您可以通过取消设置通道列表中的类别来停止监控特定的数据包丢弃。以下命令示例停止监控 forwarding
通道中的第 2 层数据包丢弃
cumulus@switch:~$ nv unset system wjh channel forwarding trigger l2
cumulus@switch:~$ nv config apply
要删除通道,请运行 nv unset system wjh channel <channel>
命令。以下命令示例删除 layer-1
通道
cumulus@switch:~$ nv unset system wjh channel layer-1
cumulus@switch:~$ nv config apply
编辑 /etc/what-just-happened/what-just-happened.json
文件
- 对于要监控的每个丢弃类别,请将丢弃类别值包含在方括号 ([]) 内。
- 对于您不要监控的每个丢弃类别,请从方括号内删除丢弃类别值。
编辑文件后,您必须使用 sudo systemctl restart what-just-happened
命令重启 WJH 服务。
以下示例配置了一个通道以监控第 2 层、第 3 层和隧道数据包丢弃,以及一个通道以监控第 1 层数据包丢弃。
cumulus@switch:~$ sudo nano /etc/what-just-happened/what-just-happened.json
{
"what-just-happened": {
"channels": {
"forwarding": {
"drop_category_list": [
"l2",
"l3",
"tunnel"
]
},
"layer-1": {
"drop_category_list": [
"l1"
]
}
}
}
}
cumulus@switch:~$ sudo systemctl restart what-just-happened
以下示例配置了一个通道以监控缓冲区数据包丢弃,以及一个通道以监控 ACL 数据包丢弃。
cumulus@switch:~$ sudo nano /etc/what-just-happened/what-just-happened.json
{
"what-just-happened": {
"channels": {
"buffer": {
"drop_category_list": ["buffer"]
},
"acl": {
"drop_category_list": ["acl"]
}
}
}
}
cumulus@switch:~$ sudo systemctl restart what-just-happened
显示有关丢弃数据包的信息
您可以运行以下命令以显示有关丢弃数据包的信息并诊断问题。
要显示有关您配置的所有通道的数据包丢弃的信息,请运行 nv show system wjh packet-buffer
命令。命令输出包括丢弃原因和建议采取的操作。
您还可以显示交换机上的 WJH 配置
- 要显示通道的配置,请运行
nv show system wjh channel <channel>
命令。例如,nv show system wjh channel forwarding
。 - 要显示通道中数据包丢弃类别的配置,请运行
nv show system wjh channel <channel> trigger
命令。例如,nv show system wjh channel forwarding trigger
。
以下示例显示了有关第 1 层数据包丢弃的信息
cumulus@switch:~$ nv show system wjh packet-buffer
# dMAC dPort Dst IP:Port EthType Drop group IP Proto Drop reason - Recommended action Severity sMAC sPort Src IP:Port Timestamp VLAN
-- ---- ----- ----------- ------- ---------- -------- ------------------------------------------------------- -------- ---- ------- ----------- --------------------- ----
1 N/A N/A N/A N/A L1 N/A Generic L1 event - Check layer 1 aggregated information Warn N/A swp17 N/A 22/11/03 01:00:35.458 N/A
2 N/A N/A N/A N/A L1 N/A Generic L1 event - Check layer 1 aggregated information Warn N/A swp18 N/A 22/11/03 01:00:35.458 N/A
3 N/A N/A N/A N/A L1 N/A Generic L1 event - Check layer 1 aggregated information Warn N/A swp19 N/A 22/11/03 01:00:35.458 N/A
4 N/A N/A N/A N/A L1 N/A Generic L1 event - Check layer 1 aggregated information Warn N/A swp20 N/A 22/11/03 01:00:35.458 N/A
您可以从命令行运行以下命令。
命令 | 描述 |
---|---|
what-just-happened poll | 显示有关您配置的所有通道的数据包丢弃的信息。输出包括丢弃原因和建议采取的操作。what-just-happened poll <channel> 命令显示您指定的通道的信息。 |
what-just-happened poll --aggregate | 显示按丢弃原因聚合的有关丢弃数据包的信息。此命令还显示丢弃数据包发生的次数。what-just-happened poll <channel> --aggregate 命令显示您指定的通道的信息。 |
what-just-happened poll --export | 将有关丢弃数据包的信息保存到 PCAP 格式的文件中。what-just-happened poll <channel> --export 命令保存您指定的通道的信息。 |
what-just-happened poll --export --no_metadata | 将有关丢弃数据包的信息保存到没有元数据的 PCAP 格式的文件中。what-just-happened poll <channel> --export --no_metadata 命令保存您指定的通道的信息。 |
what-just-happened dump | 在命令行上显示所有诊断信息。 |
运行 what-just-happened -h
命令以查看所有 WJH 命令选项。
要显示所有丢弃的数据包以及丢弃原因,请运行 NVUE nv show system wjh packet-buffer
命令或 what-just-happened poll
命令。
以下示例显示数据包丢弃五次,因为源 MAC 地址等于目标 MAC 地址
cumulus@switch:~$ what-just-happened poll --aggregate
Sample Window : 2021/06/16 12:57:23.046 - 2021/06/16 14:46:17.701
# sPort VLAN sMAC dMAC EthType Src IP:Port Dst IP:Port IP Proto Count Severity Drop reason - Recommended action
-- ------ ----- ------------------ ------------------ -------- ------------ ------------ --------- ------ --------- -----------------------------------------------
1 swp4 N/A 44:38:39:00:a4:87 44:38:39:00:a4:87 IPv4 0.0.0.0:0 0.0.0.0:0 ip 100 Error Source MAC equals destination MAC - Bad packet was received from peer
2 swp1 N/A 44:38:39:00:a4:80 44:38:39:00:a4:80 IPv4 0.0.0.0:0 0.0.0.0:0 ip 100 Error Source MAC equals destination MAC - Bad packet was received from peer
以下命令将丢弃的数据包保存到 PCAP 格式的文件中
cumulus@switch:~$ what-just-happened poll --export --no_metadata
PCAP file path : /var/log/mellanox/wjh/wjh_user_2021_06_16_12_03_15.pcap
# Timestamp sPort dPort VLAN sMAC dMAC EthType Src IP:Port Dst IP:Port IP Proto Drop Severity Drop reason - Recommended action
Group
---- ---------------------- ------ ------ ----- ------------------ ------------------ -------- ------------ ------------ --------- ------ --------- -----------------------------------------------
1 21/06/16 12:03:12.728 swp1 N/A N/A 44:38:39:00:a4:84 44:38:39:00:a4:84 IPv4 N/A N/A N/A L2 Error Source MAC equals destination MAC - Bad packet as received from peer
2 21/06/16 12:03:12.728 swp1 N/A N/A 44:38:39:00:a4:84 44:38:39:00:a4:84 IPv4 N/A N/A N/A L2 Error Source MAC equals destination MAC - Bad packet was received from peer
3 21/06/16 12:03:12.745 swp1 N/A N/A 44:38:39:00:a4:84 44:38:39:00:a4:84 IPv4 N/A N/A N/A L2 Error Source MAC equals destination MAC - Bad packet was received from peer
4 21/06/16 12:03:12.745 swp1 N/A N/A 44:38:39:00:a4:84 44:38:39:00:a4:84 IPv4 N/A N/A N/A L2 Error Source MAC equals destination MAC - Bad packet was received from peer
注意事项
缓冲区数据包丢弃监控
- 缓冲区数据包丢弃监控在具有 Spectrum-2 及更高版本的交换机上可用。
- 缓冲区数据包丢弃监控使用 SPAN 目标。如果您配置 SPAN,请确保您没有超过交换机 ASIC 类型允许的 SPAN 目标总数;请参阅SPAN 和 ERSPAN。如果您需要删除缓冲区数据包丢弃监控使用的 SPAN 目标,请从
/etc/what-just-happened/what-just-happened.json
文件中删除缓冲区监控丢弃类别,然后重新加载what-just-happened
服务。
Cumulus Linux 和 Docker
WJH 在 Docker 容器中运行。默认情况下,当 Docker 启动时,它会创建一个名为 docker0
的桥接。但是,出于兼容性原因,Cumulus Linux 在 /etc/docker/daemon.json
文件中使用属性 "bridge: none"
禁用了 docker0
桥接。
WJH 和 NVIDIA NetQ 代理
当您在交换机上启用 NVIDIA NetQ 代理时,WJH 服务停止且不运行。如果您禁用 NVIDIA NetQ 服务并想要使用 WJH,请运行以下命令以启用并启动 WJH 服务
cumulus@switch:~$ nv set system wjh enable on
cumulus@switch:~$ nv config apply
cumulus@switch:~$ sudo systemctl enable what-just-happened
cumulus@switch:~$ sudo systemctl start what-just-happened