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