My topology:
R1 <-> R2 <-> R3 <-> R4 <-> R5
Every router is in a different AS. R4 is based on IOS. All the other routers are based on CentOS7 (Bird internet routing dameon).
I have formed peers between all routers and wanted to distribute routes from R1 and R5.
R2, R3 and R4 got the routes from R1 and R2. R1 and R5 don't even receive them.
I am able to ping R1 and R5 from R2, R3, R4.
I don't know where my mistakes are and I am quite confused. Is there a limitation of route distribution in BGP between several ASes? Where is my mistake?
Edit:
Router config R1 (bird)
IP interface 1: 10.0.0.2/30 (to R2)
IP interface 2: 9.9.9.1/24
Bird config:
router id 10.0.0.2;
debug protcols all;
protocol kernel {
learn;
scan time 20;
import all;
export all;
}
protocol static {
route 9.9.9.0/24 via 9.9.9.1;
}
protocol bgp AS_to_R2 {
local as 100;
neighbor 10.0.0.1 as 200;
keepalive time 5;
import all;
export all;
direct;
}
Router config R2 (bird)
IP interface 1: 10.0.0.1/30 (to R1)
IP interface 2: 22.22.22.1/30 (to R3)
Bird config:
router id 22.22.22.1;
debug protcols all;
protocol kernel {
learn;
scan time 20;
import all;
export all;
}
protocol bgp AS_to_R3 {
local as 200;
neighbor 22.22.22.2 as 300;
keepalive time 5;
import all;
export all;
direct;
}
protocol bgp AS_to_R1 {
local as 200;
neighbor 10.0.0.2 as 100;
keepalive time 5;
import all;
export all;
direct;
}
Router config R3 (bird)
IP interface 1: 22.22.22.2/30 (to R2)
IP interface 2: 90.0.143.1/30 (to R4)
Bird config:
router id 90.0.143.1;
debug protcols all;
protocol kernel {
learn;
scan time 20;
import all;
export all;
}
protocol bgp AS_to_R2 {
local as 300;
neighbor 22.22.22.1 as 200;
keepalive time 5;
import all;
export all;
direct;
}
protocol bgp AS_to_R3 {
local as 300;
neighbor 90.0.143.2 as 400;
keepalive time 5;
import all;
export all;
direct;
}
Cisco Router Config (which is R4, simple route forwarding):
interface f0/0
ip address 90.0.143.2 255.255.255.248 (to R3)
no shut
interface f0/1
ip address 40.235.60.21 255.255.255.252 (to R5)
no shut
router bgp 400
bgp router-id 90.0.143.20
neighbor 90.0.143.2 remote-as 300 #(session to R3)
neighbor 40.235.60.22 remote-as 500 #(session to R5)
neighbor 90.0.143.2 activate
neighbor 40.235.60.20 activate
Router config R5 (bird)
IP interface 1(to R4): 40.235.60.22/30
IP interface 2: 4.4.4.1/30
Bird config:
router id 40.235.60.22;
debug protcols all;
protocol static {
route 4.4.4.0/30 via 4.4.4.1;
}
protocol kernel {
learn;
scan time 20;
import all;
export all;
}
protocol bgp AS_to_R4 {
local as 500;
neighbor 40.235.60.21 as 400;
keepalive time 5;
import all;
export all;
direct;
}