这篇文章最初发表在 NVIDIA 技术博客上。
人工智能已经无缝地融入了我们的生活,并以几年前我们甚至无法想象的方式改变了我们。在过去,对人工智能的感知是一种未来主义和复杂的东西。只有大公司在其拥有 HPC 技术的超级计算机上使用人工智能来预测天气,并在医疗保健和科学领域取得突破性发现。
如今,由于 GPU 、 CPU 、高速存储和人工智能优化的软件创新,每个人都可以访问人工智能。您甚至可以将人工智能作为服务( SaaS )或基础设施( IaaS )部署在云中。
我们见证了人工智能在每个行业的广泛应用:医疗保健和金融、自动驾驶汽车、广告推荐,以及最近创建和编辑视频、图像和音乐等内容的生成人工智能。随着最近推出的 ChatGPT-4 ,它使用大型语言模型( LLM )来理解、响应,甚至像人类一样生成文本,思考我们可以实现的无限潜力是令人兴奋的。
充分利用您的人工智能需要的不仅仅是昂贵的高端 GPU 和存储系统。一个具有突破性性能的强大可靠的网络对于释放您的人工智能基础设施的全部潜力至关重要,它可以缩短工作完成时间( JCT )、更快的培训、更好的推理和更高的存储 I / O 。
选择正确的网络设备和设计对于创建最佳的人工智能基础设施至关重要。作为一名网络管理员,您在实现这一目标方面发挥着关键作用,确保结构在没有中断和中断的情况下顺利工作。不幸的是,事实并非如此,因为没有一个网络是完美的。
在你的职业生涯中,你可能至少有一次处于风暴之中。当工作负载缓慢、存储性能不佳,或者更糟的是,当网络瘫痪,你的人工智能系统躺在那里无所事事时,你是否只听到了指责?
当网络问题发生时,网络遥测仪表板是您检查异常情况的第一个地方,就像当您听到发动机发出奇怪的噪音时,检查汽车仪表板的警示灯一样。有时,这个问题比传统的遥测方法所能检测到的更复杂。
即使你是一位经验丰富的网络工程师,能够从一万英里的角度看到问题,分析大量的遥测数据也可能很耗时。在贵公司的关键任务人工智能任务中,浪费时间不是一种可用的特权。
加快找到根本原因的时间
当谈到网络故障排除时,我们都同意网络遥测是关键。
一些遗留方法,如 SNMP 、 sFLOW ,甚至网络计数器,提供了大量网络信息,而不一定要确定根本原因。这使得网络管理员的生活更加具有挑战性,因为在所有这些庞大的数据中找到问题有时会变得非常困难,就像大海捞针一样。
图 1 。传统网络遥测概念
NVIDIA Spectrum Switches提供What Just Happened( WJH )流式遥测。这种独特的专用集成电路( ASIC )遥测功能提供开关级、实时和上下文流量监测。 WJH 分析通过交换机的所有数据包,并就数据包丢失、拥塞、高延迟甚至错误配置引起的性能问题发出警报。
由于 WJH 是 ASIC 级遥测,它提供了有关受影响数据包的详细信息,包括数据包标头信息。因此,它使您能够快速识别数据平面异常的根本原因,这很难做到。有了这些数据,您还可以检测结构中受影响的流量,无论是计算、存储、管理还是其他与人工智能工作负载无关的流量。
图 2 : WJH 网络遥测概念
它是如何工作的?
当交换机的 ASIC 丢弃数据包时,它会生成一个 WJH 事件。在这种情况下,您可以在不包括有效负载的情况下找到数据包的标头信息( 5 / 12 元组)。流式传输完整的数据包在性能、带宽和空间利用率方面是不够的,同时提供的好处太少。
除了数据包元组之外, WJH 还提供了数据包被丢弃的原因、时间和位置的详细描述,以及纠正措施建议。当数据包延迟超过设置的阈值或超过特定交换机的缓冲区使用百分比时, WJH 也会发出警报。它有助于检测网络瓶颈,发现应用程序速度缓慢,并避免将来因缓冲区溢出而导致的中断。
WJH 监控什么?
WJH 事件分为以下几类,每一类都有自己的掉落原因和通知:
- **第 1 层:**诸如片状电缆和 CRC 错误、自动协商失败、光信号降级等事件。
- **第 2 层:**Drops caused by VLAN misconfiguration , incorrect VLAN tag on the ingress port , suspicious or reserved MAC addresses , and so on .
- **第 3 层(路由器):**与路由器相关的掉线和问题,如黑洞路由和路由环路检测( TTL 过期)、 MTU 太小等等。
- **覆盖( VXLAN ):**封装或解封装错误和下行隧道接口。
- **访问控制列表( ACL ):**每个 MAC / IP ACL 丢弃都具有丢弃数据包的确切规则。尽管拒绝数据包是一种有效的 ACL 操作,但这些事件使您能够确保 ACL 及其规则是正确的,并在需要时过滤这些通知。
- **拥塞:**缓冲区尾部下降、 WRED 下降,以及缓冲区利用率阈值跨越时的警报,以避免未来的下降。
- **延迟:**数据包延迟超过设置的阈值。它有助于发现造成应用程序缓慢的交换机。
有关详细信息,请参阅WJH Event Messages Reference.
如何使用 WJH 数据?
使用 WJH 事件有几种方法:
- NVIDIA NetQ
- 标准 gNMI 流
- Cumulus Linux 或 SONiC 网络操作系统 CLI
NVIDIA NetQ 监控
NVIDIA NetQ是一个高度可扩展的现代网络操作工具集,可实时查看您的网络。它使用网络协议和服务验证,并使用遥测数据,包括 WJH ,来提供有关网络基础设施健康状况和数据平面异常的可操作见解。
安装在交换机上的 NetQ 代理根据 WJH 事件的类别和类型聚合它们,并使用 gRPC 协议将它们流式传输到 NetQ 服务器,无论是本地还是 SaaS 。然后,您可以使用 NetQ 界面和命令行界面( CLI )访问 WJH 数据。
WJH 仪表板
仪表板以交互方式显示高度详细的 WJH 事件信息。您可以通过饼图和基于时间的图表轻松地检查事件分布。仪表板还提供了有关受影响最严重的交换机和跌落类型分布的信息。
仪表板还包括一个完整的表,按原因、详细信息、时间戳和聚合计数列出所有事件。要查看特定的 WJH 数据,您可以按时间、设备、丢弃类型和原因筛选事件,然后将它们导出到 JSON 或 CSV 文件中。
图 3 。 NetQ WJH 仪表板
WJH 高级视图
WJH 高级视图按类别显示表格中列出的所有事件。您可以查看、排序、筛选事件,或将事件导出为 JSON 或 CSV 文件。
图 4 。 NetQ WJH 高级视图
NetQ CLI
通过 NetQ CLI ,您可以从注册到 NetQ 服务器和安装的 NetQ CLI 的任何设备访问所有 NetQ 数据,包括 WJH 。您可以检查汇总的 WJH 事件分布,并查看表中列出的所有事件详细信息、原因和时间戳。
图 5 。 NetQ CLI 中的 WJH 事件
有关详细信息,请参阅How to NetQ: Diagnose Network Problems Faster with NVIDIA What Just Happened.
NetQ 还使您能够使用集成到流量分析功能中的 WJH 遥测技术来识别和解决由网络引起的特定应用程序问题。有关详细信息,请参阅Finding Out Where Your Application and Network Intersect和How to NetQ: Troubleshooting Application Performance with Flow Analysis Using the GUI.
标准 gNMI 流
NetQ 代理为您提供了如何使用 WJH 遥测的灵活性。利用其使用 gNMI 协议流式传输 WJH 数据和订阅 WJH 事件的能力。这使您能够将这些信息集成到自己的遥测仪表板和解决方案中,而无需 NetQ 服务器。
NetQ 代理的 gNMI 流传输功能包括接口、系统、 LLDP 协议和平台的标准 OpenConfig YANG 数据模型。它还包括 NVIDIA 扩展接口计数器和 NVIDIA WJH 型号。
gNMI version: 0.7.0
supported models:
- nvidia-wjh, NVIDIA, 1.0.1
- nvidia-if-ethernet-counters-ext, NVIDIA, 1.0.0
- openconfig-interfaces, OpenConfig, 2.3.2
- openconfig-if-ethernet, OpenConfig, 2.9.0
- openconfig-if-ethernet-ext, OpenConfig, 0.1.1
- openconfig-system, OpenConfig, 0.5.0
- openconfig-lldp, OpenConfig, 0.2.1
- openconfig-platform, OpenConfig, 0.13.0
supported encodings:
- JSON
您可以通过遵循 NVIDIA WJH 订阅任何 gNMI 客户端的 WJH 事件YANG Model以下代码示例显示了 WJH YANG 模型,其中包含可以订阅的事件类别路径。
module nvidia-wjh {
// Entrypoint /oc-if:interfaces/oc-if:interface
//
// xPath L1 --> interfaces/interface[name=*]/wjh/aggregate/l1
// xPath L2 --> /interfaces/interface[name=*]/wjh/aggregate/l2/reasons/reason[id=*][severity=*]
// xPath Router --> /interfaces/interface[name=*]/wjh/aggregate/router/reasons/reason[id=*][severity=*]
// xPath Tunnel --> /interfaces/interface[name=*]/wjh/aggregate/tunnel/reasons/reason[id=*][severity=*]
// xPath Buffer --> /interfaces/interface[name=*]/wjh/aggregate/buffer/reasons/reason[id=*][severity=*]
// xPath ACL --> /interfaces/interface[name=*]/wjh/aggregate/acl/reasons/reason[id=*][severity=*]
WJH 事件信息以 JSON 格式进行流式传输:
{
"source": "10.210.24.112:9339",
"subscription-name": "default-1680103195",
"timestamp": 1680144504046097303,
"time": "2023-03-30T02:48:24.046097303Z",
"prefix": "interfaces/interface[name=swp1]/wjh/aggregate/l2/reasons/reason[severity=error][id=204]",
"target": "netq",
"updates": [
{
"Path": "state/drop",
"values": {
"state/drop": "[{"AggCount":31,"Dip":"10.1.10.102","Dmac":"04:3f:72:db:22:a1","Dport":22222,"DropType":"L2","EgressPort":"","EndTimestamp":1680144503,"FirstTimestamp":1680144473,"Hostname":"leaf01","IngressLag":"268435457","IngressPort":"swp1","Proto":6,"Reason":"Ingress VLAN filtering","ReasonId":204,"Severity":"Error","Sip":"10.1.10.101","Smac":"04:3f:72:33:23:aa","Sport":22556}]"
}
}
]
}
{
"source": "10.210.24.112:9339",
"subscription-name": "default-1680103195",
"timestamp": 1680144534271648272,
"time": "2023-03-30T02:48:54.271648272Z",
"prefix": "interfaces/interface[name=swp1]/wjh/aggregate/l2/reasons/reason[severity=error][id=210]",
"target": "netq",
"updates": [
{
"Path": "state/drop",
"values": {
"state/drop": "[{"AggCount":30,"Dip":"10.1.10.102","Dmac":"aa:bb:cc:dd:ee:ff","Dport":22222,"DropType":"L2","EgressPort":"","EndTimestamp":1680144533,"FirstTimestamp":1680144504,"Hostname":"leaf01","IngressLag":"268435457","IngressPort":"swp1","Proto":6,"Reason":"Source MAC equals destination MAC","ReasonId":210,"Severity":"Error","Sip":"10.1.10.101","Smac":"aa:bb:cc:dd:ee:ff","Sport":23333}]"
}
}
]
}
有关详细信息,请参阅How to NetQ: gNMI Streaming of NVIDIA What Just Happened Events For Third-Party Integration.
交换机 CLI
WJH 事件可在 Cumulus Linux 或 SONiC 网络操作系统( NOS )上使用。您不必使用 NetQ 代理或 NetQ 服务器,但可以使用交换机 CLI 来获取 WJH 数据。
这些事件可以直接从 switch SDK 中获得,您可以查看以详细表格、 YAML 或 JSON 格式列出的事件。这种方法明显不那么方便,并且提供了有限的可调试性。考虑使用其他消费选项之一。
图 6 。 Cumulus Linux CLI 中的 WJH 事件
结论
在任何人工智能部署中,强大的网络基础设施与高端 GPU 和存储系统一样至关重要。至关重要的是要有卓越的遥测方法,以便在网络问题发生时快速识别其根本原因。
NVIDIA What Just Happened 通过提供有关数据包丢失和数据平面异常的详细和上下文信息,为网络流遥测带来了一个新的方面。 WJH 减少了故障排除时间和找出根本原因的时间,使您能够充分利用您的人工智能基础设施。
有关更多信息,请参阅以下资源:
- NVIDIA NetQ 用户指南
- WJH 事件消息参考
- 视频:
- 使用 NVIDIA 更快地诊断网络问题刚刚发生的事情
- NVIDIA 的 gNMI 流媒体刚刚发生的第三方集成事件
- 帖子:
- 找出应用程序和网络的交叉点
- 使用 NetQ 排除网络故障
阅读原文