mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-08 12:18:42 +00:00
The BIRD project aims to develop a fully functional dynamic IP routing daemon.
https://bird.network.cz
8b06a4d8af
The seqno request retransmission handling was tracking the destination that a forwarded request was being sent to and always retransmitting to that same destination. This is unnecessary because we only need to retransmit requests we originate ourselves, not those we forward on behalf of others; in fact retransmitting on behalf of others can lead to exponential multiplication of requests, which would be bad. So rework the seqno request tracking so that instead of storing the destination of a request, we just track whether it was a request that we forwarded on behalf of another node, or if it was a request we originated ourselves. Forwarded requests are not retransmitted, they are only used for duplicate suppression, and for triggering an update when satisfied. If we end up originating a request that we previously forwarded, we "upgrade" the old request and restart the retransmit counter. One complication with this is that requests sent in response to unfeasible updates (section 3.8.2.2 of the RFC) have to be sent as unicast to a particular peer. However, we don't really need to retransmit those as there's no starvation when sending such a request; so we just change such requests to be one-off unicast requests that are not subject to retransmission or duplicate suppression. This is the same behaviour as babeld has for such requests. Minor changes from committer. |
||
---|---|---|
client | ||
conf | ||
distro | ||
doc | ||
filter | ||
lib | ||
misc | ||
nest | ||
proto | ||
sysdep | ||
test | ||
tools | ||
.dir-locals.el | ||
.gitignore | ||
.gitlab-ci.yml | ||
aclocal.m4 | ||
bird-gdb.py | ||
bird.conf | ||
configure.ac | ||
INSTALL | ||
Makefile.in | ||
NEWS | ||
README |
BIRD Internet Routing Daemon Home page http://bird.network.cz/ Mailing list bird-users@network.cz (c) 1998--2008 Martin Mares <mj@ucw.cz> (c) 1998--2000 Pavel Machek <pavel@ucw.cz> (c) 1998--2008 Ondrej Filip <feela@network.cz> (c) 2009--2019 CZ.NIC z.s.p.o. ================================================================================ The BIRD project aims to develop a dynamic IP routing daemon with full support of all modern routing protocols, easy to use configuration interface and powerful route filtering language, primarily targeted on (but not limited to) Linux and other UNIX-like systems and distributed under the GNU General Public License. What do we support ================== o Both IPv4 and IPv6 o Multiple routing tables o Border Gateway Protocol (BGPv4) o Routing Information Protocol (RIPv2, RIPng) o Open Shortest Path First protocol (OSPFv2, OSPFv3) o Babel Routing Protocol (Babel) o Bidirectional Forwarding Detection (BFD) o IPv6 router advertisements o Static routes o Inter-table protocol o Command-line interface allowing on-line control and inspection of status of the daemon o Soft reconfiguration, no need to use complex online commands to change the configuration, just edit the configuration file and notify BIRD to re-read it and it will smoothly switch itself to the new configuration, not disturbing routing protocols unless they are affected by the configuration changes o Powerful language for route filtering, see doc/bird.conf.example o Linux, FreeBSD, NetBSD and OpenBSD ports How to install BIRD =================== o From standard distribution package of your OS (recommended) o From official binary packages for Debian and Red Hat Linux ftp://bird.network.cz/pub/bird/debian/ ftp://bird.network.cz/pub/bird/redhat/ o From source code of the latest stable release version ftp://bird.network.cz/pub/bird/ o From current development code in Git repository https://gitlab.labs.nic.cz/labs/bird/ See the file INSTALL for information about installation from source code. Documentation ============= Online documentation is available at http://bird.network.cz/?get_doc or as HTML files in the doc directory, you can install it by `make install-docs' and rebuild it by `make docs', but you'll need SGMLtools and LaTeX to be installed on your machine. You can also download a neatly formatted PDF version as a separate archive (bird-doc-*.tar.gz) from ftp://bird.network.cz/pub/bird/ User support ============ If you want to help us debugging, enhancing and porting BIRD or just lurk around to see what's going to develop, feel free to subscribe to the BIRD users mailing list bird-users@network.cz, just send `subscribe' to bird-request@network.cz. Bug reports, suggestions, feature requests and code are welcome! We don't use gitlab issues for reporting, sorry. Subscribe: http://bird.network.cz/mailman/listinfo/bird-users/ Archive: http://bird.network.cz/pipermail/bird-users/ Licence ======= This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA History ======= BIRD development started as a student project at the Faculty of Math and Physics, Charles University, Prague, Czech Republic under supervision of RNDr. Libor Forst <forst@cuni.cz>. BIRD has been developed and supported by CZ.NIC z.s.p.o. http://www.nic.cz/ since 2009. Good Luck and enjoy the BIRD :) The BIRD Team