BGP Aggregation (Summary-Only, Suppress-Map, Unsuppress-Map, AS-Set)

Uzun zaman oldu yazmayalı. İş güç derken yazmaya fırsat bulamadım, ama Ağcıyız’ın
yıldönümüne yetiştirebildim 🙂  Bu yazıda BGP Aggregation nasıl yapılır, ne gibi özellikleri vardır, nasıl farklılaştırılabilir bunlardan bahsedeceğim.

Aggregation toplama,bütünleme anlamına gelir. Dolayısıyla BGP Aggregation da networklerin özetlenmesi diyebiliriz. IGP protokollerinden bildiğimiz summary işlemidir aslına bakılırsa. Aggregation konusunu aşağıda çizdiğim basit iBGP
topolojisi üzerinden anlatmaya çalışacağım.

Yukardaki topolojide R1,R2 ve R3 routerları birbirleriyle iBGP konuşmakta. Ayrıca R1 üzerinde 4 adet Loopback adresi tanımladım. iBGP komşuluğunun nasıl kurulduğunu atlayarak direkt aggregation konusuna geleceğim. Öncelikle R1 üzerindeki tüm Loopback networklerini BGP içerisine dağıtalım ki R2 ve R3 routerları bu networkler hakkında bilgiye sahip olsun.

R1
router bgp 10
network 20.0.0.0 mask 255.255.255.0
network 20.0.1.0 mask 255.255.255.0
network 20.0.2.0 mask 255.255.255.0
network 20.0.3.0 mask 255.255.255.0

Şu durumda R2 ve R3 routerları bu networklerin hepsini kendi BGP tablolarında göreceklerdir. Ancak biz bu networklerin tek bir subnet olarak duyurulmasını istiyorsak, bu durumda devreye “aggregate-address” komutu giriyor.

R1
router bgp 10
aggregate-address 20.0.0.0 255.255.252.0

Bu komutu yazdığımızda BGP tablosunda boş AS_PATH ile yeni bir prefix oluşturulacaktır. Local AS’te oluşturulmuş bir prefix gibi gösterilecektir. Ancak unutulmaması gereken birşey vardır. Özetlenmiş prefix yani 20.0.0.0/22 ile birlikte bu prefixi oluşturan 20.0.0.0/24, 20.0.1.0/24, 20.0.2.0/24 ve 20.0.3.0/24 networkleri de R2 ve R3 routerlarının tablosunda bulunmaya devam edecektir. Sadece summary prefixinin görünmesi nasıl sağlanır birazdan açıklayacağım. Ayrıca, IGP’de olduğu gibi loop olmasını engellemek için otomatik olarak bu prefix için Null0’a statik rota oluşturulacaktır.

Şimdi aggregate-address komutu kullanılarak summary yapılmış prefixler nasıl manipüle edilebilir buna bakalım.
Summary-Only
Aggregate-address komutuyla özetleme yaptığımızda, bu özetlenen prefixi oluşturan prefixlerin de BGP tablosunda bulunduğundan bahsettik. Çoğu durumda sadece özetleme yapılan prefixin BGP tablosunda olması istenir. Bunu gerçekleştirmek için kullanılan ek parametre ise “summary-only” parametresidir.

R1
router bgp aggregate-address 20.0.0.0 255.255.252.0 summary-only

Bu durumda R2 ve R3’ün BGP tablosunda sadece 20.0.0.0/22 prefixi bulunacaktır. Bu özeti oluşturan tüm prefixler suppress edilecektir, yani gönderilmeyecektir.

 

Suppress-Map
Aggregate-address komutunun summary-only parametresiyle özetlenen prefixi oluşturan tüm prefixlerin gönderilmesi yasaklanır. Ancak bazı durumlarda isteğe bağlı olarak suppress etme işlemi yapılmak istenebilir. Yani yukarıdaki örneğe bakacak olursak, R1 routerı R2 ve R3’e 20.0.0.0/22 özet prefixini gönderirken bu özet prefixi oluşturan prefixlerden 20.0.1.0/24 ve 20.0.2.0/24 prefixlerini de göndersin istenebilir.

R1
ip prefix-list SUPPRESS_PREFIX seq 5 permit 20.0.0.0/24
ip prefix-list SUPPRESS_PREFIX seq 10 permit 20.0.3.0/24

route-map SUPPRESS_MAP permit 10
match ip address prefix-list SUPPRESS_PREFIX

router bgp 10
aggregate-address 20.0.0.0 255.255.252.0 suppress-map SUPPRESS_MAP

Öncelikle suppress edilmesi istenen yani gönderilmesini istemediğimiz prefixleri bir prefix içerisinde tanımlıyoruz. Daha sonra bu prefix-listi bir route-map içinde çağırıyoruz. Yazdığımız bu route-map’i de aggregate-address komutunun bir parametresi olan suppress-map <Route_Map_İsmi> komutuyla belirtiyoruz. Burada dikkat edilmesi gereken nokta, yazılan route-map’in permit ya da deny olması gerektiğidir. Suppress kelime anlamı itibariyle karışıklığa sebep olabilir. Şu durumda. R2 ve R3 routerları BGP tablolarında 20.0.0.0/22 prefixinin yanı sıra 20.0.1.0/24 ve 20.0.2.0/24 prefixlerini de görecekleridir.

 

Unsuppress-Map
Unsuppress-map özelliği suppress-map özelliğiyle aynı mantıkta çalışmaktadır ancak uygulanışı biraz daha farklıdır. Topolojimizde R1’in R2 ve R3’e 4 adet Loopback prefixini 1 özet prefixi olarak duyurduğunu düşünelim. Ancak yol seçimi farklı olsun
istediğimiz için 20.0.1.0 prefixinin özet prefixe ek olarak sadece R2’ye duyurulmasını istediğimizi varsayalım.

R1
ip prefix-list UNSUPPRESS_PREFIX permit 20.0.1.0/24

route-map UNSUPPRESS_MAP permit 10
match ip address prefix-list UNSUPPRESS_PREFIX

router bgp 10
aggregate-address 20.0.0.0 255.255.252.0 summary-only
neighbor 2.2.2.2 unsuppress-map UNSUPPRESS_MAP (R2’nin komşuluk kurduğu adres
2.2.2.2 olarak düşünülmüştür)

Burada dikkat etmemiz gereken nokta, aggregate-address komutunun mutlaka summary- only parametresiyle kullanılması gerektiğidir. Suppress-map özelliğinden farklı olarak sadece istenilen komşuya uygulanmaktadır. Bu durumda R3’ün BGP tablosunda sadece 20.0.0.0/22 prefixi bulunurken, R2’nin BGP tablosunda hem 20.0.0.0/22 prefixi hem de 20.0.1.0/24 prefixi bulunacaktır.

 

AS-Set
Bizim topolojimizde tek bir AS olduğu için ve aggregate edilen adresler Local AS’e ait olduğundan bizim için herhangi bir problem yok, ancak aggregate etmenin aslında bazı riskleri de mevcut. Eğer biz bu 20.0.x.0/24 networklerini başka bir AS’ten, diyelim ki AS 20’den alıyor olsaydık. Prefixler AS 10’a yani R1’e geldiğinde aggregation işlemini burda yapıyoruz diyelim. Yukarıda söylediğim gibi aggregation işlemi nerede yapılırsa yapılsın oluşturulan özet prefix boş AS_PATH ile duyurulur. Yani hangi AS’ten alındığının bilgisi kaybolur. Bu durumda AS 20’ye ait olan bu prefixleri R1’de özetlersek ve duyurursak bu prefixler tekrar AS 20’ye gittiğinde, AS 20 kendisini AS_PATH içinde görmediği için prefixi kabul edecektir ve loop oluşmasına sebep olacaktır.

Bu ve buna benzer durumları engellemek için aggregate-address komutunun çok güzel bir parametresi var, “as-set”. Bu parametreyle, özetleme yapılsa bile prefixin hangi AS’e ait olduğu bilgisi korunacaktır.

R1
router bgp 10
aggregate-address 20.0.0.0 255.255.252.0 summary-only as-set

 

Gerçek router çıktılarını kullanarak yapmak daha akılda kalıcı olmasını
sağlayabilirdi ama imkanlar dahilinde bu kadar oldu 🙂

Kalın sağlıcakla,
Tekrar görüşmek üzere,

Mehmet Ali Karagöl

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir