Header Ads Widget

Ticker

6/recent/ticker-posts

Detect dan shapping download dengan connetion byte


Sehubungan dengan banyaknya pertanyaan mengenai cara membatasi download aktifity, berikut ada trik
lain selain "delaypool rasa mikrotik".
Adapun trik ini adalah dengan memanfaatkan fasilitas "connection bytes" pada mangle.
Mengenai fungsi connection bytes kalo tidak salah adalah : mendeteksi jumlah bytes yang telah tertransfer
dalam satu koneksi antar dua pihak.
Sebagai contoh :
ip 192.168.10.12 melakukan koneksi ke 202.1.2.xx. Nah selama koneksi ini terjadi, connection bytes akan
mencatat trafic bandwitdh yang terjadi dalam koneksi ini. dari 0 byte sampai tak terhingga. dan
penghitungan akan dihentikan setelah koneksi terputus.
Dan untuk connection bytes ini akan mumpuni jika dilakukan pada queue tree. untuk queue simple saya
belum pernah mencoba.

Baik sekarang dimulai:
Sebagai ilustrasi, saya akan membatasi client dengan ip 192.168.10.12.
Jika melakukan koneksi pada satu web dengan jumlah bytes masih antara 0-128 KB, maka koneksi ini
diberi prioritas 1, dan diberi jatah bandwith 128kbps. namun setelah bytes lebih dari 128KB pada koneksi
itu, maka priority akan diturunkan menjadi prio 8 dan bandwith akan dicekek ke 32kbps.

Mangle :
Pertama lakukan mark connection pada setiap aktifitas LAN ke luar
Quote:
"chain=postrouting out-interface=ether1 dst-address=192.168.10.0/24 protocol=tcp src-port=80 action=markconnection
new-connection-mark=http_conn passthrough=yes"

Selanjutnya menangkap bytes yang tertransfer dari suatu web ke ip 192.168.10.12. dimana pada mangle
pertama mendeteksi hanya pada transfer antara 0-128KB. jika lebih dari itu maka akan ditangani oleh
mangle kedua.
Quote:
"chain=postrouting out-interface=ether1 dst-address=192.168.10.12 connection-mark=http_conn connectionbytes=
0-131072 action=mark-packet new-packet-mark=client12_browsing passthrough=no
chain=postrouting out-interface=ether1 dst-address=192.168.10.12 connection-mark=http_conn connectionbytes=
131073-4294967295 action=mark-packet new-packet-mark=client12_download passthrough=no"

Selesai dimangle sekarang kita lakukan shaping pada kedua mangle tersebut dengan queue tree. Pada queue
tree ini kita memanfaatkan queue type pcq, dan untuk byte antara 0-128KB kita beri rate 128kbps,
sementara jika lebih dari 128KB maka akan diberi rate 32kbps.
queue type :
Quote:
"name="browsing" kind=pcq pcq-rate=128000 pcq-limit=50 pcq-classifier=dst-address pcq-total-limit=2000
name="download" kind=pcq pcq-rate=32000 pcq-limit=50 pcq-classifier=dst-address pcq-total-limit=2000"

Selanjutnya masuk ke queue tree:
queue tree :
Pertama bikin parent queue
Quote:
"name="choi" parent=ether1 packet-mark="" limit-at=1024000 queue=default priority=3 max-limit=1024000
burst-limit=0 burst-threshold=0 burst-time=0s"

Selanjutnya bikin child queue khusus untuk ip 192.168.10.12 tersebut dimangle diatas
Quote:
"name="client12_browsing" parent=choi packet-mark="client12_browsing" limit-at=0 queue=browsing
priority=1 max-limit=0 burst-limit=0 burst-threshold=0 name="client12_download" parent=choi packet-mark="client12_download" limit-at=0 queue=download
priority=8 max-limit=0 burst-limit=0 burst-threshold=0"

Selesai...
Silahkan di uji coba...
maaf ada kesalahan dikit :
Quote:
"chain=postrouting out-interface=ether1 dst-address=192.168.10.0/24 protocol=tcp dst-port=80 action=markconnection
new-connection-mark=http_conn passthrough=yes"

untuk dst-port harap diganti dengan src-port=80....
Saya coba modifikasi sedikit sehingga arah setingannya lebih 'global' tidak hanya berdasarkan ip client,
menggunakan webproxy dan sejauh ini berjalan dengan baik. (menggunakan list nice, sehingga aktifitas
browsing/download IIX tidak dibatasi). Saya juga menggunakan prerouting pada manglenya.

di mangle
Code:
"chain=prerouting protocol=tcp dst-port=80 dst-address-list=!nice action=markconnection
new-connection-mark=http_conn passthrough=yes
chain=prerouting connection-mark=http_conn connection-bytes=0-131072 action=markpacket
new-packet-mark=browsing passthrough=no
chain=output connection-mark=http_conn connection-bytes=0-131072 action=mark-packet
new-packet-mark=browsing passthrough=no
chain=prerouting connection-mark=http_conn connection-bytes=131073-4294967295
action=mark-packet new-packet-mark=download passthrough=no
chain=output connection-mark=http_conn connection-bytes=131073-4294967295
action=mark-packet new-packet-mark=download passthrough=no"

pada queue type
Code:
"name="browsing" kind=pcq pcq-rate=512000 pcq-limit=50 pcq-classifier=dst-address
pcq-total-limit=2000
name="download" kind=pcq pcq-rate=32000 pcq-limit=50 pcq-classifier=dst-address pcqtotal-
limit=2000"

pada queue tree
Code:
"name="clovanzo" parent=LAN packet-mark="" limit-at=10000000 queue=default priority=3
max-limit=10000000 burst-limit=0 burst-threshold=0 burst-time=0s
name="client_browsing" parent=clovanzo packet-mark=browsing limit-at=0
queue=browsing priority=1 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
name="client_download" parent=clovanzo packet-mark=download limit-at=0
queue=download priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s"

kalo ada salah mohon bantuan revisinya :-)

Post a Comment

0 Comments