BGP’de trafik muhendisligi yaparken en cok kullanilan yontemlerden biri AS path prepend islemidir. Basitce kendi AS numaranizi route duyurusunda birden fazla kez tekrar ederek, belirli bir yolun diger operatorler tarafindan daha az tercih edilmesini saglamaya calisirsiniz.
BGP best path seciminde AS path uzunlugu onemli kriterlerden biridir. Daha kisa AS path genelde daha cok tercih edilir. Bu nedenle bir hatta prepend uygulandiginda, o hat uzerinden duyurulan prefix daha uzun gorunur.
Ornek:
Normal duyuru:
203.0.113.0/24 AS65000
Prepend uygulanmis duyuru:
203.0.113.0/24 AS65000 AS65000 AS65000
Diyelim ki AS65000 olarak iki upstream’e baglisiniz:
AS65000
/ \
ISP-A ISP-B
Inbound trafigin cogunlukla ISP-A uzerinden gelmesini, ISP-B’nin ise daha az tercih edilmesini istiyorsunuz. Bu durumda ISP-B’ye yaptiginiz prefix duyurusunda AS path prepend uygulayabilirsiniz.
Juniper ornegi:
policy-options {
policy-statement PREPEND-TO-ISP-B {
then {
as-path-prepend "65000 65000 65000";
accept;
}
}
}
protocols {
bgp {
group ISP-B {
type external;
peer-as 64502;
neighbor 198.51.100.1 {
export PREPEND-TO-ISP-B;
}
}
}
}
Cisco IOS-XE ornegi:
route-map PREPEND-TO-ISP-B permit 10
set as-path prepend 65000 65000 65000
router bgp 65000
neighbor 198.51.100.1 remote-as 64502
neighbor 198.51.100.1 route-map PREPEND-TO-ISP-B out
Burada kritik nokta sudur: AS path prepend kesin sonuc vermez. Sadece dis dunyaya “bu yol biraz daha uzun” sinyali verirsiniz. Karsi taraftaki operator local preference ile sizin prepend’inizi tamamen ezebilir.
Yani sunu bilmek gerekir:
Local preference > AS path length
Bir operator kendi musterilerinden gelen route’lara yuksek local preference veriyorsa, sizin 3 kere prepend yapmaniz sonucu degistirmeyebilir. Cunku onun politikasi AS path’ten once local preference ile karar verir.
AS path prepend genelde su durumlarda kullanilir:
- Inbound trafik dengeleme
- Backup transit tasarimi
- Belirli upstream’i daha az tercih edilir yapmak
- Maintenance sirasinda trafik azaltmak
- Prefix bazli inbound yonlendirme
Daha kontrollu bir tasarim icin prefix bazli prepend kullanmak daha dogrudur. Ornegin tum prefix’lere prepend yapmak yerine sadece belirli network bloklarini bir hattan daha az tercih edilir hale getirebilirsiniz.
Ornek politika:
203.0.113.0/24 ISP-A primary, ISP-B prepend
198.51.100.0/24 ISP-B primary, ISP-A prepend
Bu sayede inbound trafik iki farkli hattan daha dengeli gelebilir.
Fakat burada prefix boyutu da cok onemlidir. Internet’te genel kabul goren en kucuk IPv4 duyuru genelde /24 olarak dusunulur. Daha spesifik bir prefix duyurursaniz, ornegin /25, bircok upstream bunu filtreleyebilir.
AS path prepend yaparken dikkat edilmesi gereken diger konu RPKI ve route object tarafidir. Prefix’inizin ROA kaydi, route object’i ve IRR kayitlari dogru degilse prepend yapmanizin bir anlami kalmayabilir; route zaten kabul edilmeyebilir.
Kontrol icin kullanilabilecek komutlar:
Juniper:
show route advertising-protocol bgp 198.51.100.1 203.0.113.0/24 detail
show route receive-protocol bgp 198.51.100.1
Cisco:
show ip bgp neighbors 198.51.100.1 advertised-routes
show ip bgp 203.0.113.0/24
Linux tarafinda looking glass veya route collector ile de kontrol yapilabilir. Ornegin RouteViews, RIPE RIS veya upstream operatorun looking glass sistemi uzerinden prefix’inizin nasil gorundugune bakabilirsiniz.
AS path prepend basit ama etkisi operator politikalarina bagli bir aracdir. Dogru yerde kullanildiginda inbound trafik muhendisligi icin faydalidir. Fakat “prepend yaptim, trafik kesin buradan gelmez” dusuncesi BGP dunyasinda fazla iyimserdir.
En saglikli yaklasim sunudur:
Prepend uygula,
looking glass ile global gorunumu kontrol et,
trafik grafigini izle,
gerekirse prefix bazli politika ile ince ayar yap.