Skip to content

Commit

Permalink
doc/user: add protocols vs. platform table
Browse files Browse the repository at this point in the history
A nicely-formatted colorful table of all our daemons and target OS'.
Based off & intended to replace / extend
https://github.com/FRRouting/frr/wiki/Features-and-Kernel-Support

Signed-off-by: David Lamparter <equinox@diac24.net>
  • Loading branch information
eqvinox committed Aug 25, 2018
1 parent 7968503 commit 3637263
Show file tree
Hide file tree
Showing 4 changed files with 148 additions and 21 deletions.
47 changes: 47 additions & 0 deletions doc/user/_static/overrides.css
Expand Up @@ -6,3 +6,50 @@ div.body {
pre { pre {
background-color: #e2e2e2; background-color: #e2e2e2;
} }

/* styling for the protocols vs. OS table in overview.rst */
/* first, general bits */
div.body td.mark {
text-align: center;
border-left: 1px solid #ccc;
}
table.mark th {
text-align: center;
}
table.mark td {
vertical-align: middle;
}
table.mark td[colspan="7"] {
text-align: center;
padding-top: 8pt;
padding-bottom: 2pt;
}
table.mark cite {
font-weight: bold;
}

/* individual Y/N/... cells */
td.mark {
width: 4.5em;
}
td.mark span {
display: block;
padding: 3px 1px;
border: 1px dotted #666;
width: 36pt;
margin:auto;
}
span.mark-y { background-color: #77ffaa; }
span.mark-geq { background-color: #aaff77; }
span.mark-cp { background-color: #ffbb55; }
span.mark-n { background-color: #ff8877; }
span.mark-dag { background-color: #ffee99; font-size: 8pt; padding:0px 1px; border-top:0px; }

/* for the legend below */
li span.mark {
display: inline-block;
padding: 3px 1px;
border: 1px dotted #666;
width: 36pt;
text-align: center;
}
13 changes: 13 additions & 0 deletions doc/user/_static/overrides.js
@@ -0,0 +1,13 @@
/* special styling for the protocols vs. OS table in overview.rst
*
* unfortunately this can't be done in straight CSS because we're changing
* the styling on the parent.
*/
$(document).ready(function() {
$("span.mark:contains('Y')" ).addClass("mark-y" ).parent("td").addClass("mark");
$("span.mark:contains('≥')" ).addClass("mark-geq").parent("td").addClass("mark");
$("span.mark:contains('N')" ).addClass("mark-n" ).parent("td").addClass("mark");
$("span.mark:contains('CP')").addClass("mark-cp" ).parent("td").addClass("mark");
$("span.mark:contains('†')" ).addClass("mark-dag").parent("td").addClass("mark");
$('td.mark').parents('table').addClass("mark").children('colgroup').remove();
});
1 change: 1 addition & 0 deletions doc/user/conf.py
Expand Up @@ -358,6 +358,7 @@ def setup(app):
app.add_object_type('clicmd', 'clicmd') app.add_object_type('clicmd', 'clicmd')
# css overrides for HTML theme # css overrides for HTML theme
app.add_stylesheet('overrides.css') app.add_stylesheet('overrides.css')
app.add_javascript('overrides.js')
# load Pygments lexer for FRR config syntax # load Pygments lexer for FRR config syntax
# #
# NB: in Pygments 2.2+ this can be done with `load_lexer_from_file`, but we # NB: in Pygments 2.2+ this can be done with `load_lexer_from_file`, but we
Expand Down
108 changes: 87 additions & 21 deletions doc/user/overview.rst
Expand Up @@ -150,27 +150,93 @@ Recent versions of the following compilers are well tested:


.. _supported-protocols: .. _supported-protocols:


Supported Protocols & RFCs Supported Protocols vs. Platform
========================== ================================


The following well-known protocols are supported: The following table lists all protocols cross-refrenced to all operating

systems that have at least CI build tests. Note that for features, only
- BGP features with system dependencies are included here.
- Babel
- EIGRP .. role:: mark
- IS-IS
- LDP .. comment - the :mark:`X` pieces mesh with a little bit of JavaScript and
- NHRP CSS in _static/overrides.{js,css} respectively. The JS code looks at the
- OSPFv2 presence of the 'Y' 'N' '≥' '†' or 'CP' strings. This seemed to be the
- OSPFv3 best / least intrusive way of getting a nice table in HTML. The table
- PIM will look somewhat shoddy on other sphinx targets like PDF or info (but
- RIP should still be readable.)
- RIPNG

+--+--------------------------------+----------------+--------------+------------+------------+------------+
The following technologies are supported as well: | Daemon / Feature | Linux | OpenBSD | FreeBSD | NetBSD | Solaris |

+==+================================+================+==============+============+============+============+
- PBR (Policy Based Routing) | FRR Core |
- VNC (Virtual Network Control) +--+--------------------------------+----------------+--------------+------------+------------+------------+
| `zebra` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | VRF | :mark:`≥4.8` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | MPLS | :mark:`≥4.5` | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `pbrd` (Policy Routing) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| WAN / Carrier protocols |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `bgpd` (BGP) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | VRF / L3VPN | :mark:`≥4.8` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` |
| | | :mark:`†4.3` | | | | |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | EVPN | :mark:`≥4.18` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` |
| | | :mark:`†4.9` | | | | |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | VNC (Virtual Network Control) | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | Flowspec | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `ldpd` (LDP) | :mark:`≥4.5` | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | VPWS / PW | :mark:`N` | :mark:`≥5.8` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | VPLS | :mark:`N` | :mark:`≥5.8` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `nhrpd` (NHRP) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| Link-State Routing |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `ospfd` (OSPFv2) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | Segment Routing | :mark:`≥4.12` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `ospf6d` (OSPFv3) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `isisd` (IS-IS) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| Distance-Vector Routing |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `ripd` (RIPv2) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `ripngd` (RIPng) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `babeld` (BABEL) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `eigrpd` (EIGRP) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| Multicast Routing |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| `pimd` (PIM) | :mark:`≥4.18` | :mark:`N` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | SSM (Source Specific) | :mark:`Y` | :mark:`N` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+
| | ASM (Any Source) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
+--+--------------------------------+----------------+--------------+------------+------------+------------+

The indicators have the following semantics:

* :mark:`Y` - daemon/feature fully functional
* :mark:`≥X.X` - fully functional with kernel version X.X or newer
* :mark:`†X.X` - restricted functionality or impaired performance with kernel version X.X or newer
* :mark:`CP` - control plane only (i.e. BGP route server / route reflector)
* :mark:`N` - daemon/feature not supported by operating system


.. _supported-rfcs: .. _supported-rfcs:


Expand Down

0 comments on commit 3637263

Please sign in to comment.