BGP Cluster
Makalemde sizler ISP-CP arasında gerçekleştirilen ve komşuluk ilişkilerine dayandırılmış cihaz ve hat yedekli istek paketlerinin nereden ve hangi öncelikte geleceği belirtilebilen. Aktif – Aktif çalıştırılan ve geçişler aşamasında her hangi bir paket kaybına mahal vermeyen BGP protokolü ile tasarlanmış Gelişmiş/Üst seviye ağ topolojisini paylaşmaktayım. Bu noktada Türkçe bir dokümanada ihtiyaç olduğu için sizlerle paylaşmak istedim.
Öncelikle kurmuş olduğum topoloji noktasında sizlere bilgilendirme yapacağım.
Ağ Topolojisi;
Topolokide iki adet ISP üzerinden Müşteri lokasyonuna fiziksel olarak devrelerin bağlandığı görülmektedir. Topoloji Sanal bir ortamda hazırlandı. Tamamında Privite IP adresler kullanılmıştır bu yüzden IP adreslerinde olan dış bacaklardaki 10’lu blokları Public IP adresmiş gibi düşünmemiz gerekiyor.
Topolojide ISP-A önceliklendirilmiştir istek ve cevap paketleri bu servis sağlayıcı tarafından gönderilip alınmaktadır. Sizler aşağıdaki konfigürasyonlarda ister ISP-B önceliklendirebilirsiniz isterseniz geliş ve gidiş yollarını gelişmiş yönlendirmeler ile ayırabilirsiniz.
Konfigürasyon;
Öncelikle elimde Cisco cihaz bulunmadığı için konfigürasyonu vyos ile yaptığımı belirtmek isterim. Sintax bir birine yakın olduğu için sizler rahatlıkla Ciscoya uyarlayabilirsiniz.
Topolojimizde yer alan Other IPS Router cihazı konfigürasyonu aşağıdakidir;
ISP_Other;
interfaces {
ethernet eth0 {
address 10.11.12.100/24
duplex auto
hw-id 08:00:27:b9:b0:9d
smp_affinity auto
speed auto
}
! eth0 internet ortamı ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth1 {
address 10.1.1.1/30
duplex auto
hw-id 08:00:27:84:78:38
smp_affinity auto
speed auto
}
! eth1 ISP- A Ext Router ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth2 {
address 20.1.1.1/30
duplex auto
hw-id 08:00:27:32:5d:41
smp_affinity auto
speed auto
}
! eth2 ISP- B Ext Router ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth3 {
duplex auto
hw-id 08:00:27:27:6e:39
smp_affinity auto
speed auto
}
loopback lo {
address 1.1.1.1/32
}
}
protocols {
bgp 100 {
neighbor 10.1.1.2 {
remote-as 101
weight 200
}
! AS 100 ISP-Other’ın komşuları ile görüşeceği BGP tanımı.
!remote-as 101 ilk komşumuz ve önceliklendirilmiştir.
neighbor 20.1.1.2 {
remote-as 201
weight 100
}
! remote-as 201 ikinci öncelikli komşumuz.
network 0.0.0.0/0 {
}
parameters {
router-id 1.1.1.1
}
}
static {
route 0.0.0.0/0 {
next-hop 10.11.12.1 {
}
}
}
}
!default route.
ISP_Other : show ip bgp;
BGP table version is 0, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
r RIB-failure, S Stale, R Removed
Origin codes: i – IGP, e – EGP, ? – incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.11.12.1 0 32768 i
* 10.1.3.0/30 20.1.1.2 100 201 202 i
*> 10.1.1.2 200 101 102 i
* 172.16.0.0/24 20.1.1.2 100 201 202 i
*> 10.1.1.2 200 101 102 i
Total number of prefixes 3
ISP_Other : show ip ro;
Codes: K – kernel route, C – connected, S – static, R – RIP, O – OSPF,
I – ISIS, B – BGP, > – selected route, * – FIB route
S>* 0.0.0.0/0 [1/0] via 10.11.12.1, eth0
C>* 1.1.1.1/32 is directly connected, lo
C>* 10.1.1.0/30 is directly connected, eth1
B>* 10.1.3.0/30 [20/0] via 10.1.1.2, eth1, 01:12:24
C>* 10.11.12.0/24 is directly connected, eth0
C>* 20.1.1.0/30 is directly connected, eth2
C>* 127.0.0.0/8 is directly connected, lo
B>* 172.16.0.0/24 [20/0] via 10.1.1.2, eth1, 01:07:24
ISP_A;
vyos@RIsp:~$ show configuration
interfaces {
ethernet eth1 {
address 10.1.1.2/30
hw-id 08:00:27:e7:8d:6c
}
! eth1 ISP_Other ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth2 {
address 10.1.2.1/30
hw-id 08:00:27:d5:3d:7d
}
! eth2 CP Router Primary ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth3 {
hw-id 08:00:27:b7:81:19
}
loopback lo {
address 2.2.2.2/32
}
}
protocols {
bgp 101 {
neighbor 10.1.1.1 {
remote-as 100
}
neighbor 10.1.2.2 {
remote-as 102
}
! AS 101 ISP-Aın komşuları ile görüşeceği BGP tanımı.
!remote-as 102 ilk komşumuz CP Router Primary.
parameters {
router-id 2.2.2.2
}
}
}
ISP_A : show ip bgp;
BGP table version is 0, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
r RIB-failure, S Stale, R Removed
Origin codes: i – IGP, e – EGP, ? – incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.1.1 0 0 100 i
*> 10.1.3.0/30 10.1.2.2 1 0 102 i
*> 172.16.0.0/24 10.1.2.2 1 0 102 i
Total number of prefixes 3
CP Router Primary;
vyos@RCp:~$ show configuration
cluster {
dead-interval 400
group FL1 {
auto-failback false
monitor 10.1.2.1
primary RCp
secondary RCp1
service 10.1.3.3/24/eth2
}
interface eth2
keepalive-interval 100
monitor-dead-interval 600
pre-shared-secret ****************
}
!Cluster Konfigürasyonu
interfaces {
ethernet eth1 {
address 10.1.2.2/30
duplex auto
hw-id 08:00:27:54:d4:25
smp_affinity auto
speed auto
}
! eth1 ISP-A Router ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth2 {
address 10.1.3.1/30
duplex auto
hw-id 08:00:27:18:d7:79
smp_affinity auto
speed auto
}
! eth2 CP Router Secondary ile görüştüğü, Network tanımını üzerinde barındıran ve cluster VIP’i taşıyan network arayüzdür. Burada yer alan 172.16.0.0/24 network’ü sunuculara ait bloğu temsil etmektedir.
ethernet eth3 {
address 172.16.0.1/24
duplex auto
hw-id 08:00:27:e5:76:61
smp_affinity auto
speed auto
}
loopback lo {
address 3.3.3.3/32
}
}
protocols {
bgp 102 {
neighbor 10.1.2.1 {
remote-as 101
weight 200
}
neighbor 10.1.3.2 {
remote-as 202
weight 100
}
network 10.1.3.0/30 {
}
! dış dünyaya anons edilen network.
network 172.16.0.0/24 {
}
! dış dünyaya anons edilen network.
parameters {
router-id 3.3.3.3
}
}
}
CP Router Primary : show ip bgp;
BGP table version is 0, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
r RIB-failure, S Stale, R Removed
Origin codes: i – IGP, e – EGP, ? – incomplete
Network Next Hop Metric LocPrf Weight Path
* 0.0.0.0 10.1.3.2 0 202 201 100 i
*> 10.1.2.1 0 101 100 i
* 10.1.3.0/30 10.1.3.2 1 0 202 i
*> 0.0.0.0 1 32768 i
*> 172.16.0.0/24 0.0.0.0 1 32768 i
* 10.1.3.2 1 0 202 i
CP Router Primary : show ip ro;
Codes: K – kernel route, C – connected, S – static, R – RIP, O – OSPF,
I – ISIS, B – BGP, > – selected route, * – FIB route
B>* 0.0.0.0/0 [20/0] via 10.1.2.1, eth1, 01:19:22
C>* 3.3.3.3/32 is directly connected, lo
C>* 10.1.2.0/30 is directly connected, eth1
C>* 10.1.3.0/30 is directly connected, eth2
C>* 10.11.12.0/24 is directly connected, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 172.16.0.0/24 is directly connected, eth2
ISP_B;
vyos@RIsp1:~$ show configuration
interfaces {
ethernet eth1 {
address 20.1.1.2/30
duplex auto
hw-id 08:00:27:88:87:2e
smp_affinity auto
speed auto
}
! eth1 ISP_Other ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth2 {
address 20.1.2.1/30
duplex auto
hw-id 08:00:27:5b:22:d9
smp_affinity auto
speed auto
}
! eth2 CP_Router Secondary ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth3 {
duplex auto
hw-id 08:00:27:dd:82:66
smp_affinity auto
speed auto
}
loopback lo {
address 2.2.2.3/32
}
}
protocols {
bgp 201 {
neighbor 20.1.1.1 {
remote-as 100
}
neighbor 20.1.2.2 {
remote-as 202
}
! AS 201 ISP-ABın komşuları ile görüşeceği BGP tanımı.
!remote-as 202 ilk komşumuz CP Router Secondary..
parameters {
router-id 2.2.2.3
}
}
}
ISP B : show ip bgp;
BGP table version is 0, local router ID is 2.2.2.3
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
r RIB-failure, S Stale, R Removed
Origin codes: i – IGP, e – EGP, ? – incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 20.1.1.1 0 0 100 i
* 10.1.3.0/30 20.1.1.1 0 100 101 102 i
*> 20.1.2.2 1 0 202 i
* 172.16.0.0/24 20.1.1.1 0 100 101 102 i
*> 20.1.2.2 1 0 202 i
ISP B : show ip ro;
Codes: K – kernel route, C – connected, S – static, R – RIP, O – OSPF,
I – ISIS, B – BGP, > – selected route, * – FIB route
B>* 0.0.0.0/0 [20/0] via 20.1.1.1, eth1, 01:24:53
C>* 2.2.2.3/32 is directly connected, lo
B>* 10.1.3.0/30 [20/1] via 20.1.2.2, eth2, 02:48:57
C>* 10.11.12.0/24 is directly connected, eth0
C>* 20.1.1.0/30 is directly connected, eth1
C>* 20.1.2.0/30 is directly connected, eth2
C>* 127.0.0.0/8 is directly connected, lo
B>* 172.16.0.0/24 [20/1] via 20.1.2.2, eth2, 02:48:57
CP Router Secondary :
vyos@RCp1:~$ show configuration
cluster {
dead-interval 400
group FL1 {
auto-failback false
monitor 20.1.2.1
primary RCp
secondary RCp1
service 10.1.3.3/24/eth2
}
interface eth2
keepalive-interval 100
monitor-dead-interval 600
pre-shared-secret ****************
}
! Cluster Konfigürasyonu
interfaces {
ethernet eth1 {
address 20.1.2.2/30
hw-id 08:00:27:c2:4f:c1
}
! eth1 ISP_B ile görüştüğümüz arayüz olarak konfigüre edilmiştir.
ethernet eth2 {
address 10.1.3.2/30
hw-id 08:00:27:f7:53:d4
}
! eth2 CP Router Primary ile görüştüğü, Network tanımını üzerinde barındıran ve cluster VIP’i taşıyan network arayüzdür. Burada yer alan 172.16.0.0/24 network’ü sunuculara ait bloğu temsil etmektedir.
ethernet eth3 {
address 172.16.0.2/24
hw-id 08:00:27:62:68:40
}
loopback lo {
address 3.3.3.4/32
}
}
protocols {
bgp 202 {
neighbor 10.1.3.1 {
remote-as 102
weight 100
}
neighbor 20.1.2.1 {
remote-as 201
weight 200
}
network 10.1.3.0/30 {
}
! dış dünyaya anons edilen network.
network 172.16.0.0/24 {
}
! dış dünyaya anons edilen network.
parameters {
router-id 3.3.3.4
}
}
}
CP Router Primary : show ip bgp;
BGP table version is 0, local router ID is 3.3.3.4
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
r RIB-failure, S Stale, R Removed
Origin codes: i – IGP, e – EGP, ? – incomplete
Network Next Hop Metric LocPrf Weight Path
* 0.0.0.0 10.1.3.1 0 102 101 100 i
*> 20.1.2.1 0 201 100 i
* 10.1.3.0/30 10.1.3.1 1 0 102 i
*> 0.0.0.0 1 32768 i
* 172.16.0.0/24 10.1.3.1 1 0 102 i
*> 0.0.0.0 1 32768 i
CP Router Primary : show ip ro;
Codes: K – kernel route, C – connected, S – static, R – RIP, O – OSPF,
I – ISIS, B – BGP, > – selected route, * – FIB route
B>* 0.0.0.0/0 [20/0] via 20.1.2.1, eth1, 01:29:38
C>* 3.3.3.4/32 is directly connected, lo
C>* 10.1.3.0/30 is directly connected, eth2
C>* 10.11.12.0/24 is directly connected, eth0
C>* 20.1.2.0/30 is directly connected, eth1
C>* 127.0.0.0/8 is directly connected, lo
C>* 172.16.0.0/24 is directly connected, eth2
Testler;
· İlk konfigürasyon sonrasında ISP-Other, ISP-A ve ISP-B BGP ve Route çıktıları;
· ISP-Other
· ISP-A
· ISP-B
· İlk konfigürasyon sonrasında 10.11.12.34 IP’li istemciden 172.16.0.1 ve 172.16.0.2 yönündeki trafik çıktısı;
· İstemci Ağ ayarları görüntüsü;
· İstemci sunucu paket isteleri izi görüntüsü;
Her iki ekran paylaşımında da CP_Routerların temsil ettikleri bacaklara erişim görülmekte. Paket takibinde önceliklendirilmiş olan ISP-A Router’ı üzerinden geçtiği görülmektedir.
· CP_Router Primary Network Anonsu kapatılma işlemi sonrasında CP_Router Secondary üzerinden iletişimin devam etmesi;
· CP Router üzerindeki Network Anonsu kapatma;
· İstemciden Traceroute ile trafik takibi;
· ISP_Other cihazında anans sonlandırma işlemi ardından değişen BGP çıktısı (bu çıktıyı ilk görüntü ile karşılaştırabilirsiniz. 172.16.0.0/24 network’ü için istek paketlerinin aşağıdaki BGP çıktısında artık önce 202 AS numaralı komşusunda olduğunu görmekteyiz. )
· Müşteride yer alan Router cihazları arasındaki FailOver;
Dokümanımızda adım adım internet-ISP ve ISP-Müşteri arasındaki iletişimi uygulamalı olarak görmüş olduk.
İyi çalışmalar,