SD-WAN 网关上的数据包处理引擎涉及多个阶段,并且每个阶段之间都会有一个数据包处理队列。由于通过网关的流量具有突发性,预计数据包转发队列中偶尔会出现数据包堆积。不过,如果在某些队列中队列长度持续较高,则表示存在容量问题。

以下示例显示 debug.py 命令输出以查看切换队列输出。

为了简洁起见,截断了输出以仅显示第一个和最后一个条目。您可以在命令中排除 -v 选项以使用表格格式查看输出。

vcadmin@vcg1-example:~$ /opt/vc/bin/debug.py -v --handoff
{
  "handoffq": [
    {
      "deq": 12126489784,
      "drops": 0,
      "enq": 12126482089,
      "name": "vc_queue_net_sch",
      "qlength": 0,
      "qlimit": 4096,
      "sleeping": 1475174572,
      "tid": 1502,
      "wmark": 1280,
      "wmark_1min": 385,
      "wmark_5min": 450,
      "wokenup": 1164664965
    }, 
    … 
    {
      "deq": 767292,
      "drops": 0,
      "enq": 767272,
      "name": "vc_queue_ip_common_bh_1",
      "qlength": 0,
      "qlimit": 16384,
      "sleeping": 596612,
      "tid": 1512,
      "wmark": 53,
      "wmark_1min": 3,
      "wmark_5min": 3,
      "wokenup": 596209
    }
  ]
}
vcadmin@vcg1-example:~$ 

您需要关注 qlengthwmark 值。

qlength 列指示当前在队列中缓冲的数据包数。wmark 列指示队列曾经到达的最大深度,这表示网关距离丢弃数据包有多远。这些问题的影响和修复在很大程度上取决于监控的队列。

您应同时监控关键队列和非关键队列。