Commit Graph

12680 Commits

Author SHA1 Message Date
Christian Franke
cbd8e49e3e isisd: move spf datastructures to a header, to share with fabricd
By moving the spf datastructures to a header, fabricd can access the
results of the spf run for flooding optimization or fabric locality
calculation.

While this was deemed a sensible choice in this case, when compared with
the option of adding a lot of OpenFabric specific code to isis_spf.c,
the datastructures should still not be accessed randomly all over the
code base. To make this more clear, the new header was called
isis_spf_private.h (Think of a friend class)

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:13 +02:00
Christian Franke
b30e837b3f fabricd: run a hop-by-hop spf
OpenFabric uses an spf with the metric for all links set to one,
both for flooding optimization and for fabric locality detection.

So extend isisd's spf code to allow running it with such a metric
and have it run whenever normal spf runs.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:13 +02:00
Christian Franke
8e6fb83b4b fabricd: adjacency formation optimization as per section 2.4
OpenFabric changes IS-IS's initial database synchronization. While
regular IS-IS will simultaneuously exchange LSPs with all neighboring
routers during startup, this is considered too much churn for a densely
connected fabric.

To mitigate this, OpenFabric prescribes that a router should only
bring up an adjacency with a single neighbor and perform a full
synchronization with that neighbor, before bringing up further
adjacencies.

This is implemented by having a field `initial_sync_state` in the
fabricd datastructure which tracks whether an initial sync is still
pending, currently in progress, or complete.

When an initial sync is pending, the state will transition to the
in-progress state when the first IIH is received.

During this state, all IIHs from other routers are ignored. Any
IIHs transmitted on any link other than the one to the router with
which we are performing the initial sync will always report the far
end as DOWN in their threeway handshake state, avoiding the formation of
additional adjacencies.

The state will be left if all the SRM and SSN flags on the
initial-sync circuit are cleared (meaning that initial sync has
completed). This is checked in `lsp_tick`. When this condition occurrs,
we progress to the initial-sync-complete state, allowing other
adjacencies to form.

The state can also be left if the initial synchronization is taking too
long to succeed, for whatever reason. In that case, we fall back to the
initial-sync-pending state and will reattempt initial synchronization
with a different neighbor.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:13 +02:00
Christian Franke
65f1815711 fabricd: adjust IS-IS defaults as per draft
OpenFabric specifies that it should always be run with wide metrics via
P2P links and only as Level-2. Implement this as default and remove all
the knobs from fabricd which allow other configuration.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:13 +02:00
Christian Franke
32c248ef37 isisd: Fix error output for 'no ip router isis' command
The 'no ip router isis' command would incorrectly output the afi if the
area to delete does not exist. Make it output the area name instead.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:13 +02:00
Christian Franke
ef020087a5 isis: Cleanup CLI, split into parts which are shared, fabricd and isisd
Remove isis_vty.c and create three new files isis_vty_common.c,
isis_vty_fabricd.c and isis_vty_isisd.c which are built into both
daemons, only fabricd and only isisd, respectively.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:12 +02:00
Christian Franke
770ccdf874 vtysh: support fabricd
Extend extract.pl so it can deal with the isis source code being
compiled twice, once for isisd and once for fabricd.

Add the fabricd node and client to vtysh.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:12 +02:00
Martin Winter
13d9aad856 redhat: Add fabricd to RPM package
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-09-05 11:38:12 +02:00
Christian Franke
da82f6b42a zebra: add RTPROT_FABRICD route type 197
Add an iproute2 route type for fabricd

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:12 +02:00
Christian Franke
7c0cbd0e88 fabricd: add new daemon as build of isisd
fabricd is built using the sources of isisd. To allow differentiation
in the code, -DFABRICD=1 is added to its preprocessor flags.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-09-05 11:38:12 +02:00
David Lamparter
74938acb94
Merge pull request #2971 from qlyoung/misc-doc-updates
doc: fix building.rst index
2018-09-04 21:36:14 +02:00
Quentin Young
2862f9e185 doc: fix building.rst index
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-09-04 19:28:42 +00:00
Quentin Young
0895ecd3d8
Merge pull request #2909 from netravnen/feature/git-pl-template
Add github pull-request-template.md
2018-09-04 11:56:43 -04:00
David Lamparter
6a314aaf35
Merge pull request #2934 from LabNConsulting/working/master/rfapi_topotest_support
add some testing support for use in rfapi topotest
2018-09-04 17:42:32 +02:00
Russ White
1b7958c890
Merge pull request #2939 from netravnen/feature/git-issue-teplate
Add ISSUE_TEMPLATE
2018-09-04 11:28:18 -04:00
David Lamparter
cefe81a9a0
Merge pull request #2966 from donaldsharp/v6_cleanup
lib: Remove dead code
2018-09-04 16:17:39 +02:00
Donald Sharp
ba50512125 lib: Remove dead code
The ZEBRA_IPV4_ROUTE_IPV6_NEXTHOP_ADD zapi message has no creators and
no handlers.  Let's just remove.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-04 09:14:53 -04:00
David Lamparter
3bf513a597
Merge pull request #2950 from qlyoung/misc-doc-updates
Misc doc updates
2018-09-01 05:06:46 +02:00
David Lamparter
1fbd4e382a
Merge pull request #2945 from dslicenc/bgp-ospf-json
bgpd/ospfd: make bgp and ospf json response a bit more consistent
2018-09-01 05:05:30 +02:00
Christoffer
9119b9b118
.github: Update ISSUE_TEMPLATE.md
Addressed @rwestphal comments.

Signed-off-by: Christoffer <netravnen@gmail.com>
2018-09-01 00:10:42 +02:00
Christoffer
d967b38177
.github: Updated PULL_REQUEST_TEMPLATE.md
Addressed @qlyoung's suggestions.

Signed-off-by: Christoffer <netravnen@gmail.com>
2018-08-31 23:06:02 +02:00
Christoffer
9ab45012d0
.github: Updated ISSUE_TEMPALTE.md
Addressed @qlyoung's suggestions.

Signed-off-by: Christoffer <netravnen@gmail.com>
2018-08-31 20:04:46 +00:00
Quentin Young
1dae463ea5 zebra: remove invalid ref "frr-configuration"
There is, in fact, no such additional information

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-31 18:04:31 +00:00
Quentin Young
ecaadbaeb4 doc: update subdir.am
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-31 17:15:14 +00:00
Quentin Young
09b67c0938 doc: update misc build docs
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-31 17:13:31 +00:00
Quentin Young
fff24a2e73 doc: name correct sphinx package under FreeBSD 11
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-31 17:13:31 +00:00
Quentin Young
8ba7845f5e doc: rename building_frr_on* -> building_frr_for*
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-31 17:13:31 +00:00
Don Slice
ca61fd2587 bgpd: convert from conditional operator to if-then for json changes
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-08-31 17:11:23 +00:00
Quentin Young
04f04f0fa5
Merge pull request #2913 from opensourcerouting/non-recursive-prep
pre-final non-recursive make
2018-08-31 11:43:59 -04:00
David Lamparter
fc59d63c49
Merge pull request #2955 from ton31337/feature/nexthop_blackhole
plist: Add safety check to avoid going over 4294967295 for prefix-list
2018-08-31 17:33:40 +02:00
David Lamparter
552b74195d
Merge pull request #2940 from ton31337/fix/as-path_validation
bgpd: Validate as-path access-list before continuing regarding invali…
2018-08-31 15:56:44 +02:00
Donatas Abraitis
fbc7ead79c plist: Add safety check to avoid going over 4294967295 for prefix-list 2018-08-31 16:38:56 +03:00
Don Slice
985d248279 bgpd: change conditional operators for bgp/ospf json changes
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-08-31 12:50:02 +00:00
Donatas Abraitis
672c2d75e0 bgpd: Validate as-path access-list before continuing regarding invalid chars
Signed-off-by: Donatas Abraitis donatas.abraitis@gmail.com
2018-08-31 14:13:24 +03:00
Christoffer
cbb6b2a378
.github: Updated ISSUE_TEMPALTE.md
Addressed all of @qlyoung's "presentational nits
and a formatting suggestion". As well as
@rwestphal's idea of OS and FRR name+version
numbers.

Signed-off-by: Christoffer <netravnen@gmail.com>
2018-08-31 13:04:08 +02:00
Lou Berger
e93c6338f8
Merge pull request #2785 from donaldsharp/AGGanomics
Abstract `void *aggregate` pointer in `struct route_node`
2018-08-31 06:58:12 -04:00
David Lamparter
479e2eebed
Merge pull request #2951 from qlyoung/sort-route-maps
lib: sort route-maps for display
2018-08-31 12:17:20 +02:00
Donald Sharp
0e20f68b70 static: Put vty_frame around vrf output in staticd.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-31 11:29:27 +02:00
Donald Sharp
f591b309f2 staticd: Fix mixup in vrf translations
When we store the nexthop for ref-counting, keep
track of the nexthop vrf_id as well.  This will allow
us to track the nexthop per vrf!

Additionally when we get the callback from zebra about
a nexthop update, iterate over all static routes to
see if the nexthop we are getting a callback is
one we are concerned about.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-31 11:29:27 +02:00
Donald Sharp
88d52a3f22 vtysh: Let staticd know about vrf sub-mode
staticd was not transitioning into vrf sub-mode, this fixes it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-31 11:29:27 +02:00
David Lamparter
5c724747c1
Merge pull request #2923 from pguibert6WIND/fix_veth_namespace
zebra: when veth link is used across vrf, the link may not be good
2018-08-31 08:51:01 +02:00
Donald Sharp
c2b2356701 lib: Move aggregate pointer into aggregate route/table
Move the aggregate pointer from the route_node into agg_node
so that people using struct route_node will see a savings
in data size.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-30 17:47:59 -04:00
Donald Sharp
fe08ba7e11 bgpd, ripngd: Convert to using new agg_table/route
Switch bgp and ripngd to use the new aggregate table and
route data structures.  This was mainly a search and replace
operation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-30 17:47:59 -04:00
Donald Sharp
8e1f651213 lib: Add Aggregate Table and Aggregate_node
Add a abstraction for `struct route_node` and `struct route_table`
such that we can have an aggregate route_node and table.  This
is because only bgp/rfapi and ripng use the aggregate data pointer
in `struct route_node`.  For full route tables other routing
protocols and tables are paying a 8 byte overhead per node.
A full bgp table ends up being ~1.2 million routes in bgp
and zebra.  This is not an insiginificant amount of data.

So create the data structures for this replacement, but
do not replace the aggregate pointer yet.  This is because
later commits will convert rfapi and ripng over to this
new data, and finally we'll move the aggregate pointer.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-30 17:47:59 -04:00
Quentin Young
78b1bb5ff3 lib: sort route-maps for display
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-30 21:22:22 +00:00
Don Slice
874f58d87b ospfd: fix more warnings with the bgp ospf json commit
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-08-30 17:24:57 +00:00
Quentin Young
a91a5dcdd6
Merge pull request #2947 from mjstapp/fix_os_name
lib: fix use of frrpthread os_name
2018-08-30 13:01:22 -04:00
Martin Winter
17808c03d7 configure: Update version to 6.1-dev
We are now working on 6.1-dev for new work.

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-08-30 09:11:10 -07:00
Don Slice
94d4c685c5 bgpd/ospfd: resolve warnings for bgp/ospf json commit
Signed-off-by: Don Slice <dslice@cumulusnetwork.com>
2018-08-30 15:54:46 +00:00
Mark Stapp
c5e7bf3fa6 lib: fix use of frrpthread os_name
Fix test for presence of configured os pthread name.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2018-08-30 11:44:45 -04:00