]>
Commit | Line | Data |
---|---|---|
6b702a45 QY |
1 | .. _zebra: |
2 | ||
3 | ***** | |
4 | Zebra | |
5 | ***** | |
42fc5d26 | 6 | |
6b702a45 | 7 | .. _zebra-protocol: |
42fc5d26 QY |
8 | |
9 | Overview of the Zebra Protocol | |
10 | ============================== | |
718e3744 | 11 | |
610b34e1 QY |
12 | The Zebra protocol is used by protocol daemons to communicate with the |
13 | **zebra** daemon. | |
c1a54c05 | 14 | |
610b34e1 | 15 | Each protocol daemon may request and send information to and from the **zebra** |
c1a54c05 | 16 | daemon such as interface states, routing state, nexthop-validation, and so on. |
610b34e1 QY |
17 | Protocol daemons may also install routes with **zebra**. The **zebra** daemon |
18 | manages which routes are installed into the forwarding table with the kernel. | |
ab2416a0 | 19 | |
610b34e1 QY |
20 | The Zebra protocol is a streaming protocol, with a common header. Version 0 |
21 | lacks a version field and is implicitly versioned. Version 1 and all subsequent | |
22 | versions have a version field. Version 0 can be distinguished from all other | |
23 | versions by examining the 3rd byte of the header, which contains a marker value | |
24 | of 255 (in Quagga) or 254 (in FRR) for all versions except version 0. The | |
25 | marker byte corresponds to the command field in version 0, and the marker value | |
26 | is a reserved command in version 0. | |
42fc5d26 | 27 | |
610b34e1 QY |
28 | Version History |
29 | --------------- | |
42fc5d26 | 30 | |
610b34e1 | 31 | - Version 0 |
42fc5d26 | 32 | |
610b34e1 QY |
33 | Used by all versions of GNU Zebra and all version of Quagga up to and |
34 | including Quagga 0.98. This version has no ``version`` field, and so is | |
35 | implicitly versioned as version 0. | |
42fc5d26 | 36 | |
610b34e1 | 37 | - Version 1 |
42fc5d26 | 38 | |
610b34e1 QY |
39 | Added ``marker`` and ``version`` fields, increased ``command`` field to 16 |
40 | bits. Used by Quagga versions 0.99.3 through 0.99.20. | |
42fc5d26 | 41 | |
610b34e1 QY |
42 | - Version 2 |
43 | ||
44 | Used by Quagga versions 0.99.21 through 0.99.23. | |
45 | ||
46 | - Version 3 | |
47 | ||
48 | Added ``vrf_id`` field. Used by Quagga versions 0.99.23 until FRR fork. | |
49 | ||
50 | - Version 4 | |
51 | ||
52 | Change marker value to 254 to prevent people mixing and matching Quagga and | |
53 | FRR daemon binaries. Used by FRR versions 2.0 through 3.0.3. | |
54 | ||
55 | - Version 5 | |
42fc5d26 | 56 | |
610b34e1 QY |
57 | Increased VRF identifier field from 16 to 32 bits. Used by FRR versions 4.0 |
58 | through 5.0.1. | |
42fc5d26 | 59 | |
610b34e1 QY |
60 | - Version 6 |
61 | ||
62 | Removed the following commands: | |
63 | ||
64 | * ZEBRA_IPV4_ROUTE_ADD | |
65 | * ZEBRA_IPV4_ROUTE_DELETE | |
66 | * ZEBRA_IPV6_ROUTE_ADD | |
67 | * ZEBRA_IPV6_ROUTE_DELETE | |
68 | ||
69 | Used since FRR version 6.0. | |
70 | ||
71 | ||
72 | Zebra Protocol Definition | |
73 | ========================= | |
42fc5d26 QY |
74 | |
75 | Zebra Protocol Header Field Definitions | |
76 | --------------------------------------- | |
77 | ||
c1a54c05 | 78 | Length |
610b34e1 | 79 | Total packet length including this header. |
ab2416a0 | 80 | |
c1a54c05 | 81 | Marker |
610b34e1 QY |
82 | Static marker. The marker value, when it exists, is 255 in all versions of |
83 | Quagga. It is 254 in all versions of FRR. This is to allow version 0 headers | |
84 | (which do not include version explicitly) to be distinguished from versioned | |
85 | headers. | |
ab2416a0 | 86 | |
c1a54c05 | 87 | Version |
610b34e1 QY |
88 | Zebra protocol version number. Clients should not continue processing |
89 | messages past the version field for versions they do not recognise. | |
c1a54c05 QY |
90 | |
91 | Command | |
610b34e1 QY |
92 | The Zebra protocol command. |
93 | ||
94 | ||
95 | Current Version | |
96 | ^^^^^^^^^^^^^^^ | |
97 | ||
98 | :: | |
99 | ||
100 | Version 5, 6 | |
101 | ||
102 | 0 1 2 3 | |
103 | 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 | |
104 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
105 | | Length | Marker | Version | | |
106 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
107 | | VRF ID | | |
108 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
109 | | Command | | |
110 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
111 | ||
112 | ||
113 | Past Versions | |
114 | ^^^^^^^^^^^^^ | |
115 | ||
116 | :: | |
117 | ||
118 | Version 0 | |
119 | ||
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 | | Length | Command | | |
124 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
125 | ||
126 | :: | |
127 | ||
128 | Version 1, 2 | |
129 | ||
130 | 0 1 2 3 | |
131 | 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 | |
132 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
133 | | Length | Marker | Version | | |
134 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
135 | | Command | | |
136 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
137 | ||
138 | ||
139 | :: | |
140 | ||
141 | Version 3, 4 | |
142 | ||
143 | 0 1 2 3 | |
144 | 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 | |
145 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
146 | | Length | Marker | Version | | |
147 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
148 | | VRF ID | Command | | |
149 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
ab2416a0 | 150 | |
ab2416a0 | 151 | |
42fc5d26 QY |
152 | Zebra Protocol Commands |
153 | ----------------------- | |
154 | ||
610b34e1 QY |
155 | +------------------------------------+-------+ |
156 | | Command | Value | | |
157 | +====================================+=======+ | |
158 | | ZEBRA_INTERFACE_ADD | 0 | | |
159 | +------------------------------------+-------+ | |
160 | | ZEBRA_INTERFACE_DELETE | 1 | | |
161 | +------------------------------------+-------+ | |
162 | | ZEBRA_INTERFACE_ADDRESS_ADD | 2 | | |
163 | +------------------------------------+-------+ | |
164 | | ZEBRA_INTERFACE_ADDRESS_DELETE | 3 | | |
165 | +------------------------------------+-------+ | |
166 | | ZEBRA_INTERFACE_UP | 4 | | |
167 | +------------------------------------+-------+ | |
168 | | ZEBRA_INTERFACE_DOWN | 5 | | |
169 | +------------------------------------+-------+ | |
170 | | ZEBRA_INTERFACE_SET_MASTER | 6 | | |
171 | +------------------------------------+-------+ | |
172 | | ZEBRA_ROUTE_ADD | 7 | | |
173 | +------------------------------------+-------+ | |
174 | | ZEBRA_ROUTE_DELETE | 8 | | |
175 | +------------------------------------+-------+ | |
176 | | ZEBRA_ROUTE_NOTIFY_OWNER | 9 | | |
177 | +------------------------------------+-------+ | |
178 | | ZEBRA_REDISTRIBUTE_ADD | 10 | | |
179 | +------------------------------------+-------+ | |
180 | | ZEBRA_REDISTRIBUTE_DELETE | 11 | | |
181 | +------------------------------------+-------+ | |
182 | | ZEBRA_REDISTRIBUTE_DEFAULT_ADD | 12 | | |
183 | +------------------------------------+-------+ | |
184 | | ZEBRA_REDISTRIBUTE_DEFAULT_DELETE | 13 | | |
185 | +------------------------------------+-------+ | |
186 | | ZEBRA_ROUTER_ID_ADD | 14 | | |
187 | +------------------------------------+-------+ | |
188 | | ZEBRA_ROUTER_ID_DELETE | 15 | | |
189 | +------------------------------------+-------+ | |
190 | | ZEBRA_ROUTER_ID_UPDATE | 16 | | |
191 | +------------------------------------+-------+ | |
192 | | ZEBRA_HELLO | 17 | | |
193 | +------------------------------------+-------+ | |
194 | | ZEBRA_CAPABILITIES | 18 | | |
195 | +------------------------------------+-------+ | |
196 | | ZEBRA_NEXTHOP_REGISTER | 19 | | |
197 | +------------------------------------+-------+ | |
198 | | ZEBRA_NEXTHOP_UNREGISTER | 20 | | |
199 | +------------------------------------+-------+ | |
200 | | ZEBRA_NEXTHOP_UPDATE | 21 | | |
201 | +------------------------------------+-------+ | |
202 | | ZEBRA_INTERFACE_NBR_ADDRESS_ADD | 22 | | |
203 | +------------------------------------+-------+ | |
204 | | ZEBRA_INTERFACE_NBR_ADDRESS_DELETE | 23 | | |
205 | +------------------------------------+-------+ | |
206 | | ZEBRA_INTERFACE_BFD_DEST_UPDATE | 24 | | |
207 | +------------------------------------+-------+ | |
208 | | ZEBRA_IMPORT_ROUTE_REGISTER | 25 | | |
209 | +------------------------------------+-------+ | |
210 | | ZEBRA_IMPORT_ROUTE_UNREGISTER | 26 | | |
211 | +------------------------------------+-------+ | |
212 | | ZEBRA_IMPORT_CHECK_UPDATE | 27 | | |
213 | +------------------------------------+-------+ | |
214 | | ZEBRA_BFD_DEST_REGISTER | 28 | | |
215 | +------------------------------------+-------+ | |
216 | | ZEBRA_BFD_DEST_DEREGISTER | 29 | | |
217 | +------------------------------------+-------+ | |
218 | | ZEBRA_BFD_DEST_UPDATE | 30 | | |
219 | +------------------------------------+-------+ | |
220 | | ZEBRA_BFD_DEST_REPLAY | 31 | | |
221 | +------------------------------------+-------+ | |
222 | | ZEBRA_REDISTRIBUTE_ROUTE_ADD | 32 | | |
223 | +------------------------------------+-------+ | |
224 | | ZEBRA_REDISTRIBUTE_ROUTE_DEL | 33 | | |
225 | +------------------------------------+-------+ | |
226 | | ZEBRA_VRF_UNREGISTER | 34 | | |
227 | +------------------------------------+-------+ | |
228 | | ZEBRA_VRF_ADD | 35 | | |
229 | +------------------------------------+-------+ | |
230 | | ZEBRA_VRF_DELETE | 36 | | |
231 | +------------------------------------+-------+ | |
232 | | ZEBRA_VRF_LABEL | 37 | | |
233 | +------------------------------------+-------+ | |
234 | | ZEBRA_INTERFACE_VRF_UPDATE | 38 | | |
235 | +------------------------------------+-------+ | |
236 | | ZEBRA_BFD_CLIENT_REGISTER | 39 | | |
237 | +------------------------------------+-------+ | |
238 | | ZEBRA_BFD_CLIENT_DEREGISTER | 40 | | |
239 | +------------------------------------+-------+ | |
240 | | ZEBRA_INTERFACE_ENABLE_RADV | 41 | | |
241 | +------------------------------------+-------+ | |
242 | | ZEBRA_INTERFACE_DISABLE_RADV | 42 | | |
243 | +------------------------------------+-------+ | |
177a547a | 244 | | ZEBRA_IPV3_NEXTHOP_LOOKUP_MRIB | 43 | |
610b34e1 QY |
245 | +------------------------------------+-------+ |
246 | | ZEBRA_INTERFACE_LINK_PARAMS | 44 | | |
247 | +------------------------------------+-------+ | |
248 | | ZEBRA_MPLS_LABELS_ADD | 45 | | |
249 | +------------------------------------+-------+ | |
250 | | ZEBRA_MPLS_LABELS_DELETE | 46 | | |
251 | +------------------------------------+-------+ | |
252 | | ZEBRA_IPMR_ROUTE_STATS | 47 | | |
253 | +------------------------------------+-------+ | |
254 | | ZEBRA_LABEL_MANAGER_CONNECT | 48 | | |
255 | +------------------------------------+-------+ | |
256 | | ZEBRA_LABEL_MANAGER_CONNECT_ASYNC | 49 | | |
257 | +------------------------------------+-------+ | |
258 | | ZEBRA_GET_LABEL_CHUNK | 50 | | |
259 | +------------------------------------+-------+ | |
260 | | ZEBRA_RELEASE_LABEL_CHUNK | 51 | | |
261 | +------------------------------------+-------+ | |
262 | | ZEBRA_FEC_REGISTER | 52 | | |
263 | +------------------------------------+-------+ | |
264 | | ZEBRA_FEC_UNREGISTER | 53 | | |
265 | +------------------------------------+-------+ | |
266 | | ZEBRA_FEC_UPDATE | 54 | | |
267 | +------------------------------------+-------+ | |
268 | | ZEBRA_ADVERTISE_DEFAULT_GW | 55 | | |
269 | +------------------------------------+-------+ | |
270 | | ZEBRA_ADVERTISE_SUBNET | 56 | | |
271 | +------------------------------------+-------+ | |
272 | | ZEBRA_ADVERTISE_ALL_VNI | 57 | | |
273 | +------------------------------------+-------+ | |
274 | | ZEBRA_LOCAL_ES_ADD | 58 | | |
275 | +------------------------------------+-------+ | |
276 | | ZEBRA_LOCAL_ES_DEL | 59 | | |
277 | +------------------------------------+-------+ | |
278 | | ZEBRA_VNI_ADD | 60 | | |
279 | +------------------------------------+-------+ | |
280 | | ZEBRA_VNI_DEL | 61 | | |
281 | +------------------------------------+-------+ | |
177a547a | 282 | | ZEBRA_L3VNI_ADD | 62 | |
610b34e1 | 283 | +------------------------------------+-------+ |
177a547a | 284 | | ZEBRA_L3VNI_DEL | 63 | |
610b34e1 QY |
285 | +------------------------------------+-------+ |
286 | | ZEBRA_REMOTE_VTEP_ADD | 64 | | |
287 | +------------------------------------+-------+ | |
288 | | ZEBRA_REMOTE_VTEP_DEL | 65 | | |
289 | +------------------------------------+-------+ | |
290 | | ZEBRA_MACIP_ADD | 66 | | |
291 | +------------------------------------+-------+ | |
292 | | ZEBRA_MACIP_DEL | 67 | | |
293 | +------------------------------------+-------+ | |
294 | | ZEBRA_IP_PREFIX_ROUTE_ADD | 68 | | |
295 | +------------------------------------+-------+ | |
296 | | ZEBRA_IP_PREFIX_ROUTE_DEL | 69 | | |
297 | +------------------------------------+-------+ | |
298 | | ZEBRA_REMOTE_MACIP_ADD | 70 | | |
299 | +------------------------------------+-------+ | |
300 | | ZEBRA_REMOTE_MACIP_DEL | 71 | | |
301 | +------------------------------------+-------+ | |
302 | | ZEBRA_PW_ADD | 72 | | |
303 | +------------------------------------+-------+ | |
304 | | ZEBRA_PW_DELETE | 73 | | |
305 | +------------------------------------+-------+ | |
306 | | ZEBRA_PW_SET | 74 | | |
307 | +------------------------------------+-------+ | |
308 | | ZEBRA_PW_UNSET | 75 | | |
309 | +------------------------------------+-------+ | |
310 | | ZEBRA_PW_STATUS_UPDATE | 76 | | |
311 | +------------------------------------+-------+ | |
312 | | ZEBRA_RULE_ADD | 77 | | |
313 | +------------------------------------+-------+ | |
314 | | ZEBRA_RULE_DELETE | 78 | | |
315 | +------------------------------------+-------+ | |
316 | | ZEBRA_RULE_NOTIFY_OWNER | 79 | | |
317 | +------------------------------------+-------+ | |
318 | | ZEBRA_TABLE_MANAGER_CONNECT | 80 | | |
319 | +------------------------------------+-------+ | |
320 | | ZEBRA_GET_TABLE_CHUNK | 81 | | |
321 | +------------------------------------+-------+ | |
322 | | ZEBRA_RELEASE_TABLE_CHUNK | 82 | | |
323 | +------------------------------------+-------+ | |
324 | | ZEBRA_IPSET_CREATE | 83 | | |
325 | +------------------------------------+-------+ | |
326 | | ZEBRA_IPSET_DESTROY | 84 | | |
327 | +------------------------------------+-------+ | |
328 | | ZEBRA_IPSET_ENTRY_ADD | 85 | | |
329 | +------------------------------------+-------+ | |
330 | | ZEBRA_IPSET_ENTRY_DELETE | 86 | | |
331 | +------------------------------------+-------+ | |
332 | | ZEBRA_IPSET_NOTIFY_OWNER | 87 | | |
333 | +------------------------------------+-------+ | |
334 | | ZEBRA_IPSET_ENTRY_NOTIFY_OWNER | 88 | | |
335 | +------------------------------------+-------+ | |
336 | | ZEBRA_IPTABLE_ADD | 89 | | |
337 | +------------------------------------+-------+ | |
338 | | ZEBRA_IPTABLE_DELETE | 90 | | |
339 | +------------------------------------+-------+ | |
340 | | ZEBRA_IPTABLE_NOTIFY_OWNER | 91 | | |
341 | +------------------------------------+-------+ | |
342 | | ZEBRA_VXLAN_FLOOD_CONTROL | 92 | | |
343 | +------------------------------------+-------+ |