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] [-D level] [-p] [-s socket_file] [-u user] [-g group]
PARAMETERS
-c config_file
Specifies an alternate configuration file to load instead of the default (e.g., /etc/bird/bird.conf).
-d
Starts the daemon in debug mode, writing verbose output to stderr. Useful for troubleshooting.
-D level
Sets the debugging level. Higher levels (e.g., 5 or 6) provide more detailed output.
-p
Parses and checks the syntax of the specified configuration file and then exits without starting the daemon. Essential for configuration validation.
-s socket_file
Specifies the path to the control socket file that birdc will use to communicate with the daemon. Defaults to /var/run/bird.ctl.
-u user
Changes the daemon's effective user ID after initialization for enhanced security, dropping root privileges.
-g group
Changes the daemon's effective group ID after initialization for enhanced security, dropping root privileges.
DESCRIPTION
The bird command refers to the BIRD (Border Gateway Protocol, Interior Gateway Protocol) routing daemon. It's a powerful and highly configurable daemon designed to implement and manage various dynamic routing protocols such as BGPv4, RIPv2, OSPFv2, and OSPFv3 on Unix-like operating systems, primarily Linux.
BIRD handles routing tables, exchanges routing information with other routers, and applies complex routing policies based on its configuration. It supports both IPv4 and IPv6 routing.
While bird itself is the daemon process that runs in the background, its primary interaction and control are typically performed via the birdc client command, which communicates with the daemon through a control socket.
CAVEATS
Configuring bird requires substantial knowledge of networking, routing protocols (BGP, OSPF, RIP), and its specific configuration language. Errors in configuration can lead to network instability, routing blackholes, or loops. Most ongoing interaction and management of the running daemon occur via the birdc client, not direct command-line invocation of bird itself after initial startup.
CONTROL WITH BIRDC CLIENT
The bird daemon is primarily controlled and managed using the birdc command-line client. birdc connects to the daemon's control socket to issue commands such as 'show protocols', 'show routes', 'configure', 'reload', 'restart', and 'quit', allowing real-time monitoring and configuration changes.
CONFIGURATION LANGUAGE
bird uses its own powerful domain-specific configuration language, typically defined in the bird.conf file. This language enables highly granular control over routing policies, protocol settings, filtering rules, and more, providing immense flexibility for complex routing scenarios.
HISTORY
The BIRD project originated around 1998-1999 at the Faculty of Mathematics and Physics, Charles University in Prague, Czech Republic. It was developed to provide a robust, open-source routing daemon for the Linux platform, emphasizing modularity, extensibility, and advanced policy-based routing capabilities. It has since become a widely adopted solution in various network environments, including Internet Exchange Points (IXPs) and enterprise networks.