blob: ecc6d9e5c79602c308a12b5e7b128551dedcf301 [file] [log] [blame]
paul718e3742002-12-13 20:15:29 +00001@node Packet Binary Dump Format, , Zebra Protocol, Top
2@comment node-name, next, previous, up
3@appendix Packet Binary Dump Format
4
paul7190f4e2003-08-12 12:40:20 +00005 Quagga can dump routing protocol packet into file with a binary format
paul718e3742002-12-13 20:15:29 +00006(@pxref{Dump BGP packets and table}).
7
8 It seems to be better that we share the MRT's header format for
9backward compatibility with MRT's dump logs. We should also define the
10binary format excluding the header, because we must support both IP
11v4 and v6 addresses as socket addresses and / or routing entries.
12
13 In the last meeting, we discussed to have a version field in the
14header. But Masaki told us that we can define new `type' value rather
15than having a `version' field, and it seems to be better because we
16don't need to change header format.
17
18 Here is the common header format. This is same as that of MRT.
19
20@example
21@group
220 1 2 3
230 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
24+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
25| Time |
26+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
27| Type | Subtype |
28+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29| Length |
30+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
31@end group
32@end example
33
34 If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_STATE_CHANGE, and
35Address Family == IP (version 4)
36
37@example
38@group
39 0 1 2 3
40 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
41+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
42| Source AS number | Destination AS number |
43+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
44| Interface Index | Address Family |
45+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
46| Source IP address |
47+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
48| Destination IP address |
49+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
50| Old State | New State |
51+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
52@end group
53@end example
54
55Where State is the value defined in RFC1771.
56
57If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_STATE_CHANGE,
58and Address Family == IP version 6
59
60@example
61@group
62 0 1 2 3
63 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
64+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
65| Source AS number | Destination AS number |
66+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67| Interface Index | Address Family |
68+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
69| Source IP address |
70+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
71| Source IP address (Cont'd) |
72+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
73| Source IP address (Cont'd) |
74+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
75| Source IP address (Cont'd) |
76+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
77| Destination IP address |
78+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
79| Destination IP address (Cont'd) |
80+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
81| Destination IP address (Cont'd) |
82+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
83| Destination IP address (Cont'd) |
84+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
85| Old State | New State |
86+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
87@end group
88@end example
89
90If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_MESSAGE,
91and Address Family == IP (version 4)
92
93@example
94@group
95 0 1 2 3
96 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
97+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
98| Source AS number | Destination AS number |
99+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
100| Interface Index | Address Family |
101+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
102| Source IP address |
103+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
104| Destination IP address |
105+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
106| BGP Message Packet |
107| |
108+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
109@end group
110@end example
111
112Where BGP Message Packet is the whole contents of the
113BGP4 message including header portion.
114
115If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_MESSAGE,
116and Address Family == IP version 6
117
118@example
119@group
120 0 1 2 3
121 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
122+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
123| Source AS number | Destination AS number |
124+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
125| Interface Index | Address Family |
126+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
127| Source IP address |
128+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
129| Source IP address (Cont'd) |
130+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
131| Source IP address (Cont'd) |
132+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
133| Source IP address (Cont'd) |
134+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
135| Destination IP address |
136+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
137| Destination IP address (Cont'd) |
138+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
139| Destination IP address (Cont'd) |
140+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
141| Destination IP address (Cont'd) |
142+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
143| BGP Message Packet |
144| |
145+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
146@end group
147@end example
148
149If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_ENTRY,
150and Address Family == IP (version 4)
151
152@example
153@group
154 0 1 2 3
155 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
156+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
157| View # | Status |
158+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
159| Time Last Change |
160+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
161| Address Family | SAFI | Next-Hop-Len |
162+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
163| Next Hop Address |
164+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
165| Prefix Length | Address Prefix [variable] |
166+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
167| Attribute Length |
168+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
169| BGP Attribute [variable length] |
170+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
171@end group
172@end example
173
174If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_ENTRY,
175and Address Family == IP version 6
176
177@example
178@group
179 0 1 2 3
180 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
181+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
182| View # | Status |
183+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
184| Time Last Change |
185+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
186| Address Family | SAFI | Next-Hop-Len |
187+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
188| Next Hop Address |
189+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
190| Next Hop Address (Cont'd) |
191+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
192| Next Hop Address (Cont'd) |
193+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
194| Next Hop Address (Cont'd) |
195+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
196| Prefix Length | Address Prefix [variable] |
197+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
198| Address Prefix (cont'd) [variable] |
199+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
200| Attribute Length |
201+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
202| BGP Attribute [variable length] |
203+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
204@end group
205@end example
206
207 BGP4 Attribute must not contain MP_UNREACH_NLRI.
208 If BGP Attribute has MP_REACH_NLRI field, it must has
209 zero length NLRI, e.g., MP_REACH_NLRI has only Address
210 Family, SAFI and next-hop values.
211
212If `type' is PROTOCOL_BGP4MP and `subtype' is BGP4MP_SNAPSHOT,
213
214@example
215@group
216 0 1 2 3
217 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
218+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
219| View # | File Name [variable] |
220+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
221@end group
222@end example
223
224 The file specified in "File Name" contains all routing entries,
225 which are in the format of ``subtype == BGP4MP_ENTRY''.
226
227@example
228@group
229Constants:
230 /* type value */
231 #define MSG_PROTOCOL_BGP4MP 16
232 /* subtype value */
233 #define BGP4MP_STATE_CHANGE 0
234 #define BGP4MP_MESSAGE 1
235 #define BGP4MP_ENTRY 2
236 #define BGP4MP_SNAPSHOT 3
237@end group
238@end example