Lompat ke konten

Rangkaian siap pakai, tiap satu hal untuk diperhatikan

Skenario

Tiap skenario adalah satu konfigurasi yang mendemonstrasikan satu fenomena bernama.

Slow start ke buffer dangkal

slow-start-shallow-buffer

"Slow start" menggandakan window tiap round trip. Awalnya pelan lalu meledak, dan pada buffer dangkal ia melampaui kapasitas pipa jauh sebelum loss pertama menghentikannya.

Yang perlu diperhatikanWindow menggandakan diri rapi — 1, 2, 4, 8 — lalu melampaui buffer dan runtuh. Perhatikan berapa lama sisa simulasi dihabiskan untuk pulih dari overshoot yang hanya berlangsung sepersekian detik.
Buka skenario
Bandwidth
10.0 Mbps
RTT dasar
20.0 ms
Buffer
6.1 KiB · 0.25 × BDP
Queue discipline
droptail
Algoritma
reno
Durasi
20 s

Reno melawan CUBIC di pipa panjang dan lebar

long-fat-pipe

Reno menambah satu segment tiap round trip, sehingga waktu mengisi pipa tumbuh seiring RTT. Pada 100 Mbps dengan 100 ms, window harus mencapai sekitar 860 segment, dan satu-per-RTT tidak akan sampai. CUBIC tumbuh sebagai fungsi kubik dari waktu sejak loss terakhir, jadi pemulihannya tidak bergantung pada jarak ujung yang lain. Ini alasan Linux mengganti default-nya.

Yang perlu diperhatikanReno mencapai sekitar 40% kapasitas dalam semenit. CUBIC mencapai 85%.
Buka skenario
Bandwidth
100.0 Mbps
RTT dasar
100 ms
Buffer
1.19 MiB · 1.00 × BDP
Queue discipline
droptail
Algoritma
reno
Durasi
60 s

Bufferbloat: DropTail melawan CoDel

bufferbloat-droptail

Sender berbasis loss akan mengisi berapa pun buffer yang diberikan — itu arti "berbasis loss". Beri delapan BDP buffer dan ia akan menaruh delapan BDP data di antrean, menambah ratusan milidetik latensi tanpa kehilangan satu paket pun. Ini sebabnya video call memburuk ketika ada yang mulai mengunduh.

Yang perlu diperhatikanThroughput keduanya nyaris sama. RTT rata-rata berbeda enam kali lipat: 325 ms lawan 51 ms, pada jalur yang delay propagasinya 50 ms.
Buka skenario
Bandwidth
50.0 Mbps
RTT dasar
50.0 ms
Buffer
2.38 MiB · 8.00 × BDP
Queue discipline
droptail
Algoritma
cubic
Durasi
60 s

Dua flow identik menuju setara

aimd-convergence

Chiu dan Jain membuktikan pada 1989 bahwa additive increase dengan multiplicative decrease menuju bagian yang setara dari titik awal mana pun. Flow kedua di sini datang terlambat 20 detik, jadi titik awalnya setimpang mungkin.

Yang perlu diperhatikanJain’s index mulai di sekitar 0,5 dan naik melewati 0,95. Pada diagram fase, amati lintasannya menapak menuju titik potong garis fair share dengan garis kapasitas.
Buka skenario
Bandwidth
50.0 Mbps
RTT dasar
50.0 ms
Buffer
305.2 KiB · 1.00 × BDP
Queue discipline
red
Algoritma
reno · reno
Durasi
120 s

Ketidakadilan karena RTT

rtt-unfairness

Pertumbuhan window terjadi per round trip, jadi flow dengan RTT seperempatnya menambah window empat kali lebih sering dan mendapat bagian yang jauh lebih besar. Kedua flow di sini identik dalam segala hal lain.

Yang perlu diperhatikanFlow ber-RTT pendek mengambil kira-kira sebesar rasio RTT-nya. Antreannya sengaja RED: di atas antrean tail-drop, phase effect deterministik justru membalik biasnya.
Buka skenario
Bandwidth
50.0 Mbps
RTT dasar
25.0 ms
Buffer
305.2 KiB · 2.00 × BDP
Queue discipline
red
Algoritma
reno · reno
Durasi
120 s

BBR v1 melawan CUBIC

bbr-vs-cubic

BBR v1 tidak memperlakukan loss sebagai sinyal congestion. Ia mengukur bandwidth bottleneck dan delay propagasi lalu memacu pada laju itu. Ketika berbagi buffer dalam dengan flow berbasis loss, keduanya mengoptimalkan hal yang berbeda — dan bagaimana kapasitas akhirnya terbagi masih diperdebatkan secara aktif, bukan pertanyaan yang sudah selesai.

Yang perlu diperhatikanAmati kedalaman antrean. CUBIC mendorongnya naik untuk menemukan batas; BBR berusaha duduk di titik lutut. Siapa yang menang bergantung pada buffer, dan jawabannya di sini khusus BBR v1.
Buka skenario
Bandwidth
50.0 Mbps
RTT dasar
50.0 ms
Buffer
1.19 MiB · 4.00 × BDP
Queue discipline
droptail
Algoritma
cubic · bbr
Durasi
120 s

Vegas melawan Reno: kenapa delay-based kalah

vegas-versus-reno

Vegas mengamati queueing delay dan mundur sebelum ada paket yang dibuang — pada 1995, lebih dari dua puluh tahun sebelum BBR. Cara ini berhasil: sendirian, ia memenuhi link dan menyisakan antrean nyaris kosong. Tapi ketika berbagi bottleneck dengan flow berbasis loss yang baru mundur setelah kehilangan paket, kapasitas yang dilepas Vegas dengan sopan langsung diambil tetangganya.

Yang perlu diperhatikanReno mengambil jauh melebihi bagiannya, dan kedalaman antrean menjelaskan sebabnya: Reno terus mendorongnya naik, Vegas membacanya sebagai congestion lalu mengalah. Bersikap baik bukan strategi menang kalau flow sebelah tidak begitu.
Buka skenario
Bandwidth
50.0 Mbps
RTT dasar
50.0 ms
Buffer
305.2 KiB · 1.00 × BDP
Queue discipline
red
Algoritma
vegas · reno
Durasi
120 s

Apa yang dibawa SACK

sack-versus-newreno

Tanpa selective acknowledgement, receiver hanya bisa bilang "masih menunggu", jadi sender menambal satu lubang per round trip. Setelah burst loss di jalur panjang-lebar, itu berarti ratusan round trip. Dengan SACK, sender tahu persis segment mana yang hilang dan menambal semuanya sekaligus.

Yang perlu diperhatikanAlgoritma sama, link sama, seed sama. Bedanya hanya apakah receiver bisa melaporkan celah.
Buka skenario
Bandwidth
100.0 Mbps
RTT dasar
100 ms
Buffer
1.19 MiB · 1.00 × BDP
Queue discipline
droptail
Algoritma
cubic
Durasi
60 s