İçeriğe Atla
Mustafa Erbay
Tutorials · 9 min read · görüntülenme Türkçe oku
100%

Designing a Route Reflector Lab with Bird 2

Building a Bird 2-based route reflector laboratory to safely experiment with internal BGP topologies.

Designing a Route Reflector Lab with Bird 2 — cover image

Learning route reflector behavior in production BGP topologies is expensive. Especially in spine-leaf, edge or data-center transitions, a small reflection mistake can produce a wide routing impact. A route reflector lab built with Bird 2 is a powerful method to test these behaviors at low cost and to clearly observe the decision logic.

Bird 2 route reflector lab diagram

Lab objective

In this guide we will build a simple BGP laboratory composed of three client routers and two route reflector nodes. The aim is not to mimic production scale; it is to validate these behaviors:

  • Route reflector cluster structure
  • The difference between client and non-client sessions
  • Verification of route propagation
  • Adjacency and route behavior during failover

You can build the lab on containers or VMs. Bird 2 is lightweight, so it runs comfortably in small test environments.

Topology

The example topology proceeds with the following logic:

  1. rr1 and rr2 act as route reflectors.
  2. leaf1, leaf2 and edge1 play the client router role.
  3. All nodes establish BGP adjacency on the same private lab network.

A simple addressing example:

rr1   10.10.0.11   AS 65000
rr2   10.10.0.12   AS 65000
leaf1 10.10.0.21   AS 65000
leaf2 10.10.0.22   AS 65000
edge1 10.10.0.31   AS 65000

In this example we use iBGP. That is enough to see the route reflector logic.

Bird 2 installation

On a Debian or Ubuntu-based system:

sudo apt update
sudo apt install -y bird2

After the service files are installed, the main configuration is typically located under /etc/bird/bird.conf. In the early stages, generating a separate file for each node makes it more readable.

Sample configuration for a route reflector node

A simple example on rr1:

router id 10.10.0.11;

protocol device {}
protocol direct {}

template bgp RR_CLIENT {
  local as 65000;
  rr client;
  ipv4 {
    import all;
    export all;
  };
}

protocol bgp leaf1 from RR_CLIENT {
  neighbor 10.10.0.21 as 65000;
}

protocol bgp leaf2 from RR_CLIENT {
  neighbor 10.10.0.22 as 65000;
}

protocol bgp edge1 from RR_CLIENT {
  neighbor 10.10.0.31 as 65000;
}

A similar structure can be set up for the second reflector. Running two reflectors matters because it lets you observe how routes behave on a single-node failure.

Client router example

A simple client configuration for leaf1:

router id 10.10.0.21;

protocol device {}
protocol direct {}
protocol static {
  route 192.168.21.0/24 via "lo";
}

template bgp RR_PEER {
  local as 65000;
  ipv4 {
    import all;
    export where source = RTS_STATIC;
  };
}

protocol bgp rr1 from RR_PEER {
  neighbor 10.10.0.11 as 65000;
}

protocol bgp rr2 from RR_PEER {
  neighbor 10.10.0.12 as 65000;
}

This definition lets the client advertise its own static route to the reflectors.

Verification steps

After configuration, run these checks:

sudo birdc show protocols
sudo birdc show route
sudo birdc show route all 192.168.21.0/24

Expected behaviors:

  • All BGP sessions should appear Established
  • leaf2 and edge1 should learn the prefix originated by leaf1 from the reflectors
  • On the reflector node, route origin and next-hop information should be readable

You can then stop the rr1 service and test route continuity through rr2.

Extensions that make the lab valuable

After the basic flow runs, adding the following experiments to the lab is useful:

  • Local-pref differences
  • Route-map or filter usage
  • next hop self behavior
  • Non-client distribution with a peer outside the reflector

These experiments deliver far clearer insight than reading documentation when transitioning to production.

Conclusion

A route reflector lab built with Bird 2 makes BGP behavior visible in a small, controllable environment. Especially before enterprise network modernization, data-center segmentation or edge-routing decisions, this kind of lab reduces costly surprises. What matters is not building a perfect lab, but being able to safely observe why a given route decision occurred.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Comments

Server-side AI Moderation

Comments are AI-moderated server-side and stored permanently.

?
0/2000

Server-side AI moderation

✉️ Free · No spam · Unsubscribe anytime

Curated digest, hand-picked by me — not the AI

Once a week: the most important post of the week, behind-the-scenes notes, and a "what I actually used this week" section. Less noise, more signal.

  • 📌
    Best of the week Single most-worth-reading post
  • 🔧
    Toolbox notes Real tools I used this week
  • 🧠
    Behind-the-scenes Notes that don't make it to blog

We don't spam. Unsubscribe anytime. · Tracked only by Umami (self-hosted, no Google).

Your Reading Stats

0

Posts Read

0m

Reading Time

0

Day Streak

-

Favorite Category

Related Posts