]>
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 | +------------------------------------+-------+ | |
b9e6727a | 172 | | ZEBRA_INTERFACE_SET_PROTODOWN | 7 | |
610b34e1 | 173 | +------------------------------------+-------+ |
b9e6727a | 174 | | ZEBRA_ROUTE_ADD | 8 | |
610b34e1 | 175 | +------------------------------------+-------+ |
b9e6727a | 176 | | ZEBRA_ROUTE_DELETE | 9 | |
610b34e1 | 177 | +------------------------------------+-------+ |
b9e6727a | 178 | | ZEBRA_ROUTE_NOTIFY_OWNER | 10 | |
610b34e1 | 179 | +------------------------------------+-------+ |
b9e6727a | 180 | | ZEBRA_REDISTRIBUTE_ADD | 11 | |
610b34e1 | 181 | +------------------------------------+-------+ |
b9e6727a | 182 | | ZEBRA_REDISTRIBUTE_DELETE | 12 | |
610b34e1 | 183 | +------------------------------------+-------+ |
b9e6727a | 184 | | ZEBRA_REDISTRIBUTE_DEFAULT_ADD | 13 | |
610b34e1 | 185 | +------------------------------------+-------+ |
b9e6727a | 186 | | ZEBRA_REDISTRIBUTE_DEFAULT_DELETE | 14 | |
610b34e1 | 187 | +------------------------------------+-------+ |
b9e6727a | 188 | | ZEBRA_ROUTER_ID_ADD | 15 | |
610b34e1 | 189 | +------------------------------------+-------+ |
b9e6727a | 190 | | ZEBRA_ROUTER_ID_DELETE | 16 | |
610b34e1 | 191 | +------------------------------------+-------+ |
b9e6727a | 192 | | ZEBRA_ROUTER_ID_UPDATE | 17 | |
610b34e1 | 193 | +------------------------------------+-------+ |
b9e6727a | 194 | | ZEBRA_HELLO | 18 | |
610b34e1 | 195 | +------------------------------------+-------+ |
b9e6727a | 196 | | ZEBRA_CAPABILITIES | 19 | |
610b34e1 | 197 | +------------------------------------+-------+ |
b9e6727a | 198 | | ZEBRA_NEXTHOP_REGISTER | 20 | |
610b34e1 | 199 | +------------------------------------+-------+ |
b9e6727a | 200 | | ZEBRA_NEXTHOP_UNREGISTER | 21 | |
610b34e1 | 201 | +------------------------------------+-------+ |
b9e6727a | 202 | | ZEBRA_NEXTHOP_UPDATE | 22 | |
610b34e1 | 203 | +------------------------------------+-------+ |
b9e6727a | 204 | | ZEBRA_INTERFACE_NBR_ADDRESS_ADD | 23 | |
610b34e1 | 205 | +------------------------------------+-------+ |
b9e6727a | 206 | | ZEBRA_INTERFACE_NBR_ADDRESS_DELETE | 24 | |
610b34e1 | 207 | +------------------------------------+-------+ |
b9e6727a | 208 | | ZEBRA_INTERFACE_BFD_DEST_UPDATE | 25 | |
610b34e1 | 209 | +------------------------------------+-------+ |
b9e6727a | 210 | | ZEBRA_IMPORT_ROUTE_REGISTER | 26 | |
610b34e1 | 211 | +------------------------------------+-------+ |
b9e6727a | 212 | | ZEBRA_IMPORT_ROUTE_UNREGISTER | 27 | |
610b34e1 | 213 | +------------------------------------+-------+ |
b9e6727a | 214 | | ZEBRA_IMPORT_CHECK_UPDATE | 28 | |
610b34e1 | 215 | +------------------------------------+-------+ |
b9e6727a | 216 | | ZEBRA_BFD_DEST_REGISTER | 29 | |
610b34e1 | 217 | +------------------------------------+-------+ |
b9e6727a | 218 | | ZEBRA_BFD_DEST_DEREGISTER | 30 | |
610b34e1 | 219 | +------------------------------------+-------+ |
b9e6727a | 220 | | ZEBRA_BFD_DEST_UPDATE | 31 | |
610b34e1 | 221 | +------------------------------------+-------+ |
b9e6727a | 222 | | ZEBRA_BFD_DEST_REPLAY | 32 | |
610b34e1 | 223 | +------------------------------------+-------+ |
b9e6727a | 224 | | ZEBRA_REDISTRIBUTE_ROUTE_ADD | 33 | |
610b34e1 | 225 | +------------------------------------+-------+ |
b9e6727a | 226 | | ZEBRA_REDISTRIBUTE_ROUTE_DEL | 34 | |
610b34e1 | 227 | +------------------------------------+-------+ |
b9e6727a | 228 | | ZEBRA_VRF_UNREGISTER | 35 | |
610b34e1 | 229 | +------------------------------------+-------+ |
b9e6727a | 230 | | ZEBRA_VRF_ADD | 36 | |
610b34e1 | 231 | +------------------------------------+-------+ |
b9e6727a | 232 | | ZEBRA_VRF_DELETE | 37 | |
610b34e1 | 233 | +------------------------------------+-------+ |
b9e6727a | 234 | | ZEBRA_VRF_LABEL | 38 | |
610b34e1 | 235 | +------------------------------------+-------+ |
b9e6727a | 236 | | ZEBRA_INTERFACE_VRF_UPDATE | 39 | |
610b34e1 | 237 | +------------------------------------+-------+ |
b9e6727a | 238 | | ZEBRA_BFD_CLIENT_REGISTER | 40 | |
610b34e1 | 239 | +------------------------------------+-------+ |
b9e6727a | 240 | | ZEBRA_BFD_CLIENT_DEREGISTER | 41 | |
610b34e1 | 241 | +------------------------------------+-------+ |
b9e6727a | 242 | | ZEBRA_INTERFACE_ENABLE_RADV | 42 | |
610b34e1 | 243 | +------------------------------------+-------+ |
b9e6727a | 244 | | ZEBRA_INTERFACE_DISABLE_RADV | 43 | |
610b34e1 | 245 | +------------------------------------+-------+ |
b9e6727a | 246 | | ZEBRA_IPV3_NEXTHOP_LOOKUP_MRIB | 44 | |
610b34e1 | 247 | +------------------------------------+-------+ |
b9e6727a | 248 | | ZEBRA_INTERFACE_LINK_PARAMS | 45 | |
610b34e1 | 249 | +------------------------------------+-------+ |
b9e6727a | 250 | | ZEBRA_MPLS_LABELS_ADD | 46 | |
610b34e1 | 251 | +------------------------------------+-------+ |
b9e6727a | 252 | | ZEBRA_MPLS_LABELS_DELETE | 47 | |
610b34e1 | 253 | +------------------------------------+-------+ |
b9e6727a | 254 | | ZEBRA_MPLS_LABELS_REPLACE | 48 | |
610b34e1 | 255 | +------------------------------------+-------+ |
b9e6727a | 256 | | ZEBRA_IPMR_ROUTE_STATS | 49 | |
610b34e1 | 257 | +------------------------------------+-------+ |
b9e6727a | 258 | | ZEBRA_LABEL_MANAGER_CONNECT | 50 | |
610b34e1 | 259 | +------------------------------------+-------+ |
b9e6727a | 260 | | ZEBRA_LABEL_MANAGER_CONNECT_ASYNC | 51 | |
610b34e1 | 261 | +------------------------------------+-------+ |
b9e6727a | 262 | | ZEBRA_GET_LABEL_CHUNK | 52 | |
610b34e1 | 263 | +------------------------------------+-------+ |
b9e6727a | 264 | | ZEBRA_RELEASE_LABEL_CHUNK | 53 | |
610b34e1 | 265 | +------------------------------------+-------+ |
b9e6727a | 266 | | ZEBRA_FEC_REGISTER | 54 | |
610b34e1 | 267 | +------------------------------------+-------+ |
b9e6727a | 268 | | ZEBRA_FEC_UNREGISTER | 55 | |
610b34e1 | 269 | +------------------------------------+-------+ |
b9e6727a | 270 | | ZEBRA_FEC_UPDATE | 56 | |
610b34e1 | 271 | +------------------------------------+-------+ |
b9e6727a | 272 | | ZEBRA_ADVERTISE_DEFAULT_GW | 57 | |
610b34e1 | 273 | +------------------------------------+-------+ |
b9e6727a | 274 | | ZEBRA_ADVERTISE_SVI_MACIP | 58 | |
610b34e1 | 275 | +------------------------------------+-------+ |
b9e6727a | 276 | | ZEBRA_ADVERTISE_SUBNET | 59 | |
610b34e1 | 277 | +------------------------------------+-------+ |
b9e6727a | 278 | | ZEBRA_ADVERTISE_ALL_VNI | 60 | |
610b34e1 | 279 | +------------------------------------+-------+ |
b9e6727a | 280 | | ZEBRA_LOCAL_ES_ADD | 61 | |
610b34e1 | 281 | +------------------------------------+-------+ |
b9e6727a | 282 | | ZEBRA_LOCAL_ES_DEL | 62 | |
610b34e1 | 283 | +------------------------------------+-------+ |
b9e6727a | 284 | | ZEBRA_VNI_ADD | 63 | |
610b34e1 | 285 | +------------------------------------+-------+ |
b9e6727a | 286 | | ZEBRA_VNI_DEL | 64 | |
610b34e1 | 287 | +------------------------------------+-------+ |
b9e6727a | 288 | | ZEBRA_L3VNI_ADD | 65 | |
610b34e1 | 289 | +------------------------------------+-------+ |
b9e6727a | 290 | | ZEBRA_L3VNI_DEL | 66 | |
610b34e1 | 291 | +------------------------------------+-------+ |
b9e6727a | 292 | | ZEBRA_REMOTE_VTEP_ADD | 67 | |
610b34e1 | 293 | +------------------------------------+-------+ |
b9e6727a | 294 | | ZEBRA_REMOTE_VTEP_DEL | 68 | |
610b34e1 | 295 | +------------------------------------+-------+ |
b9e6727a | 296 | | ZEBRA_MACIP_ADD | 69 | |
610b34e1 | 297 | +------------------------------------+-------+ |
b9e6727a | 298 | | ZEBRA_MACIP_DEL | 70 | |
610b34e1 | 299 | +------------------------------------+-------+ |
b9e6727a | 300 | | ZEBRA_IP_PREFIX_ROUTE_ADD | 71 | |
610b34e1 | 301 | +------------------------------------+-------+ |
b9e6727a | 302 | | ZEBRA_IP_PREFIX_ROUTE_DEL | 72 | |
610b34e1 | 303 | +------------------------------------+-------+ |
b9e6727a | 304 | | ZEBRA_REMOTE_MACIP_ADD | 73 | |
610b34e1 | 305 | +------------------------------------+-------+ |
b9e6727a | 306 | | ZEBRA_REMOTE_MACIP_DEL | 74 | |
610b34e1 | 307 | +------------------------------------+-------+ |
b9e6727a | 308 | | ZEBRA_DUPLICATE_ADDR_DETECTION | 75 | |
610b34e1 | 309 | +------------------------------------+-------+ |
b9e6727a | 310 | | ZEBRA_PW_ADD | 76 | |
610b34e1 | 311 | +------------------------------------+-------+ |
b9e6727a | 312 | | ZEBRA_PW_DELETE | 77 | |
610b34e1 | 313 | +------------------------------------+-------+ |
b9e6727a | 314 | | ZEBRA_PW_SET | 78 | |
610b34e1 | 315 | +------------------------------------+-------+ |
b9e6727a | 316 | | ZEBRA_PW_UNSET | 79 | |
610b34e1 | 317 | +------------------------------------+-------+ |
b9e6727a | 318 | | ZEBRA_PW_STATUS_UPDATE | 80 | |
610b34e1 | 319 | +------------------------------------+-------+ |
b9e6727a | 320 | | ZEBRA_RULE_ADD | 81 | |
610b34e1 | 321 | +------------------------------------+-------+ |
b9e6727a | 322 | | ZEBRA_RULE_DELETE | 82 | |
610b34e1 | 323 | +------------------------------------+-------+ |
b9e6727a | 324 | | ZEBRA_RULE_NOTIFY_OWNER | 83 | |
610b34e1 | 325 | +------------------------------------+-------+ |
b9e6727a | 326 | | ZEBRA_TABLE_MANAGER_CONNECT | 84 | |
610b34e1 | 327 | +------------------------------------+-------+ |
b9e6727a | 328 | | ZEBRA_GET_TABLE_CHUNK | 85 | |
610b34e1 | 329 | +------------------------------------+-------+ |
b9e6727a | 330 | | ZEBRA_RELEASE_TABLE_CHUNK | 86 | |
610b34e1 | 331 | +------------------------------------+-------+ |
b9e6727a | 332 | | ZEBRA_IPSET_CREATE | 87 | |
610b34e1 | 333 | +------------------------------------+-------+ |
b9e6727a | 334 | | ZEBRA_IPSET_DESTROY | 88 | |
610b34e1 | 335 | +------------------------------------+-------+ |
b9e6727a | 336 | | ZEBRA_IPSET_ENTRY_ADD | 89 | |
610b34e1 | 337 | +------------------------------------+-------+ |
b9e6727a | 338 | | ZEBRA_IPSET_ENTRY_DELETE | 90 | |
610b34e1 | 339 | +------------------------------------+-------+ |
b9e6727a | 340 | | ZEBRA_IPSET_NOTIFY_OWNER | 91 | |
610b34e1 | 341 | +------------------------------------+-------+ |
b9e6727a S |
342 | | ZEBRA_IPSET_ENTRY_NOTIFY_OWNER | 92 | |
343 | +------------------------------------+-------+ | |
344 | | ZEBRA_IPTABLE_ADD | 93 | | |
345 | +------------------------------------+-------+ | |
346 | | ZEBRA_IPTABLE_DELETE | 94 | | |
347 | +------------------------------------+-------+ | |
348 | | ZEBRA_IPTABLE_NOTIFY_OWNER | 95 | | |
349 | +------------------------------------+-------+ | |
350 | | ZEBRA_VXLAN_FLOOD_CONTROL | 96 | | |
351 | +------------------------------------+-------+ | |
352 | | ZEBRA_VXLAN_SG_ADD | 97 | | |
353 | +------------------------------------+-------+ | |
354 | | ZEBRA_VXLAN_SG_DEL | 98 | | |
355 | +------------------------------------+-------+ | |
356 | | ZEBRA_VXLAN_SG_REPLAY | 99 | | |
357 | +------------------------------------+-------+ | |
358 | | ZEBRA_MLAG_PROCESS_UP | 100 | | |
359 | +------------------------------------+-------+ | |
360 | | ZEBRA_MLAG_PROCESS_DOWN | 101 | | |
361 | +------------------------------------+-------+ | |
362 | | ZEBRA_MLAG_CLIENT_REGISTER | 102 | | |
363 | +------------------------------------+-------+ | |
364 | | ZEBRA_MLAG_CLIENT_UNREGISTER | 103 | | |
365 | +------------------------------------+-------+ | |
366 | | ZEBRA_MLAG_FORWARD_MSG | 104 | | |
367 | +------------------------------------+-------+ | |
368 | | ZEBRA_CLIENT_CAPABILITIES | 105 | | |
610b34e1 | 369 | +------------------------------------+-------+ |