PCQ (Per Connection Queue) diperkenalkan untuk mengoptimalkan sistem antrian yang sangat besar. Algoritma PCQ akan mengelompokkan aliran data masuk dan membedakan setiap aliran berdasarkan parameter
dst-address, src-address, dst-port atau
src-port. Kemudian algoritma FIFO akan menentukan berapa ukuran antrian yang diizinkan dan melakukan pembatasan pada setiap subaliran (individual). Lalu melakukan hal yang sama untuk seluruh subaliran (global).
PCQ dikenal memiliki kemampuan membagi bandwidth dengan adil dan merata. Misalkan kita memiliki bandwidth sebesar 1Mbps, jika ada 1 user yang sedang online maka bandwidth yang ada terpakai seluruhnya untuk satu user. Jika ada 2 user, bandwidth secara merata akan dibagai untuk dua user. Jika ada 3 user, bandwidth juga akan dibagi untuk tiga user, begitu seterusnya.
Beberapa parameter yang sering digunakan PCQ adalah sebagai berikut:
- pcq-classifier (dst-address | dst-port | src-address | src-port; default: "") : mengidentifikasi sebuah aliran. Misalkan jika parameter yang digunakan dst-address maka aliran tersebut dikelompokkan sebagai koneksi download, sebaliknya jika parameter yang digunakan src-address maka aliran dikelompokkan sebagai koneksi upload.
- pcq-rate (number) : maximal download yang tersedia untuk setiap subaliran. Misal kita isi dengan 100k maka maximal download yang akan didapat per IP/client/target akan dibatasi hanya sampai 100k.
- pcq-limit (number) : banyaknya koneksi untuk setiap subaliran, maksudnya jumlah koneksi yang diizinkan untuk setiap subaliran (dalam KB). Misal bila kita memasukkan nilai 50, maka hanya 50 koneksi yang bisa didapat per IP/client/target.
- pcq-total-limit (number) : banyaknya koneksi untuk total keseluruhan subaliran, maksudnya total keseluruhan koneksi yang diizinkan untuk semua subaliran (dalam KB). Bila kita memasukkan nilai 2000 kemudian dibagi 50 nilai pcq-limit, maka secara teori akan didapat angka 40 total IP/client/target yang bisa terkoneksi ke jaringan Mikrotik kita.
- pcq-burst-rate (number) : maximal upload/download yang dapat dicapai selama burst subaliran membolehkannya.
- pcq-burst-threshold (number) : batas pcq-burst-rate, yang digunakan sebagai indikator boleh tidaknya nilai pcq-burst-rate dijalankan (on/off switch). Jika rata-rata bandwidth dibawah nilai ini maka pcq-burst-rate dibolehkan, jika tidak maka ditolak.
- pcq-burst-time (time) : periode waktu dalam hitungan detik dimana nilai rata-rata bandwidth mulai dihitung.
- pcq-dst-address-mask (number) : lebar jaringan IPv4 yang akan digunakan sebagai pengenal subaliran dst-address.
- pcq-src-address-mask (number) : lebar jaringan IPv4 yang akan digunakan sebagai pengenal subaliran src-address.
- pcq-dst-address6-mask (number) : lebar jaringan IPv6 yang akan digunakan sebagai pengenal subaliran dst-address.
- pcq-src-address6-mask (number) : lebar jaringan IPv6 yang akan digunakan sebagai pengenal subaliran src-address.
PCQ Classifier
Sekarang mari kita pahami bagaimana PCQ melakukan pengelompokkan. Misalkan ada 18 paket aliran dari alamat dan port tertentu ke alamat dan port tertentu. PCQ akan mengelompokkan 18 paket aliran tersebut ke dalam beberapa subaliran.
Jika parameter yang digunakan adalah alamat asal (
pcq-classifier=src-address), maka PCQ akan mengelompokkannya menjadi 3 subaliran.
Jika parameter yang digunakan adalah alamat tujuan (
pcq-classifier=dst-address), PCQ akan mengelompokkannya menjadi 3 subaliran.
Jika parameter yang digunakan adalah alamat dan port tujuan (
pc-classifier=dst-address, dst-port), akan menjadi 5 subaliran.
Sangat mungkin akan banyak sekali koneksi yang terbentuk dalam satu subaliran jika paket data yang masuk dalam jumlah besar. Maka parameter
pcq-total-limit dan
pcq-limit memiliki peran penting disini.
pcq-total-limit akan membatasi total keseluruhan koneksi yang dapat terbentuk untuk seluruh subaliran. Jika kita meletakkan nilai
pcq-total-limit=2000 (default), artinya hanya akan ada 2000 koneksi yang terbentuk untuk seluruh subaliran.
Sedangkan
pcq-limit akan membatasi jumlah koneksi yang diizinkan per IP/target/client. Jika kita meletakkan nilai
pcq-limit=50 (default) maka maksimal koneksi yang diperkenankan per IP/client/target hanya sampai 50 koneksi baik asal maupun tujuan.
PCQ Rate
Jika
pcq-limit membatasi jumlah koneksi yang terbentuk, maka
pcq-rate akan membatasi maximal download yang bisa dicapai per IP/client/target. Fungsi
pcq-rate hampir mirip dengan
max-limit pada
queue tree atau
queue simple, yaitu sama-sama membatasi maximal download per client.
Coba kita lihat pebedaan jika kita menentukan nilai
pcq-rate dan tidak.
Coba perhatikan gambar dibawah ini. Jika nilai
max-limit=512k dengan nilai
pcq-rate=128k bisa kita lihat bahwa sebenarnya bandwidth tidak terbagi secara merata jika ada 2 user yang sedang memakai. Secara teori 512k - (2 x 128 k) = 256k, akan ada 256k bandwidth yang tidak terpakai. Perhatikan hanya tidak terpakai bukan terbuang percuma karena memang hanya 2 user yang sedang memakai. Begitu juga jika ada 1 user, artinya bahwa akan ada bandwidth sebesar 384k yang tidak terpakai (bukan terbuang percuma).
Berdasarkan contoh ini maka, seluruh bandwidth akan terpakai dan terbagi secara adil dan merata jika user berjumlah 4 atau lebih. Jadi maksudnya selama nilai pembagian antara nilai
max-limit dan
jumlah user kurang dari nilai
pcq-rate maka user secara fixed mendapat bandwidth sebesar nilai
pcq-rate.
Lalu bagaimana jika nilai pcq-rate=0 (default)? Disini baru kita bisa melihat bahwa bandwidth itu dibagi secara adil dan merata. Baik ketika user ada 1, 2, atau lebih seluruh user akan mendapatkan jatah bandwidth yang sama.
Dalam beberapa kasus Anda dianjurkan menggunakan salah satu dari keduanya, maksudnya menentukan nilai
pcq-rate atau menentukan nilai
max-limit pada
queue tree atau
queue simple.