{"id":49571429,"url":"https://github.com/jebinjeb/dpdk-testpmd-mlx5-container","last_synced_at":"2026-05-03T14:31:14.012Z","repository":{"id":348901032,"uuid":"1200318887","full_name":"jebinjeb/dpdk-testpmd-mlx5-container","owner":"jebinjeb","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-03T09:53:20.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T15:15:58.208Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jebinjeb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-03T09:18:31.000Z","updated_at":"2026-04-03T09:53:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jebinjeb/dpdk-testpmd-mlx5-container","commit_stats":null,"previous_names":["jebinjeb/dpdk-testpmd-mlx5-container"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jebinjeb/dpdk-testpmd-mlx5-container","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebinjeb%2Fdpdk-testpmd-mlx5-container","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebinjeb%2Fdpdk-testpmd-mlx5-container/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebinjeb%2Fdpdk-testpmd-mlx5-container/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebinjeb%2Fdpdk-testpmd-mlx5-container/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jebinjeb","download_url":"https://codeload.github.com/jebinjeb/dpdk-testpmd-mlx5-container/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebinjeb%2Fdpdk-testpmd-mlx5-container/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32573320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-03T14:31:13.288Z","updated_at":"2026-05-03T14:31:14.001Z","avatar_url":"https://github.com/jebinjeb.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dpdk-testpmd-mlx5-container\n\nContainer image for running `dpdk-testpmd` with Mellanox ConnectX-5 SR-IOV VF bandwidth testing in Kubernetes pods.\n\n## Overview\n\nThis image provides a ready-to-use `dpdk-testpmd` environment built on Rocky Linux 8.8 with:\n- DPDK 23.11.1 (LTS) compiled with `net/mlx5` PMD\n- Mellanox OFED 24.10 userspace libraries (`libibverbs`, `libmlx5`)\n- Supports both same-host (intra-node) and cross-host (inter-node) VF bandwidth testing\n\n## Prerequisites\n\n### Host Requirements\n- Mellanox ConnectX-5 NIC with SR-IOV enabled\n- VFs created and bound to `mlx5_core` (no `vfio-pci` needed)\n- Hugepages allocated on host nodes\n- `ib_uverbs` kernel module loaded\n```bash\n# Verify on host\nlsmod | grep ib_uverbs\ncat /proc/meminfo | grep HugePages_Total\n```\n\n## Pull Image\n\n```bash\ndocker pull ghcr.io/jebinjeb/dpdk-testpmd-mlx5-container:latest\n```\n\n\n## Build Locally (requires MLNX OFED tarball)\n\n### Files Required to Build\nDownload and place in the same directory as the Dockerfile: MLNX_OFED_LINUX-24.10-4.1.4.0-rhel8.8-x86_64.tgz\n\n\u003e OFED is excluded from git (see .gitignore) due to file size. Download from https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/\n\n## Build\n```bash\ndocker build -t dpdk-testpmd-mlx5:latest .\n```\n\n## Usage\n\n### Run the container (same-host or cross-host)\n```bash\ndocker run -it --privileged \\\n  -v /dev/hugepages:/dev/hugepages \\\n  -v /dev/infiniband:/dev/infiniband \\\n  -v /sys:/sys \\\n  dpdk-testpmd-mlx5:latest\n```\n\n### Inside the container — receiver pod\n```bash\ndpdk-testpmd -l 0-3 -n 4 \\\n  -a 0000:03:02.0 \\\n  -- --forward-mode=rxonly --stats-period=1\n```\n\n### Inside the container — sender pod\n```bash\n# Same host (no MAC needed)\ndpdk-testpmd -l 0-3 -n 4 \\\n  -a 0000:03:02.0 \\\n  -- --forward-mode=txonly --stats-period=1\n\n# Different host (dst MAC required)\ndpdk-testpmd -l 0-3 -n 4 \\\n  -a 0000:03:02.0 \\\n  -- --forward-mode=txonly \\\n     --eth-peer=0,AA:BB:CC:DD:EE:FF \\\n     --stats-period=1\n```\n\n## Kubernetes Pod Spec\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: dpdk-testpmd\nspec:\n  containers:\n  - name: testpmd\n    image: dpdk-testpmd-mlx5:latest\n    securityContext:\n      privileged: true\n    resources:\n      limits:\n        hugepages-2Mi: 1Gi\n        memory: 1Gi\n        mellanox.com/mlnx_sriov_rdma: 1\n    volumeMounts:\n    - mountPath: /dev/hugepages\n      name: hugepage\n    - mountPath: /dev/infiniband\n      name: uverbs\n    - mountPath: /sys\n      name: sys\n  volumes:\n  - name: hugepage\n    emptyDir:\n      medium: HugePages\n  - name: uverbs\n    hostPath:\n      path: /dev/infiniband\n  - name: sys\n    hostPath:\n      path: /sys\n```\n\n## Architecture\n\n- **Same host**: testpmd generates/receives synthetic L2 frames via ConnectX-5 eSwitch — no IP or MAC needed\n- **Different host**: only destination MAC of remote VF required — no IP, no ARP\n- **Driver model**: Mellanox bifurcated PMD — VF stays on `mlx5_core`, DPDK uses it via `libibverbs`\n\n## Tested With\n\n| Component | Version |\n|---|---|\n| Base OS | Rocky Linux 8.8 |\n| DPDK | 23.11.1 |\n| MLNX OFED | 24.10-4.1.4.0 |\n| NIC | Mellanox ConnectX-5 |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjebinjeb%2Fdpdk-testpmd-mlx5-container","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjebinjeb%2Fdpdk-testpmd-mlx5-container","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjebinjeb%2Fdpdk-testpmd-mlx5-container/lists"}