LinuxCommandLibrary

bird

Configure and manage routing daemons

TLDR

Start Bird with a specific configuration file

$ bird -c [path/to/bird.conf]
copy

Start Bird as a specific user and group
$ bird -u [username] -g [group]
copy

SYNOPSIS

bird [-c config-file] [-d] [-p] [-P pid-file] [-s socket] [-t table] [-u user] [-v] [-h]

PARAMETERS

-c, --config-file=filename
    Load configuration from given file

-d, --debug
    Enable debug mode; repeatable for more verbosity

-D, --debug-level=debug-level
    Set specific debug output level

-p, --foreground
    Run in foreground, don't daemonize

-P, --pid-file=filename
    Write PID to specified file

-s, --control=socket
    Use custom control socket path

-t, --table=table-name
    Activate only specified routing table

-u, --user=username
    Drop privileges to user after startup

-v, --version
    Display version info and exit

-h, --help
    Show usage summary and exit

-4
    IPv4-only mode

-6
    IPv6-only mode

-i, --interval=time
    Set periodic update interval

DESCRIPTION

BIRD is a scalable, open-source TCP/IP routing daemon designed for Unix-like operating systems. It implements dynamic routing protocols including BGPv4, OSPFv2/v3, RIPv2, Babel, and static routing. BIRD maintains routing tables and exchanges routes with other routers, supporting both IPv4 and IPv6.

Launched via a configuration file, it runs as a daemon, using kernel routing tables or forwarding via routing sockets. Key features include multiple routing tables, policy routing, extensive filtering, and route import/export between protocols. It's lightweight, highly configurable, and suitable for routers, gateways, or servers needing advanced routing.

BIRD excels in environments requiring full protocol compliance and performance, outperforming tools like Quagga/Zebra in some benchmarks. Configuration uses a C-like syntax for defining protocols, filters, and functions. Control it interactively with birdc client for monitoring and updates without restart.

CAVEATS

Requires raw socket access (root or CAP_NET_ADMIN); IPv6 needs kernel support. Debug mode logs extensively, impacting performance. Config errors prevent startup.

CONFIGURATION

Uses bird.conf with syntax like:
protocol bgp { ... }
filter { ... }

PROTOCOLS

BGP, OSPF, RIP, Babel, BFD, static, kernel, device protocols

HISTORY

Developed since 1998 by Martin Mares at Czech Technical University. Initial release supported BGP4; v1 (2000s) added OSPF/RIP. Split into v1 (stable) and v2 (new features like ECMP, PIM). v2.0.12 current as of 2023, with ongoing enhancements for BFD, EVPN.

SEE ALSO

birdc(8), quagga(8), frr(8), exabgp(8), routed(8)

Copied to clipboard