Commit Graph

627 Commits

Author SHA1 Message Date
Martin Winter
74a75bdbad
Merge pull request #1701 from donaldsharp/zapi_vrf_label
Zapi vrf label
2018-02-13 19:05:42 -08:00
G. Paul Ziemba
d316210b65 whitespace/comment fixes per qlyoung
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-02-09 13:14:22 -08:00
G. Paul Ziemba
a4d82a8adc bgpd: ran indent.py on some files prior to bgp vpn-vrf leaking changes
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-02-09 10:22:50 -08:00
G. Paul Ziemba
9386b58830 bgpd: json route table brace counting
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-02-09 09:39:32 -08:00
Donald Sharp
70e98a7fe7 *: Make code use a consisten definition of labels
Turns out we had 3 different ways to define labels
all of them overlapping with the same meanings.
Consolidate to 1.  This one choosen is consistent
naming wise with what the *bsd and linux kernels
use.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-02-08 20:31:37 -05:00
mitesh
317f1fe02f zebra/bgpd: fix compilation issues
Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-01-23 16:30:40 -08:00
vivek
2f69f6d368 bgpd: Use source route's path attributes for type-5 routes
When an IPv4 or IPv6 unicast route is injected into EVPN as a type-5 route
(upon user configuration), ensure that the source route (best path)'s path
attributes are used to build the EVPN type-5 route. This will result in
correct AS_PATH and ORIGIN attributes for the type-5 route so that it doesn't
appear that all type-5 routes are locally sourced. This is necessary to
ensure that external paths (IPv4 or IPv6 from EBGP peer) are preferred over
internal EVPN paths, if both exist.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-19051
Reviewed By: CCR-7009
Testing Done: Verify failed scenario
2018-01-23 16:24:39 -08:00
Mitesh Kanjariya
31310b25f2 bgpd: advertise VNI subnet
In EVPN symmetric routing, not all subnets are presents everywhere.
We have multiple scenarios where a host might not get learned locally.
1. GARP miss
2. SVI down/up
3. Silent host

We need a mechanism to resolve such hosts. In order to achieve this,
we will be advertising a subnet route from a box and that box will help
in resolving the ARP to such hosts.

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-01-23 15:58:53 -08:00
Mitesh Kanjariya
b57ba6d2a8 bgpd: carry two MPLS labels in EVPN NLRIs
When doing symmetric routing,
EVPN type-2 (MACIP) routes need to be advertised with two labels (VNIs)
the first being the L2 VNI (identifying the VLAN) and
the second being the L3 VNI (identifying the VRF).
The receive processing needs to handle one or two labels too.

Ticket: CM-18489
Review: CCR-6949
Testing: manual and bgp/evpn/mpls smoke

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2018-01-23 15:58:53 -08:00
Renato Westphal
75869e4ad5
Merge pull request #1656 from ak503/bgp
bgp: small fix for write to 'address-family l2vpn evpn' configuration
2018-01-22 17:03:58 -02:00
Philippe Guibert
a8bf7d9c9e bgpd: fix compilation issue with bgpd
Changes due to the change of vrf_id_t moved from 16 bits to 32 bits.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-01-22 13:52:24 +01:00
Donald Sharp
00711784cb
Merge pull request #1630 from LabNConsulting/working/master/pr1629-no-json
bgpd: fix reporting of no vpn routes (no json)
2018-01-19 07:59:34 -05:00
dturlupov
7bcc8dac13 bgp: small fix for write to 'address-family l2vpn evpn' configuration 2018-01-19 10:53:32 +03:00
Russ White
df294c8f2d
Merge pull request #1632 from dwalton76/bgpd-localas-allowasin
BGP "allowas-in" should accept AS paths with "local-as"
2018-01-16 13:48:46 -05:00
Daniel Walton
c4368918e4 BGP "allowas-in" should accept AS paths with "local-as"
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

For issue #1548
2018-01-12 15:31:16 +00:00
Lou Berger
0136788cd3 bgpd: fix summary line reporting routes with RDs (no json case)
Signed-off-by: Lou Berger <lberger@labn.net>
2018-01-12 08:45:48 -05:00
Mitesh Kanjariya
9bb77a5b3d
Merge branch 'master' into evpn-symmetric-routing 2018-01-11 09:00:23 -08:00
Donald Sharp
8356e9b7b0 bgpd: fix failing to compile on 32 bit systems
-Werror=sign-compare is failing with signed/unsigned usage
in the conditional expression.

Fixes: #1593
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-01-04 05:45:28 -05:00
Don Slice
e2a86ad9b4 bgpd: convert network statements from DEFUN to DEFPY
Problems reported with inconsistent use of parameters for bgp network
statements.  Converted 12 DEFUNs to 2 DEFPY statements, making the
parameter use consistent with the exception of keeping the "backdoor"
keywork ipv4 only.  Also verified that if a route-map or label-index
is specified in the "no" case it matches what had been previously
defined. Manual testing looks good and bgp-smoke will be performed
before pushing.

Ticket: CM-16860
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: CCR-7056
2017-12-21 19:07:56 +00:00
Rafael Zalamena
e492e668b6
Merge pull request #1553 from donaldsharp/bgp_json_routes
bgpd: Speedup vtysh handling of 'show bgp afi safi json' display
2017-12-19 14:49:59 -02:00
Donald Sharp
449feb8ef9 bgpd: Fix double free
The json code was freeing json_paths and then
turning around and free'ing it again.  Newer
versions of json-c have started to assert
this bad behavior.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-12-19 08:20:30 -05:00
Mitesh Kanjariya
5424b7bad8 bgpd: advertise/withdraw new added/deleted type-5 routes
Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2017-12-14 10:57:08 -08:00
Donald Sharp
23b2a7ef52 bgpd: Speedup vtysh handling of 'show bgp afi safi json' display
When bgp has a metric butt-load of routes w/ ecmp, this command
can take an inordinate amount of time to run and complete via
vtysh.

Converting the bgp route output in this case back to not
using the json pretty-print drops ~2 minutes of runtime
off.

It is assumed that if users would like pretty output they
can run it through an appropriate tool via a pipe command.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-12-14 09:31:26 -05:00
Donald Sharp
06b9f471ab bgpd: Fixup buffer sizes for prefix_rd2str
The prefix_rd2str uses a buffer size of RD_ADDRSTRLEN.
Modify the code to consistently use this for all of BGP.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-12-11 12:39:16 -05:00
Donald Sharp
ff6566f3ef bgpd: Cleanup SA error in ignoring return from function
Ignoring the return from argv_find_and_parse_afi
makes the SA system assume that you could pass a AFI_MAX
value to bgp_show_route.  Which in turn would cause
an array out of bounds read.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-12-11 08:42:51 -05:00
Donald Sharp
f46d8e1ed0 bgpd: Free up changes to attr that the speculative route-map applied
So we have the ability to apply speculative route-maps to
neighbor display to see what the changes would look like
via some show commands.  When we do this we make a
shallow copy of the attr data structure and then pass
it around for applying the routemap.  After we've applied
this route-map and displayed it we really need to clean
up memory that the route-map application applied.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-11-27 08:21:56 -05:00
Donald Sharp
0f672529d8 bgpd: Store original route-map type for the peer
When we are applying an experimental route-map type
to a peer( as part of a show command ) save and
restore the peer's ->rmap_type.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-11-27 08:21:56 -05:00
Donald Sharp
b787157a52 bgpd: When we don't have a route-map to apply don't apply the original
When we display the advertised-routes and we don't have a route-map
to apply do not re-apply the route-map.  This does two things:

1) Fixes a display issue with the show command.
2) More importantly stops leaking memory like a sieve for when
   you have a full bgp table.

Fixes: #1345
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-11-27 08:21:56 -05:00
Donald Sharp
924c3f6ae9 bgpd: Cleanup indentation a tiny bit
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-11-27 08:21:52 -05:00
Renato Westphal
fcaae8e4ec
Merge pull request #1474 from qlyoung/foreach_afi_safi
bgpd: use FOREACH_AFI_SAFI where possible
2017-11-22 13:54:30 -02:00
Quentin Young
05c7a1cc93
bgpd: use FOREACH_AFI_SAFI where possible
Improves consistency and readability.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-11-21 13:02:06 -05:00
Renato Westphal
859dd94575
Merge pull request #1452 from donaldsharp/rip_nexthops
Blackhole Fixups for bgp and rip
2017-11-21 14:05:19 -02:00
Donald Sharp
8cc8456317 bgpd: Fix json output in some situations
This commit fixes a bug where json output would display
',,,,,,,' because we were deciding to not display information
about some routes due to a selection criteria.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-11-17 12:53:54 -05:00
Donald Sharp
a69ea8aeac bgpd: Only build json for community when needed
Building a communities json object every time is
both expensive and memory wasteful.  Modify
code to only build the json object when needed.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-11-17 09:04:26 -05:00
Donald Sharp
68e1a55bb1 bgpd: Only create json for aspath if needed
The creation of the json object for the aspath
is both memory intensive and expensive to
create.  Only create the json object when
it is needed and stash it for further usage
at that point.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-11-16 20:46:37 -05:00
Donald Sharp
9de1f7ff13 bgpd: Allow bgp to understand the different nexthop types
When BGP is being redistributed prefixes, allow it to
understand the nexthop type.

This fixes the issue where a blackhole route was being interpreted
to having a nexthop of 1.0.0.0( ruh-roh!!! ).  This broke
downstream neighbors as that they would receive a 1.0.0.0 nexthop,
which is bad, very very bad.

This commit sets us up for the future where we can match
a route-map against a nexthop type.  In that bgp is
now at least nominally paying attention to the type.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-11-16 08:45:28 -05:00
Lou Berger
e1541bf66e bgpd: fun with whitespace conventions
Signed-off-by: Lou Berger <lberger@labn.net>
2017-11-07 12:05:09 -05:00
Lou Berger
02a82b47b3 bgpd: allow for vpn->vrf imports
ignore nexthop checks for RFAPI imported routes (as is self)
      note: NHT is still updated

Signed-off-by: Lou Berger <lberger@labn.net>
2017-10-31 11:06:17 -04:00
Donald Sharp
66f80d74d6 bgpd: Cleanup some json output in bgp_route.c
Cleanup the displayed json output to be a bit prettier
to look at.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-27 11:32:17 -04:00
Renato Westphal
cbb65f5ef5 *: fix coverity warnings - error handling issues
Ignore the return value of some functions in the places we know they
can't fail, and other small fixes.

Regarding the change in bgpd/rfapi/rfapi_rib.c, asserting that
rfapiRaddr2Qprefix() didn't fail is the common idiom inside the rfapi
code.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-24 19:30:30 -02:00
Renato Westphal
cbdb74116f bgpd: remove 'network' commands from the BGP_IPV6L node
These commands don't belong in the BGP_IPV6L_NODE node anymore. A similar
change was done for BGP_IPV4L_NODE in commit 9bedbb1e5.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-09 20:15:14 -03:00
Donald Sharp
445c24803d bgpd: Fixup json with RouteDistinguishers
The json option for displaying a bgp table
with route Distinguishers in it was not properly
working.  This code cleans this issue up.

Additionally attempt to make the code a bit
easier to read and handle.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-05 10:12:00 -04:00
Donald Sharp
98ce9a06b4 bgpd: Cleanup bgp_show_table to be easier on the eyes
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-05 10:11:49 -04:00
Lou Berger
1ae44dfcba bgpd: unify 'show bgp' with RD with normal unicast bgp show
Signed-off-by: Lou Berger <lberger@labn.net>
2017-10-05 10:11:49 -04:00
Vincent JARDIN
04d14c8be1 scan-build: fix warning
Do not change the implementation, just fix scan-build/clang warning.
2017-10-02 09:14:03 +02:00
Lou Berger
2d9c2ae397 Merge pull request #1261 from dwalton76/bgpd-4byte-display
bgpd: fix 4-byte AS display in bestpath-from-AS
2017-09-28 17:50:19 -04:00
Renato Westphal
67c0a9206c Merge pull request #1180 from dwalton76/ipv6-static-route-null0
Ipv6 static route null0
2017-09-27 13:42:53 -03:00
Daniel Walton
fb2b09347d bgpd: fix 4-byte AS display in bestpath-from-AS
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

Before
======
cel-redxp-10# show ip bgp 20.1.3.0/24
BGP routing table entry for 20.1.3.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  top1(10.1.1.2) bottom0(20.1.2.2)
  4294967292
    20.1.2.2 from bottom0(20.1.2.2) (20.1.1.1)
      Origin IGP, metric 0, localpref 100, valid, external,
bestpath-from-AS -4, best
      Community: 99:1
      AddPath ID: RX 0, TX 92
      Last update: Wed Sep 27 16:02:34 2017

cel-redxp-10#

After
=====
cel-redxp-10# show ip bgp 20.1.3.0/24
BGP routing table entry for 20.1.3.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  bottom0(20.1.2.2)
  4294967292
    20.1.2.2 from bottom0(20.1.2.2) (20.1.1.1)
      Origin IGP, metric 0, localpref 100, valid, external,
bestpath-from-AS 4294967292, best
      Community: 99:1
      AddPath ID: RX 0, TX 2
      Last update: Wed Sep 27 16:07:09 2017

cel-redxp-10#
2017-09-27 16:07:24 +00:00
Donald Sharp
65d4e0c69b bgpd: Reduce multiaccess_check_v4 overhead for subgroups
Perf results at scale( >1k peers) showed a non-trivial
amount of time spent in bgp_multiaccess_check_v4.  Upon
function examination we are looking up the nexthops
connected node in each call as well as having to unlock
it after each iteration.  Rewrite to lookup the nexthop
node once.

This should reduce the node lookup by aproximately 1/2
which should yield some performance results.  There are
probably better things to do here but would require
deeper thought.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-09-26 20:06:13 -04:00
Philippe Guibert
197cb53000 bgpd: vty command fixup for evpn rt5
evpn vty command can be used to configure evpn rt5 entries.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-09-25 18:31:11 +02:00