<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/using-bird-bgp-daemon-as-a-bgp-route-reflector-bgp-labs-mubqz4d5x" -->

---
title: Using BIRD BGP Daemon as a BGP Route Reflector « BGP Labs
description: An expert-level lab exercise that walks through configuring the BIRD Internet Routing Daemon (version 2) as a BGP route reflector running in a container. The...
canonical: https://daily.dev/posts/using-bird-bgp-daemon-as-a-bgp-route-reflector-bgp-labs-mubqz4d5x
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Using BIRD BGP Daemon as a BGP Route Reflector « BGP Labs | daily.dev
og:description: An expert-level lab exercise that walks through configuring the BIRD Internet Routing Daemon (version 2) as a BGP route reflector running in a container. The...
og:url: https://daily.dev/posts/using-bird-bgp-daemon-as-a-bgp-route-reflector-bgp-labs-mubqz4d5x
og:image: https://api.daily.dev/og/posts/MUbqz4d5x.png
og:image:alt: Using BIRD BGP Daemon as a BGP Route Reflector « BGP Labs
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Using BIRD BGP Daemon as a BGP Route Reflector « BGP Labs

**[ipSpace.net Blog](https://daily.dev/sources/ipspace)** · 7 min read · 0 upvotes · 0 comments

## Summary

An expert-level lab exercise that walks through configuring the BIRD Internet Routing Daemon (version 2) as a BGP route reflector running in a container. The setup involves AS 65000 with three routers (PE1, PE2, CORE) and an RR node, with OSPF providing the IGP underlay. Key BIRD-specific configuration hints are provided: each BGP neighbor is a separate protocol instance, address families (channels) must be explicitly activated, and route export filters must be configured to advertise only BGP routes to IBGP neighbors. The lab runs via netlab and containerlab, and verification requires all routers to have working IBGP sessions with the RR and to see exactly two prefixes (from AS65100 and AS65101) in their BGP tables.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.ipspace.net/2025/10/bgp-labs-bird-rr>

## Questions this post answers

### How do I configure BIRD 2 to export BGP routes to IBGP neighbors without leaking OSPF or connected routes?

In BIRD 2, routes are not exported to a protocol by default — you must explicitly configure an export policy. Define a filter that matches BGP routes (checking the protocol source), then reference that filter in the protocol's export directive. Without this, BIRD will not advertise any routes to IBGP neighbors. Failing to activate the required address family channels causes BIRD to terminate sessions with an 'Unsupported Capability' notification.

_Engineers tuning BIRD route reflector configs track gotchas like these on daily.dev._

### How does BIRD 2 represent BGP neighbors and how do I check their session state?

BIRD 2 configures each BGP neighbor as a separate named protocol instance. Use 'show protocols' in birdc to list all instances and their states, or 'show protocols all <name>' for detailed session information including neighbor address, AS numbers, and last error. The birdc 'configure check' command validates config files before applying them with 'configure'.

_Networking engineers working with BIRD route reflectors find relevant lab walkthroughs on daily.dev._

## Similar posts on daily.dev

- [BGP-Free Core with SR-MPLS « ipSpace.net blog](https://daily.dev/posts/bgp-free-core-with-sr-mpls-ipspace-net-blog-h7kronzy3) · ipSpace.net Blog · 0 upvotes · 0 comments
- [Exposing OpenShift networks using BGP](https://daily.dev/posts/exposing-openshift-networks-using-bgp-avwlypif7) · Red Hat Developer · 0 upvotes · 0 comments

---

Tags: [#networking](https://daily.dev/tags/networking), [#bgp](https://daily.dev/tags/bgp)

[View this post on daily.dev](https://daily.dev/posts/using-bird-bgp-daemon-as-a-bgp-route-reflector-bgp-labs-mubqz4d5x)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Using BIRD BGP Daemon as a BGP Route Reflector « BGP Labs","url":"https://daily.dev/posts/using-bird-bgp-daemon-as-a-bgp-route-reflector-bgp-labs-mubqz4d5x","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/using-bird-bgp-daemon-as-a-bgp-route-reflector-bgp-labs-mubqz4d5x"},"datePublished":"2026-08-11T08:53:12.508Z","dateModified":"2026-08-11T09:08:19.796Z","description":"An expert-level lab exercise that walks through configuring the BIRD Internet Routing Daemon (version 2) as a BGP route reflector running in a container. The...","image":"https://media.daily.dev/image/upload/s--P4t4XyoV--/f_auto/v1722860399/public/Placeholder%2001","thumbnailUrl":"https://media.daily.dev/image/upload/s--P4t4XyoV--/f_auto/v1722860399/public/Placeholder%2001","isAccessibleForFree":true,"articleSection":"ipSpace.net Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ipSpace.net Blog","logo":"https://media.daily.dev/image/upload/s--xS7E82MT--/f_auto,q_auto/v1786438303/logos/ipspace?_a=BAMAMicg0","url":"https://daily.dev/sources/ipspace"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/using-bird-bgp-daemon-as-a-bgp-route-reflector-bgp-labs-mubqz4d5x","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"networking,bgp","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ipSpace.net Blog","item":"https://daily.dev/sources/ipspace"},{"@type":"ListItem","position":3,"name":"Using BIRD BGP Daemon as a BGP Route Reflector « BGP Labs"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/using-bird-bgp-daemon-as-a-bgp-route-reflector-bgp-labs-mubqz4d5x#faq","mainEntity":[{"@type":"Question","name":"How do I configure BIRD 2 to export BGP routes to IBGP neighbors without leaking OSPF or connected routes?","acceptedAnswer":{"@type":"Answer","text":"In BIRD 2, routes are not exported to a protocol by default — you must explicitly configure an export policy. Define a filter that matches BGP routes (checking the protocol source), then reference that filter in the protocol's export directive. Without this, BIRD will not advertise any routes to IBGP neighbors. Failing to activate the required address family channels causes BIRD to terminate sessions with an 'Unsupported Capability' notification. Engineers tuning BIRD route reflector configs track gotchas like these on daily.dev."}},{"@type":"Question","name":"How does BIRD 2 represent BGP neighbors and how do I check their session state?","acceptedAnswer":{"@type":"Answer","text":"BIRD 2 configures each BGP neighbor as a separate named protocol instance. Use 'show protocols' in birdc to list all instances and their states, or 'show protocols all <name>' for detailed session information including neighbor address, AS numbers, and last error. The birdc 'configure check' command validates config files before applying them with 'configure'. Networking engineers working with BIRD route reflectors find relevant lab walkthroughs on daily.dev."}}]}
```

