1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

416 Commits

Author SHA1 Message Date
943478b00f Basic VRF support
Add basic VRF (virtual routing and forwarding) support. Protocols can be
associated with VRFs, such protocols will be restricted to interfaces
assigned to the VRF (as reported by Linux kernel) and will use sockets
bound to the VRF. E.g., different multihop BGP instances can use diffent
kernel routing tables to handle BGP TCP connections.

The VRF support is preliminary, currently there are several limitations:

- Recent Linux kernels (4.11) do not handle correctly sockets bound
to interaces that are part of VRF, so most protocols other than multihop
BGP do not work. This will be fixed by future kernel versions.

- Neighbor cache ignores VRFs. Breaks config with the same prefix on
local interfaces in different VRFs. Not much problem as single hop
protocols do not work anyways.

- Olock code ignores VRFs. Breaks config with multiple BGP peers with the
same IP address in different VRFs.

- Incoming BGP connections are not dispatched according to VRFs.
Breaks config with multiple BGP peers with the same IP address in
different VRFs. Perhaps we would need some kernel API to read VRF of
incoming connection? Or probably use multiple listening sockets in
int-new branch.

- We should handle master VRF interface up/down events and perhaps
disable associated protocols when VRF goes down. Or at least disable
associated interfaces.

- Also we should check if the master iface is really VRF iface and
not some other kind of master iface.

- BFD session request dispatch should be aware of VRFs.

- Perhaps kernel protocol should read default kernel table ID from VRF
iface so it is not necessary to configure it.

- Perhaps we should have per-VRF default table.
2017-09-06 17:38:48 +02:00
08b6a617e8 RAdv: Some style nitpicks 2017-08-30 16:34:15 +02:00
ec7d6a506e RAdv: Configure how long a dead prefix is advertised 2017-08-30 16:34:15 +02:00
33b6c292c3 BGP: Allow to specify interface for regular sessions
This may be useful if multple interfaces share the same network range.

Thanks to Fritz Grimpen for the original patch.
2017-03-14 12:56:47 +01:00
1950a479c0 BGP: Allow exchanging LOCAL_PREF with eBGP peers
Adds option 'allow bgp_local_pref' to override the usual restriction of
LOCAL_PREF on eBGP sessions.

Thanks to Lennert Buytenhek for the patch.
2017-02-23 16:32:07 +01:00
9be12a7d95 Doc: Fix RIP example
Thanks to Steve Leung for the bugreport.
2017-02-19 11:25:16 +01:00
e03dc6a984 BFD: Authentication
Implement BFD authentication (part of RFC 5880). Supports plaintext
passwords and cryptographic MD5 / SHA-1 authentication.

Based on former commit from Pavel Tvrdik
2016-11-02 17:53:22 +01:00
64385aee0c DOC: Password algorithm option 2016-11-02 16:23:53 +01:00
9df52a98e2 Doc: Change debug to { flag1|flag2|flag3 [, ...] } style
Thanks to Micah Anderson for bug report and Ondrej Zajicek for the idea!
2016-10-12 12:48:29 +02:00
3d28f01453 Doc: Fix deprecated unescaped braces in perl script
This commit should fix warning `make docs'

./sgml2html bird.sgml Unescaped left brace in regex is deprecated,
  passed through in regex; marked by <-- HERE in m/\\nameurl{ <-- HERE
    (.*)}{(.*)}/ at fmt_latex2e.pl line 287.
2016-10-12 09:52:55 +02:00
7935b9d212 Doc: Add tag for links to RFCs 2016-10-11 17:43:03 +02:00
9c20a8b7ae Doc: Fix inline <htmlurl></htmlurl>
Don't make space before or after link name.
2016-10-11 17:43:03 +02:00
963929df02 Doc: Do not use symlinks for files 2016-10-11 17:43:03 +02:00
70104ef4fb Doc: Generate one-sided version
This removes jumping offset for odd and even pages for binding book.
2016-10-11 17:43:03 +02:00
f9bd11c337 Doc: Use [table t] or [table name] 2016-10-11 17:43:03 +02:00
74d76f6c38 Doc: Fix unnecessary special chars 2016-10-11 17:43:03 +02:00
f15dc68138 Doc: Enable break lines in <tag></tag> 2016-10-11 17:43:03 +02:00
f5952c7343 Doc: Daemon command-line options alphabet order 2016-10-11 17:43:03 +02:00
22558357d4 Doc: Add command-line options --version, --help 2016-10-11 17:43:03 +02:00
b9864aa871 Doc: Add labels to all chapters and options 2016-10-11 17:43:03 +02:00
a2df7c0303 Doc: Generate clickable PDF 2016-10-11 17:41:33 +02:00
9faf72c8cc Doc: Fix whitespaces 2016-10-11 17:41:33 +02:00
cec4a73ccb Doc: Documentation for large communities 2016-10-04 00:31:43 +02:00
5bf35a9aee Docs: fix BFD label
BFD headline will appear in Table of Contents again.
2016-09-29 13:38:04 +02:00
768d5e1058 Add !~ operator to filter grammar 2016-09-21 13:35:52 +02:00
6e75d0d27f KRT: Add krt_scope attribute
Add a new route attribute, krt_scope, to expose the Linux kernel route
scope. Constants from /etc/iproute2/rt_scopes (prefixed by "ips_") are
expected to be used with the attribute. Both import and export are
supported.

Also, the patch fixes device route export to the kernel, by setting link
scope automatically.
2016-09-19 12:29:56 +02:00
4adcb9df1b KRT: Add kernel metric protocol option
Kernel routes with different metrics do not clash with each other,
therefore using dedicated metric value is a reliable way to avoid
overwriting routes from other sources (e.g. kernel device routes).

Although kernel route metric could already be set as a route attribute by
filters, that is not consistent with the way how Linux kernel handles
route metric - not just a route attribute, but a part of a route key.
2016-09-15 14:59:06 +02:00
0a21c21112 Doc: Fix password ID option description
Thanks to Alexander Velkov for noticing it
2016-07-19 15:40:57 +02:00
12640c1499 Babel: Documentation updates
This updates the documentation to correctly mention Babel when protocols
are listed, and adds examples and route attribute documentation to the
Babel section of the docs.

Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
2016-07-19 12:16:51 +02:00
a0fe1944d1 Add AS# ranges to bgpmask. 2016-06-08 16:22:44 +02:00
90dc0f0843 Small typo in documentation example, submitted by Felix Eckhofer. 2016-06-04 12:38:06 +02:00
fff7498d6a User Doc: Fix several typing error 2016-05-12 13:37:23 +02:00
1e3810f9f8 Doc: Minor fix 2016-04-29 13:25:46 +02:00
937e75d8f1 Add the Babel routing protocol (RFC 6126)
This patch implements the IPv6 subset of the Babel routing protocol.
Based on the patch from Toke Hoiland-Jorgensen, with some heavy
modifications and bugfixes.

Thanks to Toke Hoiland-Jorgensen for the original patch.
2016-04-28 18:01:40 +02:00
a7baa09862 BSD: Add the IPsec SA/SP database entries control
Add code for manipulation with TCP-MD5 keys in the IPsec SA/SP database
at FreeBSD systems. Now, BGP MD5 authentication (RFC 2385) keys are
handled automatically on both Linux and FreeBSD.

Based on patches from Pavel Tvrdik.
2016-04-13 14:37:09 +02:00
43fc6bb0fb Documentation update 2016-04-11 00:41:10 +02:00
e90dd656cc Direct: Implement check link for direct protocol
When enabled, direct protocol generates routes only if the underlying
link state is up.
2016-04-08 15:11:21 +02:00
f2ae2badff Main: Add local option
Add option that changes default paths for config file and control socket
to the current working directory.
2016-04-07 12:39:49 +02:00
0a505706bc Minor changes in documentation 2016-03-23 02:21:42 +01:00
79a4f74a65 BGP: Add documentaion for extended messages 2016-03-17 18:40:54 +01:00
9c9cc35c02 Filter: Implement last_nonaggregated operator on bgp_path 2016-02-16 17:33:58 +01:00
8465dccb06 Major RIP redesign
The new RIP implementation fixes plenty of old bugs and also adds support
for many new features: ECMP support, link state support, BFD support,
configurable split horizon and more. Most options are now per-interface.
2015-10-05 13:18:10 +02:00
6683d42d5b Documentation update 2015-07-18 19:05:11 +02:00
06e0d1b692 BGP: Extended messages support
Implements draft-ietf-idr-bgp-extended-messages-10, for now
undocumented and with temporary private capability number.
2015-07-18 13:38:21 +02:00
8d9eef1771 BGP multipath support
Kernel option 'merge paths' allows to merge routes exported to kernel
protocol (currently BGP and static routes) to multipath routes.
2015-06-08 02:24:08 +02:00
9fdf9d29b6 KRT: Add support for plenty of kernel route metrics
Linux kernel route metrics (RTA_METRICS netlink route attribute) are
represented and accessible as new route attributes:

krt_mtu, krt_window, krt_rtt, krt_rttvar, krt_sstresh, krt_cwnd, krt_advmss,
krt_reordering, krt_hoplimit, krt_initcwnd, krt_rto_min, krt_initrwnd,
krt_quickack, krt_lock_mtu, krt_lock_window, krt_lock_rtt, krt_lock_rttvar,
krt_lock_sstresh, krt_lock_cwnd, krt_lock_advmss, krt_lock_reordering,
krt_lock_hoplimit, krt_lock_rto_min, krt_feature_ecn, krt_feature_allfrag
2015-05-12 16:42:22 +02:00
9aed29e605 BGP: Enhanced route refresh (RFC 7313) support
Also hook feed_done is renamed to feed_end.
2015-03-29 18:29:49 +02:00
8bcb5fb1e8 Implement latency tracking, internal event log and watchdog 2015-03-02 09:41:14 +01:00
6cf72d7ad7 Rename BGP option 'start delay' to 'connect delay'
Also update log message for error-triggered startup delay.
2015-02-22 17:21:54 +01:00
a1beb8f3ee Relax BGP neighbor parameter
Permit specifying neighbor address, AS number and port independently.
Add 'interface' parameter for specifying interface for link-local
sessions independently.

Thanks to Alexander V. Chernikov for the original patch.
2015-02-22 13:50:58 +01:00