joold(8)

✨ joold β€” the NAT64 Jool Session Synchronization Daemon ✨

okay bestie, sit down, we're talking about joold(8) πŸ’– it's the userspace Session Synchronization (SS) daemon for NAT64 Jool, and yeah it lives in section 8 of your manual, which means it's a system-admin girly. πŸ‘‘


🌸 NAME 🌸

joold β€” Userspace Session Synchronization (SS) daemon for NAT64 Jool. πŸ¦‹


πŸ’… DESCRIPTION πŸ’…

so, lowkey? this command is deprecated. 🫠 she's not doing the heavy lifting herself anymore β€” she's now implemented as a wrapper for jool session proxy. so if you're looking for the real tea, go read jool(8). periodt.


πŸŽ€ SYNTAX πŸŽ€

joold [NETSOCKET] [MODSOCKET] [PORT]

⭐ OPTIONS ⭐

  • NETSOCKET β€” path to the JSON file holding your network socket's config. if you don't say anything, she just assumes netsocket.json. πŸ’β€β™€οΈ
  • MODSOCKET β€” path to the JSON file holding your Netlink socket's config. default vibe? modsocket.json. ✨
  • PORT β€” if you actually pass this, she spins up a UDP server bound to port PORT, and that's where the daemon serves up stat counters. πŸ“Š

🌈 NETWORK SOCKET CONFIGURATION 🌈

this file is a JSON-formatted collection of keyvalues. yes, keyvalues. that's the word. 🧚

  • multicast address=<IPv6-or-IPv4-address> β€” the IP address the SS traffic gets sent to and listened from. Mandatory, no default, she will not guess for you. πŸ’€
  • multicast port=<port-or-service-name> β€” the TCP port where the SS traffic gets sent to and listened from. also Mandatory, also no default. 😀
  • in interface=<String> β€” if multicast address is IPv4, this should be one address from the interface where the SS traffic is expected to be received. if multicast address is IPv6, this should be the name of the interface (eg. "eth0"). Optional β€” defaults to being automatically assigned by the kernel. It is strongly recommended that you define this value so the SS traffic doesn't leak through other interfaces. πŸ‘€
  • out interface=<String> β€” if multicast address is IPv4, this should be one address from the interface where the multicast traffic is expected to be sent. if multicast address is IPv6, this should be the name of the interface (eg. "eth0"). Optional β€” defaults to being automatically assigned by the kernel. It is strongly recommended that you define this value so the SS traffic doesn't leak through other interfaces. no cap, protect your packets. πŸ›‘οΈ
  • ttl=<INT> β€” time-to-live of packets sent out by this socket. πŸ”₯

also a JSON-formatted collection of keyvalues, because consistency is iconic. πŸ’œ

  • instance=<String> β€” the name of the instance the daemon is supposed to synchronize. it's the one you designate during jool instance add. the instance is expected to exist within the same network namespace the daemon is running in. and as usual, it defaults to "default". 🎯

🌸 EXAMPLES 🌸

IPv6 version:

$ # All Jool instances should have the basic configuration.
$ jool --file same-config-as-everyone-else.json
$
$ # Configure the SS interface
$ ip addr add 2001:db8:ff08::4/96 dev eth0
$ ip link set eth0 up
$
$ # joold
$ cat ipv6-netsocket.json
  {
     "multicast address": "ff08::db8:64:64",
     "multicast port": "6464",
     "in interface": "eth0",
     "out interface": "eth0",
     "ttl": 3
  }
$
$ cat modsocket.json
  { "instance": "default" }
$
$ joold ipv6-netsocket.json modsocket.json 45678 &

IPv4 version:

$ # All Jool instances should have the basic configuration.
$ jool --file same-config-as-everyone-else.json
$
$ # Configure the SS interface
$ ip addr add 192.0.2.1/24 dev eth0
$ ip link set eth0 up
$
$ # joold
$ cat ipv4-netsocket.json
  {
     "multicast address": "233.252.0.64",
     "multicast port": "6464",
     "in interface": "192.0.2.1",
     "out interface": "192.0.2.1",
     "ttl": 3
  }
$
$ cat modsocket.json
  { "instance": "default" }
$
$ joold ipv4-netsocket.json modsocket.json 45678 &

Request stats:

$ echo "" | nc -u 127.0.0.1 45678
KERNEL_SENT_PKTS,4
KERNEL_SENT_BYTES,208
NET_RCVD_PKTS,0
NET_RCVD_BYTES,0
NET_SENT_PKTS,4
NET_SENT_BYTES,208

πŸŽ€ EXIT STATUS πŸŽ€

zero on success, non-zero on failure. that's it, that's the whole mood. πŸ’«


πŸ‘‘ AUTHOR πŸ‘‘

NIC Mexico & ITESM. legends fr fr. 🫢


πŸ”₯ REPORTING BUGS πŸ”₯

https://github.com/NICMx/Jool/issues


πŸ’€ KNOWN BUGS πŸ’€

  1. maybe the daemon should be able to automatically enable SS on the kernel module. πŸ€”

and to be perfectly honest? the main reason fixing this isn't on the radar is because joold gives the author the impression that nobody is using it. 😭 not me reading that in the manpage. okay but like, if you are using it, you're the main character now, go file an issue. πŸ™ˆ


Copyright 2011 NIC Mexico.

License: GPLv2 (GNU GPL version 2)

This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. ⚠️


🌈 SEE ALSO 🌈


and that's the whole page, bestie!! this was joold(8) from Jool v4.1.15, dated 2026-01-26 β€” she's deprecated but she's still serving looks. bye mwah πŸ’…πŸ’–βœ¨

πŸ“¦ where this page comes from