Fact-checked by Grok 2 weeks ago

BIRD Internet Routing Daemon

BIRD Internet Routing Daemon is an open-source dynamic IP routing software designed for Unix-like operating systems, including Linux, FreeBSD, NetBSD, and OpenBSD, that manages routing tables and exchanges routing information with other routers to facilitate efficient packet forwarding across IPv4 and IPv6 networks. Primarily developed to provide a scalable and high-performance alternative to earlier routing daemons like routed and Zebra, BIRD supports a wide array of modern routing protocols such as BGPv4, OSPFv2, OSPFv3, RIPv2, RIPng, Babel, and BFD, enabling it to handle complex topologies in both wired and wireless environments. Originating as a student project at Charles University in Prague, BIRD has evolved into a robust tool maintained by CZ.NIC Labs, with its initial development led by contributors including Libor Forst and Pavel Machek. Released under the GNU General Public License, it features an extensible architecture that allows for multiple routing tables, policy-based routing, and inter-table route exchange via a virtual protocol called Pipe. Key capabilities include a powerful route filtering language for fine-grained control over route selection and propagation, support for IPv6 Router Advertisements, and integration with kernel routing tables for seamless operation. BIRD's configuration is handled through a human-readable , typically /etc/bird.conf, using a C-like syntax that defines protocols, filters, and tables, with runtime adjustments possible via the birdc command-line client or soft reconfiguration signals like . Renowned for its speed and efficiency, BIRD is deployed in major exchanges worldwide, where it excels in recalculating optimal routes across large-scale networks. As of the latest stable release, version 3.1.4, it continues to incorporate enhancements for emerging routing technologies while maintaining .

History

Origins and Early Development

The BIRD Internet Routing Daemon project originated in 1999 as a seminar project at the Faculty of Mathematics and Physics, in , . Initiated under the supervision of RNDr. Libor Forst, the effort was led by Martin Mares as the original author, with significant early contributions from Ondrej Filip. This academic endeavor aimed to address limitations in existing routing software by creating a new dynamic daemon tailored for systems. The project's core motivation was to develop a lightweight and portable daemon capable of supporting modern routing protocols, such as BGP, OSPF, and , while avoiding the perceived bloat and complexity of predecessors like gated and Zebra. was envisioned as a modular, extensible tool with a flexible interface and powerful route filtering capabilities, prioritizing efficiency and ease of use for network administrators. These goals reflected the need for a streamlined alternative in the evolving landscape of during the late 1990s. The first public release of , version 0.1, occurred on June 9, 2000, and was distributed under the GNU General Public License (GPL) version 2 or later. This initial version marked the project's transition from academic prototype to , quickly attracting interest from the networking community for its clean design and focus on essential functionality. Over the subsequent years, BIRD's development evolved beyond its university roots into a sustained initiative.

Major Milestones and Sponsorship

In 2008, CZ.NIC initiated sponsorship of 's development, revitalizing the project after a period of limited activity and enabling professional maintenance, regular releases, and significant expansions in functionality. This institutional support transformed from an academic endeavor into a robust, widely adopted open-source solution, with CZ.NIC Labs taking responsibility for ongoing enhancements and providing commercial support options ranging from 5,000 to 50,000 Euros annually. A key recognition of BIRD's impact came in 2010, when the project received the LINX Conspicuous Contribution Award from the London Exchange for advancing routing practices through its open-source contributions. The project's evolution is marked by major version transitions that addressed and integration challenges. The v1.x series, maintained until its end-of-life on December 31, 2023, culminated in version 1.6.8 released in September 2019 and relied on separate daemons for IPv4 () and IPv6 () operations. In December 2017, BIRD 2.0 introduced a unified integrating IPv4 and support within a single daemon, alongside a comprehensive rewrite incorporating microsecond timers, RPKI validation, and MPLS next-hop capabilities to enhance performance and in large-scale deployments. Subsequent advancements arrived with the v3.x series, beginning with the stable release of version 3.0.0 in December 2024, which implemented multithreading to better handle high-load environments and decoupled route exports from imports for improved efficiency. Development continues to be hosted on under CZ.NIC Labs, where community contributions are integrated via the bird-users mailing list and pull requests, ensuring collaborative evolution of the codebase. As of November 2025, the current stable release is 3.1.4, which includes critical bug fixes such as resolutions for multiple BGP crashes, building on prior enhancements like ASPA crash fixes in 3.1.3, to maintain reliability in production networks.

Features

Supported Protocols

supports a comprehensive set of routing protocols for both IPv4 and networks, enabling dynamic route exchange and management across diverse topologies. These protocols include mechanisms for inter-domain and intra-domain routing, link failure detection, and policy-based route manipulation, allowing to serve as a versatile routing daemon in various environments. The Border Gateway Protocol (BGP) is a core protocol in BIRD, used for inter-domain routing between autonomous systems. It implements BGP-4 as defined in RFC 4271, supporting both internal BGP (iBGP) for route propagation within an AS and external BGP (eBGP) for inter-AS exchanges. Key features include route reflection per RFC 4456 to reduce peering overhead, community attributes (standard per RFC 1997, extended per RFC 4360, and large per RFC 8092) for policy control, graceful restart per RFC 4724 for high availability, and multipath support per RFC 7911 for load balancing. BIRD's BGP implementation also handles 4-octet AS numbers per RFC 6793 and enables route selection based on attributes like local preference, AS path length, and multi-exit discriminator (MED). For intra-domain link-state routing, BIRD provides support, including OSPFv2 for IPv4 per RFC 2328 and OSPFv3 for per RFC 5340. These versions facilitate fast convergence through link-state advertisements and shortest path calculations using . Features encompass multi-area configurations, external route tagging, equal-cost multi-path (ECMP) routing, graceful restart per RFC 3623, and integration with various network types such as broadcast, point-to-point, non-broadcast multi-access (NBMA), and point-to-multipoint. BIRD's OSPF handles stub and not-so-stubby area (NSSA) support, virtual links, and for enhanced neighbor monitoring. BIRD implements the as a distance-vector protocol for simpler network environments, supporting RIPv2 for IPv4 per RFC 2453 and RIPng for IPv6 per RFC 2080. These versions use hop count as the metric and operate via periodic updates and split-horizon to prevent loops. Key aspects include options, interface-specific configurations, and compatibility with triggered updates for quicker convergence in small to medium-sized networks. Bidirectional Forwarding Detection (BFD) in BIRD provides rapid link and neighbor failure detection, complementing slower protocols like BGP and OSPF. It adheres to RFC 5880, supporting single-hop and multi-hop sessions with configurable detection multipliers and authentication mechanisms. BFD sessions monitor liveness through periodic control packets, enabling sub-second failure detection and route withdrawal to maintain network stability. For mesh and low-overhead routing, BIRD includes the Babel protocol, a loop-avoiding distance-vector routing scheme per RFC 8966. It optimizes for wired, wireless, and tunnel interfaces with RTT-based metrics and link quality estimation, supporting IPv6 source-specific routing (SSR) and split packet aggregation for reduced overhead in dynamic topologies. BIRD also supports static routes for manual route definitions, allowing fixed paths independent of dynamic updates. These can include (MPLS) labels and are essential for default gateways or policy overrides. IPv6 Router Advertisements (RA) enable host autoconfiguration and route propagation per RFC 4861 and RFC 4191. BIRD generates RAs on interfaces to announce prefixes, default routes, and DNS configurations per RFC 6106, with tunable parameters like advertisement intervals and lifetimes. The inter-table protocol (Pipe) facilitates by exchanging routes between multiple routing tables within . It allows bidirectional communication with import/export filters for route translation and manipulation, supporting complex scenarios like (VRF).

Configuration and Management Tools

employs a text-based , typically named bird.conf and located at /etc/bird.conf, which uses a declarative to define protocols, filters, and policies. This file supports comments via # or /* */ blocks, is case-sensitive, and organizes elements within curly braces {} for grouping options such as protocol instances and interface bindings. For instance, a basic kernel protocol might appear as:
protocol kernel {
    ipv4 { export all; };
    persist;
}
This syntax allows administrators to specify behaviors, such as enabling IPv4 export and ensuring persistence across reboots, without procedural scripting. Central to BIRD's configuration is its route filtering , which enables precise manipulation of routes based on attributes including AS paths, prefixes, and metrics. Filters are defined using the filter keyword followed by a name and a block of commands, such as import filter { if net = 192.0.2.0/24 then accept; reject; } to selectively accept or reject routes matching specific criteria. Policies can be applied to imports and exports, allowing complex decision-making like preferring routes with shorter AS paths or lower metrics, thereby enforcing routing policies declaratively within the configuration file. This supports expressions for attribute evaluation, ensuring flexibility in handling diverse routing scenarios without requiring external tools. For operational management, provides the birdc (CLI) tool, which communicates with the running daemon via a (default: bird.ctl) to facilitate monitoring, , and runtime modifications. Administrators can inspect status with commands like show protocols to view states or show route to display tables, aiding in real-time diagnostics. is enhanced through debug protocol bgp1 all to enable verbose logging of events such as state changes or packet exchanges, while runtime changes include enable bgp1 to activate a instance without daemon restart. The tool supports options like -r for read-only access, ensuring secure interactions in production environments. BIRD's soft reconfiguration feature allows dynamic reloading of the to minimize , achieved by sending a signal to the daemon or using birdc configure soft to apply changes while preserving existing routes and sessions where possible. This approach updates and policies without fully restarting affected protocols, as filter modifications do not trigger immediate route withdrawals unless explicitly required. For example, configure soft "new.conf" loads a revised file, integrating updates seamlessly into the active routing state. To support multiple routing instances or virtual routers, BIRD accommodates separate configuration files invoked via the -c option for each daemon process, enabling isolated environments such as (VRF) setups with vrf "name";. Additionally, configuration templates like template bgp { ... }; allow reuse of common settings across instances, such as shared neighbor policies, facilitating scalable management in multi-router deployments. This capability ensures that diverse domains can operate concurrently on the same host without interference.

Architecture and Design

Core Components

BIRD employs a modular designed to facilitate the and extension of protocols while maintaining a clean separation between the core functionality and protocol-specific logic. This structure consists of core modules handling essential operations like and , alongside library modules for shared utilities, and system-dependent modules for interfacing with the operating system. Protocol implementations are encapsulated in dedicated modules that operate independently, allowing for easy addition of new protocols without affecting the overall system. At the heart of BIRD's design is the , a central repository that stores all known and their attributes, serving as the convergence point for information from various modules. Protocol-specific modules exchange updates with the RIB through defined channels, enabling the daemon to aggregate and process from multiple sources such as BGP, OSPF, or static configurations. This internal RIB maintains comprehensive route details, including metrics and preferences, to support informed decision-making in route selection. The protocol acts as the bridge between BIRD's internal and the operating system's forwarding table, exporting selected routes to enable and importing kernel routes to incorporate external changes, such as those from connected interfaces. This handles synchronization tasks, including resolution of recursive next hops, ensuring consistency between the daemon's view of the network and the 's forwarding behavior. It is implemented in a system-dependent manner to accommodate different environments, promoting portability. BIRD's filter system provides a powerful for enforcement, allowing administrators to define rules that evaluate, modify, or reject routes during import, export, or selection processes. Written in a specialized, loop-free , filters operate at key hooks in the route lifecycle, such as pre-export stages, to apply criteria based on attributes like prefixes, communities, or metrics. This enables fine-grained control over route propagation and selection without altering protocol implementations. The daemon operates on a multi-threaded event-driven model, utilizing a custom scheduler to manage asynchronous events like updates, expirations, and changes, for efficiency on multi-core systems. operations are supervised by state machines that handle startup, shutdown, and state transitions, with integrated hooks for events and to facilitate and monitoring. This design ensures responsive handling of network dynamics in resource-constrained environments. To support advanced routing scenarios, accommodates multiple tables, including a primary table and configurable secondary ones, which enable virtual routing and routing instances (VRFs) for segmenting traffic domains. Each table operates independently within the RIB framework, allowing protocols to interact with specific tables and supporting features like across isolated contexts.

Routing Table Management

BIRD maintains multiple independent routing tables, each serving as a self-contained (RIB) for storing routes learned from various protocols. These tables are defined by nettype configurations, such as IPv4 or , allowing separation of routing domains like (VRF) instances. While BIRD's RIBs hold detailed route attributes, the (FIB) resides in the kernel, and synchronization ensures consistency between them. Route selection within each table employs a multi-stage that first compares route , which are configurable values assigned to routes based on their source or user policies. If preferences tie, the evaluates preferences of the originating instances, followed by protocol-specific , such as the shortest AS path in BGP or lowest cost in OSPF. User-defined policies, applied through and filters, further refine selection by modifying attributes like preference or before comparison. For instance, an filter can adjust preference values to prioritize certain routes. Sorted tables, enabled via the sorted option, maintain routes in preference or order for efficient retrieval. Synchronization between BIRD's RIBs and the kernel's FIB occurs through the Kernel protocol, which uses sockets on systems or routing sockets on BSD variants to import kernel routes into BIRD and export selected BIRD routes to the kernel. Import filters control which kernel routes enter BIRD's tables, while export filters determine which BIRD routes update the kernel FIB, enabling selective propagation based on criteria like prefix length or attributes. This bidirectional exchange supports features like route learning from directly connected interfaces and ensures BIRD can override or supplement kernel routes. The protocol facilitates route redistribution between BIRD's independent tables on the same , acting as a for inter-table communication with optional transformations. Routes exported from a source table via an export filter can be modified—such as altering metrics, preferences, or attributes—before import into a peer table through an import filter, allowing custom policy enforcement across routing domains. By default, Pipe retains original route sources and attributes unless filters intervene. BIRD handles route aggregation through dedicated protocols like the experimental (use with caution), which merges multiple routes into summarized prefixes based on user-defined expressions, such as network prefix or BGP length, to reduce table size while preserving essential attributes. Blackholing is supported by marking routes with the RTD_BLACKHOLE destination type, directing matching packets to silent discard without forwarding. Multipath enables equal-cost or weighted selection, with routes supporting multiple next hops assigned weights from 1 to 256; the protocol's merge paths option combines compatible paths into equal-cost multipath (ECMP) entries in the FIB, limited to a configurable maximum like 16 paths by default.

Deployments and Usage

Applications in Internet Exchange Points

BIRD serves as a route server in Internet Exchange Points (IXPs), enabling BGP peering among participants without requiring a full-mesh of individual sessions. This approach mirrors the role of route reflectors in iBGP, allowing the route server to and redistribute routes from multiple peers, thereby minimizing session overhead and simplifying for IXP members. The daemon is deployed in prominent IXPs, including the London Internet Exchange (LINX), in , and AMS-IX in , where it manages vast routing tables comprising millions of prefixes announced by hundreds of connected autonomous systems. These deployments support peak traffic volumes exceeding several terabits per second while maintaining stable operations across diverse arrangements. Compared to alternatives such as Quagga, BIRD offers superior scalability for environments with hundreds of BGP sessions, reduced CPU consumption when handling high prefix volumes, and quicker convergence during route updates. Quagga, for instance, exhibits instability beyond approximately 100 sessions and provides less robust BGP filtering capabilities. Since the early 2010s, European IXPs have increasingly adopted , replacing proprietary routing solutions and earlier open-source daemons like to enhance reliability and cost-effectiveness in . A notable case is LINX's full transition to on its LON1 route servers in , following 's due to scaling limitations, which has bolstered open-source integration across the IXP ecosystem. has been widely used in major European IXPs, such as and AMS-IX. BIRD's multithreaded version 3 supports high-performance processing in IXP settings, efficiently handling large-scale BGP update volumes on multi-core to ensure rapid route propagation and minimal downtime.

Integration in Software Distributions

BIRD is integrated into major distributions, including , , and , where it is available through official package repositories as pre-built binaries. These packages typically include version-specific variants such as bird for legacy releases and bird2 or bird3 for modern implementations, along with initialization scripts for seamless service management via tools like . In and -based systems, installation is facilitated by the Advanced Package Tool (APT), using commands like sudo apt install bird2 to deploy the daemon with default configurations and dependencies. users can similarly install it via the DNF package manager, ensuring compatibility with Red Hat-based environments. The daemon extends to BSD variants, with dedicated ports in FreeBSD's ports collection (e.g., net/bird2) and support for OpenBSD, enabling deployment on these systems through their respective package tools like pkg or pkg_add. BIRD's portability across Unix-like operating systems is achieved through a modular architecture that adapts to kernel-specific interfaces, such as Netlink for interacting with the Linux kernel's forwarding information base (FIB) and routing sockets for BSD kernels to synchronize routing tables. This design allows the software to function on a range of platforms without requiring extensive recompilation, provided GNU development tools are available. Community-maintained ports in these distributions handle ongoing updates and adaptations, ensuring alignment with upstream releases from CZ.NIC. For users requiring enhanced reliability, CZ.NIC provides commercial support options, including enterprise-level contracts for setup, custom development, training, and on-site assistance tailored to deployments. BIRD's lightweight footprint and cross-platform compatibility also make it suitable for and virtualized environments, such as virtual routers in containerized or hypervisor-based setups.

References

  1. [1]
    The BIRD Internet Routing Daemon Project
    The BIRD project aims to develop a fully functional dynamic IP routing daemon primarily targeted on (but not limited to) Linux, FreeBSD and other UNIX-like ...User's guide 2.0 · User's guide 3.0 · User's guide 1.6 · Support programme
  2. [2]
    BIRD 3.1.4 User's Guide
    Summary of each segment:
  3. [3]
    CZ-NIC/bird: BIRD Internet Routing Daemon - GitHub
    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 ...
  4. [4]
    BIRD Internet Routing Daemon
    BIRD Internet Routing Daemon is one of the fastest routing daemons in the world, tirelessly recalculating best routes between connected networks.
  5. [5]
    [PDF] Open Source Routing BoF - Summary - RIPE 65
    ‣ Project started 1999. • Started as seminar project at. Charles University, Prague ... http://bird.network.cz/. Page 4. Quagga. 4. ‣ Project ... bird.network.cz.
  6. [6]
    a/bird - LWN.net
    Date: Thu, 11 May 2000 19:13:47 +0200 From: Martin Mares <mj@suse.cz> To: linux-net@vger.rutgers.edu Subject: Announce: BIRD Routing Daemon Hello, ...
  7. [7]
    [PDF] BIRD Internet Routing Daemon
    Since 2008, BIRD is again in active development, sponsored by CZ. NIC. BIRD is a free / open source software, freely distributed under GNU General Public ...Missing: history milestones
  8. [8]
    BIRD manages routing at world's largest Internet Exchanges (BIRD)
    Apr 28, 2016 · BIRD is an internet routing daemon. It takes care of the administrative part of internet routing, which itself is carried out by the router (hardware).
  9. [9]
    News | BIRD Internet Routing Daemon - CZ.NIC
    May 11, 2010. LINX Awards 2010 goes to BIRD project!!! Thanks. May 4, 2010. BIRD used as a route server by European Commercial Internet Exchange (ECIX). Apr 9, ...Missing: Conspicuous Contribution
  10. [10]
    FreshPorts -- net/bird: Dynamic IP routing daemon (IPv4 version)
    net/bird: bird 1 was EOL since Dec 31, 2023 Last version of BIRD 1 was 1.6.8 released in September 2019. Replacement is net/bird2. 07 Sep 2022 21:58:51Missing: releases timeline
  11. [11]
    News Archive - The BIRD Internet Routing Daemon
    17.12.2024 New release 3.0.0! First stable mulithreaded version! 7.12.2024 New release 2.16! 22.3.2024 New release 2.15.Missing: history | Show results with:history
  12. [12]
    New release 3.0.0 | BIRD Internet Routing Daemon
    New release 3.0.0. Dec 17, 2024. Multithreaded execution. Decoupled exports from imports. Unified route attribute names. Slightly different log ...
  13. [13]
    labs / BIRD Internet Routing Daemon - GitLab - CZ.NIC
    Jun 3, 2013 · BIRD is an (not only) IP routing daemon. Please use bird-users@network.cz mailing list to contact developers, fill the issues, etc.
  14. [14]
  15. [15]
    BIRD 3.0.4 User's Guide - BIRD Internet Routing Daemon
    Authors: Ondrej Filip, Martin Mares, Maria Matejka, Ondrej Zajicek. This document contains user documentation for the BIRD Internet Routing Daemon project.
  16. [16]
    The BIRD Internet Routing Daemon Project
    3.1 Introduction. BIRD is configured using a text configuration file. Upon startup, BIRD reads prefix /etc/bird. conf (unless the -c command line option is ...
  17. [17]
    The BIRD Internet Routing Daemon Project
    The BIRD project aims to develop a fully functional dynamic IP routing daemon primarily targeted on (but not limited to) Linux, FreeBSD and other UNIX-like ...
  18. [18]
  19. [19]
    The BIRD Internet Routing Daemon Project
    ### Summary of BIRD's Core Components
  20. [20]
    BIRD 3.1.4 User's Guide - BIRD Internet Routing Daemon
    BIRD is an Internet Routing Daemon designed to avoid all of these shortcomings, to support all the routing technology used in the today's Internet.
  21. [21]
    The BIRD Internet Routing Daemon Project
    The BIRD project aims to develop a fully functional dynamic IP routing daemon primarily targeted on (but not limited to) Linux, FreeBSD and other UNIX-like ...Missing: Conspicuous Contribution Award 2010<|separator|>
  22. [22]
    2025 Guide to Open-Source Routing Daemons: FRR, BIRD, and ...
    Oct 9, 2025 · A 2024 guide to open-source BGP daemons: FRRouting vs. BIRD vs. ExaBGP. Understand their modern architectures and key features.
  23. [23]
  24. [24]
    IXP Peering Lab
    The Route Server for IXP 1 sits in AS 65534 and for IXP 2 it sits in AS ... The most popular Route Server software today is BIRD, used by most IXPs worldwide.
  25. [25]
    LINX News - LINX Community
    Historically, LINX has run BIRD on both LON1 route-servers since the removal of Quagga in 2020. While BIRD remains a highly reliable and widely used platform, ...
  26. [26]
    2/3 Internet Exchange Points… - Interoperable Europe Portal
    Jun 8, 2015 · In 2010, the software router was awarded the Conspicuous Contribution Award by LINX in London. “ BIRD has proved to have been of great ...
  27. [27]
    [PDF] Peering at Peerings: On the Role of IXP Route Servers - acm sigcomm
    Like all routing daemons, BIRD maintains a Routing Informa- tion Base (RIB) which contains all BGP paths that it receives from its peers – the Master RIB.
  28. [28]
    Comparing Open Source BGP Stacks - The Elegant Network
    Jul 26, 2021 · Compare some simple performance characteristics of three Open Source BGP stacks: BIRD, FRRouting, and Gobgp.Missing: IXP | Show results with:IXP
  29. [29]
    doc/migration-bird3.md · v3.0.0 · labs / BIRD Internet Routing Daemon
    Migrating from BIRD 2 to BIRD 3. With proper multithreading, we had to change not only the internal architecture, but also some user-visible behavior, ...
  30. [30]
    bird packages - Repology
    Summary: BIRD Internet Routing Daemon (OpenRC init scripts); Maintainer: mike@crute.us. License: GPL-2.0-or-later. Link(s):. Package page; Package sources ...
  31. [31]
    bird - Fedora Packages
    Subpackages. bird - BIRD Internet Routing Daemon; bird-doc - Documentation for BIRD Internet Routing Daemon. Sources on Pagure.
  32. [32]
    Debian -- Details of package bird2 in sid
    BIRD is an Internet routing daemon with full support for all the major routing protocols. It allows redistribution between protocols with a powerful route ...
  33. [33]
    BIRD Commercial Support
    CZ.NIC provides enterprise-level contract-based support for BIRD users who need or want to have a partner to rely on when it comes to BIRD setup or ...Missing: ports | Show results with:ports