Bird Internet routing daemon

{{Short description|Routing software}}

{{infobox software

| name = BIRD Internet Routing Daemon

| released = {{release date and age|2000|6|9}}

| latest_release_version = 3.0.2

| latest_release_date = {{release date|2025|04|01}}{{cite web |url=https://gitlab.nic.cz/labs/bird/-/blob/stable-v3.0/NEWS |title=NEWS file |date=2 April 2025 | publisher=CZ.NIC}}

| operating_system = Unix-like

| genre = Routing

| license = GNU General Public License

| website = {{URL|https://bird.network.cz/}}

}}

BIRD (recursive acronym for BIRD Internet Routing Daemon{{Cite web |title=The BIRD Internet Routing Daemon Project |url=https://bird.network.cz/?get_doc&v=16&f=bird-1.html#ss1.1 |access-date=2022-04-27 |website=bird.network.cz}}) is an open-source implementation for routing Internet Protocol packets on Unix-like operating systems. It was developed as a school project at the Faculty of Mathematics and Physics, Charles University, Prague,{{cite conference |conference=NANOG-48 |year=2010 |url=https://www.nanog.org/meetings/nanog48/presentations/Monday/Filip_BIRD_final_N48.pdf |title=BIRD Internet Routing Daemon |author=Ondrej Filip |publisher=NANOG}} and is distributed under the GNU General Public License.

BIRD supports Internet Protocol version 4 and version 6 by running separate daemons.{{cite web|title=BIRD FAQ|url=https://gitlab.labs.nic.cz/labs/bird/wikis/FAQ|work=BIRD source code|accessdate=20 November 2013}} It establishes multiple routing tables,{{cite web|url=https://vincent.bernat.ch/en/blog/2011-lab-site-to-site-vpn|title=Network lab: site to site VPN|author=Vincent Bernat|date=25 June 2011|accessdate=2013-02-22}} and uses BGP, RIP, and OSPF routing protocols, as well as statically defined routes. Its design differs significantly from GNU Zebra, Quagga and FRRouting. Currently BIRD is included in many Linux distributions, such as Debian,[http://packages.debian.org/stretch/bird Debian - Details of package bird in squeeze]. Packages.debian.org. Retrieved on 2014-05-30. Ubuntu{{Cite web|url=http://packages.ubuntu.com/hardy/bird|title = Ubuntu – Error}} and Fedora.[http://koji.fedoraproject.org/koji/packageinfo?packageID=11011 bird | Package Info | koji]. Koji.fedoraproject.org. Retrieved on 2014-05-30.

BIRD is used in several Internet exchanges, such as the London Internet Exchange (LINX), LONAP,{{cite web|last=Davidson|first=Andy|title=LONAP's Route Servers|url=http://www.uknof.org.uk/uknof13/Davidson-LONAP_routeservers.pdf|publisher=UKNOF13|accessdate=30 July 2011| date = 2009-05-28|archive-url=https://web.archive.org/web/20090620091552/http://www.uknof.org.uk/uknof13/Davidson-LONAP_routeservers.pdf|archive-date=2009-06-20}} DE-CIX{{cite web | url = http://www.de-cix.net/downloads/DE-CIX-Newsletter02-2010.pdf | title = DE-CIX news | date = February 2010 | url-status = dead | archiveurl = https://web.archive.org/web/20110928135921/http://www.de-cix.net/downloads/DE-CIX-Newsletter02-2010.pdf | archivedate = 2011-09-28 }} and MSK-IX{{cite web | url = http://www.msk-ix.ru/network/lookingglass.html | title = MSK-IX :: Looking glass}} as a route server, where it replaced Quagga because of its scalability issues.{{cite web

| url = http://www.uknof.org.uk/uknof15/Preston-Routeserver.pdf

| first = Tim | last = Preston

| title = BIRD Route Server at LINX | date = 2010-01-21

| archive-url=https://web.archive.org/web/20110721233547/http://www.uknof.org.uk/uknof15/Preston-Routeserver.pdf

| archive-date=2011-07-21

}} According to the 2012 Euro-IX survey,{{cite web | url = https://www.euro-ix.net/documents/1024-Euro-IX-IXP-Report-pdf | archive-url = https://web.archive.org/web/20140525195833/https://www.euro-ix.net/documents/1024-Euro-IX-IXP-Report-pdf | url-status = dead | archive-date = 2014-05-25 | title = European Internet Exchange Association 2011 Report on European IXPs }} BIRD is the most used route server amongst European Internet exchanges.

In 2010, CZ.NIC, the current sponsor of BIRD development, received the LINX Conspicuous Contribution Award for contribution of BIRD to the advancement in route server technology.{{cite web | url = https://www.linx.net/publicity/linxaward.html | title = LINX Conspicuous Contribution Award | url-status = dead | archiveurl = https://web.archive.org/web/20110701124954/https://www.linx.net/publicity/linxaward.html | archivedate = 2011-07-01 }}

Design

{{unref section|date=June 2022}}

File:RIPE86_Rotterdam_2023_May_17_25_17_344000.jpeg

BIRD implements an internal routing table to which the supported protocols connect. Most of these protocols import network routes to this internal routing table and also export network routes from this internal routing table to the given protocol. This way information about network routes is exchanged among different routing protocols.

Using the kernel protocol this internal routing table may be connected to the actual kernel routing table. This allows BIRD to export network routes from its internal routing table to the kernel routing table and optionally also learn about network routes from the kernel routing table (created externally by the administrator or by other means) and import these routes into its internal routing table.

Filters may be used to control what network routes are imported into the internal routing table or exported to the given protocol. Network routes may be accepted, rejected or modified using filters.

BIRD also supports multiple internal routing tables and multiple instances of supported protocol types. Protocols may be connected to different internal routing tables, these internal routing tables may exchange information about network routes they contain (controlled by filters) and each of these internal routing tables may be connected to a different kernel routing table thus allowing for policy routing.

Configuration is done by editing the configuration file and telling BIRD to reconfigure itself. BIRD changes to the new configuration without the need to restart the daemon itself and restarts reconfigured protocols only if necessary. There is also an option to do a soft reconfiguration, which doesn't restart protocols but may leave some stale information such as changed filters not filtering out already exported network routes.

See also

{{Portal|Free and open-source software}}

References

{{reflist}}