History | View | Annotate | Download (22 KB)
BGP redesign
Integrated and extensible BGP with generalized AFI handling,support for IPv4+IPv6 AFI and unicast+multicast SAFI.
Build: switch on -Wextra, get rid of most of the warnings
There are several unresolved -Wmissing-field-initializers on olderversions of GCC than 5.1, all of them false positive.
IANA assigned a different number to large BGP communities - changed.
BGP: Support for large communities
Add support for large communities (draft-ietf-idr-large-community),96bit alternative to RFC 1997 communities.
Thanks to Matt Griswold for the original patch.
BSD: Add the IPsec SA/SP database entries control
Add code for manipulation with TCP-MD5 keys in the IPsec SA/SP databaseat FreeBSD systems. Now, BGP MD5 authentication (RFC 2385) keys arehandled automatically on both Linux and FreeBSD.
Based on patches from Pavel Tvrdik.
BGP: Extended messages support
Implements draft-ietf-idr-bgp-extended-messages-10, for nowundocumented and with temporary private capability number.
BGP multipath support
Kernel option 'merge paths' allows to merge routes exported to kernelprotocol (currently BGP and static routes) to multipath routes.
unsigned [int] -> uint
BGP: Enhanced route refresh (RFC 7313) support
Also hook feed_done is renamed to feed_end.
Rename BGP option 'start delay' to 'connect delay'
Also update log message for error-triggered startup delay.
Link state support in BGP.
Configurable fast shutdown of a BGP session when an interface loses link.
Allows to configure different remote port for BGP sessions.
Thanks to João Taveira Araújo for the original patch.
BGP graceful restart support.
Also significant core protocol state changes needed for that,global graceful restart recovery state and kernel proto supportfor recovery.
Finishes add-path.
Fixes some bugs and uses generic hash implementation.
Merge branch 'master' into add-path
Conflicts:
filter/filter.c nest/proto.c nest/rt-table.c proto/bgp/bgp.h proto/bgp/config.Y
Minor fixes.
Merge commit 'origin/bfd'
BFD protocol, ready for release.
Supports OSPF and BGP and also statically configured sessions.
Implements 'allow local as' option.
Similar to allowas-in option on other routers.
Implements RFC 6608 Subcodes for BGP FSM Error.
Implements 'next hop keep' option for BGP.
This option allows to keep the received next hop even in cases whenthe route is sent to an interface with a different subnet.
Implements ADD-PATH extension for BGP.
Allows to send and receive multiple routes for one network by one BGPsession. Also contains necessary core changes to support this (routingtables accepting several routes for one network from one protocol).It needs some more cleanup before merging to the master branch.
Merge branch 'rt-accepted'
nest/config.Y nest/rt-table.c proto/bgp/bgp.c
Fixes in generalized import limits.
Implements generalized import hooks.
Thanks to Alexander V. Chernikov for the original patch.
Implement RA_ACCEPTED mode of route propagation.
Implements support for link-local addresses in BGP.
Thanks Matthias Schiffer for the original patch.
Implements deterministic MED handling.
Thanks to Alexander V. Chernikov for many suggestions.
Implements protocol templates.
Based on the patch from Alexander V. Chernikov.Extended to support almost all protocols.Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
The generalized TTL security mechanism (RFC 5082) support.
Thanks to Alexander V. Chernikov for the patch.
BGP Extended communities.
Adds BGP option related to MED handling.
Adds option 'med metric' allows to compare MEDsbetween routes received from different neighbors.
Implements IGP metric comparison for BGP routes.
Adds some options and documentation related to recursive next hops.
Implements proper multihop BGP.
Also does some incompatible changes to config file syntax,like removing 'via IP' from multihop option.
Implements hostcache and recursive next hops.
Hostcache is a structure for monitoring changes in a routing table thatis used for routes with dynamic/recursive next hops. This is needed forproper iBGP next hop handling.
Disable BGP protocol when cannot open listening socket.
Implements BGP 'show protocols' info details.
Removes phantom protocol from the pipe design.
It seems that by adding one pipe-specific exception to routeannouncement code and by adding one argument to rt_notify() callback icould completely eliminate the need for the phantom protocol instanceand therefore make the code more straightforward. It will also fix some...
Changes 'ignore communities' to 'interpret communities'.
Better handling of well-known communities.
Process well-known communities before the export filter (old behavior isto process these attributes after, which does not allow to send routewith such community) and just for routes received from other BGPprotocols. Also fixes a bug in next_hop check.
Implements MRTdump feature.
Remove bgp_as4_support variable.
Implements BGP route refresh.
Implements option that controls IPv6 BGP next hops when lladdr is missing.
Implements RFC 5004 - prefer older external routes.
Passive option.
Fixes headers for uintptr_t (and build on NetBSD).
Minor BGP changes related to error wait time.
Differentiate between error delay and connect/reconnect delay.
The difference is here to reject incoming connections in thefirst case.
Implements import route limits.
Fixes BGP IPv6 link local next hop handling.
When sending 'third party' BGP update, Bird used bogus link localaddresses instead of addresses it received before.
Fixes handling of 'next hop self' and 'source address' configurationoptions.
Update capability handshake options
Add 'capabilities' option, change default behavior to advertise ipv4,add some checks and ignore incoming capabilities when capabilitiesare disabled.
Added Cisco and Quagga capability workaround option.
Rate limit for most abundant log messages
Adds support for fallback to capabilityless BGP connect
When capability related error is received, next connect will bewithout capabilities. Also cease error subcodes descriptions(according to [RFC4486]) are added.
Major changes to BGP
Fixes two race conditions causing crash of Bird, several unhandledcases during BGP initialization, and some other bugs. Also changeshandling of startup delay to be more useful and implementreporting of last error in 'show protocols' command.
Proper format functions for ORIGINATOR_ID, CLUSTER_LIST
Implementation of route server.
Implementation of an option for disabling AS4 support per BGP instance.
Implementation of route reflection for BGP
Implementation of MD5 authentication of BGP sessions.
Implementation of 4B ASN support for BGP
Better selection of link-local NLRI addresses, at least for our ownaddress. Need to do it better for the other neighbors -- the currentsolution works only if they use the standard 64+64 global addressesand the interface identifier in lower 64 bits is the same as for the...
BGP now reports originating AS and origin type in get_route_info().
The bgp_list is gone. Incomming connections are now handled in a muchmore straightforward manner by scanning the active configuration formatching protocols.
IPv6 BGP support finished. Also simplified the BGP stuff a bit.
Receive-only IPv6 BGP.
Full protocol tracing.
The `bgp_origin' attribute is now an enum.
Implemented automatic restart after error with all the timers needed.
Better reporting of both local and remote errors.
LOCAL_PREF is now always present and exported over all ibgp connections [draft]
Allow setting of address of the local end of the TCP connection.
Several bug fixes.
If no NLRI's are present in an UPDATE message, parse the attributes, butdon't check presence of mandatory attributes. [draft-09]
Honor standard communities (no_export, no_advertise, no_export_subconfed)when exporting routes.
Don't import/export MED and LOCAL_PREF on external links.Added real comparison of BGP routes (inspired by the Cisco one).Default local preference and default MED are now settable.Defined filter keywords for all BGP attributes we know.
Send and receive communities.
Sending of update messages works!
Created nest/a-path.c and a-set.c which should contain general operationson AS paths and community sets.
Moved as_path_prepend() there.
Pavel, please move the other functions as well.
Made last Pavel's changes compile.
Real bucket lists.
Implemented outgoing attribute cache.
Use neighbor cache to track direct route to the peer or multihop destination.
Calculate next_hop properly based on the local address we get from theneighbor entry.
More BGP progress...
For Pavel: You can use bgp_path_prepend() for prepending AS numbers to AS paths.
Formatting of dynamic attributes (except for paths and communities whichwill be added soon).
Parsing of BGP attributes.
Basic analysis of UPDATE packets.
Connection state machine works.
More BGP. This time it connects, but the state machine still isn't complete.
Construction of BGP packets.
Started work on BGP. Wrote main part of the connection handling code.
Bare skeleton of the BGP.