BGP prefix limt biasanya digunakan untuk peering session or private peering. Dengan BGP prefix limit user bisa membatasi seberapa banyak prefix yang diterima dari peering session dan pesan log rate-limited ketika banyaknya prefix telah melebihi dari yang dibatasi.
Untuk melakukan konfigurasi untuk membatasi banyaknya prefix yang bisa diterima dalam BGP session, masukkan statement prefix-limit dalam konfigurasi BGP:
- prefix-limit {
- maximum <number>;
- teardown <percentage> <idle-timeout (forever | minutes)>;
- }
Contoh:
- prefix-limit {
- maximum 500;
- teardown 90 idle-timeout forever;
- }
Untuk nilai batas maksimum dapat ditentukan dari range 1 sampai 4,294,967,295. Ketika batas maksimum prefix yang ditentukan telah melewati batas, pesan log sistem akan dikirimkan.
Jika dalam konfigurasi dimasukkan statement teardown, session akan diganti ketika jumlah maksimum prefix telah melewati batas. Apabila user menentukan persentase, pesan akan di-log ketika jumlah prefix melebihi persentase dari batas maksimum yang telah ditentukan. Setelah session diganti, session akan direestablished dalam waktu yang singkat (kecuali user memasukkan statement idle-timeout). Kemudian session dapat bertahan untuk waktu yang telah ditentukan atau untuk selamanya. Jika user menentukan forever, session akan direestablished hanya setelah BGP session direset atau manjalankan perintah clear bgp neighbor.
Berikut pesan log apabila BGP session gagal karena adanya prefix limit (dalam contoh ini prefix-limit dibatasi maksimum 500 dan teardown 90% dengan idle-timeout forever):
——————————————————–Cut—————————————————————
RPD_BGP_NEIGHBOR_STATE_CHANGED: BGP peer x.x.x.x (External AS xxxx) changed state from Established to Idle (event HoldTime)
bgp_hold_timeout:xxxx: NOTIFICATION sent to x.x.x.x (External AS xxxx): code 4 (Hold Timer Expired Error), Reason: holdtime expired for x.x.x.x (External AS xxxx), socket buffer sndcc: 57 rcvcc: 0 TCP state: 4, snd_una: xxxxxxxxx snd_nxt: xxxxxxxxxx snd_wnd: xxxxx rcv_nxt: xxxxxxxxxx rcv_adv: xxxxxxxxxx, hold timer 0
RPD_BGP_NEIGHBOR_STATE_CHANGED: BGP peer x.x.x.x (External AS xxxx) changed state from OpenConfirm to Established (event RecvKeepAlive)
x.x.x.x (External AS xxxx): Configured maximum prefix-limit threshold(450) exceeded for inet-unicast nlri: 451
x.x.x.x (External AS xxxx): Shutting down peer due to exceeding configured maximum prefix-limit(500) for inet-unicast nlri: 501
bgp_rt_maxprefixes_check_common:xxxx: NOTIFICATION sent to x.x.x.x (External AS xxxx): code 6 (Cease) subcode 1 (Maximum Number of Prefixes Reached) AFI: 1 SAFI: 1 prefix limit 500
x.x.x.x (External AS xxxx) Received BAD update for family inet-unicast(1), prefix x.x.x.x/x
RPD_BGP_NEIGHBOR_STATE_CHANGED: BGP peer x.x.x.x (External AS xxxx) changed state from Established to Idle (event RecvUpdate)
bgp_pp_recv:xxxx: NOTIFICATION sent to x.x.x.x+xxxxx (proto): code 2 (Open Message Error) subcode 5 (authentication failure), Reason: no group for x.x.x.x+xxxxx (proto) from AS xxxx found (peer idled due to prefix-limit violation), dropping him
——————————————————–Cut—————————————————————
Pada log tersebut, prefix yang diterima telah melebihi batas dari maksimum prefix yang telah dibatasi. Hal ini terjadi karena sebelumnya koneksi BGP session down (atau dapat dikatakan adanya problem di sisi peer), ketika peer dalam posisi up prefix yang diterima dari peer yang bersangkutan telah melebihi batas maksimum sehingga BGP session otomatis shutdown. Untuk mengatasi kondisi seperti ini, cek berapa jumlah prefix yang diterima dari peer tersebut, apabila memang prefix telah melebih batas maksimum lakukan reset BGP session terhadap peer yang bersangkutan agar koneksi dapat up dan kembali normal.
Berikut perintah untuk melihat jumlah prefix yang diterima beserta informasi lainnya:
> show bgp neighbor <peer ip address>
dan salah satu perintah yang dapat digunakan untuk mereset BGP session:
> clear bgp neighbor <peer ip address>
Semoga artikel ini dapat bermanfaat…