Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 54 additions & 4 deletions netsim/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ def parse_node_params(node, prefix, node_params, runner_id):
for i in range(int(node["count"])):
node_name = f'{node["name"]}_{i}_r{runner_id}'
with open(f"logs/{prefix}__{node_name}.txt", "r") as f:
for line in f:
lines = f.readlines()
for idx, line in enumerate(lines):
if node["param_parser"] == "iroh_ticket" and line.startswith(
"All-in-one ticket"
):
Expand All @@ -54,9 +55,34 @@ def parse_node_params(node, prefix, node_params, runner_id):
if node["param_parser"] == "iroh_ticket_v2" and line.startswith(
"Ticket with our home relay and direct addresses:"
):
next_line = next(f)
node_params[node_name] = next_line.strip()
if idx + 1 < len(lines):
node_params[node_name] = lines[idx + 1].strip()
break
if node["param_parser"] == "iroh_endpoint_id" and line.startswith(
"Endpoint id:"
):
if idx + 1 < len(lines):
node_params[node_name] = lines[idx + 1].strip()
break
if node["param_parser"] == "iroh_endpoint_with_addrs":
# Look for "Endpoint id:" followed by direct addresses
if line.startswith("Endpoint id:"):
if idx + 1 >= len(lines):
break
endpoint_id = lines[idx + 1].strip()
direct_addrs = []
# Look for "Direct addresses:" after the endpoint ID
j = idx + 2
if j < len(lines) and lines[j].startswith("Direct addresses:"):
j += 1
while j < len(lines) and lines[j].startswith("\t"):
direct_addrs.append(lines[j].strip())
j += 1
node_params[node_name] = {
"endpoint_id": endpoint_id,
"direct_addrs": direct_addrs
}
break
return node_params


Expand Down Expand Up @@ -90,7 +116,7 @@ def handle_connection_strategy(node, node_counts, i, runner_id, node_ips, node_p
if node["param"] == "id":
cmd = cmd % i
strategy = node["connect"]["strategy"]
if strategy in ("plain", "plain_with_id", "params"):
if strategy in ("plain", "plain_with_id", "params", "params_with_direct_addr", "params_with_parsed_addrs"):
node_name = node["connect"]["node"]
if not (node_name in node_counts):
raise ValueError(f"Node not found for: {node_name}")
Expand All @@ -107,7 +133,31 @@ def handle_connection_strategy(node, node_counts, i, runner_id, node_ips, node_p
return cmd % (ip, id)
if strategy == "params":
param = node_params[connect_to]
# Handle both string (old parsers) and dict (new iroh_endpoint_with_addrs parser)
if isinstance(param, dict):
param = param["endpoint_id"]
return cmd % param
if strategy == "params_with_direct_addr":
param = node_params[connect_to]
ip = node_ips[connect_to]
return cmd % (ip, param)
if strategy == "params_with_parsed_addrs":
param_data = node_params[connect_to]
if isinstance(param_data, dict):
endpoint_id = param_data["endpoint_id"]
direct_addrs = param_data.get("direct_addrs", [])
# Use parsed direct address if available, otherwise construct from node IP
if direct_addrs:
first_addr = direct_addrs[0]
else:
# Fallback: use the node's IP from mininet (need to find the port)
# For now, return just endpoint ID and let discovery work
ip = node_ips[connect_to]
# Default QUIC port for iroh-transfer
first_addr = f"{ip}:11204"
return cmd % (first_addr, endpoint_id)
else:
return cmd % param_data
return cmd


Expand Down
10 changes: 5 additions & 5 deletions netsim/sims/example/iroh_saturated.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2",
"param_parser": "iroh_endpoint_with_addrs",
"link": {
"loss": 1,
"latency": 50,
Expand All @@ -44,10 +44,10 @@
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" %s",
"cmd": "time ./bins/iroh-transfer fetch --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" --remote-direct-address=\"%s\" %s",
"type": "nat",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand All @@ -61,11 +61,11 @@
{
"name": "i_getb",
"count": 3,
"cmd": "time ./bins/iroh-transfer fetch --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" %s",
"cmd": "time ./bins/iroh-transfer fetch --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" --remote-direct-address=\"%s\" %s",
"type": "nat",
"wait": 10,
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down
24 changes: 12 additions & 12 deletions netsim/sims/integration/iroh.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch %s",
"cmd": "time ./bins/iroh-transfer fetch --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand All @@ -45,15 +45,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 3,
"cmd": "time ./bins/iroh-transfer fetch %s",
"cmd": "time ./bins/iroh-transfer fetch --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand All @@ -74,15 +74,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 2,
"cmd": "time ./bins/iroh-transfer fetch %s",
"cmd": "time ./bins/iroh-transfer fetch --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand All @@ -103,15 +103,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 4,
"cmd": "time ./bins/iroh-transfer fetch %s",
"cmd": "time ./bins/iroh-transfer fetch --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down
24 changes: 12 additions & 12 deletions netsim/sims/integration/iroh_full.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" %s",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down Expand Up @@ -83,15 +83,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 3,
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" %s",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down Expand Up @@ -132,15 +132,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-only --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" %s",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-only --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down Expand Up @@ -181,15 +181,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/n_runs.sh 3 ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" %s",
"cmd": "time ./bins/n_runs.sh 3 ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --pkarr-relay-url=\"http://10.0.0.2:8080/pkarr\" --dns-origin-domain=\"10.0.0.2:5300\" --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short"
Expand Down
24 changes: 12 additions & 12 deletions netsim/sims/integration/relay.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch --env dev %s --relay-url=\"http://10.0.0.1:3340\"",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down Expand Up @@ -66,15 +66,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch --env dev %s --relay-url=\"http://10.0.0.1:3340\"",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down Expand Up @@ -107,15 +107,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch --env dev %s --relay-url=\"http://10.0.0.1:3340\"",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --remote-direct-address=\"%s\" %s",
"type": "nat",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down Expand Up @@ -148,15 +148,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch --env dev %s --relay-url=\"http://10.0.0.1:3340\"",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-url=\"http://10.0.0.1:3340\" --remote-direct-address=\"%s\" %s",
"type": "nat",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down
12 changes: 6 additions & 6 deletions netsim/sims/integration/relay_only.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 1,
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-only --relay-url=\"http://10.0.0.1:3340\" %s",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-only --relay-url=\"http://10.0.0.1:3340\" --remote-relay-url=\"http://10.0.0.1:3340\" --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down Expand Up @@ -63,15 +63,15 @@
"connect": {
"strategy": "none"
},
"param_parser": "iroh_ticket_v2"
"param_parser": "iroh_endpoint_with_addrs"
},
{
"name": "i_get",
"count": 3,
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-only --relay-url=\"http://10.0.0.1:3340\" %s",
"cmd": "time ./bins/iroh-transfer fetch --env dev --relay-only --relay-url=\"http://10.0.0.1:3340\" --remote-relay-url=\"http://10.0.0.1:3340\" --remote-direct-address=\"%s\" %s",
"type": "public",
"connect": {
"strategy": "params",
"strategy": "params_with_parsed_addrs",
"node": "i_srv"
},
"process": "short",
Expand Down
Loading
Loading