Simulator interaktif
Amati sebuah koneksi jaringan menentukan kecepatannya sendiri.
Tidak ada yang memberitahunya. Ia harus menebak.
Geser satu slider dan setiap paket disimulasikan ulang: sender mempercepat diri, antrean di titik lambat terisi, dan ketika meluap lajunya runtuh. Tidak ada yang digambar dari rumus di sini.
Berjalan di peramban. Tidak perlu instal apa pun.
20.0 Mbps · RTT dasar 50.0 ms · RENO · 30 s
Run itu, satu siklus demi satu siklus
Setiap angka di bawah dibaca langsung dari run pada grafik di atas — bukan ilustrasi. Ikuti sekali, dan sisa situs ini adalah loop yang sama dalam kondisi berbeda.
- 010 s
Sender mulai dengan 10 segmen di perjalanan — 14.1 KiB. Ia tidak tahu apa-apa tentang kapasitas link, dan tidak akan ada yang memberitahunya.
- 02141 ms
Jadi ia menggandakan diri setiap round trip — 10, 20, 40 — dan setelah 3 round trip ia mencapai 40 segmen. Itulah "slow start", dan ia hanya pelan di saat-saat awal.
- 0386 + 86
Dua batas yang tidak ia lihat. Kabelnya sendiri menampung 86 segmen (122.1 KiB, si BDP) — itu kapasitas × round trip, jumlah yang bisa berada di perjalanan sekaligus. Lebihnya menunggu di buffer bottleneck, yang menampung 86 lagi. Belum ada yang hilang; antreannya saja yang memanjang, dan round trip-nya ikut.
- 048310 ms
Buffer penuh, jadi paket berikutnya yang datang dibuang. Ini satu-satunya pesan yang pernah dikirim balik oleh jaringan, dan bentuknya keheningan, bukan pesan.
- 058412 ms
Sender baru mengetahuinya 102 ms kemudian. Itu satu round trip sebagaimana keadaannya saat itu — 50.0 ms kabel ditambah sekitar 51.9 ms menunggu di antrean yang baru saja ia penuhi — karena loss disimpulkan dari duplicate ACK, yang tidak bisa kembali lebih cepat. Buffer yang lebih penuh membuat umpan balik ini lebih lambat, dan itulah inti keberatan terhadap buffer besar. Lalu ia memotong: 174 segmen jadi 87, kira-kira setengahnya. Semua yang ia ketahui tentang jaringan sebasi ini.
- 06× 4
Dari situ ia menanjak satu segmen per round trip sampai melampaui batas lagi. Itu terjadi 4 kali dalam 30 detik, dan itulah geriginya. Tidak ada yang merancang bentuknya — ini loop tersebut, digambar. Hitungan segmen di sini tepat hanya karena setiap segmen dalam model ini satu MSS; stack sungguhan bervariasi.
Baru pertama kali?
Bagaimana sebuah koneksi menemukan kecepatannya
- 01
Kirim sedikit, lalu lebih banyak
Koneksi baru mulai hati-hati dan menggandakan kirimannya setiap round trip. Dalam sedetik ia sudah jauh lebih cepat daripada awalnya — dan biasanya lebih cepat daripada yang bisa ditampung link.
- 02
Titik lambatnya penuh
Di suatu tempat di jalur ada link paling sempit. Paket yang datang lebih cepat daripada yang bisa diteruskannya harus menunggu di antrean. Antrean itulah sebabnya latency-mu naik saat ada unduhan.
- 03
Sebuah paket dibuang, dan itulah pesannya
Ketika antrean penuh, paket berikutnya dibuang. Sender melihat lubangnya lalu memotong lajunya — biasanya jadi setengah. Drop itu satu-satunya umpan balik yang diberikan jaringan, dan seluruh sistem ini dibangun di atasnya.
- 04
Naik, jatuh, naik, jatuh
Tidak ada yang merancang bentuk yang muncul. Ulangi loop-nya dan lajunya menggambar pola gerigi, terus-menerus mencari batas yang tidak pernah diberitahukan. Semua hal lain di situs ini adalah akibatnya.
Ke mana selanjutnya
Kurang lebih berurutan. Tiap halaman menjawab satu pertanyaan dan menampilkan run yang dipakai untuk menjawabnya.
- 1/jejakJejakAmati satu koneksi menemukan kecepatannyaJalankan simulasi →
- 2/antreanAntrean & AQMKenapa buffer lebih besar justru memperburukJalankan simulasi →
- 3/bandingBandingLima algoritma, satu link yang identikJalankan simulasi →
- 4/adilKeadilanDua koneksi, satu link — siapa dapat berapaJalankan simulasi →
Skenario
Tiap skenario adalah satu konfigurasi yang mendemonstrasikan satu fenomena bernama.
Kenapa bentuk-bentuk di situs ini bisa dipercaya
Siapa pun bisa menggambar pola gerigi yang meyakinkan. Yang ini dihasilkan dari menjadwalkan, mengantrekan, membuang, dan meng-ACK paket satu per satu di atas clock virtual — lalu diuji terhadap empat prediksi yang dipublikasikan secara independen, sebelum apa pun ditampilkan kepadamu.
Mathis throughput
Simulated Reno throughput tracks MSS·√1.5/(RTT·√p) across a sweep of five loss rates and four RTTs, within the ±25% the 1997 paper claims against measured data.
Buffer size versus utilisation
Steady-state utilisation matches the AIMD sawtooth derivation within 1% across nine buffer sizes from 0.05 to 2 BDP, and the RTT matches base + buffer/capacity.
RTT unfairness
Two Reno flows split the link between the first and second power of the RTT ratio they actually experienced — the range Floyd's analysis and the Mathis form bracket.
AIMD convergence
Identical flows reach Jain's index above 0.95, and a flow arriving twenty seconds late converges from 0.75 to above 0.9 within forty seconds. Chiu & Jain, 1989.
Mathis, 1997 — digambar, bukan diklaim
Setiap titik adalah satu run simulator ini dibanding prediksi makalahnya untuk loss rate dan round trip yang sama. Di garis diagonal keduanya persis sama; garis putus-putus adalah ±25% yang diklaim makalah itu sendiri terhadap data terukur. Kedua sumbu dalam Mbps, skala log, karena sapuannya melintasi satu orde besaran. Run-nya terjadi saat halaman ini dibangun — sembilan konfigurasi yang sama dengan yang menjadi gerbang deploy, dibaca dari modul yang sama, jadi gambar ini tidak mungkin menunjukkan kecocokan sementara tes itu gagal.
Selisih terburuk dari sembilan run: 13.6%. Tidak ada yang dicocokkan — prediksinya hanya tahu ukuran segmen, round trip, dan loss rate, dan simulatornya tidak tahu apa pun tentang prediksi itu.
Ini hasil orang lain, bukan pemeriksaan diri sendiri. Simulator yang bisa mereproduksi empat di antaranya adalah simulator yang keluaran mengejutkannya bisa dipercaya — dan keluaran yang mengejutkan itulah alasan membangunnya.