Commit Graph

20164 Commits

Author SHA1 Message Date
Mark Stapp
dd8bc21d2f bfdd: Use XFREE, clean up SA warning for bfd profiles
Use XFREE instead of raw free, clean up SA warning in bfd
profile delete.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-03 11:50:34 -04:00
Donald Sharp
d0e2053724
Merge pull request #6669 from ton31337/fix/large-community-list-set_sequence
bgpd: Actually find the sequence number for large-community-list
2020-07-03 07:47:28 -04:00
Donald Sharp
806d788025
Merge pull request #6671 from opensourcerouting/topostart-refactory
topotests: FRR start procedure improvements
2020-07-03 07:46:43 -04:00
Donald Sharp
f367838b2d
Merge pull request #6672 from pjdruddy/pr-l3vpn-rt-change-fix
bgpd: detect change of RT for L3VPN routes
2020-07-03 07:44:20 -04:00
GalaxyGorilla
690497fb10 isisd: Fast RIB recovery from BFD recognized link failures
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-03 08:46:17 +00:00
GalaxyGorilla
a01cb26cae tests: Introduce BFD IS-IS topotests
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>
2020-07-03 08:42:34 +00:00
Pat Ruddy
6f8c9c111e bgpd: detect change of RT for L3VPN routes
If the RT changes on a L3VPN route then any leak of this route into
a VRF should be withdrawn.
Extend existing EVPN check for RT change to cover L3VPN routes.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-07-02 21:22:48 +01:00
Rafael Zalamena
9ce4f4b86b topotests: remove daemons start up sleep
Instead of waiting for daemons start with `sleep`, start them with the
`-d` parameter so they can release the terminal themselves when ready.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-07-02 14:52:46 -03:00
Rafael Zalamena
1455684740 topotests: start logging early
Start logging early everything (including debug) to
`/tmp/topotest/<test>/<node>/<daemon>.{out,err}`.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-07-02 14:52:46 -03:00
Rafael Zalamena
aa5261bf7d topotests: remove duplicated code
Handle the duplicated code with a simple conditional: if called from
specialized API use provided daemons configuration, otherwise fallback
to old `Router` own daemon settings.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-07-02 14:52:42 -03:00
Donald Sharp
7799deeed6
Merge pull request #6437 from opensourcerouting/bfd-profiles-bgp
bfdd,bgpd: profiles integration support
2020-07-02 12:22:44 -04:00
Donald Sharp
681a198380
Merge pull request #6667 from ton31337/fix/bool_return_bgpd
bgpd: Return bool type for ecommunity_add_val and subgroup_announce_check
2020-07-02 09:32:09 -04:00
Donald Sharp
63aaee3629
Merge pull request #6590 from streambinder/master
bgpd: bmp: add support for L2VPN/EVPN routes
2020-07-02 07:56:08 -04:00
Donatas Abraitis
947073e397 bgpd: Actually find the sequence number for large-community-list
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-07-02 11:39:40 +03:00
Donatas Abraitis
c54142bb84 tools: Catch argv_find() cases when testing only the index
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-07-02 11:39:29 +03:00
Donatas Abraitis
e236900335 bgpd: Return bool type for ecommunity_add_val and subgroup_announce_check
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-07-02 11:08:29 +03:00
Donatas Abraitis
9558708a4e
Merge pull request #6661 from donaldsharp/flag_is_singular
bgpd: peer_af_flag_modify_vty assumes 1 flag at a time
2020-07-02 08:19:38 +03:00
Donald Sharp
b93caca965
Merge pull request #6665 from volta-networks/fix_isis_adj_log
isisd: log adj change when circuit goes down
2020-07-01 21:32:54 -04:00
Donald Sharp
0189f7226f pbrd: Be a bit more lenient with set nexthop A.B.C.D <intf>
When specifying an interface in a pbr-map `set nexthop ..` command
be a bit more lenient about the interface.

a) If the interface does not exist bail on the command
    (this is the same)
b) If the interface exists but is in a different vrf
   than specified use the vrf it is actually in.
    (this is new behavior)

Ticket: CM-30187
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-07-01 20:01:24 -04:00
Mark Stapp
d070e6429a
Merge pull request #6663 from wesleycoakley/qobj-unreg-fixup
pbrd, lib: remember to free alloc'd qobj elements on delete
2020-07-01 15:48:38 -04:00
Emanuele Di Pascale
7145d5bb3a isisd: log adj change when circuit goes down
if we shutdown an interface isisd will delete the adjacencies
on the corresponding circuit, but it will not log the change.
Fix it to make sure that each change is logged. Also specify
the level of the adjacency in the log message, while we are at it.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2020-07-01 21:48:38 +02:00
Donald Sharp
db45f64dd2 bgpd: peer_af_flag_modify_vty assumes 1 flag at a time
We have a bunch of code in bgp_vty.c that was passing
to peer_af_flag_modify_vty more than 1 flag at a time.
This was causing the underlying routines to get the
flags wrong.  In order to prevent this convert all the
places where we send multiple flags down to this function
to individual flag changes.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-07-01 15:48:27 -04:00
Wesley Coakley
20953065ff pbrd, lib: remember to free alloc'd qobj on delete
Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
2020-07-01 13:10:53 -04:00
Mark Stapp
8f36f59ad9
Merge pull request #6657 from donaldsharp/pbr_disable_on_4.9
tests: pbr is not working properly on arm 4.9 kernels
2020-07-01 07:45:17 -04:00
Donald Sharp
272ed0af32 tests: pbr is not working properly on arm 4.9 kernels
Just disable pbr tests on anything less than 4.10.

This has to do with the fact that the arm platform
is not allowing us to install a route into a
non default table using a interface associated
with a vrf.

ip route add default 4.5.6.7 via swp39 table 10000

When swp39 is in a vrf other than default

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-06-30 15:10:20 -04:00
Donald Sharp
e8938601e2 vtysh: Improve lookup performance
When we find the line we are interested in, stop looking.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-06-30 09:03:55 -04:00
Donald Sharp
703dc64cd0 vtysh: master is a non-sorted list
The commit:
a798241265

attempted to use sorted master lists to do faster lookups
by using a RB Tree.  Unfortunately the original code
was creating a list->cmp function *but* never using it.
If you look at the commit, it clearly shows that the
function listnode_add is used to insert but when you
look at that function it is a tail push.

Fixes: #6573

Namely now this ordering is preserved:
bgp as-path access-list originate-only permit ^$
bgp as-path access-list originate-only deny .*

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-06-30 08:59:46 -04:00
streambinder
87102aa005 bgpd: bmp: add support for L2VPN/EVPN routes
Co-authored-by: giacomo270197 <gcasoni@hotmail.it>
Signed-off-by: streambinder <posta@davidepucci.it>
2020-06-30 14:37:00 +02:00
Donatas Abraitis
87b42ba8c3
Merge pull request #6645 from pguibert6WIND/maxpathlunicast
bgpd: add maximum-paths vty command to ipv6 lu node
2020-06-29 14:06:56 +03:00
Philippe Guibert
39edabac97 bgpd: add maximum-paths vty command to ipv4 lu node
add maximum-paths vty command to ipv4 lu node.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-06-27 22:53:04 +02:00
Donatas Abraitis
f48e3fa9e5
Merge pull request #6643 from mjstapp/fix_typos_bgp_multivrf1
test: fix some typos in bgp_multi_vrf_topo1
2020-06-27 18:41:20 +03:00
Renato Westphal
28aac9c2a8
Merge pull request #6635 from Niral-Networks/niral_dev_vrf_isis
ISIS VRF: Added vrf_socket and new param in isisd privileges.
2020-06-26 22:23:40 -03:00
Jakub Urbańczyk
2f74a82a11 zebra: prepare data plane for batching
* Add new zebra_dplane_result to allow kernel updates not to return
   a result immediately.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
2020-06-26 22:03:44 +02:00
Donatas Abraitis
09ec00f95b
Merge pull request #6639 from qlyoung/fix-alpine-pkg-arch
alpine: enable multi-arch builds
2020-06-26 19:14:49 +03:00
Mark Stapp
7adbc3cca5
Merge pull request #6644 from donaldsharp/more_pbr_debugs_for_arm
tests: Add some more data gathering
2020-06-26 12:04:26 -04:00
Donatas Abraitis
d5ab751395
Merge pull request #6640 from qlyoung/doc-docker-builds
doc: add docker image build instructions
2020-06-26 18:18:43 +03:00
Donald Sharp
2cb8bfb247 tests: Add some more data gathering
From last addition we can tell that the nexthop-group C is
installed but pbr does not think it is.  This failure
has been consistent the last 4-5 runs in master.  Lets
add a bit more data gathering to figure out what is going on.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-06-26 07:10:08 -04:00
Mark Stapp
8171368be7 test: fix some typos in bgp_multi_vrf_topo1
Noticed a few text things in this topotest.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-06-25 13:43:37 -04:00
Donald Sharp
44cef72912
Merge pull request #6611 from mjstapp/fix_rib_comparisons
zebra: improve route_entry comparison logic
2020-06-25 12:33:25 -04:00
Donatas Abraitis
f573ae4ced
Merge pull request #6642 from donaldsharp/forgotten_daemons
Forgotten daemons
2020-06-25 18:48:11 +03:00
Donald Sharp
0ce2d6ba13
Merge pull request #6630 from opensourcerouting/bgp-node-dest-rename
bgp: rename bgp_node to bgp_dest
2020-06-25 09:14:18 -04:00
Donald Sharp
b6eaf9065b
Merge pull request #6619 from Niral-Networks/niral_isis_debug_p2
ISIS VRF: ISIS Debug structure modifications Type 2
2020-06-25 09:07:42 -04:00
Mark Stapp
95832d33ba
Merge pull request #6641 from donaldsharp/bgp_sighup_is_bad
bgpd: Have bgp ignore SIGHUP at the moment
2020-06-25 08:28:57 -04:00
Mark Stapp
9db35a5e6f zebra: improve route_entry comparison logic
Improve and centralize some logic used to a) compare two
route_entries, and b) to locate a route_entry that matches
a dplane context object that contains the results of a
fib update. We were not rigorous enough in checking routes'
properties, especially when examining connected routes where
we allow multiple route_entries.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-06-25 08:21:27 -04:00
Donald Sharp
24265ba75c
Merge pull request #6636 from mjstapp/fix_topojson_intf_names
tests: in topojson framework, include vrf with interface name
2020-06-25 08:19:59 -04:00
Donald Sharp
f57a88f37c debian: Add missing daemons to logrotation knowledge
Update missing daemons to rotate as well.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-06-25 07:13:50 -04:00
Donald Sharp
1f4add997d redhat: Update logrotate to have knowledge of all daemons
Upon visual inspection the redhat logrotate file was incomplete
Make it complete.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-06-25 07:12:59 -04:00
Donald Sharp
23ca3269da bgpd: Have bgp ignore SIGHUP at the moment
SIGHUP is ostensibly supposed to reload configuration
from a fresh slate.  This is currently horribly broken
so much so that bgp just crashes.  I see no point
in trying to make this work considering the yang
work coming down the pike.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-06-24 20:15:12 -04:00
Quentin Young
cbd730b98a doc: add docker image build instructions
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-06-24 19:14:19 -04:00
Quentin Young
2f2d32a841 alpine: enable multi-arch builds
Now that amd64 dependencies have been removed we can use the correct
architecture specifier for Alpine packaging metadata in order to build
packages for all supported platforms.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-06-24 16:33:18 -04:00