Perangkat Juniper memiliki default ARP policer yang secara otomatis akan membuang (drop) paket request maupun response ARP jika melampaui batas 150kbps. Secara default, ini adalah aggregate policer yang berlaku untuk semua interface. Kondisi ini dapat memicu perilaku tidak terduga, di mana tingginya trafik ARP pada satu interface dapat menyebabkan terputusnya sesi BGP di interface lain. Anda tidak dapat mengubah limit default ini, tetapi Anda bisa membuat policer baru dengan limit yang lebih tinggi.
Masalah: Sesi IPv4 BGP Flapping
Saat menginvestigasi masalah yang dilaporkan oleh salah satu Transit provider, ditemukan bahwa sesi IPv4 BGP kami dengan mereka mengalami flap sekitar sehari sekali. Padahal, status interfacenya stabil dan sesi IPv6 tetap menyala (up). Satu site tertentu mengalami hal ini lebih sering daripada yang lain. Meskipun site-site tersebut menggunakan platform yang berbeda, semuanya menjalankan versi sistem operasi (code version) yang sama.
Hal yang menarik terlihat pada log. Terdapat pesan yang menyatakan bahwa kami menerima notifikasi: NOTIFICATION received from 192.0.2.188 (External AS 64498): code 4 (Hold Timer Expired Error). Syslog tersebut juga memuat informasi hold timer 30s, hold timer remain 0s, last sent 2s. Artinya, router kami merasa sudah mengirim pesan KEEPALIVE secara rutin, tetapi sisi remote menganggap sudah terlalu banyak pesan yang terlewat.
Setelah dicek lebih detail, sesi BGP flap ini juga terjadi pada neighbor lain, termasuk sesi iBGP. Jelas bahwa ini bukan masalah pada satu interface spesifik, perangkat vendor lain, atau kesalahan konfigurasi biasa.
Apa yang Sebenarnya Terjadi?
Router kami terhubung ke sebuah IXP (Internet Exchange Point) yang memiliki subnet berukuran besar dengan banyak peer. Hal ini menghasilkan trafik ARP dalam jumlah yang sangat besar.
Secara default, router Juniper membatasi (police) trafik ARP hingga 150kbps. Semua trafik ARP di atas batas tersebut akan dibuang. Fakta krusialnya: policer ini tidak bekerja per-interface, melainkan per-PFE (Packet Forwarding Engine).
Ketika router menerima trafik ARP yang sangat tinggi dari interface yang mengarah ke IXP, policer mulai bekerja membatasi trafik. Link Transit yang kami gunakan ternyata berada di PFE yang sama. Saat periode pembatasan (policing) terjadi, trafik ARP di interface transit ikut terkena imbasnya. Router kami tidak bisa mendapatkan ARP response untuk IP upstream provider, sehingga gagal mengirim pesan keepalive. Pihak upstream mendeteksi hilangnya keepalive ini, mengirimkan notifikasi kepada kami, dan akhirnya sesi BGP di-reset. Setelah sesi terputus, entri ARP berhasil didapatkan kembali dan sesi BGP pun dengan cepat kembali up.
Karena IPv6 menggunakan Neighbor Discovery (ND) dan bukan ARP, sesi IPv6 sama sekali tidak terpengaruh.
Mendeteksi ARP Policing
Ada beberapa cara untuk mengecek apakah masalah ini yang sedang menimpa router Anda:
Cek aggregate policer untuk melihat apakah limit sudah terpicu:
[email protected]> show policer __default_arp_policer__
Policers:
Name Bytes Packets
__default_arp_policer__ 3091706 67211
{master}
[email protected]>
Untuk melihat FPC mana yang terdampak (Khusus Juniper dengan tipe Chasis, MX204 hanya punya 1 FPC), Anda perlu masuk lebih dalam melalui shell:
{master}
[email protected]> start shell pfe network fpc2
NGMPC platform (1200Mhz QorIQ P2020 processor, 3584MB memory, 512KB flash)
NGMPC2(mx.lab.net vty)# show filter index 17000 counters
Filter Counters/Policers:
Index Packets Bytes Name
-------- -------------------- -------------------- --------
17000 67186 __default_arp_policer__
NGMPC2(mx.lab.net vty)#
Catatan: Masalah ini tidak menghasilkan pesan syslog terkait ARP policing karena ia menggunakan framework yang berbeda dengan fitur DDoS Protection.
Mengubah Limit ARP
Batas 150kbps untuk trafik ARP sangatlah kecil untuk sebuah router dengan banyak interface di subnet yang besar. Anda kemungkinan besar harus mengubah limit ini.
Karena Anda tidak bisa mengubah limit default tersebut secara langsung, ada dua pilihan yang bisa dilakukan:
- Buat ARP policer baru dan aplikasikan ke interface yang “sibuk” (yang memiliki trafik ARP tinggi). Policer ini hanya akan berlaku untuk interface tersebut, sementara interface lainnya tetap menggunakan default 150kbps.
- Buat ARP policer baru dan aplikasikan ke interface-interface penting lainnya. Biarkan interface yang “sibuk” tetap menggunakan default bucket.
Konfigurasinya sangat sederhana. Pertama, buat policer baru (contoh limit 1 Mbps):
set firewall policer arp_limit if-exceeding bandwidth-limit 1m
set firewall policer arp_limit if-exceeding burst-size-limit 1m
set firewall policer arp_limit then discard
Kemudian aplikasikan policer tersebut ke interface (misal: ae1):
set interfaces ae1 unit 0 family inet policer arp arp_limit
Monitoring Policer Baru
Anda bisa memantau hasilnya menggunakan perintah show policer. Jika Anda mengaplikasikan policer baru ke lebih dari satu interface, Anda akan melihat entri untuk masing-masing interface:
[email protected]> show policer ?
Possible completions:
<[Enter]> Execute this command
<policer> Policer name
__auto_policer_template_1__
__auto_policer_template_2__
__auto_policer_template_3__
__auto_policer_template_4__
__auto_policer_template_5__
__auto_policer_template_6__
__auto_policer_template_7__
__auto_policer_template_8__
__auto_policer_template__
__default_arp_policer__
arp_limit-ae1.0-inet-arp
arp_limit-xe-1/0/1.0-inet-arp
detail Show filter statistics with enhanced policer statistics
logical-system Name of logical system, or 'all'
| Pipe through a command
{master}
[email protected]> show policer arp_limit-ae1.0-inet-arp
Policers:
Name Bytes Packets
arp_limit-ae1.0-inet-arp 0 0
{master}
[email protected]>
Pada output di atas, terlihat bahwa policer arp_limit telah berhasil diaplikasikan dan berjalan pada interface ae1 dan xe-1/0/1.0.
Atau jika ingin melihat semua statistik policer
udin@MX204> show policer
Policers:
Name Bytes Packets
__default_arp_policer__ 0 0
__LS-IXP/arp_limit-ae1.12-inet-arp 49096328 1066520
__LS-IXP/arp_limit-ae1.13-inet-arp 0 0
__LS-IXP/arp_limit-ae1.14-inet-arp 24507706540 531555026
__LS-IXP/arp_limit-ae1.15-inet-arp 411915324 8816192
__LS-IXP/arp_limit-ae1.16-inet-arp 5265624 114237
__LS-IXP/arp_limit-ae1.17-inet-arp 0 0
__LS-IXP/arp_limit-ae1.18-inet-arp 363079102 7855477
Semoga catatan ini bermanfaat bagi siapa saja yang sedang mencari solusi untuk masalah sesi BGP atau BFD yang sering mengalami flapping.
Sumber/referensi:
https://lkhill.com/juniper-arp-policer/