TCP di dalam SSTP: mengapa pengiriman ulang terjadi dua kali
SSTP membawa terowongan dalam aliran TCP di atas TLS. Saat jalur menjatuhkan paket, pemulihan luar dan dalam mundur bersamaan.
Kabar dari mulut ke mulut datang sebelum protokolnya. Tanyakan ke sana kemari dan SSTP adalah yang lambat, pilihan yang Anda hindari kecuali sesuatu memaksa. Reputasi itu menggambarkan satu mode kegagalan pada satu jenis jalur.
Mekanismenya nyata. Mekanisme itu juga bersyarat, yang tidak pernah disebut reputasi tersebut.
Dua aliran andal pada satu jalur
SSTP membungkus terowongannya di dalam sesi HTTPS. HTTPS berjalan di atas TCP, dan aliran luar itu menjamin pengiriman berurutan. Karena itu satu segmen hilang menahan semua yang mengantre di belakangnya. Byte berikutnya yang milik percakapan dalam lainnya tetap menunggu.
Aliran TCP dalam mempertahankan urutan dan kendali kemacetannya sendiri. Mereka tidak dapat melihat pemulihan luar, jadi satu-satunya yang mereka amati adalah kemacetan. Kemacetan adalah sinyal yang memberi tahu mereka bahwa jalur sedang padat.
Sekarang kedua lapisan mundur pada saat yang sama. Itulah seluruh interaksinya, dan satu segmen hilang cukup untuk memulainya.
Di mana efeknya muncul dan di mana tidak
Pada jalur yang bersih, aliran luar jarang memulihkan apa pun. Interaksinya tidak pernah terpicu, dan SSTP membawa lalu lintas interaktif dengan sangat baik. Klaim menyeluruh gagal justru pada titik ini.
Efeknya muncul ketika kehilangan atau pengurutan ulang mencapai jalur yang mendasarinya. Tautan Wi-Fi yang padat atau koneksi seluler dengan latensi bervariasi menciptakan kondisinya. Antrean luar yang terblokir kemudian berubah menjadi penundaan yang terlihat di dalam terowongan.
Efeknya juga meningkat dengan beban kerja. Banyak aliran paralel memenuhi antrean dan memperburuk pemblokiran kepala antrean. Satu sesi interaktif pada jalur yang sama mungkin terasa dapat diterima.
Apa yang biasanya bukan gejalanya
Tidak setiap sesi lambat adalah masalah ini. Laju rendah yang stabil sejak paket pertama menunjuk ke kapasitas, pembentukan, atau batas server. Jeda yang bertepatan dengan kemacetan lokal menunjuk ke antrean di tautan akses.
Obatnya berbeda, itulah sebabnya diagnosis didahulukan. Penyetelan buffer tidak melakukan apa pun untuk tautan yang dibentuk. Mengganti protokol tidak melakukan apa pun untuk server yang kehabisan kapasitas. Reset berulang menunjuk ke tempat yang sama sekali berbeda.
# outer path quality to the SSTP endpoint
ping -c 50 203.0.113.44 | tail -3
mtr -rwc 50 203.0.113.44
# is the local link saturated while the session stalls?
sar -n DEV 2 5
# retransmissions on the outer connection
ss -tin dst 203.0.113.44
Lakukan pengukuran saat masalah sedang terjadi. Tangkapan yang diambil pada menit yang sehat tidak membuktikan apa pun tentang loop yang berjalan pada menit yang buruk.
Perbandingan yang layak dipercaya
Jika transportasi lain benar-benar tersedia, bandingkanlah dalam kondisi terkendali. Host sama, jaringan sama, tujuan sama, dan tugas sama. Kedua percobaan harus berada dalam sepuluh menit yang sama agar kondisi jalur cocok.
Mengganti port tidak mengganti protokol. Mengimpor profil yang tidak terkait ke klien SSTP tidak menciptakan transportasi alternatif. Perbandingan baru bermakna ketika server menawarkan opsi kedua.
Pertahankan verifikasi TLS sepanjang waktu. Pekerjaan kinerja bukan alasan untuk menerima sertifikat yang tidak terverifikasi. Jika kemacetan terutama muncul saat uplink padat, periksa antrean sebelum menyalahkan lapisan.