Skip to content

yggdrasil-jumper: exits ~10 s after start with yggdrasil 0.5.15 (admin socket timeout vs 10 s query delay) #31258

Open

Description

@Plasmoid77

Package Name

yggdrasil-jumper

Maintainer

@one-d-wide

OpenWrt Version

master (yggdrasil 0.5.15-r1, yggdrasil-jumper 0.3.1-r1). Reproduced on 25.12.6 with yggdrasil 0.5.15 built from the master recipe in the 25.12.5 SDK.

OpenWrt Target/Subtarget

mediatek/filogic

Steps to Reproduce

  1. Install yggdrasil 0.5.15 and yggdrasil-jumper 0.3.1, and configure an interface (here ygg0) with proto 'yggdrasil' and jumper_enable '1'.
  2. Bring the interface up: ubus call network.interface.ygg0 up
  3. Wait 15 s, then run pidof yggdrasil-jumper and logread -e ygg0-jumper.

Actual Behaviour

The jumper connects to the admin socket and exits about 10 s later:

01:39:55 ygg0-jumper:  INFO Admin API: Connected to unix:///tmp/yggdrasil/ygg0.sock
01:40:05 ygg0-jumper: ERROR Admin API watcher: Failed to query admin api: Broken pipe (os error 32)

After that pidof yggdrasil-jumper prints nothing. The interface and its peers keep working, but there is no jumper until the next setup of the interface.

Cause: Yggdrasil 0.5.15 added "Admin socket reads now have a 1MB limit and a 10 second timeout" to its changelog, so the daemon closes an admin connection that sends no request for 10 s. Jumper 0.3.1 keeps one connection open and sends a request every yggdrasilctl_query_delay, which defaults to 10 s. The daemon closes the connection just before the next request, and 0.3.1 has no reconnect: yggdrasil_admin_reconnect / --reconnect only arrived in jumper 0.4.0, and is off by default there too.

Workaround: shorten the query delay through the package's existing jumper_config option, then set the interface up again. The jumper has then stayed up on two routers.

uci set network.ygg0.jumper_config='yggdrasilctl_query_delay = 5.0'
uci commit network
ubus call network.interface.ygg0 down; ubus call network.interface.ygg0 up

Expected Behaviour

The jumper keeps running with the yggdrasil version shipped in the same feed. The package could do this in several ways:

  • update to jumper 0.4.x and enable yggdrasil_admin_reconnect;
  • write a query delay below 10 s into the generated config (proto_yggdrasil_generate_jumper_config in net/yggdrasil/files/yggdrasil.sh);
  • have netifd restart the jumper.

Additional Information

Related: #31247 covers the jumper start-up in the same proto_yggdrasil_setup(), where a duplicate jumper appears after a quick re-setup and 2&>1 sends stderr to a file.

Confirmation Checklist

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions