Tuesday, March 13, 2012

Mengoprek Kernel Linux Agar Lalu-lintas Jaringan Lebih Mantap

Linux kernel dan distro yang mengemasnya biasanya hanya menyediakan settingan default yang sangat konservatif. Settingan-setingan itu sebenarnya bisa di-oprek baik lewat file system /proc atau  menggunakan program sysctl. Cara yang kedua seringkali lebih baik, karena ia hanya membaca isi dari file /etc/sysctl.conf, yang settingannya tak lagi berubah setiap kali reboot.

Berikut ini adalah sebagian dari file /etc/sysctl.conf yang bisa meningkatkan performan jaringan:

net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_syncookies = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

Yang diatas itu bukan untuk mengganti apa yang sudah ada di /etc/sysctl.conf, akan tetapi untuk menambahinya. Perintah pertama akan membuat TCP window scaling jadi enable, yang memungkinkan klien men-download data pada kecepatan tertinggi dengan cara menambahkan beberapa bits lagi di paket TCP yang akan digunakan untuk meningkatkan ukuran window.

Perintah kedua meng-enable-kan cookies TCP SYN, yang terkadang sudah ter-enable secara default dan ini sangat efektif untuk mencegah kondisi-kondisi seperti SYN floods (banjir SYN) –yang dapat menghabiskan sumber daya server, yang digunakan untuk memproses koneksi-koneksi yang datang. 

Empat perintah terakhir meningkatkan buffer TCP –baik send maupun receive, memungkinkan suatu aplikasi memindahkan data lebih cepat sambil melayani request-request lain. Hal ini juga akan menambah kemampuan klien mengirim data ke server meski server sedang sibuk. 

Dengan menambahkan perintah-perintah itu di /etc/sysctl.conf, anda memastikan perintah-perintah itu dipanggil tiap kali reboot. Untuk segera merasakan efeknya tanpa reboot, gunakan; 

# sysctl -p /etc/sysctl.conf

Untuk melihat pilihan-pilihan konfigurasi sysctl yang sedang digunakan saat ini, gunakan: 

# sysctl -a 

Perintah ini akan menampilkan daftar konfigurasi dan nilainya saat sekarang. File sysctl.conf memungkinkan kita meng-konfigurasi dan menyimpan settingan baru; apa yang anda lihat output ini adalah setingan default di dalam kernel yang sedang berlaku. Untuk melihat salah satu nilai, gunakan: 

# sysctl -q net.ipv4.tcp_window_scaling 

Sama saja, untuk memberi nilai pada satu item tanpa meng-konfigurasi di sysctl.conf –dan agar nilai itu tak akan dipertahankn setelah reboot, gunakan: 

# sysctl -w net.ipv4.tcp_window_scaling=1 

Perintah ini berguna untuk menge-test keefektifan settingan tertentu tanpa menyimpannya menjadi setingan default.

Translated to Bahasa by me, from: 'Tuning the Linux Kernel For More Aggressive Network Throughput' by VincentDanen June 4, 2007, 8:28 AM PDT