summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_updgrp.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* bgpd: fix build on SolarisRenato Westphal2016-08-241-10/+10
| | | | | | | | | | | * Solaris doesn't have u_int64_t, so use uint64_t instead. C99-style fixed-width integers should always be preferred to improve portability; * 's_addr' is a macro on Solaris, so we can't use it as a variable name. Rename the 's_addr' variable to 'addr' in the bgp_peer_conf_if_to_su_update_v4() function. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
* BGP: Rework iteration of peer_af_arrayvivek2016-01-221-7/+21
| | | | | | | | | | | | | | | | | | | | | | While processing references to the macro PEERAF_FOREACH(), aggressive loop optimization by gcc 4.9.x (probably 4.8 and greater) was resulting in the generated code not checking on the index as well as eliminating some code. This was leading to a dereference of invalid memory when a BGP peer came up. The fix is to scrap this convoluted macro. Two other changes done are to eliminate overloading of "afindex" and make the loop iterator an integer. Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Dave Olson <olson@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com> Ticket: CM-8889 Reviewed By: CCR-4018 Testing Done: Verified failure scenario Note: This code was added as part of update-groups implementation; when upstreaming update-groups, this patch should also be included.
* BGP: update-group needs to consider addpath capability flagsDaniel Walton2015-12-081-0/+2
| | | | | | | Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-8475
* BGP: route-server will now use addpath...chop the _rsclient codeDaniel Walton2015-11-101-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-8122 per draft-ietf-idr-ix-bgp-route-server-09: 2.3.2.2.2. BGP ADD-PATH Approach The [I-D.ietf-idr-add-paths] Internet draft proposes a different approach to multiple path propagation, by allowing a BGP speaker to forward multiple paths for the same prefix on a single BGP session. As [RFC4271] specifies that a BGP listener must implement an implicit withdraw when it receives an UPDATE message for a prefix which already exists in its Adj-RIB-In, this approach requires explicit support for the feature both on the route server and on its clients. If the ADD-PATH capability is negotiated bidirectionally between the route server and a route server client, and the route server client propagates multiple paths for the same prefix to the route server, then this could potentially cause the propagation of inactive, invalid or suboptimal paths to the route server, thereby causing loss of reachability to other route server clients. For this reason, ADD- PATH implementations on a route server should enforce send-only mode with the route server clients, which would result in negotiating receive-only mode from the client to the route server. This allows us to delete all of the following code: - All XXXX_rsclient() functions - peer->rib - BGP_TABLE_MAIN and BGP_TABLE_RSCLIENT - RMAP_IMPORT and RMAP_EXPORT
* BGP: Implement "neighbor x.x.x.x addpath-tx-bestpath-per-AS"Daniel Walton2015-11-061-0/+3
| | | | | | | Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-8114
* BGP: support for addpath TXDaniel Walton2015-11-051-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Vivek Venkataraman <vivek@cumulusnetworks.com Ticket: CM-8014 This implements addpath TX with the first feature to use it being "neighbor x.x.x.x addpath-tx-all-paths". One change to show output is 'show ip bgp x.x.x.x'. If no addpath-tx features are configured for any peers then everything looks the same as it is today in that "Advertised to" is at the top and refers to which peers the bestpath was advertise to. root@superm-redxp-05[quagga-stash5]# vtysh -c 'show ip bgp 1.1.1.1' BGP routing table entry for 1.1.1.1/32 Paths: (6 available, best #6, table Default-IP-Routing-Table) Advertised to non peer-group peers: r1(10.0.0.1) r2(10.0.0.2) r3(10.0.0.3) r4(10.0.0.4) r5(10.0.0.5) r6(10.0.0.6) r8(10.0.0.8) Local, (Received from a RR-client) 12.12.12.12 (metric 20) from r2(10.0.0.2) (10.0.0.2) Origin IGP, metric 0, localpref 100, valid, internal AddPath ID: RX 0, TX 8 Last update: Fri Oct 30 18:26:44 2015 [snip] but once you enable an addpath feature we must display "Advertised to" on a path-by-path basis: superm-redxp-05# show ip bgp 1.1.1.1/32 BGP routing table entry for 1.1.1.1/32 Paths: (6 available, best #6, table Default-IP-Routing-Table) Local, (Received from a RR-client) 12.12.12.12 (metric 20) from r2(10.0.0.2) (10.0.0.2) Origin IGP, metric 0, localpref 100, valid, internal AddPath ID: RX 0, TX 8 Advertised to: r8(10.0.0.8) Last update: Fri Oct 30 18:26:44 2015 Local, (Received from a RR-client) 34.34.34.34 (metric 20) from r3(10.0.0.3) (10.0.0.3) Origin IGP, metric 0, localpref 100, valid, internal AddPath ID: RX 0, TX 7 Advertised to: r8(10.0.0.8) Last update: Fri Oct 30 18:26:39 2015 Local, (Received from a RR-client) 56.56.56.56 (metric 20) from r6(10.0.0.6) (10.0.0.6) Origin IGP, metric 0, localpref 100, valid, internal AddPath ID: RX 0, TX 6 Advertised to: r8(10.0.0.8) Last update: Fri Oct 30 18:26:39 2015 Local, (Received from a RR-client) 56.56.56.56 (metric 20) from r5(10.0.0.5) (10.0.0.5) Origin IGP, metric 0, localpref 100, valid, internal AddPath ID: RX 0, TX 5 Advertised to: r8(10.0.0.8) Last update: Fri Oct 30 18:26:39 2015 Local, (Received from a RR-client) 34.34.34.34 (metric 20) from r4(10.0.0.4) (10.0.0.4) Origin IGP, metric 0, localpref 100, valid, internal AddPath ID: RX 0, TX 4 Advertised to: r8(10.0.0.8) Last update: Fri Oct 30 18:26:39 2015 Local, (Received from a RR-client) 12.12.12.12 (metric 20) from r1(10.0.0.1) (10.0.0.1) Origin IGP, metric 0, localpref 100, valid, internal, best AddPath ID: RX 0, TX 3 Advertised to: r1(10.0.0.1) r2(10.0.0.2) r3(10.0.0.3) r4(10.0.0.4) r5(10.0.0.5) r6(10.0.0.6) r8(10.0.0.8) Last update: Fri Oct 30 18:26:34 2015 superm-redxp-05#
* BGP: peer-group restrictions should be relaxed, update-groups determine ↵Daniel Walton2015-10-281-0/+1
| | | | | | | | | outbound policy anyway Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Reviewed-by: Vivek Venkataraman <vivek@cumulusnetworks.com> Ticket: CM-7933
* Quagga: Fix compile warnings for GCC4.9Donald Sharp2015-09-251-3/+3
| | | | | | | As part of the debian build process for jessie we are seeing some compile issues. This addresses these issues Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* Fixup of warnings in the codeDonald Sharp2015-07-261-0/+2
| | | | | | | | | Ticket: None Reviewed by: Trivial Testing: A bunch of warnings have crept in to the code base. This fixes the issue
* When a route-reflector is configured with "next-hop self" towards an IBGPDonald Sharp2015-06-121-0/+1
| | | | | | | | | peer, it will only set the nexthop to "self" for non-reflected routes. To force the nexthop to "self" for reflected routes, a "next-hop self force" configuration is required. With the introduction of the update groups function, these two configurations are not distinguished correctly leading to inconsistent behavior. Resolve by introducing the proper distinction.
* A nexthop value specified by an outbound routemap is not beingDonald Sharp2015-06-121-5/+7
| | | | | | | | honored correctly for EBGP peers after the introduction of the dynamic update groups functionality. Ensure this is handled correctly. Also, the route-map can separately set different nexthops - IPv4, IPv6 global or IPv6 link-local; treat these separately.
* bgpd, zebra: rfc-5549-generic.patchDonald Sharp2015-06-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds support for BGP RFC 5549 (Extended Next Hop Encoding capability) * send and receive of the capability * processing of IPv4->IPv6 next-hops * for resolving these IPv6 next-hops, itsworks with the current next-hop-tracking support * added a new message type between BGP and Zebra for such route install/uninstall * zserv side of changes to process IPv4 prefix ->IPv6 next-hops * required show command changes for IPv4 prefix having IPv6 next-hops Few points to note about the implementation: * It does an implicit next-hop-self when a [IPv4 prefix -> IPv6 LL next-hop] is to be considered for advertisement to IPv4 peering (or IPv6 peering without Extended next-hop capability negotiated) * Currently feature is off by default, enable it by configuring 'neighbor <> capability extended-nexthop' * Current support is for IPv4 Unicast prefixes only. IMPORTANT NOTE: This patch alone isn't enough to have IPv4->IPv6 routes installed into the kernel. A separate patch is needed for that to work for the netlink interface. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com> Vivek Venkatraman <vivek@cumulusnetworks.com> Donald Sharp <sharpd@cumulusnetworks.com>
* If the default route is removed from the BGP table we must re-evaluate ↵Donald Sharp2015-05-201-1/+2
| | | | "neighbor x.x.x.x default-originate"
* quagga: quagga-memory-leaks.patchDonald Sharp2015-05-201-1/+3
| | | | | | Fix up some memory leaks found by valgrind Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by:
* bgpd: bgpd-warnings.patchDonald Sharp2015-05-201-3/+3
| | | | | | Remove compile warnings for the bgpd directory Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by:
* If a route-map is used on a neighbor default-originate statement we need to ↵Donald Sharp2015-05-201-0/+1
| | | | dynamically add/del the default route if the permit/deny result of the route-map changes.
* BGP: Fix update-groups commands to match neighborsDonald Sharp2015-05-201-1/+1
| | | | | | | | | | | | show update-groups summary was mislabeled. What it displays is not a summary at all, but the detailed info about all update-groups. Furthermore, there was no way to get detailed info about a specific subgroup. This patch renames "show * update-groups summary" to "show * update-groups" and adds an option to see the info specific to a subgroup only. It also validates the subgroup-id. show * update-groups summary will be added separately.
* bgpd: Add route-map support for set ip next-hop unchangedDonald Sharp2015-05-201-0/+1
| | | | | | | | | In the data center, where load balancers are announced as VIPs, and eBGP is used as the routing protocol, this feature is required to ensure that VIP announcements can be made from anywhere the operator sees fit. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
* BGP: Add dynamic update group supportDonald Sharp2015-05-201-0/+594
This patch implements the 'update-groups' functionality in BGP. This is a function that can significantly improve BGP performance for Update generation and resultant network convergence. BGP Updates are formed for "groups" of peers and then replicated and sent out to each peer rather than being formed for each peer. Thus major BGP operations related to outbound policy application, adj-out maintenance and actual Update packet formation are optimized. BGP update-groups dynamically groups peers together based on configuration as well as run-time criteria. Thus, it is more flexible than update-formation based on peer-groups, which relies on operator configuration. [Note that peer-group based update formation has been introduced into BGP by Cumulus but is currently intended only for specific releases.] From 11098af65b2b8f9535484703e7f40330a71cbae4 Mon Sep 17 00:00:00 2001 Subject: [PATCH] updgrp commits