hipercontracer(1)
โจ NAME โจ
okay bestie, welcome to the hipercontracer(1) manual page, you're gonna slay this ๐
hipercontracerโ High-Performance Connectivity Tracer (HiPerConTracer)
๐ SYNOPSIS ๐
here's literally every way you can call this icon. copy these exactly, no cap, character for character ๐
hipercontracer [-P | --ping]
[-T | --traceroute] [-L level | --loglevel level]
[-Z on|off | --logcolor on|off]
[-O file | --logfile file]
[-q | --quiet] [-w | --verbose]
[-U user|uid | --user user|uid]
[-# identifier | --measurement-id identifier]
[-S address|โ
hostname[,traffic_class[,...]] | --source address|โ
hostname[,traffic_class[,...]]]
[-D address|hostname | --destination address|hostname]
[--sources-from-file file]
[--destinations-from-file file]
[-M ICMP|UDP | --iomodule ICMP|UDP]
[-I number_of_iterations | --iterations number_of_โ
iterations]
[--tracerouteinterval milliseconds]
[--tracerouteintervaldeviation fraction]
[--tracerouteduration milliseconds]
[--tracerouterounds rounds]
[--tracerouteinitialmaxttl value]
[--traceroutefinalmaxttl value]
[--tracerouteincrementmaxttl value]
[--traceroutepacketsize bytes]
[--tracerouteudpsourceport port]
[--tracerouteudpdestinationport port]
[--pinginterval milliseconds]
[--pingintervaldeviation fraction]
[--pingexpiration milliseconds]
[--pingburst packets]
[--pingttl value]
[--pingpacketsize bytes]
[--pingudpsourceport port]
[--pingudpdestinationport port]
[-R directory | --resultsdirectory directory]
[-x seconds | --resultstransactionlength seconds]
[-C none|XZ|BZip2|GZip|ZLIB|โ
ZSTD | --resultscompression none|XZ|BZip2|GZip|ZLIB|ZSTD]
[-F version | --resultsformat version]
[-z depth | --resultstimestampdepth depth]
hipercontracer [--check]
hipercontracer [-h | --help]
hipercontracer [-v | --version]
๐ฆ DESCRIPTION ๐ฆ
so like, <pink>hipercontracer</pink> is a Ping/Traceroute service, periodt. ๐ It performs regular Ping and Traceroute runs among sites, and it can export the results into results statements for import into a database. it's giving very much "network diagnostics but make it scheduled and database-ready" energy, and we're obsessed ๐ซถ
๐ ARGUMENTS ๐
okay bestie, here comes the whole menu โ every flag, every value, every default, nothing left out. buckle up ๐
-P,--pingโ spins up the Ping service. that's it, that's the whole job โจ-T,--tracerouteโ spins up the Traceroute service. iconic behavior honestly ๐-L level,--loglevel levelโ sets the minimum logging level to whatever you hand it:0=trace,1=debug,2=info,3=warning,4=error,5=fatal. lower number = more yapping ๐ข-Z on|off,--logcolor on|offโ turns ANSI color escape sequences on or off so your log output gets colored by level. cute but optional ๐-O file,--logfile fileโ names a file to append the log output to. heads up: once a file is set, no log output goes to the console at all. if you don't set one, everything goes to the console ๐-q,--quietโ shortcut that slams the minimum logging level to3(warning). shhh mode ๐คซ-w,--verboseโ shortcut that drops the minimum logging level all the way to0(trace). tell me EVERYTHING ๐ญ-U user|uid,--user user|uidโ after startup, HiPerConTracer takes on the UID and GID of the user you name (by name or by GID). the output directory's ownership and the ownership of the results files it creates get set to match ๐-# identifier,--measurement-id identifierโ sets a unique measurement identifier for the run. every output file gets this identifier baked into its filename as#<ID>. super useful for a setup-wide unique vantage-point id. if you don't set one, files carry the process ID instead, asP<ID>. range:0-2147483647. default:0(which means "use the process ID instead") ๐-S address|hostname[,traffic_class[,...]],--source address|hostname[,traffic_class[,...]]โ adds the given source address or hostname. the ANY address (0.0.0.0or::) is fair game if you just wanna use the default route. no traffic class given? then Best Effort (00) is what you get. otherwise the list of traffic classes you gave (in hexadecimal) is used. you can also name the traffic class by PHB name:BE,EF,AF11,AF12,AF13,AF21,AF22,AF23,AF31,AF32,AF33,AF41,AF42,AF43,CS1,CS2,CS3,CS4,CS5,CS6,CS7โ and in that case the matching traffic class is used with ECN bits set to 0. give a hostname and a DNS resolution happens, with all returned addresses added. and if you provide no source address at all, HiPerConTracer auto-adds0.0.0.0when there's an IPv4 destination, and::when there's an IPv6 destination ๐ฆ
โ ๏ธ Note: use lower-case hexadecimal letters so you don't get tangled up with PHB names (likebefor0xbeinstead of theBEPHB)! iykyk ๐
-D address|hostname,--destination address|hostnameโ adds the given destination address or hostname. hostname means DNS resolution, and every returned address gets added ๐ฏ--sources-from-file fileโ reads sources from the given file. can be used multiple times to pull from multiple files ๐--destinations-from-file fileโ reads destinations from the given file. also repeatable, also multiple files ๐๏ธ-M ICMP|UDP,--iomodule ICMP|UDPโ adds an I/O module:ICMPorUDP. yes you can pass it multiple times with different modules ๐ง-I number_of_iterations,--iterations number_of_iterationsโ caps the number of measurement iterations (one iteration = measuring all source/destination pairs) at the number you give. the default0lets HiPerConTracer run forever, continuously, no cap, no chill ๐--tracerouteinterval millisecondsโ sets the Traceroute interval, i.e. how long each full round of destinations takes โฑ๏ธ--tracerouteintervaldeviation fractionโ randomly deviates the Traceroute interval by the given fraction (as0.0to1.0), so it picks from[interval - fraction * interval, interval + fraction * interval], all to dodge synchronisation effects. default is0.1(10%) ๐ฒ--tracerouteduration millisecondsโ sets the Traceroute duration: the timeout for each destination โณ--tracerouterounds roundsโ for each Traceroute measurement, run that many rounds simultaneously. default is1round. range:1-64. every TTL test within a round shares the same ICMP checksum value ("Oslo Traceroute") so we can survive load balancing on the Internet. different rounds get different checksums โ meaning different rounds may take different paths through the network. chaos, but make it scientific ๐ฅ--tracerouteinitialmaxttl valueโ start with this maximum TTL. default is6๐--traceroutefinalmaxttl valueโ finish with this maximum TTL (used when the destination still isn't reached at the current TTL setting). default is36๐--tracerouteincrementmaxttl valueโ bump the maximum TTL up by this much (again, when the destination isn't reached at the current TTL setting). default is6๐--traceroutepacketsize bytesโ sets the Traceroute packet size, which is IP header (20for IPv4 /40for IPv6) + ICMP header (8) / UDP header (8) + HiPerConTracer header (16) + payload, in bytes. the packet actually sent always covers at least the headers for IPv4/IPv6, ICMP, and HiPerConTracer. maximum packet size is65535๐ฆ--tracerouteudpsourceport portโ sets the Traceroute source port for the UDP module (default:0, meaning automatic allocation).
๐ Note: if you're using a fixed UDP port for Traceroute, you must use different UDP source ports for any other services!
--tracerouteudpdestinationport portโ sets the Traceroute destination port for the UDP module (default:7, for Echo) ๐ฎ--pinginterval millisecondsโ sets the Ping interval (the time for each full round of destinations). default is5000ms โฒ๏ธ--pingintervaldeviation fractionโ randomly deviates the Ping interval by the given fraction (as0.0to1.0), choosing out of[interval - fraction * interval, interval + fraction * interval]to avoid synchronisation effects. default is0.1(10%) ๐ฐ--pingexpiration millisecondsโ sets the Ping duration: the timeout for each destination. default is10000ms ๐--pingburst packetsโ for each Ping measurement, fire a burst of that many packets. default is1packet. range:1-1024๐ฅ--pingttl valueโ sets the Ping TTL value. default is64. range:1-255๐ฃ๏ธ--pingpacketsize bytesโ sets the Ping packet size, which is IP header (20for IPv4 /40for IPv6) + ICMP header (8) / UDP header (8) + HiPerConTracer header (16) + payload, in bytes. the packet actually sent always covers at least the headers for IPv4/IPv6, the transport protocol, and HiPerConTracer. default is0(use the minimum possible value). range:0-65535๐--pingudpsourceport portโ sets the Ping source port for the UDP module (default:0, for automatic allocation).
๐ Note: same deal as before โ if you use a fixed UDP port for Ping, any other services need different UDP source ports!
--pingudpdestinationport portโ sets the Ping destination port for the UDP module (default:7, for Echo) ๐ฌ-R directory,--resultsdirectory directoryโ sets the directory where the results files live. if you don't specify it, the results get stored... well, that's the deal ๐-x seconds,--resultstransactionlength secondsโ after the given number of seconds, crack open a brand new results file ๐-C none|XZ|BZip2|GZip|ZLIB|ZSTD,--resultscompression none|XZ|BZip2|GZip|ZLIB|ZSTDโ sets the compression for the output files. default:XZ๐๏ธ-F version,--resultsformat versionโ sets the results file format version. default:2(the current version). range (currently):1-2.
๐ Note: a future version of HiPerConTracer may bump this default setting up!
-z depth,--resultstimestampdepth depthโ builds a timestamp-based directory hierarchy for the results, of the given depth (default:0).0= none,1= year,2= year/month,3= year/month/day,4= year/month/day/hour:00,5= year/month/day/hour:00/hour:minute ๐๏ธ--checkโ prints build environment info for debugging ๐-h,--helpโ prints command help. the classic ๐ซถ-v,--versionโ prints the program version ๐ท๏ธ
๐ OUTPUT FORMAT ๐
the output file is a text file (possibly compressed, see above). the format depends on the measurement type, and it goes a little something like this:
๐ฉท Format identifier in first line ๐ฉท
#? HPCT format version program
- format: the format of the output data (
Ping,Traceroute, etc.) ๐งพ - version: the version of the output data format (decimal) ๐ข
- program: the identifier for the program generating the output, e.g.
HiPerConTracer/2.1.12๐ฅ๏ธ
๐ฉต Ping (version 2, current) ๐ฉต
each Ping entry is a #P<m> line, where m=i for ICMP and m=u for UDP (matching the underlying I/O module) ๐ซ
#P<m> measurementID sourceIP destinationIP timestamp burstseq traffic_class packetsize response_size checksum sourcePort destinationPort status timesource delay_app_send delay_queuing delay_app_receive rtt_app rtt_sw rtt_hw
measurementID: the measurement identifier ๐sourceIP: the source IP address ๐destinationIP: the destination IP address ๐ฏsendTimestamp: the send timestamp (nanoseconds since the UTC epoch, hexadecimal) โฑ๏ธburstseq: the sequence number within a burst (decimal), numbered from0๐ขtraffic_class: the IP Traffic Class / Type of Service value of the sent packets (hexadecimal) ๐ฆpacket_size: the sent packet size (decimal, in bytes), including the IPv4/IPv6 header, the transport header, and the HiPerConTracer header ๐ฆresponse_size: the response packet size (decimal, in bytes), including the IPv4/IPv6 header, the transport header, and the HiPerConTracer header ๐ฌchecksum: the checksum of the ICMP Echo Request packets (hexadecimal);0x0000for other protocols,0xfffffor unknown ๐งฎsourcePort: the source port,0for ICMP (decimal) ๐destinationPortโ the destination port, babes ๐ it's0for ICMP, and it's written in decimal.statusโ the status code, decimal. Here's the whole mood board fr:1= ICMP response: Time Exceeded โฐ100= ICMP response: Unreachable scope101= ICMP response: Unreachable network102= ICMP response: Unreachable host103= ICMP response: Unreachable protocol104= ICMP response: Unreachable port105= ICMP response: Unreachable, prohibited (firewall) ๐ซ110= ICMP response: Unreachable, unknown reason200= Timeout (no response from a router) ๐210=sendto()call failed (generic error)211=sendto()error: tried to send to broadcast address (EACCES)212=sendto()error: network unreachable (ENETUNREACH)213=sendto()error: host unreachable (EHOSTUNREACH)214=sendto()error: address not available (EADDRNOTAVAIL)215=sendto()error: invalid message size (EMSGSIZE)216=sendto()error: not enough buffer space (ENOBUFS)255= Success (destination has responded) โจ
Status values from 100 to 199 denote unreachability, as reported by an ICMP error from a router, bestie. The rtt_* fields contain the response time of the corresponding router. Status values from 200 to 254 have the destination IP in their destinationIP field. However, there was no response from a router, so the rtt_* fields will be the configured timeout value (on timeout) or the send trial time (on send errors)! ๐ญ
timesourceโ where the timing tea actually came from, hexadecimal, formatted as:AAQQSSHH๐ซถAA: ApplicationQQ: Queuing (queuing packet until sending it by driver, in software)SS: Software (sending request by driver until receiving response by driver, in software; decimal, in nanoseconds;-1if not available)HW: Hardware (sending request by NIC until receiving response by NIC, in hardware; decimal, in nanoseconds;-1if not available)
Each byte AA, QQ, SS, HH provides the receive time source (upper nibble) and send time source (lower nibble):
0x0: Not available0x1: System clock0x2:SO_TIMESTAMPINGsocket option, microseconds granularity0x3:SO_TIMESTAMPINGNSsocket option (orSO_TIMESTAMPING+SO_TS_CLOCK), nanoseconds granularity0x4:SIOCGSTAMPioctl, microseconds granularity0x5:SIOCGSTAMPNSioctl, nanoseconds granularity0x6:SO_TIMESTAMPINGsocket option, in software, nanoseconds granularity0xa:SO_TIMESTAMPINGsocket option, in hardware, nanoseconds granularity
delay_app_sendโ the measured application send delay (nanoseconds, decimal;-1if not available).delay_queuingโ the measured kernel software queuing delay (nanoseconds, decimal;-1if not available).delay_app_receiveโ the measured application receive delay (nanoseconds, decimal;-1if not available).rtt_appโ the measured application RTT (nanoseconds, decimal).rtt_swโ the measured kernel software RTT (nanoseconds, decimal;-1if not available).rtt_hwโ the measured kernel hardware RTT (nanoseconds, decimal;-1if not available).
๐ฐ๏ธ Ping (version 1, SUPERSEDED!)
Okay so this is the old one, the ancestor, the lowkey vintage era ๐ Every Ping entry is exactly one #P line. That's it, that's the whole vibe.
#P sourceIP destinationIP timestamp checksum status rtt [traffic_class [packet_size [timesource]]]
sourceIPโ source IP address.destinationIPโ destination IP address.timestampโ timestamp (microseconds since the UTC epoch, hexadecimal).checksumโ the checksum of the ICMP Echo Request packets (hexadecimal).statusโ status code (decimal).rttโ the measured RTT (microseconds, decimal).traffic_classโ the outgoing IP Traffic Class/Type of Service value of the sent packets (hexadecimal). This entry has been added with HiPerConTracer1.4.0! โจpacket_sizeโ the sent packet size (decimal, in bytes) including IPv4/IPv6 header, transport header and HiPerConTracer header. This entry has been added with HiPerConTracer1.6.0!timesourceโ source of the timing information (hexadecimal) as:AA(same as for Ping, see above). This entry has been added with HiPerConTracer2.0.0development versions! ๐ง
๐ Traceroute (version 2, current)
This is the one we actually stan, the current era, the main character ๐
Each Traceroute entry begins with a #Tm line, with m=i for ICMP and m=u for UDP (according to the underlying I/O module). Then it's followed with one TAB-started line per each hop, okay?
#T<m> measurementID sourceIP destinationIP timestamp round totalHops traffic_class packet_size checksum sourcePort destinationPort statusFlags pathHash
measurementIDโ measurement identifier.sourceIPโ source IP address.destinationIPโ destination IP address.timestampโ timestamp (nanoseconds since the UTC epoch, hexadecimal) of the current run.
Note: this timestamp is only an identifier for the Traceroute run. All Traceroute rounds of the same run use the same timestamp here! The actual send timestamp of the request to each hop can be found in sendTimeStamp of the corresponding hop! ๐
roundโ round number (decimal).totalHopsโ total hops (decimal).traffic_classโ the IP Traffic Class/Type of Service value of the sent packets (hexadecimal).packet_sizeโ the sent packet size (decimal, in bytes) including IPv4/IPv6 header, transport header and HiPerConTracer header.checksumโ the checksum of the ICMP Echo Request packets (hexadecimal);0x0000for other protocols,0xfffffor unknown.sourcePortโ source port,0for ICMP (decimal).destinationPortโ destination port,0for ICMP (decimal).statusFlagsโ status flags (hexadecimal). See the status code for Ping above for the lower 8 bits. Additionally:0x100= Route with*(at least one router did not respond)0x200= Destination has responded โจ
pathHashโ hash of the path (hexadecimal).
Then each hop line looks like this:
(TAB) sendTimeStamp hopNumber response_size status timesource delay_queuing delay_app_receive rtt_app rtt_app rtt_sw rtt_hw hopIP
sendTimeStampโ timestamp (nanoseconds since the UTC epoch, hexadecimal) for the request to this hop.hopNumberโ number of the hop.response_sizeโ the response packet size (decimal, in bytes) including IPv4/IPv6 header, transport header and HiPerConTracer header.statusโ status code (decimal; the values are the same as for Ping, see above).timesourceโ source of the timing information (hexadecimal; the values are the same as for Ping, see above).delay_app_sendโ the measured application send delay (nanoseconds, decimal;-1if not available).delay_queuingโ the measured kernel software queuing delay (nanoseconds, decimal;-1if not available).delay_app_receiveโ the measured application receive delay (nanoseconds, decimal;-1if not available).rtt_appโ the measured application RTT (nanoseconds, decimal).rtt_swโ the measured kernel software RTT (nanoseconds, decimal;-1if not available).rtt_hwโ the measured kernel hardware RTT (nanoseconds, decimal;-1if not available).hopIPโ hop IP address.
๐ Traceroute (version 1, SUPERSEDED!)
Each Traceroute entry begins with a #T line. This is followed with one TAB-started line per each hop.
#T sourceIP destinationIP timestamp round checksum totalHops statusFlags pathHash [traffic_class [packet_size [timesource]]]
- sourceIP โ the source IP address, bestie. who we are ๐
- destinationIP โ the destination IP address. who we're chasing ๐ฏ
- timestamp โ timestamp of this run, in microseconds since the UTC epoch, written in hexadecimal. BIG note though: this timestamp is just an identifier for the Traceroute run โ every single Traceroute round of the same run uses the same timestamp here. no cap, same run = same stamp โจ
- round โ round number ๐
- checksum โ the checksum of the ICMP Echo Request packets, in hexadecimal ๐งฎ
- totalHops โ total hops, periodt ๐ฃ๏ธ
- statusFlags โ status flags, in hexadecimal ๐ฉ
- pathHash โ hash of the path, in hexadecimal ๐
- traffic_class โ the IP Traffic Class / Type of Service value of the sent packets, in hexadecimal. this entry was added with HiPerConTracer 1.4.0! ๐
- packet_size โ the size of the packet that was sent, decimal, in bytes, and it includes the IPv4/IPv6 header, transport header and HiPerConTracer header. this entry was added with HiPerConTracer 1.6.0! ๐ฆ
and then, per hop, you get this line (yes, it really starts with a TAB, not a space, iykyk):
(TAB) hopNumber status rtt hopIP timesource
- hopNumber โ number of the hop ๐ข
- status โ status code, and heads up, it's in hexadecimal here(!); the values are the same as for Ping, see above โ๏ธ
- rtt โ the measured RTT, microseconds, decimal โฑ๏ธ
- hopIP โ hop IP address ๐
- timesource โ the source of the timing information, in hexadecimal, as:
AA(same as for Ping, see above). this entry was added with HiPerConTracer 2.0.0 development versions! ๐ง
๐ฅ EXIT STATUS ๐ฅ
the hipercontracer tool exits with 0 when it's slaying (success), and >0 if something went wrong. simple as that ๐ซถ
๐ EXAMPLES ๐
okay bestie, this is the part where we go absolutely feral with commands. every one of these is verbatim, so copy with care ๐
hipercontracer -S 10.1.1.51 -D 10.1.1.6 -D 10.1.1.7 -D 10.1.1.8 -T --tracerouteinterval 10000 --tracerouteduration 1000 -v
hipercontracer --source 10.1.1.51 --destination 10.1.1.6 --destination 10.1.1.7 --destination 10.1.1.8 --traceroute --tracerouteinterval 10000 --tracerouteduration 1000
hipercontracer --source 172.16.0.127 --destination 8.8.8.8 --destination 193.99.144.80 --destination 132.252.181.87 --destination 10.254.254.254 --destination 91.189.93.5 --destination 128.112.139.90 --destination 4.31.198.44 --destination 136.186.1.10 --destination 101.4.112.170 --destination 77.36.144.2 --source 2a02:270:2014:40:92e2:baff:fe48:bde1 --destination 2400:cb00:2048:1::6814:155 --destination 2a02:2e0:3fe:1001:7777:772e:2:85 --destination 2a00:1450:400f:805::2004 --traceroute --ping --tracerouteduration 1000 --tracerouteinitialmaxttl 4 --traceroutefinalmaxttl 32 --tracerouteincrementmaxttl 4 --pinginterval 1000 --pingexpiration 7500 --pingttl 56 --resultsdirectory results --resultstimestampdepth 3
hipercontracer --source=0.0.0.0,00,AF11 --source=::,BE,EF,AF11 --destination=8.8.8.8 --destination=2606:4700:10::6814:155 --ping --traceroute --tracerouteduration=1000 --tracerouteinitialmaxttl=4 --traceroutefinalmaxttl=32 --tracerouteincrementmaxttl=4 --pinginterval=1000 --pingexpiration=7500 --pingttl=56 --resultsdirectory=/storage/โhpct-results --resultstransactionlength=20 --resultsโtimestampdepth=4 --quiet
hipercontracer --user=hipercontracer --source=10.1.1.51 --destination=10.1.1.6 --destination=10.1.1.7 --destination=10.1.1.8 --traceroute --tracerouteinterval=10000 --tracerouteduration=1000
hipercontracer --user=hipercontracer --source=0.0.0.0 --destination=8.8.8.8 -M ICMP --ping --verbose
hipercontracer --user=hipercontracer --source=0.0.0.0 --source=::--destination=www.ietf.org --iomodule ICMP --ping --verbose
hipercontracer --user=hipercontracer --source=10.193.4.64 --destination 1.2.3.4 --iomodule ICMP --iomodule UDP --ping --traceroute
hipercontracer --version
hipercontracer -h
๐ NOTES ๐
this program is part of HiPerConTracer ๐ซถ the latest version of HiPerConTracer can be found on the HiPerConTracer Homepage at HiPerConTracer Homepage: https://www.nntb.no/~dreibh/hipercontracer/ โจ
๐ AUTHORS ๐
Thomas Dreibholz, Homepage: https://www.nntb.no/~dreibh ๐
and that's a wrap on hipercontracer, bestie!! this whole page is from the hipercontracer manual, section hipercontracer(1), dated May 26, 2026 ๐ธ go forth and traceroute responsibly, ily ๐ฆโจ๐
๐ฆ where this page comes from
- ubuntu stonking: hipercontracer 2.2.10-1 ยท GPL-3.0-or-later
- Copyright (C) 2015-2026 by Thomas Dreibholz
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms