From: Quentin Young Date: Wed, 14 Mar 2018 19:05:23 +0000 (-0400) Subject: doc: move ZAPI docs to developer/ X-Git-Tag: frr-5.0-dev~125^2~9 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=6b702a45260d0cb5189eb2f7bd43431fdc7201d0;p=matthieu%2Ffrr.git doc: move ZAPI docs to developer/ Documentation on ZAPI protocol details doesn't belong in the user docs. Signed-off-by: Quentin Young --- diff --git a/doc/developer/zebra.rst b/doc/developer/zebra.rst new file mode 100644 index 0000000000..3d64b67115 --- /dev/null +++ b/doc/developer/zebra.rst @@ -0,0 +1,124 @@ +.. _zebra: + +***** +Zebra +***** + +.. _zebra-protocol: + +Overview of the Zebra Protocol +============================== + +Zebra Protocol is used by protocol daemons to communicate with the zebra +daemon. + +Each protocol daemon may request and send information to and from the zebra +daemon such as interface states, routing state, nexthop-validation, and so on. +Protocol daemons may also install routes with zebra. The zebra daemon manages +which route is installed into the forwarding table with the kernel. + +Zebra Protocol is a streaming protocol, with a common header. Two versions of +the header are in use. Version 0 is implicitely versioned. Version 1 has an +explicit version field. Version 0 can be distinguished from all other versions +by examining the 3rd byte of the header, which contains a marker value for all +versions bar version 0. The marker byte corresponds to the command field in +version 0, and the marker value is a reserved command in version 0. + +We do not anticipate there will be further versions of the header for the +foreseeable future, as the command field in version 1 is wide enough to allow +for future extensions to done compatibly through seperate commands. + +Version 0 is used by all versions of GNU Zebra as of this writing, and versions +of Quagga up to and including Quagga 0.98. Version 2 was created for 0.99.21 of +Quagga. Version 3 designates VRF compatibility and was released in 1.0. +Version 4 will be used as of FRR 2.0 to indicate that we are a different +Routing Suite now and to hopefully prevent accidental Quagga <-> FRR issues. + +Zebra Protocol Definition +========================= + +Zebra Protocol Header (version 0) +---------------------------------- + +:: + + 0 1 2 3 + 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 + +-------------------------------+---------------+ + | Length (2) | Command (1) | + +-------------------------------+---------------+ + + +Zebra Protocol Common Header (version 1) +---------------------------------------- + +:: + + 0 1 2 3 + 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 + +-------------------------------+---------------+-------------+ + | Length (2) | Marker (1) | Version (1) | + +-------------------------------+---------------+-------------+ + | Command (2) | + +-------------------------------+ + + +Zebra Protocol Header Field Definitions +--------------------------------------- + +Length + Total packet length including this header. The minimum length is 3 bytes for + version 0 messages and 6 bytes for version 1 messages. + +Marker + Static marker with a value of 255 always. This is to allow version 0 Zserv + headers (which do not include version explicitly) to be distinguished from + versioned headers. Not present in version 0 messages. + +Version + Version number of the Zserv message. Clients should not continue processing + messages past the version field for versions they do not recognise. Not + present in version 0 messages. + +Command + The Zebra Protocol command. + + +Zebra Protocol Commands +----------------------- + ++-----------------------------------+-------+ +| Command | Value | ++===================================+=======+ +| ZEBRA_INTERFACE_ADD | 1 | ++-----------------------------------+-------+ +| ZEBRA_INTERFACE_DELETE | 2 | ++-----------------------------------+-------+ +| ZEBRA_INTERFACE_ADDRESS_ADD | 3 | ++-----------------------------------+-------+ +| ZEBRA_INTERFACE_ADDRESS_DELETE | 4 | ++-----------------------------------+-------+ +| ZEBRA_INTERFACE_UP | 5 | ++-----------------------------------+-------+ +| ZEBRA_INTERFACE_DOWN | 6 | ++-----------------------------------+-------+ +| ZEBRA_IPV4_ROUTE_ADD | 7 | ++-----------------------------------+-------+ +| ZEBRA_IPV4_ROUTE_DELETE | 8 | ++-----------------------------------+-------+ +| ZEBRA_IPV6_ROUTE_ADD | 9 | ++-----------------------------------+-------+ +| ZEBRA_IPV6_ROUTE_DELETE | 10 | ++-----------------------------------+-------+ +| ZEBRA_REDISTRIBUTE_ADD | 11 | ++-----------------------------------+-------+ +| ZEBRA_REDISTRIBUTE_DELETE | 12 | ++-----------------------------------+-------+ +| ZEBRA_REDISTRIBUTE_DEFAULT_ADD | 13 | ++-----------------------------------+-------+ +| ZEBRA_REDISTRIBUTE_DEFAULT_DELETE | 14 | ++-----------------------------------+-------+ +| ZEBRA_IPV4_NEXTHOP_LOOKUP | 15 | ++-----------------------------------+-------+ +| ZEBRA_IPV6_NEXTHOP_LOOKUP | 16 | ++-----------------------------------+-------+ diff --git a/doc/user/index.rst b/doc/user/index.rst index 54ee8b12f8..e505042994 100644 --- a/doc/user/index.rst +++ b/doc/user/index.rst @@ -14,7 +14,6 @@ Welcome to FRR's documentation! kernel snmp zebra - protocol bgp babeld eigrpd diff --git a/doc/user/protocol.rst b/doc/user/protocol.rst deleted file mode 100644 index b474c126bb..0000000000 --- a/doc/user/protocol.rst +++ /dev/null @@ -1,122 +0,0 @@ -.. _zebra-protocol: - -************** -Zebra Protocol -************** - -Overview of the Zebra Protocol -============================== - -Zebra Protocol is used by protocol daemons to communicate with the zebra -daemon. - -Each protocol daemon may request and send information to and from the zebra -daemon such as interface states, routing state, nexthop-validation, and so on. -Protocol daemons may also install routes with zebra. The zebra daemon manages -which route is installed into the forwarding table with the kernel. - -Zebra Protocol is a streaming protocol, with a common header. Two versions of -the header are in use. Version 0 is implicitely versioned. Version 1 has an -explicit version field. Version 0 can be distinguished from all other versions -by examining the 3rd byte of the header, which contains a marker value for all -versions bar version 0. The marker byte corresponds to the command field in -version 0, and the marker value is a reserved command in version 0. - -We do not anticipate there will be further versions of the header for the -foreseeable future, as the command field in version 1 is wide enough to allow -for future extensions to done compatibly through seperate commands. - -Version 0 is used by all versions of GNU Zebra as of this writing, and versions -of Quagga up to and including Quagga 0.98. Version 2 was created for 0.99.21 of -Quagga. Version 3 designates VRF compatibility and was released in 1.0. -Version 4 will be used as of FRR 2.0 to indicate that we are a different -Routing Suite now and to hopefully prevent accidental Quagga <-> FRR issues. - -Zebra Protocol Definition -========================= - -Zebra Protocol Header (version 0) ----------------------------------- - -:: - - 0 1 2 3 - 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 - +-------------------------------+---------------+ - | Length (2) | Command (1) | - +-------------------------------+---------------+ - - -Zebra Protocol Common Header (version 1) ----------------------------------------- - -:: - - 0 1 2 3 - 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 - +-------------------------------+---------------+-------------+ - | Length (2) | Marker (1) | Version (1) | - +-------------------------------+---------------+-------------+ - | Command (2) | - +-------------------------------+ - - -Zebra Protocol Header Field Definitions ---------------------------------------- - -Length - Total packet length including this header. The minimum length is 3 bytes for - version 0 messages and 6 bytes for version 1 messages. - -Marker - Static marker with a value of 255 always. This is to allow version 0 Zserv - headers (which do not include version explicitly) to be distinguished from - versioned headers. Not present in version 0 messages. - -Version - Version number of the Zserv message. Clients should not continue processing - messages past the version field for versions they do not recognise. Not - present in version 0 messages. - -Command - The Zebra Protocol command. - - -Zebra Protocol Commands ------------------------ - -+-----------------------------------+-------+ -| Command | Value | -+===================================+=======+ -| ZEBRA_INTERFACE_ADD | 1 | -+-----------------------------------+-------+ -| ZEBRA_INTERFACE_DELETE | 2 | -+-----------------------------------+-------+ -| ZEBRA_INTERFACE_ADDRESS_ADD | 3 | -+-----------------------------------+-------+ -| ZEBRA_INTERFACE_ADDRESS_DELETE | 4 | -+-----------------------------------+-------+ -| ZEBRA_INTERFACE_UP | 5 | -+-----------------------------------+-------+ -| ZEBRA_INTERFACE_DOWN | 6 | -+-----------------------------------+-------+ -| ZEBRA_IPV4_ROUTE_ADD | 7 | -+-----------------------------------+-------+ -| ZEBRA_IPV4_ROUTE_DELETE | 8 | -+-----------------------------------+-------+ -| ZEBRA_IPV6_ROUTE_ADD | 9 | -+-----------------------------------+-------+ -| ZEBRA_IPV6_ROUTE_DELETE | 10 | -+-----------------------------------+-------+ -| ZEBRA_REDISTRIBUTE_ADD | 11 | -+-----------------------------------+-------+ -| ZEBRA_REDISTRIBUTE_DELETE | 12 | -+-----------------------------------+-------+ -| ZEBRA_REDISTRIBUTE_DEFAULT_ADD | 13 | -+-----------------------------------+-------+ -| ZEBRA_REDISTRIBUTE_DEFAULT_DELETE | 14 | -+-----------------------------------+-------+ -| ZEBRA_IPV4_NEXTHOP_LOOKUP | 15 | -+-----------------------------------+-------+ -| ZEBRA_IPV6_NEXTHOP_LOOKUP | 16 | -+-----------------------------------+-------+