DPDK workers hold VPC counters until their next packet

Abierto
#2,047 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
56/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
rust

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area/dpdk bug

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

  1. Check out the fabricator branch dev/pau/gw-peering-counters and build hhfab with just hhfab-build.
  2. 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
  1. Bring the VLAB up and leave it running:
bin/hhfab vlab up -v
  1. 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.

Lenguaje dominante
Rust
Estrellas
21
Forks
9
Merge medio
2 d 8 h
PR fusionados (30 d)
101

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de githedgehog/dataplane

Todos los issues de githedgehog/dataplane

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.