人工智能已经无缝地融入了我们的生活,并以几年前难以想象的方式改变了我们。在过去,人们对人工智能的感知是一种未来且复杂的东西。只有大型公司在其采用 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 层:由 VLAN 配置错误、入口端口上的错误 VLAN 标记、可疑或保留 MAC 地址等导致的丢包。
第 3 层(路由器):与路由器相关的丢包和问题,如黑洞路由和路由环路检测(TTL 过期)、MTU 过小等等。
Overlay(VXLAN):封装或解封装错误以及关闭隧道接口。
访问控制列表(ACL):每个 MAC / IP ACL 丢包都具有丢弃数据包的确切规则。尽管拒绝数据包是一种有效的 ACL 操作,但这些事件使您能够确保 ACL 及其规则是正确的,并在预期情况下过滤这些通知。
拥塞:缓冲区尾部丢包、WRED 丢包,以及跨域缓冲区利用率阈值时的警报,以避免未来的丢包。
延迟:数据包延迟超过设置的阈值。它有助于发现造成应用程序执行缓慢的交换机。
如何使用 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 事件
NetQ 还支持您使用集成到流量分析(Flow Analysis)功能中的 WJH 遥测技术来识别和解决由网络引起的特定应用程序问题。如需了解更多信息,请参阅找出应用程序和网络的交叉点。
标准 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 YANG 模型,您可以使用任何 gNMI 客户端来订阅 WJH 事件。以下代码示例显示了 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}]"
}
}
]
}
交换机 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 减少了故障排除时间和找出根本原因的时间,使您能够充分利用您的人工智能基础设施。