刚刚发生了什么 (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