.. judul: Penyetelan Buffer Sistem - TCP dan Optimasi Kinerja Jaringan .. slug: penyetelan buffer sistem .. tanggal: 02-02-2026 10:00:00 UTC .. tag: jaringan, kinerja, tuning, tcp, buffer .. kategori: artikel ..tautan: .. deskripsi: Memahami dan mengoptimalkan buffer sistem untuk menyelesaikan masalah kinerja TCP yang sering salah didiagnosis sebagai masalah jaringan .. ketik: teks

Penyetelan Buffer Sistem: Penyebab Tersembunyi di Balik "Masalah Jaringan"

Ringkasan Eksekutif

Insinyur jaringan sering kali menghadapi situasi di mana jendela TCP atau kinerja aplikasi disalahkan pada infrastruktur jaringan. Setelah melakukan penangkapan paket ekstensif, tcpdumps, dan analisis jaringan, hambatan sebenarnya sering kali ditemukan: NIC (Kartu Antarmuka Jaringan) atau buffer tingkat OS yang habis pada sistem klien atau server.

Artikel ini membahas konfigurasi buffer lama (sekitar tahun 2009) dan saat ini (2025-2026) untuk Linux, Windows, dan macOS, serta teknik diagnostik untuk mengidentifikasi kehabisan buffer sebelum menjadi masalah kritis.

Gejala Umum Kelelahan Buffer

Memahami Masalahnya

Mekanisme Penskalaan Jendela TCP

TCP menggunakan mekanisme kontrol aliran di mana penerima mengiklankan "ukuran jendela" yang menunjukkan berapa banyak data yang dapat diterima. Ketika buffer sistem terisi, jendela ini menyusut ke nol, memaksa pengirim untuk menunggu. Ini tampak sebagai masalah jaringan namun sebenarnya merupakan masalah sumber daya host.

Dimana Buffer Penting

Perintah Diagnostik

Diagnostik Linux

# Check current TCP buffer settings
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
sysctl net.core.rmem_max
sysctl net.core.wmem_max

# Check NIC ring buffer sizes
ethtool -g eth0

# Monitor socket buffer usage
ss -tm

# Check for TCP zero window events
tcpdump -i any 'tcp[tcpflags] & tcp-push != 0' -vv

# Check network statistics for buffer issues
netstat -s | grep -i "buffer\|queue\|drop"

Diagnostik Windows

# Check TCP parameters
netsh interface tcp show global

# View network adapter buffer settings
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Where-Object {$_.DisplayName -like "*buffer*"}

# Monitor TCP statistics
netstat -s -p tcp

# Check receive window auto-tuning
netsh interface tcp show global | findstr "Receive Window"

Diagnostik macOS

# Check current buffer settings
sysctl kern.ipc.maxsockbuf
sysctl net.inet.tcp.sendspace
sysctl net.inet.tcp.recvspace

# View network statistics
netstat -s -p tcp

# Monitor socket buffers
netstat -an -p tcp

Penyetelan Buffer Linux

Pengaturan Linux Lama (Sekitar tahun 2009)

Parameter Nilai Warisan (2009) Keterangan
net.core.rmem_default 124928 (122KB) Ukuran buffer soket penerimaan default
net.core.rmem_max 131071 (128KB) Ukuran buffer soket penerimaan maksimum
net.core.wmem_default 124928 (122KB) Ukuran buffer soket pengiriman default
net.core.wmem_max 131071 (128KB) Ukuran buffer soket pengiriman maksimum
net.ipv4.tcp_rmem 4096 87380 174760 TCP menerima buffer: min, default, max (dalam byte)
net.ipv4.tcp_wmem 4096 16384 131072 Buffer pengiriman TCP: min, default, max (dalam byte)
net.ipv4.tcp_mem 196608 262144 393216 Halaman memori TCP: rendah, tekanan, tinggi
net.core.netdev_max_backlog 1000 Paket maksimum dalam antrian input
net.core.optmem_max 10240 (10KB) Ukuran buffer tambahan maksimum per soket

Pengaturan Linux Saat Ini (2025-2026)

Parameter Nilai yang Direkomendasikan Saat Ini Keterangan
net.core.rmem_default 16777216 (16 MB) Ukuran buffer soket penerimaan default
net.core.rmem_max 134217728 (128MB) Ukuran buffer soket penerimaan maksimum
net.core.wmem_default 16777216 (16 MB) Ukuran buffer soket pengiriman default
net.core.wmem_max 134217728 (128MB) Ukuran buffer soket pengiriman maksimum
net.ipv4.tcp_rmem 4096 87380 134217728 Buffer penerimaan TCP: min, default, maks (maks 128MB)
net.ipv4.tcp_wmem 4096 65536 134217728 Buffer pengiriman TCP: min, default, maks (maks 128MB)
net.ipv4.tcp_mem 8388608 12582912 16777216 Halaman memori TCP: rendah, tekanan, tinggi (sistem 64GB)
net.core.netdev_max_backlog 250000 Paket maksimum dalam antrian input (10GbE+)
net.core.optmem_max 65536 (64KB) Ukuran buffer tambahan maksimum per soket
net.ipv4.tcp_congestion_control bbr Gunakan kontrol kemacetan BBR (algoritma Google)
net.ipv4.tcp_window_scaling 1 Aktifkan penskalaan jendela TCP (RFC 1323)
net.ipv4.tcp_timestamps 1 Aktifkan stempel waktu TCP untuk estimasi RTT yang lebih baik
net.ipv4.tcp_sack 1 Aktifkan Pengakuan Selektif
net.ipv4.tcp_no_metrics_save 1 Nonaktifkan cache metrik TCP

Aplikasi Konfigurasi Linux

Tambahkan pengaturan ini ke/etc/sysctl.confatau buat file baru/etc/sysctl.d/99-network-tuning.conf:

# Network Buffer Tuning for High-Performance Applications
# Optimized for 10GbE+ networks with RTT up to 300ms

# Core socket buffer settings
net.core.rmem_default = 16777216
net.core.rmem_max = 134217728
net.core.wmem_default = 16777216
net.core.wmem_max = 134217728

# TCP buffer settings
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.ipv4.tcp_mem = 8388608 12582912 16777216

# Device buffer settings
net.core.netdev_max_backlog = 250000
net.core.netdev_budget = 50000
net.core.netdev_budget_usecs = 5000
net.core.optmem_max = 65536

# TCP optimizations
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1

# Apply with: sysctl -p /etc/sysctl.d/99-network-tuning.conf

Penyetelan Penyangga Cincin NIC

# Check current ring buffer sizes
ethtool -g eth0

# Set maximum ring buffer sizes (adjust based on NIC capabilities)
ethtool -G eth0 rx 4096 tx 4096

# Make persistent by adding to /etc/network/interfaces or systemd service
Peringatan Kritis - Konsumsi Memori:Nilai tcp_mem ada di halaman memori (biasanya 4KB). Ukuran buffer yang besar dapat menyebabkan tekanan memori yang parah:

Penyetelan Buffer Windows

Pengaturan Windows Lama (Sekitar tahun 2009 - Windows Vista/7/Server 2008)

Parameter Nilai Warisan (2009) Lokasi
TcpWindowSize 65535 (64KB) Registri: HKLM\System\CurrentControlSet\Services\Tcpip\Parameters
Tcp1323Pilihan 0 (dinonaktifkan) Penskalaan jendela dinonaktifkan secara default
Jendela Penerimaan Default 8192 (8KB) Jendela penerimaan default
JendelaKirim Default 8192 (8KB) Jendela pengiriman default
GlobalMaxTcpWindowSize 65535 (64KB) Ukuran jendela TCP maksimum
Koneksi TcpNum 16777214 Koneksi TCP maksimum

Pengaturan Windows Saat Ini (Windows 10/11/Server 2019-2025)

Windows modern menggunakanMenerima Penyetelan Otomatis Jendelafitur, yang secara dinamis menyesuaikan buffer penerimaan berdasarkan kondisi jaringan.

Fitur Pengaturan yang Direkomendasikan Saat Ini Keterangan
Tingkat Penyetelan Otomatis normal (atau sangat eksperimental untuk 10GbE+) Penyesuaian jendela penerimaan dinamis
Penskalaan Sisi Terima (RSS) diaktifkan Mendistribusikan pemrosesan jaringan ke seluruh CPU
Pembongkaran Cerobong otomatis (atau dinonaktifkan pada NIC modern) Pembongkaran TCP ke perangkat keras NIC
NetDMA dengan disabilitas Akses Memori Langsung (tidak digunakan lagi)
Parameter Global TCP Lihat perintah di bawah Pengaturan TCP seluruh sistem
Penyedia Kemacetan CUBIC (atau pengganti NewReno) Algoritma kontrol kemacetan TCP

Perintah Konfigurasi Windows

# Check current auto-tuning level
netsh interface tcp show global

# Enable auto-tuning (normal mode - default for most scenarios)
netsh interface tcp set global autotuninglevel=normal

# For high-bandwidth, high-latency networks (10GbE+, data center environments)
netsh interface tcp set global autotuninglevel=experimental

# For conservative tuning (if experimental causes issues)
netsh interface tcp set global autotuninglevel=restricted

# For very conservative tuning (not recommended for high-performance networks)
netsh interface tcp set global autotuninglevel=highlyrestricted

# Enable CUBIC congestion provider (Windows Server 2022/Windows 11+ only)
netsh interface tcp set supplemental template=Internet congestionprovider=cubic

# Note: Windows 10 and Server 2019 use Compound TCP or NewReno by default
# CUBIC is not available on these older versions

# Enable Receive-Side Scaling (RSS)
netsh interface tcp set global rss=enabled

# Set chimney offload (automatic is recommended)
netsh interface tcp set global chimney=automatic

# Disable NetDMA (recommended for modern systems)
netsh interface tcp set global netdma=disabled

# Enable Direct Cache Access (if supported)
netsh interface tcp set global dca=enabled

# Enable ECN (Explicit Congestion Notification)
netsh interface tcp set global ecncapability=enabled

# Set initial congestion window to 10 (RFC 6928)
netsh interface tcp set global initialRto=3000

Pengaturan Buffer NIC Tingkat Lanjut (melalui Pengelola Perangkat atau PowerShell)

# View current adapter settings
Get-NetAdapterAdvancedProperty -Name "Ethernet"

# Increase receive buffers (adjust based on NIC)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue 2048

# Increase transmit buffers
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue 2048

# Enable Jumbo Frames (if network supports it)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Jumbo Packet" -DisplayValue 9014

# Enable Large Send Offload (LSO)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload V2 (IPv4)" -DisplayValue Enabled
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload V2 (IPv6)" -DisplayValue Enabled

Perubahan Registri (Lanjutan - Gunakan dengan Hati-hati)

# These settings are typically NOT needed on Windows 10/11 due to auto-tuning
# Only modify if auto-tuning is disabled or problematic

# Registry path: HKLM\System\CurrentControlSet\Services\Tcpip\Parameters

# Maximum TCP window size (if auto-tuning disabled)
# TcpWindowSize = 16777216 (16MB) - REG_DWORD

# Enable window scaling (enabled by default on modern Windows)
# Tcp1323Opts = 3 - REG_DWORD

# Number of TCP Timed Wait Delay
# TcpTimedWaitDelay = 30 - REG_DWORD (default 240)
Peringatan:Pada Windows modern (10/11/Server 2019+), hindari modifikasi registri manual kecuali penyetelan otomatis menyebabkan masalah. Algoritme penyetelan otomatis umumnya lebih unggul daripada pengaturan statis.

Penyetelan Penyangga MacOS

Pengaturan macOS lawas (Sekitar tahun 2009 - Mac OS X 10.5/10.6)

Parameter Nilai Warisan (2009) Keterangan
kern.ipc.maxsockbuf 262144 (256 KB) Ukuran buffer soket maksimum
net.inet.tcp.sendspace 32768 (32KB) Buffer pengiriman TCP default
net.inet.tcp.recvspace 32768 (32KB) TCP default menerima buffer
net.inet.tcp.autorcvbufmax 131072 (128KB) Buffer penerimaan maksimum yang disetel secara otomatis
net.inet.tcp.autosndbufmax 131072 (128KB) Buffer pengiriman maksimum yang disetel secara otomatis
net.inet.tcp.rfc1323 0 (dinonaktifkan) Penskalaan jendela TCP

Pengaturan macOS saat ini (macOS 12-15 Monterey hingga Sequoia)

Parameter Nilai yang Direkomendasikan Saat Ini Keterangan
kern.ipc.maxsockbuf 8388608 (8 MB) Ukuran buffer soket maksimum
net.inet.tcp.sendspace 131072 (128KB) Buffer pengiriman TCP default
net.inet.tcp.recvspace 131072 (128KB) TCP default menerima buffer
net.inet.tcp.autorcvbufmax 16777216 (16 MB) Buffer penerimaan maksimum yang disetel secara otomatis
net.inet.tcp.autosndbufmax 16777216 (16 MB) Buffer pengiriman maksimum yang disetel secara otomatis
net.inet.tcp.rfc1323 1 (diaktifkan) Aktifkan penskalaan jendela TCP
net.inet.tcp.sack 1 (diaktifkan) Aktifkan Pengakuan Selektif
net.inet.tcp.mssdflt 1440 Ukuran Segmen Maksimum TCP Default
net.inet.tcp.delayed_ack 3 Perilaku ACK tertunda

Aplikasi Konfigurasi macOS

# Check current settings
sysctl kern.ipc.maxsockbuf
sysctl net.inet.tcp.sendspace
sysctl net.inet.tcp.recvspace
sysctl net.inet.tcp.autorcvbufmax
sysctl net.inet.tcp.autosndbufmax

# Apply settings temporarily (until reboot)
sudo sysctl -w kern.ipc.maxsockbuf=8388608
sudo sysctl -w net.inet.tcp.sendspace=131072
sudo sysctl -w net.inet.tcp.recvspace=131072
sudo sysctl -w net.inet.tcp.autorcvbufmax=16777216
sudo sysctl -w net.inet.tcp.autosndbufmax=16777216
sudo sysctl -w net.inet.tcp.rfc1323=1
sudo sysctl -w net.inet.tcp.sack=1

# Make settings persistent (create /etc/sysctl.conf)
sudo tee /etc/sysctl.conf <<EOF
kern.ipc.maxsockbuf=8388608
net.inet.tcp.sendspace=131072
net.inet.tcp.recvspace=131072
net.inet.tcp.autorcvbufmax=16777216
net.inet.tcp.autosndbufmax=16777216
net.inet.tcp.rfc1323=1
net.inet.tcp.sack=1
net.inet.tcp.mssdflt=1440
net.inet.tcp.delayed_ack=3
EOF

# Note: On recent macOS versions, /etc/sysctl.conf may not be read automatically
# Use a LaunchDaemon to apply settings at boot

Membuat LaunchDaemon untuk Pengaturan Persisten

# Create /Library/LaunchDaemons/com.local.sysctl.plist
sudo tee /Library/LaunchDaemons/com.local.sysctl.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.local.sysctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/sysctl</string>
        <string>-w</string>
        <string>kern.ipc.maxsockbuf=8388608</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
EOF

sudo chmod 644 /Library/LaunchDaemons/com.local.sysctl.plist
sudo launchctl load /Library/LaunchDaemons/com.local.sysctl.plist
Peringatan:macOS Ventura (13) dan versi lebih baru memiliki batasan Perlindungan Integritas Sistem (SIP). Beberapa parameter kernel mungkin tidak dapat dimodifikasi bahkan dengan sudo. Uji pengaturan di lingkungan spesifik Anda.

Pengujian dan Validasi Kinerja

Alat untuk Menguji Kinerja Buffer

iperf3 - Pengujian Kinerja Jaringan

# Server side
iperf3 -s

# Client side - test TCP throughput
iperf3 -c server_ip -t 60 -i 5 -w 16M

# Test with multiple parallel streams
iperf3 -c server_ip -P 10 -t 60

# Test UDP performance
iperf3 -c server_ip -u -b 1000M -t 60

tcpdump - Tangkap Ukuran Jendela TCP

# Capture and display TCP window sizes
tcpdump -i any -n 'tcp' -vv | grep -i window

# Save capture for Wireshark analysis
tcpdump -i any -w /tmp/capture.pcap 'tcp port 443'

Analisis Wireshark

Carilah indikator masalah penyangga berikut ini:

Pemantauan Sistem

# Linux - Monitor network buffer statistics
watch -n 1 'cat /proc/net/sockstat'
watch -n 1 'ss -tm | grep -i mem'

# Check for drops
netstat -s | grep -i drop

# Windows - Monitor TCP statistics
netstat -e 1

# macOS - Monitor network statistics
netstat -s -p tcp

Perhitungan Produk Penundaan Bandwidth (BDP).

Untuk menentukan ukuran buffer optimal untuk jaringan Anda, hitung Produk Penundaan Bandwidth:

BDP = Bandwidth (bits/sec) × RTT (seconds)

Example for 10 Gigabit Ethernet with 50ms RTT:
BDP = 10,000,000,000 × 0.050 = 500,000,000 bits = 62.5 MB

Buffer Size = BDP × 2 (for bidirectional traffic and headroom)
Buffer Size = 62.5 MB × 2 = 125 MB

This is why modern settings recommend 128MB maximum buffers.

Rekomendasi Khusus Beban Kerja

Jenis Beban Kerja Ukuran Buffer yang Direkomendasikan Parameter Utama
Server Web (latensi rendah) 4-16 MB Buffer lebih rendah, koneksi lebih banyak, respons cepat
Server Basis Data 16-32MB Buffer sedang, throughput konsisten
Transfer / Cadangan File 64-128MB Buffer maksimum, prioritas throughput tinggi
Streaming Video 32-64MB Buffer besar, kecepatan pengiriman konsisten
HPC / Pusat Data 128-256MB Buffer maksimum, kontrol kemacetan khusus
Nirkabel / Seluler 2-8MB Buffer konservatif, penanganan latensi variabel

Kesalahan dan Kesalahan Umum

Kesalahan yang Harus Dihindari

Alur Kerja Pemecahan Masalah

  1. Tetapkan dasar:Ukur kinerja saat ini dengan iperf3 atau alat serupa
  2. Menangkap paket:Gunakan tcpdump/Wireshark untuk mengidentifikasi perilaku jendela TCP
  3. Periksa statistik sistem:Carilah tetesan, kelelahan buffer, transmisi ulang
  4. Hitung BDP:Tentukan ukuran buffer yang optimal secara teoritis
  5. Terapkan perubahan bertahap:Jangan mengubah semuanya sekaligus
  6. Uji dan validasi:Ukur peningkatan kinerja aktual
  7. Pantau dari waktu ke waktu:Pastikan pengaturan tetap optimal pada beban yang bervariasi

Referensi dan Bacaan Lebih Lanjut

Kesimpulan

Kehabisan buffer adalah akar penyebab umum masalah kinerja yang tampaknya terkait dengan jaringan. Dengan memahami evolusi ukuran buffer dari batas 128KB pada tahun 2009 hingga kemampuan 128MB saat ini, teknisi jaringan dapat dengan cepat mengidentifikasi dan menyelesaikan masalah ini.

Kesimpulan utama:

Ingat: "Masalah jaringan" yang diungkapkan oleh analisis paket untuk menunjukkan jendela nol TCP sebenarnya adalah masalah sumber daya sistem host. Dengan penyetelan buffer yang tepat, Anda dapat menghilangkan diagnosis palsu ini dan mencapai performa optimal.


Terakhir Diperbarui: 2 Februari 2026

Penulis: Tim Teknis Baud9600