NETDUMP(4)
π NETDUMP(4) π
okay bestie, gather round, because this is netdump(4) from the Kernel Interfaces Manual and it is literally the protocol that lets a dying kernel scream its last words into the network. no cap. π«Ά
β¨ NAME β¨
netdump β the protocol for transmitting kernel dumps to a remote server π
πΈ SYNOPSIS πΈ
so if you want netdump client support baked into your kernel, you drop this line into your kernel configuration file:
options NETDUMP
that's it. that's the whole ritual. π―οΈ
π¦ DESCRIPTION π¦
netdump is a UDP-based protocol for transmitting kernel dumps to a remote host. so like: a netdump client is a panicking kernel π (yes, the one having the worst day of its life), and a netdump server is a host running the netdump daemon, which you can find in ports as ports/ftp/netdumpd. netdump clients get configured using the dumpon(8) utility. slay.
netdump client messages are built like a little sandwich: a fixed-size header followed by a variable-sized payload. the header carries:
- the message type
- a sequence number
- the offset of the payload data in the kernel dump
- the length of the payload data (not including the header)
the message types are HERALD, FINISHED, KDH, VMCORE, and EKCD_KEY. π
netdump server messages are fixed size and contain only the sequence number of the client message. they mean "yep, bestie, I successfully processed the client message with that exact sequence number." every single client message gets acknowledged this way. and server messages are always sent to port 20024 of the client.
to kick off a netdump, the client sends a HERALD message to the server at port 20023. the client may include a relative path in its payload β and if it does, the netdump server should attempt to save the dump at that path relative to its configured dump directory. the server acknowledges the HERALD using a random source port, and from then on the client must send all subsequent messages to that port. no takebacks. π
the KDH, VMCORE, and EKCD_KEY message payloads contain the kernel dump header, the dump contents, and the dump encryption key respectively. the offset in the message header should be treated as a seek offset in the corresponding file. and there are no ordering requirements for these messages β chaotic, but valid. β¨
a netdump is completed by sending the FINISHED message to the server. goodbye forever. π
the following network drivers support netdump: alc(4), bge(4), bnxt(4), bxe(4), cxgb(4), em(4), igb(4), ix(4), ixl(4), mlx4en(4), mlx5en(4), re(4), vtnet(4). the whole squad. π₯
β SYSCTL VARIABLES β
these little cuties are available as both sysctl(8) variables and loader(8) variables. double threat energy:
net.netdump.debugβ controls debug message verbosity. debug messages are disabled by default, but they're genuinely useful when you're troubleshooting or when you're developing driver support. turn them on when things get weird. πnet.netdump.pathβ specifies a path relative to the server's dump directory in which to store the dump. for example, if the netdump server is configured to store dumps in/var/crash, a path ofβfooβwill cause the server to attempt to store dumps from the client in/var/crash/foo. > β οΈ heads up bestie: the server will not automatically create the relative directory. you gotta make it yourself.net.netdump.pollsβ the client will poll the configured network interface while waiting for acknowledgements. this parameter controls the maximum number of poll attempts before giving up, which typically results in a re-transmit. each poll attempt takes0.5ms. so like, do the math before you set it too low. πnet.netdump.retriesβ the number of times the client will re-transmit a packet before aborting a dump due to a lack of acknowledgement. ngl, the default may be too small in environments with lots of packet loss. π«net.netdump.arp_retriesβ the number of times the client will attempt to learn the MAC address of the configured gateway or server before giving up and aborting the dump. it's giving "one more try then I'm leaving." π
π SEE ALSO π
decryptcore(8), dumpon(8), savecore(8)
π HISTORY π
netdump client support first appeared in FreeBSD 12.0. a legend from birth, fr fr.
π BUGS π
- Only IPv4 is supported. that's the whole IPv4-only situation, sorry to the v6 girlies. π
netdumpmay only be used after the kernel has panicked. yes, really. it's the emergency protocol. it's giving "main character energy but only in the final act." π
and that's the whole page, bestie!! this one's from the Debian manual set, dated August 25, 2020 β go forth and dump those kernels responsibly. mwah πβ¨ππ¦
π¦ where this page comes from
- debian bookworm: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- debian trixie: freebsd-manpages 12.2-2 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu jammy: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu noble: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu questing: freebsd-manpages 12.2-2
- ubuntu resolute: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu stonking: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- Copyright (c) 2018 Mark Johnston <markj@FreeBSD.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms