ci: run NIC offload hardware qualification in CI

オープン
#2,034 コメント 1 件 リアクション 0 件 担当者 2 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@daniel-noland がすでに取り組んでいます。

2026年11月2日 から。

評価

この issue はまだ評価されていません。

説明

[!NOTE]
🤖 AI-drafted (Claude) on behalf of @mvachhar, reviewed by him before posting.

Target: 26.06 (to be set on the Hedgehog Eng project)

Problem

The NIC offload stack (#2030 → #2033) tests its rule compiler in CI against a software model of the NIC (dpdk::flow::model). Only the hardware qualification runners in nic-offload/src/qualify.rs check that model against a real NIC: qualify, qualify_transitions, reconcile_scenarios, install_probe, integrity_truth_table, integrity_rule_set and integrity_protocols.

  • They are #[ignore]d.
  • They need two cabled ports and are run by hand (NIC_OFFLOAD_QUALIFY=<port under test>,<sending port>).
  • Results aren't tied to a commit, firmware or DPDK version.

A DPDK bump, a NIC firmware update or a new NIC model can make the model wrong while CI stays green. The offload is on by default and drops traffic before software sees it, so that's the failure mode to guard against.

Proposal

  1. A lab runner with a cabled BlueField-3 port pair (and later each NIC model we ship) that runs the qualification suite.
    • Nightly.
    • On changes to nic-offload/, dpdk/src/flow/, the DPDK pin, or NIC firmware.
  2. Record each run (commit, NIC, firmware and DPDK version, results) as a CI artifact.
  3. Check hardware observations in as fixtures, so ordinary CI holds the model to them without hardware. integrity_model_matches_hardware already does this for integrity verdicts; extend it to qualify's per-NIC parsing observations (fragments, IPv6 extension headers, VLAN tags).
  4. Turn offload on by default only for NIC types that have been qualified.

Until the runner exists: changes to the paths above should come with a recorded manual qualification run.

主要言語
Rust
スター
21
フォーク
9
平均マージ
2日 8時間
マージ済み PR(30日)
99

環境構築

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

githedgehog/dataplane のほかの issue

githedgehog/dataplane の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。