summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-07-07zebra: collapse some duplicate LSP nhlfe apisMark Stapp
Collapse some apis where primary and backup nhlfe code was very similar, generally using a single common api and using a bool to distinguish between primary and backup. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: support backup nhlfes in lsp async notificationsMark Stapp
Include backup nhlfes and nexthops in LSP async notification processing from the dataplane. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: add init api for dplane lsp contextMark Stapp
Add an init api (based on what had been a private/static api) to allow a caller to init a context and use it to generate LSP updates. This might be useful for testing, or from a dplane plugin. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: use fib nexthops for pseudowiresMark Stapp
Make sure to use the installed/fib set of nexthops when capturing info about pseudowire updates. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: add const to mpls and dplane nhlfe apisMark Stapp
Add const to an arg to a couple of the dplane and mpls module apis that add nhlfes to LSPs. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: include backup nexthops in nexthop-trackingMark Stapp
Include backup nexthops when examining routes that resolve NHT requests. Include installed backups when sending nexthops in zapi messages to client daemons. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: improve logic handling backup nexthop installationMark Stapp
When handling a fib notification event that involves a route with backup nexthops, be clearer about representing the installed state of the backups: any installed backup will be on a dedicated route_entry list. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07sharpd: be explicit if nht is uninstalledMark Stapp
Emit a debug if sharpd gets a nexthop-tracking message without any nexthops. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: skip un-installed recursive matchMark Stapp
Do less work when resolving a recursive route: just skip nexthops if the resolving route is not installed. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07lib: test vrfs in nexthop_same_firsthop()Mark Stapp
Test the two nexthops' vrfs, and convert api to 'bool' return. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: revise vty output for backup nexthopsMark Stapp
Include backup nexthops in json output; function-ify the json output for nexthops; revise the display of backup nexthops to use the 'b' character. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: add fib nhg for backups, revise apiMark Stapp
Add an nhg for the fib-installed backup nexthops; rename an api to access the fib-installed nexthop nhg. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: only use ACTIVE nexthops in recursive resolutionMark Stapp
Only use ACTIVE nexthops to resolve recursive routes, not all nexthops from a resolving route. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: add dplane backup nhg apiMark Stapp
Add an api to allow a dplane plugin to set a route's backup nexthops. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07zebra: allow recursive resolution to use backup nexthopsMark Stapp
Allow both primary and backup nexthops to be used in recursive resolution processing. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07staticd,zebra: use ALLOW_RECURSION for static routesMark Stapp
Remove a special-case clause for static routes - it was the same as the clause for other recursive routes. Have staticd just tell zebra that recursion is allowed. Update topotest that was aware of this 'internal' flag. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07sharpd: use extern for globalsMark Stapp
Use extern when declaring a couple of globals in sharp_zebra. gcc 10 on fedora 32 needs this. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07tests: Generate support bundle/dump data on tests failuresKuldeep Kashyap
1. It will generate support bundle/sump data on test failures 2. It used /usr/lib/frr/generate_support_bundle.py utility to dump the data Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2020-07-07Merge pull request #6689 from mjstapp/doc_topotest_timeoutsQuentin Young
doc: add note about generous BGP topotest timeouts
2020-07-07Merge pull request #6685 from donaldsharp/fix_rare_ospf_test_failureMark Stapp
tests: Fix rare case in ospf tests due to small hello timer
2020-07-07Merge pull request #6687 from mjstapp/fix_topo_timeout_againDonald Sharp
tests: fix short timeout in lib/bgp.py
2020-07-07doc: add note about generous BGP topotest timeoutsMark Stapp
Add note blocks to the topotest and topotest-json dev docs to emphasize the need for generous BGP retry/convergence timers. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07tests: fix short timeout in lib/bgp.pyMark Stapp
Another short timeout for bgp - make the verify_bgp_convergence_from_running_config() api use the same generous timeout as verify_bgp_convergence() Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-07tests: Fix rare case in ospf tests due to small hello timerDonald Sharp
There exists the possiblity that the hello timer printed would show a time to expiration in this format: Hello due in 350 usecs The tests are looking for: Hello due in 5.430s Just notice that we may have gotten usecs and act accordingly Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-07-07Merge pull request #6656 from mjstapp/fix_lsp_del_scheduleRuss White
zebra: check LSP flags when deleting an LSP
2020-07-06Merge pull request #6675 from volta-networks/fix_isis_spf_assertQuentin Young
isisd: gracefully handle spf error
2020-07-06Merge pull request #6682 from qlyoung/doc-json-empty-outputMark Stapp
doc: specify output for json commands w/ no output
2020-07-06Merge pull request #6607 from kuldeepkash/bgp_basic_functionalityMark Stapp
tests: Add bgp_recursive_route_ebgp_multi_hop test suite
2020-07-06Merge pull request #6681 from opensourcerouting/rmap-desc-leak-fixQuentin Young
lib: fix route map description memory leak
2020-07-06Merge pull request #6114 from rgirada/frr-staticQuentin Young
pimd: Providing json support for few pim commands
2020-07-06lib: fix route map description memory leakRafael Zalamena
Route map entries are not getting a chance to call `description` string deallocation on shutdown or when the parent entry is destroyed, so lets add a code to handle this in the `route_map_index_delete` function. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-07-06doc: specify output for json commands w/ no outputQuentin Young
JSON commands should always return valid JSON Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-07-06tests: Add bgp_recursive_route_ebgp_multi_hop test suiteKuldeep Kashyap
1. Added 7 test cases to verify bgp recursive nexthop and ebgp multi-hop functionality 2. Added framework support to automate these test cases 3. Total execution time is ~5 mins Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2020-07-06isisd: gracefully handle spf errorEmanuele Di Pascale
the code in isis_spf_add2tent was asserting in case the vertex we were trying to add was already present in the path or tent trees. This however CAN happen if the user accidentally configures the system Id of the area to the same value of an estabished neighbor. Handle this more gracefully by logging and returning, to prevent crashes. Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2020-07-05Merge pull request #6628 from adharkar/frr-master-evpn_rtRuss White
bgpd: Incorrect auto-RT formed when L3VNI is not configured
2020-07-05zebra: check LSP flags when deleting an LSPMark Stapp
Check the LSP INSTALLED flag in delete apis, to ensure we enqueue a delete operation for the lfib. Some apis were only checking the nexthop/nhlfe INSTALLED flags, and those could be unset if there's an in-flight dataplane update. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-05Merge pull request #6678 from mjstapp/fix_topo_zebraDonald Sharp
tests,zebra: fix more startup topotest issues
2020-07-05Merge pull request #6646 from xThaid/dplane_batching1Mark Stapp
zebra: prepare dplane for batching
2020-07-04tests,zebra: fix more startup topotest issuesMark Stapp
Use the right list of daemons to avoid trying to start zebra twice. Change a zebra log message to INFO level to avoid stderr check failure. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-04Merge pull request #6666 from donaldsharp/pbr_interfaceDonatas Abraitis
pbrd: Be a bit more lenient with `set nexthop A.B.C.D <intf>`
2020-07-03Merge pull request #6677 from mjstapp/fix_topo_daemonsDonald Sharp
tests: wait longer when shutting down in topotests
2020-07-03Merge pull request #6676 from mjstapp/fix_bfd_profile_saDonald Sharp
bfdd: Use XFREE when freeing bfd profiles
2020-07-03Merge pull request #6654 from donaldsharp/sortedSri Mohana Singamsetty
Sorted vtysh commands
2020-07-03tests: wait longer when shutting down in topotestsMark Stapp
Add a few retries during router shutdown before killing a daemon. Also work harder to start only a single instance of daemons, esp. zebra. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-03bfdd: Use XFREE, clean up SA warning for bfd profilesMark Stapp
Use XFREE instead of raw free, clean up SA warning in bfd profile delete. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-03Merge pull request #6669 from ton31337/fix/large-community-list-set_sequenceDonald Sharp
bgpd: Actually find the sequence number for large-community-list
2020-07-03Merge pull request #6671 from opensourcerouting/topostart-refactoryDonald Sharp
topotests: FRR start procedure improvements
2020-07-03Merge pull request #6672 from pjdruddy/pr-l3vpn-rt-change-fixDonald Sharp
bgpd: detect change of RT for L3VPN routes
2020-07-03isisd: Fast RIB recovery from BFD recognized link failuresGalaxyGorilla
Unfortunately as the topotests show a fast recovery after failure detection due to BFD is currently not possible because of the following issue: There are multiple scheduling mechanisms within isisd to prevent overload situations. Regarding our problem these two are important: * scheduler for regenerating ISIS Link State PDUs scheduler for managing * consecutive SPF calculations In fact both schedulers are coupled, the first one triggers the second one, which again is triggered by isis_adj_state_change (which again is triggered by a BFD 'down' message). The re-calculation of SPF paths finally triggers updates in zebra for the RIB. Both schedulers work as a throttle, e.g. they allow the regeneration of Link State PDUs or a re-calculation for SPF paths only once within a certain time interval which is configurable (and by default different!). This means that a request can go through the first scheduler but might still be 'stuck' at the second one for a while. Or a request can be 'stuck' at the first scheduler even though the second one is ready. This also explains the 'random' behaviour one can observe testing since a 'fast' recovery is only possible if both schedulers are ready to process this request. Note that the solution in this commit is 'thread safe' in the sense that both schedulers use the same thread master such that the introduced flags are only used exactly one time (and one after another) for a 'fast' execution. Further there are some irritating comments and logs which I partially removed. They seems to be not valid anymore due to changes in thread management (or they were never valid in the first place). Signed-off-by: GalaxyGorilla <sascha@netdef.org>
2020-07-03tests: Introduce BFD IS-IS topotestsGalaxyGorilla
The tests work with the default settings of BFD meaning that bfdd is able to recognize a 'down' link after ~900ms so a route recovery should be visible in the RIB after 1 second. In the current state only IPv4 is used (when using IPv6 autoconfiguration) within BFD, even though the recovery also affects IPv6 routes. This is different to the current state of ospfd/ospf6d in combination with BFD since both IPv4 and IPv6 sessions are used there. The following topology is used: +---------+ | | eth-rt2 (.1) | RT1 | eth-rt3 (.1) +----------+ 1.1.1.1 +----------+ | | | | | +---------+ | | | | 10.0.2.0/24 | | | | eth-rt1 | (.2) | 10.0.1.0/24 +----+----+ | | | | | RT3 | | | 3.3.3.3 | | | | (.2) | eth-rt1 +----+----+ +----+----+ eth-rt4 | (.1) | | | | RT2 | | | 2.2.2.2 | 10.0.4.0/24 | | | | +----+----+ | (.1) | eth-rt5 eth-rt3 | (.2) | +----+----+ | | | | | RT4 | | | 4.4.4.4 | | | | | +----+----+ | 10.0.3.0/24 eth-rt5 | (.1) | | | | | 10.0.5.0/24 | | | | +---------+ | | | | | +----------+ RT5 +----------+ eth-rt2 (.2) | 5.5.5.5 | eth-rt4 (.2) | | +---------+ Route recovery is tested on RT1. The focus here lies on the two different routes to RT5. Link failures are generated by taking down interfaces via the mininet Python interface on RT2 and RT3. Hence routes are supposed to be adjusted to use RT3 when a link failure happens on RT2 or vice versa. Note that only failure recognition and recovery is "fast". BFD does not monitor a link becoming available again. Signed-off-by: GalaxyGorilla <sascha@netdef.org>