traceroute(8) on Solnix vs Linux and the BSDs

On Solnix, traceroute is the illumos /usr/sbin/traceroute. One binary handles IPv4 and IPv6, and -A takes inet or inet6. On FreeBSD, NetBSD and OpenBSD, -A means AS-number lookup, and -a, -P, -M, -l and -z differ in meaning between systems, so flags are not portable.

What Solnix runs

A default Solnix system runs the illumos traceroute at /usr/sbin/traceroute. No other variants are shipped. The bundle shows the Solnix text for -Q, -S, -s, -t, -v, -w and -x only as flags or in trimmed form, so those are not compared here.

Differences

Compared withTopicWhat differs
FreeBSD, OpenBSD, NetBSD-A meaningSolnix -A takes inet or inet6 and selects the address family. FreeBSD -A takes an AS server, OpenBSD -A takes no argument and looks up AS numbers, and NetBSD -A turns on AS lookups with a given server.
Source: Solnix traceroute(8) -A; FreeBSD traceroute(8) -A; OpenBSD traceroute(8) -A; NetBSD traceroute(8) -A
Linux-A meaningLinux lists -A in its synopsis option group (-46dFITUnreAV) with no argument. The extracted flag list gives the long form --as-path-lookups. Solnix -A requires an inet or inet6 argument.
Source: Linux traceroute(8) SYNOPSIS, extracted flags; Solnix traceroute(8) -A
FreeBSD, NetBSD-a meaningSolnix -a probes every address of a multi-homed destination, once per address. On FreeBSD and NetBSD, -a turns on AS-number lookups for each hop.
Source: Solnix traceroute(8) -a; FreeBSD traceroute(8) -a; NetBSD traceroute(8) -a
all four-P meaningSolnix -P pause_sec is a delay in seconds between probes, and may be fractional. FreeBSD and OpenBSD -P proto picks the IP protocol. NetBSD -P sets the don't-fragment bit and probes the path MTU. Linux's synopsis shows -P proto.
Source: Solnix traceroute(8) -P; FreeBSD traceroute(8) -P; OpenBSD traceroute(8) -P; NetBSD traceroute(8) -P; Linux traceroute(8) SYNOPSIS
Linux, FreeBSD, NetBSDpause between probes (-z)Solnix has no -z. It uses -P pause_sec in seconds. FreeBSD and NetBSD -z pausemsecs is in milliseconds, and Linux's synopsis has -z sendwait. By default Solnix sends the next probe as soon as it gets a reply.
Source: Solnix traceroute(8) -P; FreeBSD traceroute(8) -z; NetBSD traceroute(8) -z; Linux traceroute(8) SYNOPSIS
Linux-l and -LSolnix -l prints the ttl or hop limit of each received packet, and -L sets the IPv6 flow label (0 to 1048575). Linux's synopsis uses -l flow_label. OpenBSD and NetBSD -l match Solnix.
Source: Solnix traceroute(8) -l, -L; Linux traceroute(8) SYNOPSIS; OpenBSD traceroute(8) -l; NetBSD traceroute(8) -l
Linux, FreeBSD, NetBSD-M meaningSolnix has no -M. FreeBSD -M first_ttl sets the initial ttl. NetBSD -M shows the MPLS label and EXP bit. Linux's synopsis has -M method, which selects a traceroute method.
Source: Solnix traceroute(8) SYNOPSIS; FreeBSD traceroute(8) -M; NetBSD traceroute(8) -M; Linux traceroute(8) SYNOPSIS
Linux, FreeBSDprobe protocolsSolnix probes with UDP by default and -I switches to ICMP ECHO. It has no -T, -U or -P proto. Linux has -T for TCP SYN. FreeBSD -P proto accepts udp, icmp, udplite, tcp, sctp, gre or another protocol.
Source: Solnix traceroute(8) -I; Linux traceroute(8) -T, -I; FreeBSD traceroute(8) -P
Linuxsimultaneous probesLinux -N squeries sends 16 probes at once by default. Solnix sends the next probe once it has a reply, and has no -N. Output timing and router rate-limit behaviour differ.
Source: Linux traceroute(8) -N; Solnix traceroute(8) -P
LinuxIPv4 vs IPv6 selectionSolnix uses an IPv6 address first if the name has one, unless -A inet is given. Linux uses IPv4 when both exist, and has -4, -6 and a traceroute6 equivalent to -6. Solnix has no -4 or -6.
Source: Solnix traceroute(8) -A; Linux traceroute(8) -4, -6, DESCRIPTION
OpenBSDIPv6 binaryOpenBSD ships a separate traceroute6 with its own synopsis. On Solnix the single traceroute handles both IP versions through -A.
Source: OpenBSD traceroute(8) NAME, SYNOPSIS; Solnix traceroute(8) DESCRIPTION
OpenBSDdefault timeout and max hopsSolnix waits 5 seconds per probe and stops at 30 hops. OpenBSD waits 3 seconds and takes the max hop count from a sysctl, which defaults to 64. FreeBSD also takes max hops from the net.inet.ip.ttl sysctl.
Source: Solnix traceroute(8) DESCRIPTION, -m; OpenBSD traceroute(8) -w, -m; FreeBSD traceroute(8) -m
Linuxdefault packet sizeSolnix defaults to 40-byte probes (60 for IPv6). Linux defaults to 60 bytes for IPv4 and 80 for IPv6. Both take an optional packet length after the host.
Source: Solnix traceroute(8) DESCRIPTION; Linux traceroute(8) DESCRIPTION
all foursource-route gateways and -rSolnix -g can be repeated (up to 8 for IPv4, 127 for IPv6), needs the {PRIV_NET_RAWACCESS} privilege, and cannot be combined with -r. FreeBSD and NetBSD limit -g to 8. Linux takes a comma-separated list.
Source: Solnix traceroute(8) -g; FreeBSD traceroute(8) -g; NetBSD traceroute(8) -g; Linux traceroute(8) -g
all fourflags only on SolnixSolnix has -c traffic_class (IPv6, 0 to 255) and -Q max_timeout. The other four pages list neither. FreeBSD, OpenBSD and NetBSD have -D to dump or compare packet data, and Solnix has no -D.
Source: Solnix traceroute(8) SYNOPSIS, -c; FreeBSD traceroute(8) -D; OpenBSD traceroute(8) -D; NetBSD traceroute(8) -D
FreeBSD, OpenBSD, NetBSD-x meaningThe BSDs disagree on -x: OpenBSD prints ICMP extended headers, NetBSD toggles IP checksum calculation. Solnix lists -x in its synopsis, but the bundle text does not document it.
Source: OpenBSD traceroute(8) -x; NetBSD traceroute(8) -x; Solnix traceroute(8) SYNOPSIS
LinuxannotationsSolnix annotates !T, !U (IPv4) and !A, !B, !E, !R (IPv6) in addition to !H, !N, !P, !S, !F, !X. Linux lists !V and !C, which the Solnix page does not.
Source: Solnix traceroute(8) DESCRIPTION annotations; Linux traceroute(8) DESCRIPTION
all fourDF bit in shared-IP zonesOn Solnix, -F has no effect inside a shared-IP zone because the don't-fragment bit is always set there. The other pages describe no zone behaviour.
Source: Solnix traceroute(8) -F; Linux/FreeBSD/OpenBSD/NetBSD traceroute(8) -F or DESCRIPTION

Standards

  • POSIX: traceroute is not a POSIX.1-2024 utility.

Writing portable scripts

  • Stick to -n, -m, -q and -I, which appear on all five pages. Avoid -A, -a, -P, -M, -l, -x and -z, which mean different things across systems.
  • Pass -m and -w explicitly. Default hop limits and timeouts differ: Solnix is 30 hops and 5 s, OpenBSD is 64 hops (sysctl) and 3 s.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.