DPDK workers hold VPC counters until their next packet
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 56/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- rust
調査の方向性
Start by tracing how the DPDK driver collects and reports VPC and peering counters to GatewayAgent status and the vpc_* metrics; compare that path with the kernel driver. The report includes a reproduction using the fabricator Gateway Peering Counters release test, which you can run against a two gateway DPDK VLAB. Done means counters reach status within one collection after traffic stops on both drivers.
索引モデルが issue の本文から書いたものです。
説明
On the DPDK driver, the VPC and peering counters a worker collects are not reported while that worker receives no traffic. They reach the GatewayAgent status and the vpc_* metrics only when the next packet arrives on the same worker, which can be minutes later.
A new fabricator release test that compares the status counters with a known number of pings caught it (https://github.com/githedgehog/fabricator/pull/2238). On a VLAB with two gateways on dataplane v0.38.1, an iperf run between vpc-01 and vpc-02 ended at 09:50:58. The counters summed over both gateways then stayed the same over four status collections, and grew by 682 packets on vpc-01->vpc-02 when 50 pings were sent:
09:50:58 INF Test connectivity (matrix) passed took=7.537440707s
09:51:18 DBG Gateway counters counters="map[peering vpc-01->vpc-02:{P:4929 B:4603303 D:0} peering vpc-02->vpc-01:{P:5538 B:4805461 D:0} vpc vpc-01:{P:4929 B:4603303 D:0} vpc vpc-02:{P:5538 B:4805461 D:0}]" collected="map[gateway-1:2026-11-04 09:51:15.344927766 +0000 UTC gateway-2:2026-11-04 09:51:14.696337172 +0000 UTC]"
09:51:38 DBG Gateway counters counters="map[peering vpc-01->vpc-02:{P:4929 B:4603303 D:0} peering vpc-02->vpc-01:{P:5538 B:4805461 D:0} vpc vpc-01:{P:4929 B:4603303 D:0} vpc vpc-02:{P:5538 B:4805461 D:0}]" collected="map[gateway-1:2026-11-04 09:51:30.354347198 +0000 UTC gateway-2:2026-11-04 09:51:29.707730508 +0000 UTC]"
09:51:58 DBG Gateway counters counters="map[peering vpc-01->vpc-02:{P:4929 B:4603303 D:0} peering vpc-02->vpc-01:{P:5538 B:4805461 D:0} vpc vpc-01:{P:4929 B:4603303 D:0} vpc vpc-02:{P:5538 B:4805461 D:0}]" collected="map[gateway-1:2026-11-04 09:51:45.367914574 +0000 UTC gateway-2:2026-11-04 09:51:44.719421263 +0000 UTC]"
09:52:18 DBG Gateway counters counters="map[peering vpc-01->vpc-02:{P:4929 B:4603303 D:0} peering vpc-02->vpc-01:{P:5538 B:4805461 D:0} vpc vpc-01:{P:4929 B:4603303 D:0} vpc vpc-02:{P:5538 B:4805461 D:0}]" collected="map[gateway-1:2026-11-04 09:52:15.388130213 +0000 UTC gateway-2:2026-11-04 09:52:14.742660164 +0000 UTC]"
09:52:18 INF Sending pings through the gateway peering from=server-01 to=server-02 cmd="ping -c 50 -s 1000 -i 0.2 -W 1 10.0.2.2"
09:52:33 DBG Gateway counters counters="map[peering vpc-01->vpc-02:{P:5611 B:4962583 D:0} peering vpc-02->vpc-01:{P:5673 B:4861159 D:0} vpc vpc-01:{P:5611 B:4962583 D:0} vpc vpc-02:{P:5673 B:4861159 D:0}]" collected="map[gateway-1:2026-11-04 09:52:30.399755995 +0000 UTC gateway-2:2026-11-04 09:52:29.752398856 +0000 UTC]"
https://github.com/githedgehog/fabricator/actions/runs/41801012403/job/126480062630
The test failed this way in 2 of 5 runs on the DPDK driver and in none of 6 on the kernel driver.
Expected
Counters reach the status within one collection after traffic stops, on both drivers.
How to reproduce
- Check out the fabricator branch
dev/pau/gw-peering-countersand build hhfab withjust hhfab-build. - Create a VLAB with two gateways on the DPDK driver:
bin/hhfab init -v --dev --gateways=2
bin/hhfab vlab gen -v --gateway-driver=dpdk
- Bring the VLAB up and leave it running:
bin/hhfab vlab up -v
- In a second terminal, run the counters test, and run it again until it fails:
bin/hhfab vlab release-test -v --regex '^Gateway Peering Counters$'
A failure starts with forwarded pings: gateway counters grew by and shows more than 50 packets on one direction.
- 主要言語
- Rust
- スター
- 21
- フォーク
- 9
- 平均マージ
- 2日 8時間
- マージ済み PR(30日)
- 99
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
githedgehog/dataplane のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 69/100
githedgehog/dataplane#2052 ·
メンテナーはふだん 1 日以内に返信
-
ci: run NIC offload hardware qualification in CI対応中かも @daniel-noland が 4 日前に担当しました。 オープン
githedgehog/dataplane#2034 · コメント 1 件 · 担当者 2 名 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
githedgehog/dataplane#2023 ·
メンテナーはふだん 1 日以内に返信
-
Support SYN cookies対応中かも @qmonnet が 13 日前に担当しました。 オープン
githedgehog/dataplane#1981 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
dataplane v0.30.0: gateway does not recover after a dataplane pod restart, the control-plane taps lose their IPv4 addresses対応中かも @daniel-noland が 14 日前に担当しました。 オープンbug
githedgehog/dataplane#1977 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
githedgehog/dataplane の issue をすべて見る
似ている issue
-
bug i18n priority: medium ui
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
storytold/craft-anything#983 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
Dinnerbone/Rascal#91 · リアクション 2 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
higress-group/HiRoute#405 ·
メンテナーはふだん 1 日以内に返信
-
rust_analyzer flycheck: no CLI way to enable clippy from `check.overrideCommand`対応中かも @TrapsterDK が今日担当しました。 オープンneeds-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
bazelbuild/rules_rust#4392 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信