Commit Graph
110 Commits
Author SHA1 Message Date
Alberto Soutullo 1816e739af Fix wrong variable name 2026-06-17 16:19:43 +02:00
Alberto Soutullo 1efeb01f67 Update nim to 2.2.4 2026-06-17 12:19:20 +02:00
Alberto Soutullo 52455a92e0 Add number of maximum bootstrap connections 2026-06-17 12:07:21 +02:00
Gabriel Cruz bda50dbde6 chore: do not manually start disco 2026-06-15 09:20:36 +02:00
Alberto Soutullo 4ed93f5728 Update nimlibp2p version in nimble file 2026-06-09 15:22:26 +02:00
Alberto Soutullo 8f73a401c6 Add log lines 2026-06-09 15:22:25 +02:00
Alberto Soutullo de8611d0e5 Decrease startup jitter to 10 ms 2026-06-09 11:37:28 +02:00
Alberto Soutullo 72e3c67dfd Beter log all arguments 2026-06-09 11:37:13 +02:00
Alberto Soutullo ef0e15e2eb Add env variable for max connections 2026-06-09 11:36:56 +02:00
Alberto Soutullo cc47aef31c Merge pull request #33 from vacp2p/ping-util
Ping in regression node
2026-06-09 09:46:03 +02:00
Alberto Soutullo 7fcad75d3a Fix stream closing error for mplex 2026-06-08 09:22:23 +02:00
Alberto Soutullo e82528834a Add debug lines 2026-06-05 12:34:54 +02:00
Alberto Soutullo afbe0a35c4 Add ping util 2026-06-05 11:33:57 +02:00
Zhuolun LiandClaude Opus 4.7 ec1d9a9b62 Shadow runner base image with dynamic test-node build and configurable metrics interval (#28)
* shadow: add k8s-based runner setup

Adds a containerized Shadow runner so the existing single-machine prototype
(shadow/{topogen.py,run.sh,*.awk}) can execute on a lab worker without SSH.

- shadow/Dockerfile: multi-stage build — nim test-node `main` (mirrors
  nim-test-node/Dockerfile_amd64) + Ubuntu 22.04 runner with Shadow v3.3.0
  built from source (rustup + cmake/glib deps).
- shadow/k8s-job.yaml: Job pinned to node-05 in zerotesting-shadow, with
  seccomp Unconfined + SYS_PTRACE for Shadow's syscall interposition.
- shadow/kaniko-build-job.yaml: in-cluster image build via kaniko on node-04
  (avoids 30+ min QEMU emulation on arm64 macs); pushes to
  radiken/dst-shadow-nim.
- .dockerignore at repo root: keeps the buildx context lean for the new
  root-context Shadow build; per-experiment builds under nim-test-node/ are
  unaffected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* shadow: fix kaniko git context branch case

GitHub branch refs are case-sensitive server-side. The branch landed as
Alan/shadow-k8s (capital A, matching team convention), but the manifest
referenced lowercase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* shadow: add python3-yaml to the runner image

topogen.py imports yaml; without python3-yaml the sim aborts at
ModuleNotFoundError before generating shadow.yaml.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* shadow: build nim test node dynamically for Shadow runner

The k8s test-node build links the nim main fully static (-static -mmusl,
-static-libgcc, -static-libstdc++) for container portability. Shadow won't
accept a static binary because its syscall interposer is LD_PRELOAD-based,
which only hooks dynamically linked ELFs. Smoke test confirmed:

  Failed to verify plugin path '/tmp/t2/main'
  Caused by: not a dynamically linked ELF

Drop the static linker flags in the Shadow stage of the Dockerfile so the
nim main ends up dynamically linked against the runner image's glibc /
libssl3 / libstdc++. The k8s build (nim-test-node/Dockerfile_amd64) is
unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* shadow: split runner image into base + per-experiment test-node

Until now we baked the nim test-node main binary into the Shadow runner
image. That couples the generic Shadow runtime to one specific test node
and means rebuilding the whole image (Rust + Shadow) any time the nim
source changes.

Split into two images:

- radiken/dst-shadow-base: Ubuntu 22.04 + Shadow v3.3.0 + python deps.
  No nim binary. Built rarely. shadow/Dockerfile.
- radiken/dst-test-node-shadow: dynamic-linked nim main, two-stage build
  with debian:bookworm-slim final stage. nim-test-node/Dockerfile_amd64_shadow.

Per-run Job specs use an init container to copy /node/main out of the
test-node image into an emptyDir, then run shadow from the base image with
the binary + shadow.yaml mounted in. Decouples the Shadow runtime from the
per-experiment binary.

Two kaniko Job manifests (shadow/kaniko-build-job.yaml and
shadow/kaniko-build-test-node-job.yaml), both pinned to node-04.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* shadow: bake python3-requests into base for the publisher host

The Shadow runner pod runs traffic_sync.py (mounted via ConfigMap) as a
publisher host inside shadow.yaml. traffic_sync.py uses the requests
library, which isn't in the upstream python3 package. Bake it in once
rather than apt-installing at every run start.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test-node: make storeMetrics scrape interval configurable

storeMetrics (used in Shadow mode to curl /metrics into metrics_pod-N.txt)
was hardcoded to a 5-minute interval. Shadow sims run for seconds-to-minutes
of simulated time, so a single scrape fires at t~=0 (before the mesh forms)
and the run ends before the next one. The captured libp2p_network_bytes
counter is therefore ~0 and useless for bandwidth comparison.

Add METRICS_INTERVAL_S env var (default 300 to preserve k8s behavior).
Shadow runs set it short (e.g. 15s) so the last scrape captures the
post-traffic cumulative byte counts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* shadow: drop superseded k8s-job.yaml, fix stale image comment

k8s-job.yaml was the old single-image by-hand runner manifest pointing at the
retired radiken/dst-shadow-nim image; the runner Job is now generated by
10ksim's builders. Also fix a kaniko comment that still named dst-shadow-nim.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix comments

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-04 10:09:43 +01:00
Alberto Soutullo cec0dbe8b1 Merge pull request #32 from vacp2p/v2-update
Update node to match v2.0.0
2026-06-01 13:52:24 +02:00
Alberto Soutullo f1ef4433fa Add start sleep parameter 2026-06-01 12:17:48 +02:00
Alberto Soutullo f22ab2d58a Remove mix related params 2026-06-01 12:12:10 +02:00
Alberto Soutullo 881b3b646c Add missing rng 2026-06-01 12:02:33 +02:00
Alberto Soutullo dd8f83f0a4 Update node to match v2.0.0 2026-06-01 12:02:33 +02:00
Alberto Soutullo 054e93f417 Merge pull request #30 from vacp2p/remove-mix
Remove mix from regression node
2026-06-01 12:01:01 +02:00
Alberto Soutullo f2e0286b03 Remove mix from regression node 2026-06-01 11:55:21 +02:00
Alberto Soutullo 67f252702d Merge pull request #29 from vacp2p/regression-folder
Move regression node to its own folder
2026-06-01 09:38:57 +02:00
Alberto Soutullo 7ccb77181a Move regression node to its own folder 2026-05-29 14:48:08 +02:00
Alberto Soutullo 233ae32d99 Merge pull request #27 from vacp2p/Alberto/service_discovery
Service discovery node
2026-05-27 11:39:39 +02:00
Alberto SoutulloandZhuolun Li 74c2342846 Apply suggestions from code review
Co-authored-by: Zhuolun Li <44989482+radiken@users.noreply.github.com>
2026-05-27 11:28:20 +02:00
Mamoutou DIARRA 814eb683e5 Merge pull request #25 from vacp2p/Mamoutou/gossip_queues
Add Node and Publisher for Priority Queues tests
(Merged after signing all past commits)
2026-05-26 11:51:47 +02:00
mamoutou-diarra e4d6066c3c remove mix and publisher 2026-05-26 11:45:51 +02:00
mamoutou-diarra 8c174e78e7 add per node load mode 2026-05-26 11:45:50 +02:00
mamoutou-diarra 95d9e525c8 remove nimble.paths 2026-05-26 11:45:50 +02:00
mamoutou-diarra 4f355e449f remove nimble.paths 2026-05-26 11:45:50 +02:00
mamoutou-diarra ec7b5d0623 add new publisher for gossip queues overflow tests 2026-05-26 11:45:50 +02:00
mamoutou-diarra 0d41340741 fix dst_* labels issues 2026-05-26 11:45:49 +02:00
mamoutou-diarra b5aa3c1d44 add muxer and peer_id labels to dst_* metrics 2026-05-26 11:45:49 +02:00
mamoutou-diarra a380e49d2c remove mix and wait 15s instead 5s for mesh creation 2026-05-26 11:45:49 +02:00
Alberto Soutullo b99e72fec5 Remove nimble.paths 2026-05-25 13:19:36 +02:00
Alberto Soutullo 878837f963 Optimize Dockerfile 2026-05-25 13:13:19 +02:00
Alberto Soutullo 8b2dd12421 Pin libp2p version 2026-05-25 13:12:58 +02:00
Zhuolun Li 758dd6638c Merge pull request #24 from vacp2p/Alan/connmanager
Add Connection Manager Experiment Node
2026-05-15 18:59:22 +01:00
Alberto Soutullo 8655ddbb2d Inject ipSimCoefficient correctly 2026-05-14 16:06:40 +02:00
Alberto Soutullo 206c241db5 Add missing line 2026-05-14 15:49:10 +02:00
Alberto Soutullo 1afdac8ba9 Add default ipSimCoefficient set to 0.0 2026-05-14 15:36:24 +02:00
Alberto Soutullo 40448ec2dd Correct name in .nimble file 2026-05-14 15:36:02 +02:00
Alberto Soutullo 4a50ca04e2 Change nimble command with nim 2026-05-14 14:59:17 +02:00
Alberto Soutullo 4251ae4413 Add HEALTH_PORT to README.md 2026-05-14 14:35:19 +02:00
Alberto Soutullo 86e7b02ec7 Adjust README.md 2026-05-13 17:42:24 +02:00
Alberto Soutullo 1cf903bfaf Add new nimble.paths and config.nims 2026-05-13 17:40:56 +02:00
Alberto Soutullo bdb5867330 Delete nimble.paths 2026-05-13 17:40:03 +02:00
Alberto Soutullo 66a879949c Change startDiscoveringServicesLog 2026-05-13 17:39:32 +02:00
Alberto Soutullo 1776db676c Add test node for service discovery 2026-05-08 15:54:44 +02:00
Zhuolun Li e79a56eff6 Merge pull request #23 from vacp2p/Alan/closeness-score
Enhance KAD-DHT bootstrap robustness, logging, and connection management
2026-04-28 09:42:02 +01:00