100% GRATIS • TANPA REGISTRASI / LOGIN

Kalkulator Queue Burst MikroTik

Gunakan fitur Burst untuk memberikan bonus kecepatan sementara bagi pengguna yang jarang download terus-menerus (browsing/chatting) dengan limitasi batas atas Burst-Limit.

Penggunaan Queue Burst
16 kali
IP Terakhir
203.17.87.54
Akses Terakhir
12 hari lalu
Pilihan Cepat (Presets):

Parameter Antrian MikroTik

32s
8s 16s 32s 64s 128s
Durasi Bonus Aktif
8.0s
Durasi bonus aktif
Total Data Bonus Diterima
4.0 MB
Total data di atas max
Rasio Threshold
50%
Terhadap Max Limit
Visualisasi Kurva Bandwidth Real-Time (16-Slice Moving Average)
Script MikroTik RouterOS Siap Pakai

                
Panduan & Artikel Mendalam

Panduan Matematis & Teori Queue Burst MikroTik

Pelajari teori, formula matematis, dan rekomendasi implementasi praktis di lapangan.

Buka Semua Panduan

Traditional Queue Burst

RouterOS menghitung rata-rata penggunaan data klien dalam jendela waktu Burst Time yang dibagi menjadi 16 interval sampling.

  • Batas Atas Ketat: Klien tidak akan pernah melampaui burst-limit.
  • Rumus Durasi: T = (Threshold × Time) / Burst-Limit.
  • Beban CPU: Membutuhkan komputasi kalkulasi moving average 16 slice per user aktif.
  • Penggunaan Terbaik: Paket Hotspot & PPPoE bertarif komersial dengan batas kecepatan maksimal yang pasti.

Token Bucket (Hierarchical Token Bucket)

Diperkenalkan pada RouterOS v6.35+. Menggunakan analogi ember penampung kelereng di mana kapasitas ember ditentukan oleh parameter bucket-size.

  • Tanpa Batas Atas: Klien bisa menghabiskan token secepat kemampuan pipa link tanpa dibatasi burst-limit.
  • Sederhana & Ringan: Hanya membutuhkan 1 parameter setting (bucket-size).
  • Beban CPU Super Hemat: Sangat ideal untuk router dengan resource CPU terbatas (misal seri RB750/hEX).
  • Penggunaan Terbaik: ISP dengan ribuan pelanggan yang ingin burst fleksibel tanpa memberatkan router utama.
Karakteristik Queue Burst Konvensional Token Bucket (v6.35+)
Batas Maksimum Burst Dibatasi ketat oleh burst-limit Bebas (tidak ada batas kecepatan bonus)
Konsumsi CPU Router Sedang - Tinggi (sampling 16 slice kontinu) Sangat Rendah (algoritma token sederhana)
Parameter Konfigurasi 3 parameter: Threshold, Limit, Time 1 parameter: bucket-size
Dukungan di Queue Tree Tersedia Tersedia
Dukungan Hotspot/PPPoE Profile Format atribut rate-limit bawaan Konfigurasi via Queue Script / Parent Queue
Referensi & Analisa Teknis mengacu pada artikel Citraweb Solusi Teknologi (#297) & Dokumentasi HTB MikroTik RouterOS.
Baca Artikel Citraweb #297
Technical Deep Dive Jaringan & Backend 8 Menit Baca

Rate Limiting: Panduan Lengkap Token Bucket, Leaky Bucket, dan Queue Burst MikroTik

MY
Ditulis oleh Makarius Yuwono
• 19 September 2026 • Rate Limiting, MikroTik, API, Traffic Shaping

“Rate limiting terlihat sepele — 'batasi 100 per menit, selesai'. Tapi setiap keputusan di dalamnya adalah trade-off antara melindungi sistem dan merusak pengalaman pengguna. Berikut cara memilihnya berdasarkan perhitungan, bukan tebakan.”

1 Kenapa Rate Limiting Ada

Setiap sistem punya kapasitas terbatas: bandwidth uplink, koneksi database, jumlah request per detik yang sanggup diproses CPU. Rate limiting adalah mekanisme untuk memastikan konsumsi sumber daya itu tidak melebihi batas yang kita tetapkan.

Ada empat motivasi yang berbeda, dan membedakannya penting karena menentukan algoritma mana yang cocok:

Proteksi Kapasitas

Mencegah server tumbang karena lonjakan trafik. Yang penting di sini adalah batas atas absolut — tidak boleh ada lonjakan yang menembus.

Keadilan Antar Pengguna

Satu klien tidak boleh menghabiskan kapasitas yang jadi jatah semua orang. Ini kasus klasik RT/RW net: satu pelanggan yang menarik torrent 24 jam tidak boleh membuat 30 pelanggan lain lemot.

Kontrol Biaya

Kalau Anda memanggil API pihak ketiga yang ditagih per request, atau punya kuota FUP dari ISP, rate limiting adalah rem finansial yang menjaga pengeluaran.

Anti-Abuse

Membatasi percobaan login, pendaftaran massal, atau pengiriman OTP untuk mempersulit serangan brute force, credential stuffing, dan spam bot.

Inti Perbedaan: Motivasi pertama menuntut batas yang kaku. Motivasi kedua justru menuntut fleksibilitas — pengguna yang biasanya irit sebaiknya boleh sesekali "meledak" cepat. Perbedaan inilah yang melahirkan konsep burst.

2 Kosakata Dasar

Sebelum masuk algoritma, empat istilah ini harus jelas karena sering tertukar dalam percakapan sehari-hari maupun konfigurasi router dan backend server:

Istilah Arti & Definisi Contoh Riil
Rate (r) Laju rata-rata yang diizinkan dalam jangka panjang 10 request/detik, 5 Mbps
Burst (b) Jumlah maksimum yang boleh dikonsumsi sekaligus di atas rate normal 50 request sekaligus, 20 Mbps (2 detik)
Quota Total absolut dalam periode panjang 500 GB/bulan, 10.000 request/hari
Window Rentang waktu tempat hitungan direset per detik, per menit, per jam
Kunci yang sering tidak disadari pemula: Rate dan burst adalah dua dimensi yang saling melengkapi, bukan saling menggantikan. Rate mengatur perilaku jangka panjang; burst mengatur toleransi jangka pendek. Sistem yang hanya punya rate terasa kaku dan lambat. Sistem yang hanya punya burst tidak melindungi apa-apa.

3 Algoritma Rate Limiting

3.1 Fixed Window Counter

Cara paling sederhana. Bagi waktu menjadi jendela tetap (misalnya per menit), hitung request dalam jendela itu, tolak kalau melewati batas.

key = user_id + ":" + floor(now / 60) count = INCR(key) if count == 1: EXPIRE(key, 60) if count > limit: REJECT
Kelebihan: Hemat memori (satu counter per pengguna), mudah dipahami, sangat mudah diimplementasikan di Redis.
Kelemahan fatal (Batas Jendela): Pengguna bisa kirim 100 req pada detik ke-59 dan 100 req di detik ke-61. Dalam 2 detik server diserang 200 request (2x lipat limit).

3.2 Sliding Window Log

Simpan timestamp setiap request. Saat request baru masuk, buang semua timestamp yang lebih tua dari window, lalu hitung sisanya.

ZREMRANGEBYSCORE key 0 (now - window) count = ZCARD key if count < limit: ZADD key now now else: REJECT
Kelebihan: Presisi sempurna, bebas dari masalah lonjakan batas jendela.
Kelemahan: Memori tumbuh linear. Limit 10.000/jam = 10.000 timestamp per pengguna. Untuk 100.000 user, kebutuhan RAM tidak realistis.

3.3 Sliding Window Counter

Kompromi cerdas antara keduanya. Simpan counter untuk jendela saat ini dan jendela sebelumnya, lalu interpolasi secara linear berdasarkan seberapa jauh kita sudah masuk ke jendela sekarang:

estimasi = count_sekarang + count_sebelumnya × (1 − posisi_dalam_jendela)

Contoh: limit 100/menit. Jendela lalu ada 80 request, jendela sekarang 30 request, dan kita berada di detik ke-15 (25% jendela berjalan):
estimasi = 30 + 80 × (1 − 0,25) = 30 + 60 = 90 (90 < 100, diterima).

Standar Industri: Biaya memorinya hanya dua integer per pengguna, dengan akurasi sangat memadai. Ini pilihan default yang sangat bagus untuk rate limiting API backend.

3.4 Leaky Bucket

Bayangkan ember berlubang di dasarnya. Request masuk ke ember (antrean), dan bocor keluar diproses dengan laju konstan. Kalau ember penuh, request baru langsung dibuang.

  • Output Selalu Halus & Konstan: Berapa pun kacaunya pola lonjakan input, keluaran selalu teratur (cocok untuk traffic shaping uplink).
  • Tanpa Burst Pada Output: Lonjakan input hanya diserap oleh antrean, lalu dikeluarkan perlahan. Bagi pengguna, ini dirasakan sebagai lonjakan latency/antrian, bukan penolakan.

3.5 Token Bucket

Ember diisi token secara terus-menerus dengan laju r token/detik, sampai batas maksimum kapasitas b token. Setiap request mengambil sejumlah token sesuai biayanya. Jika token kosong, request ditolak atau antri.

tokens = min(b, tokens + (now − last_refill) × r) last_refill = now if tokens >= cost: tokens −= cost ALLOW else: REJECT

Perhitungan Lazy: Tidak ada timer atau cron background yang mengisi token. Token dihitung seketika (lazily) saat request datang dari selisih timestamp. Cukup 2 nilai per pengguna (tokens dan last_refill).

4 Matematika Token Bucket

Di sinilah perhitungan matematis jadi penentu, karena hubungan antar parameter seringkali tidak intuitif.

4.1 Durasi Burst Maksimum (T_burst)

Jika bucket penuh (b token) dan klien mengirim dengan laju R yang lebih besar dari laju isi r:

T_burst = b / (R − r)

Contoh: b = 100 token, r = 10 token/s. Klien menggembur di R = 50 req/s:
T_burst = 100 / (50 − 10) = 2,5 detik (125 request berhasil diproses).

4.2 Waktu Pemulihan (T_recovery)

Setelah bucket kosong, waktu yang dibutuhkan agar ember terisi penuh kembali ke level b:

T_recovery = b / r

Contoh: 100 / 10 = 10 detik. Artinya untuk burst penuh 2,5 detik, klien harus istirahat 10 detik agar kapasitas pulih 100%.

4.3 Menghitung Retry-After

Jika request ditolak karena token kurang, durasi klien harus menunggu sebelum mencoba kembali:

Retry_After = (cost − tokens_tersedia) / r

Nilai ini wajib dikirim di header HTTP agar klien tidak melakukan retry membabi buta.

4.4 Menentukan Kapasitas dari Kebutuhan

Jika pengguna butuh memuat 200 request sekaligus saat dashboard dibuka, dengan konsumsi jangka panjang 5 req/s:

r = 5 | b = 200 | Recovery = 200 / 5 = 40 detik

40 detik terlalu lama? Naikkan r, namun konsekuensinya konsumsi bandwidth jangka panjang juga meningkat.

Uji Simulasi Token Bucket Secara Visual

Eksperimenkan kapasitas ember (bucket-size) dan laju demand dengan grafik animasi interaktif di workspace ini.

5 Burst di Dunia Jaringan (MikroTik RouterOS)

Implementasi burst di MikroTik berbeda dari token bucket murni, dan ini sumber kebingungan yang sangat umum di kalangan teknisi jaringan dan ISP RT/RW net. MikroTik menggunakan empat parameter:

max-limit Laju normal maksimum (MIR) saat tidak ada burst.
burst-limit Laju kecepatan puncak saat bonus burst aktif.
burst-threshold Ambang rata-rata pemakaian untuk mengaktifkan burst.
burst-time Jendela hitung moving average (bukan durasi burst!).
Kesalahpahaman Terbesar di MikroTik: burst-time BUKAN durasi lamanya burst! RouterOS menghitung rata-rata pemakaian selama burst-time terakhir dengan membaginya menjadi 16 interval sampling. Begitu rata-rata melampaui burst-threshold, laju dipangkas seketika kembali ke max-limit.

Rumus Durasi Burst MikroTik Aktual:

T_burst = (burst-threshold × burst-time) / burst-limit
Contoh Konkret Kasus RT/RW Net
RouterOS CLI
/queue simple add name="pelanggan-01" target=192.168.10.5/32 \ max-limit=2M/2M \ burst-limit=8M/8M \ burst-threshold=1M/1M \ burst-time=16s/16s

Perhitungan: T_burst = (1 × 16) / 8 = 2 detik.
Pelanggan mendapat 8 Mbps selama 2 detik pertama — cukup untuk membuka halaman web portal berita atau streaming video awal terasa instan tanpa buffer — lalu kecepatan turun mulus ke 2 Mbps. Ini menciptakan pengalaman "internet kencang" tanpa membuat pipa uplink overload!

Uji Preset 2M / 8M Ini di Generator Kami

Lihat kurva switching interval sampling 16 slice dan salin script RouterOS langsung ke MikroTik Anda.

6 Rate Limiting Terdistribusi

Semua kalkulasi di atas mengasumsikan sistem satu proses (single instance). Saat aplikasi Anda diskalakan ke beberapa instance di balik load balancer, counter di memori lokal tidak saling tahu. Dengan 4 instance dan limit 100/menit, seorang pengguna bisa lolos hingga 400 req/menit.

Pendekatan 1: Counter Terpusat Atomik (Redis + Lua)

Operasi token bucket harus dilakukan secara atomik agar bebas dari race condition. Gunakan skrip Lua berikut:

-- KEYS[1] = kunci bucket -- ARGV[1] = kapasitas (b) -- ARGV[2] = laju isi (r, token/detik) -- ARGV[3] = cost -- ARGV[4] = waktu sekarang (detik) -- ARGV[5] = TTL local tokens = tonumber(redis.call("HGET", KEYS[1], "tokens")) or tonumber(ARGV[1]) local last = tonumber(redis.call("HGET", KEYS[1], "ts")) or tonumber(ARGV[4]) local delta = math.max(0, tonumber(ARGV[4]) - last) tokens = math.min(tonumber(ARGV[1]), tokens + delta * tonumber(ARGV[2])) if tokens < tonumber(ARGV[3]) then return 0 end tokens = tokens - tonumber(ARGV[3]) redis.call("HSET", KEYS[1], "tokens", tokens, "ts", ARGV[4]) redis.call("EXPIRE", KEYS[1], ARGV[5]) return 1
Pendekatan 2: Kuota Terbagi

Bagi limit dengan jumlah instance (misal 4 instance = 25/menit tiap node). Sangat cepat dan tanpa koordinasi jaringan, namun tidak adil jika load balancer tidak membagi trafik secara merata.

Pendekatan 3: Hibrida (Hybrid)

Tiap instance menyimpan counter lokal di memori dan menyinkronkan batch ke Redis secara periodik (misal tiap 100 ms). Kompromi terbaik antara akurasi dan latensi pada arsitektur skala masif.

7 Berkomunikasi dengan Klien

Rate limiting yang baik tidak berjalan diam-diam. Kirimkan informasi kuota melalui standar header HTTP yang jelas:

HTTP/1.1 429 Too Many Requests RateLimit-Limit: 100 RateLimit-Remaining: 0 RateLimit-Reset: 47 Retry-After: 12

Klien: Exponential Backoff dengan Jitter

Di sisi aplikasi klien, gunakan algoritma backoff dengan variasi acak (jitter) untuk menghindari bencana Thundering Herd:

delay = min(max_delay, base × 2^percobaan) × (0.5 + random() × 0.5)

Tanpa randomisasi jitter, ribuan klien yang ditolak bersamaan akan mencoba ulang serempak pada detik ke-12 — menciptakan gelombang badai trafik berulang.

8 Kesalahan yang Sering Terjadi

Membatasi Berdasarkan IP Saja

Ratusan pengguna kantor atau operator seluler berbagi 1 IP publik (NAT/CGNAT). 1 user berat bisa memblokir seisi kantor. Gunakan kombinasi token/API-key untuk user login.

Memberi Biaya Sama ke Semua Endpoint

Query laporan analitik berat yang memakan 3 detik CPU tidak boleh berbiaya sama dengan endpoint cek saldo dari cache Redis. Terapkan cost berbeda.

Lupa Membatasi Endpoint Mahal yang Jarang

Endpoint ekspor laporan PDF mungkin jarang dipanggil. Tapi jika ada yang memicu 100 ekspor paralel, CPU server 100% hang seketika.

Tidak Memantau Penolakan (Metric 429)

Lonjakan status 429 adalah alarm: bisa jadi ada bug di aplikasi Android/web klien, serangan DDoS, atau limit Anda terlalu mencekik pengguna normal.

9 Memilih Parameter dari Data, Bukan Tebakan

Jangan menetapkan angka rate limit hanya dari perasaan atau intuisi. Ikuti 5 tahapan terukur ini:

1
Ukur Dulu: Pasang rate limiter dalam mode observasi (hanya mencatat log telemetri tanpa memblokir request) selama minimal 3–7 hari.
2
Ambil Persentil: Cek metrik P95 dan P99 request per user. Set parameter r di sekitar P99 pemakaian normal.
3
Set Burst dari Pola Nyata: Amati lonjakan normal terbesar (misal loading dashboard awal butuh 40 endpoint). Set nilai kapasitas b sedikit di atas lonjakan tersebut.
4
Cek Waktu Pemulihan: Hitung rasio b / r. Jika waktu recovery terlalu panjang dan user sering butuh burst berturut-turut, tingkatkan r.
5
Pantau dan Iterasi: Monitor rasio error 429 secara kontinu di dashboard monitoring. Jika pelanggan sah sering terbentur limit, longgarkan secara adaptif.

10 Penutup & Kesimpulan

Rate limiting terlihat sepele, tapi setiap keputusan di dalamnya adalah trade-off antara perlindungan sistem dan kenyamanan pengalaman pengguna. Token bucket menang dalam popularitas karena ia satu-satunya algoritma yang membiarkan Anda mengatur kedua sisi itu secara terpisah dan eksplisit.

Pesan Kunci: Rate limit yang terlalu ketat merusak pengalaman pengguna sah; yang terlalu longgar tidak melindungi apa-apa. Titik tengah yang ideal hanya bisa ditemukan lewat pengukuran berbasis data, bukan tebakan.
MY
Makarius Yuwono

Praktisi Rekayasa Perangkat Lunak, Arsitektur Backend, & Jaringan Telekomunikasi. Panduan ini dirancang untuk menjembatani teori matematis traffic shaping dengan praktik lapangan pada router MikroTik dan API modern.

Bermanfaat untuk Pekerjaan Jaringan?

Bagikan Tool Ini ke Rekan Teknisi

Bantu rekan pengelola RT/RW Net, ISP, dan network engineer lainnya dengan perkakas gratis ini.

MikRam Hotspot & Billing ISP

Otomatiskan Billing & Isolir Pelanggan MikroTik Anda

Tidak perlu lagi repot copy-paste skrip secara manual. MikRam menyinkronkan profil bandwidth, voucher hotspot, PPPoE, dan pembayaran otomatis dengan WhatsApp gateway & payment gateway resmi.