xref: /freebsd/share/man/man4/netdump.4 (revision 2f513db7)
1.\"-
2.\" Copyright (c) 2018 Mark Johnston <markj@FreeBSD.org>
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.\" $FreeBSD$
26.\"
27.Dd October 17, 2019
28.Dt NETDUMP 4
29.Os
30.Sh NAME
31.Nm netdump
32.Nd protocol for transmitting kernel dumps to a remote server
33.Sh SYNOPSIS
34To compile netdump client support into the kernel, place the following line in
35your kernel configuration file:
36.Bd -ragged -offset indent
37.Cd "options NETDUMP"
38.Ed
39.Sh DESCRIPTION
40netdump is a UDP-based protocol for transmitting kernel dumps to a remote host.
41A netdump client is a panicking kernel, and a netdump server is a host
42running the
43.Nm
44daemon, available in ports as
45.Pa ports/ftp/netdumpd .
46.Nm
47clients are configured using the
48.Xr dumpon 8
49utility or the
50.Ic netdump
51command in
52.Xr ddb 4 .
53.Pp
54.Nm
55client messages consist of a fixed-size header followed by a variable-sized
56payload.
57The header contains the message type, a sequence number, the offset of
58the payload data in the kernel dump, and the length of the payload data
59(not including the header).
60The message types are
61.Dv HERALD , FINISHED , KDH , VMCORE ,
62and
63.Dv EKCD_KEY .
64.Nm
65server messages have a fixed size and contain only the sequence number of
66the client message.
67These messages indicate that the server has successfully processed the
68client message with the corresponding sequence number.
69All client messages are acknowledged this way.
70Server messages are always sent to port 20024 of the client.
71.Pp
72To initiate a
73.Nm ,
74the client sends a
75.Dv HERALD
76message to the server at port 20023.
77The client may include a relative path in its payload, in which case the
78.Nm
79server should attempt to save the dump at that path relative to its configured
80dump directory.
81The server will acknowledge the
82.Dv HERALD
83using a random source port, and the client must send all subsequent messages
84to that port.
85.Pp
86The
87.Dv KDH , VMCORE ,
88and
89.Dv EKCD_KEY
90message payloads contain the kernel dump header, dump contents, and
91dump encryption key respectively.
92The offset in the message header should be treated as a seek offset
93in the corresponding file.
94There are no ordering requirements for these messages.
95.Pp
96A
97.Nm
98is completed by sending the
99.Dv FINISHED
100message to the server.
101.Pp
102The following network drivers support netdump:
103.Xr alc 4 ,
104.Xr bge 4 ,
105.Xr bnxt 4 ,
106.Xr bxe 4 ,
107.Xr cxgb 4 ,
108.Xr em 4 ,
109.Xr igb 4 ,
110.Xr ix 4 ,
111.Xr ixl 4 ,
112.Xr mlx4en 4 ,
113.Xr re 4 ,
114.Xr vtnet 4 .
115.Sh SYSCTL VARIABLES
116The following variables are available as both
117.Xr sysctl 8
118variables and
119.Xr loader 8
120variables:
121.Bl -tag -width "indent"
122.It Va net.netdump.debug
123Control debug message verbosity.
124Debug messages are disabled by default, but are useful when troubleshooting
125or when developing driver support.
126.It Va net.netdump.path
127Specify a path relative to the server's dump directory in which to store
128the dump.
129For example, if the
130.Nm
131server is configured to store dumps in
132.Pa /var/crash ,
133a path of
134.Dq foo
135will cause the server to attempt to store dumps from the client in
136.Pa /var/crash/foo .
137The server will not automatically create the relative directory.
138.It Va net.netdump.polls
139The client will poll the configured network interface while waiting for
140acknowledgements.
141This parameter controls the maximum number of poll attempts before giving
142up, which typically results in a re-transmit.
143Each poll attempt takes 0.5ms.
144.It Va net.netdump.retries
145The number of times the client will re-transmit a packet before aborting
146a dump due to a lack of acknowledgement.
147The default may be too small in environments with lots of packet loss.
148.It Va net.netdump.arp_retries
149The number of times the client will attempt to learn the MAC address of
150the configured gateway or server before giving up and aborting the dump.
151.El
152.Sh SEE ALSO
153.Xr decryptcore 8 ,
154.Xr dumpon 8 ,
155.Xr savecore 8
156.Sh HISTORY
157.Nm
158client support first appeared in
159.Fx 12.0 .
160.Sh BUGS
161Only IPv4 is supported.
162.Pp
163.Nm
164may only be used after the kernel has panicked.
165