bird
Configure and manage routing daemons
TLDR
Start Bird with a specific configuration file
Start Bird as a specific user and group
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)


