Prioritas ACK dengan pf

by : wishnu (  godril@indofreebsd.or.id  )   Di kantor saya, saya memiliki dua link menuju kantor pusat, di mana link pertama menggunakan sa...

by : wishnu ( godril@indofreebsd.or.id )
 
Di kantor saya, saya memiliki dua link menuju kantor pusat, di mana link pertama menggunakan sambungan terrestrial hingga ke level internasional, sedangkan link yang satunya lagi menggunakan satelit di level internasionalnya (keduanya menggunakan terrestrial untuk ke IIX). Untuk yang link terrestrial tidak ada masalah sama sekali. Yang jadi masalah adalah pada saat saya menggunakan link satelit untuk melakukan download. Link satelit saya adalah 768 agregat (256 Kbps up, dan 512 Kbps down). 
Pada saat saya memulai download, saya akan mendapatkan throughput yang cukup lumayan pada awalnya (sekitar 40 - 55Kbps), tetapi akan langsung anjlok (sampai 20kbps an) setelah beberapa saat saya melakukan browsing sambil download tetap berjalan. Teman-teman mungkin pernah mengalami seperti ini. Yang terjadi adalah begini: pada saat terjadi koneksi satu arah (misal download melalui ftp), maka dibutuhkan trasmit ACK dari sisi yang berlawanan (misal saya mendownload file lewat protokol ftp dari sebuah server di luar, maka host saya harus secara konstan mengirimkan ACK), untuk menjaga koneksi agar server ftp tersebut tidak menganggap packet yang ditransmit loss di tengah jalan, sehingga akan mentransmit ulang packet yang dianggap hilang. Nah pada saat uplink saya juga mengalami saturasi (misal untuk upload, request, kirim email, dan lain sebagainya), maka TCP ACK saya yang harusnya saya kirim ke server ftp tersebut juga terhalang yang lalu menyebabkan delay transmit ACK, yang berlanjut menurunnya throughput download.
Sebenarnya outgoing ACK ini sangat kecil, hal seperti itu tidak perlu terjadi. Jadi sekarang bagaimana kita bisa meloloskan packet ACK ini sehingga download kita tidak terganggu oleh aktivitas upload kita dengan menggunakan pf dan ALTQ. Kira-kira rule nya adalah seperti ini:
extif="rl1"
altq on $extif priq bandwidth 32Kb queue { qprior, qdflt }
queue qprior priority 7
queue qdflt priority 1 priq(default)

pass out on $extif proto tcp from $extif to any flags S/SA \
keep state queue (qdflt, qprior)
pass in on $extif proto tcp from any to $extif flags S/SA \
keep state queue (qdflt, qprior)

Baris pertama adalah definisi makro untuk interface yang menghadap ke luar. Hal ini untuk memudahkan re-setting rule kalau-kalau ganti interface. Yang kedua adalah mengaktifkan altq di interface tersebut, yang kemudian mendefinisikan speed rate uplink pada interface tersebut. Di sini juga kita definisikan dua queue yang kita beri nama qprior dan qdflt (penamaan ini bebas). Queue dengan prioritas kecil kita jadikan sebagai default (priority 1).
Berikutnya kita aplikasikan definisi tersebut ke dalam rule, dimana semua packet TCP akan diperlakukan secara default dengan rule qdflt, sedangkan untuk packet dengan ToS flag yang diset sebagai "low delay" seperti ssh dan packet-packet ACK yang tanpa payload, akan diatur dengan rule qprior. Semua packet yang masuk dan keluar akan melewati rule ini, membuat state pada table keep-state, dan semua packet yang menggunakan flag ToS "low delay" akan didahulukan sehingga download kita akan menjadi lancar. Nah, selamat mencoba.

NB: Untuk teman-teman yang masih menggunakan link PPPoE, uplinknya harus diperhitungkan juga dengan overhead packet PPPoE. Jadi jika uplink nya 64Kbps, kemungkinan tidak akan full 64Kbps, karena enkapsulasi PPPoE juga membutuhkan overhead dari speed rate tersebut.

NB: Gunakan plugin pf seperti pfsysinfo atau hatchet untuk mengetahui perbedaan throughput yang dihasilkan dengan rule di atas, dan lakukan beberapa experimen untuk mendapatkan hasil yang pas.

COMMENTS

Name

Application Support,19,database server,1,Desktop/XWindow,1,DNS Server,2,Email Server,3,Firewall,1,FTP Server,2,General,2,IPFilter,1,Kernel,2,Networking,8,Proxy Server,4,Security,6,Tips and Trick,5,Web Server,2,
ltr
item
IndoFreeBSD: Prioritas ACK dengan pf
Prioritas ACK dengan pf
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHWMrZqHm0tUeuJZ2PwKZvhU8IaCHlJZdFokHVqPhYLKykT-i2Ze5UI3j_WipdL6oPJWHGsKFUoILZfELTvvMvf-YIRMEKpwBL6IiXnQ1TcUxYNfsah0qNdtWyki7_etPulWZlBKDaIRqc/s1600/fw_traffic_flow.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHWMrZqHm0tUeuJZ2PwKZvhU8IaCHlJZdFokHVqPhYLKykT-i2Ze5UI3j_WipdL6oPJWHGsKFUoILZfELTvvMvf-YIRMEKpwBL6IiXnQ1TcUxYNfsah0qNdtWyki7_etPulWZlBKDaIRqc/s72-c/fw_traffic_flow.png
IndoFreeBSD
http://www.indofreebsd.or.id/2015/02/prioritas-ack-dengan-pf.html
http://www.indofreebsd.or.id/
http://www.indofreebsd.or.id/
http://www.indofreebsd.or.id/2015/02/prioritas-ack-dengan-pf.html
true
1901051463523757307
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content