Can It Survive? #1 · Kontrollü deney

VPN protokolleri paket kaybıyla nasıl başa çıkar

İki sunucu arasında dört VPN protokolü; ağ her iki yönde paketlerin % 0, 1, 5 ve 10'unu düşürüyor. İndirme hızı ve sayfa yükleme süreleri, her biri üç çalıştırma.

Kısaca. Her yönde % 1 kayıpta WireGuard kendi temiz ağ indirme hızının 48 %'ini, OpenVPN 28 %'ini korudu; VLESS Reality (97 %) ve Hysteria2 (96 %) ise VPN'siz bağlantıya (97 %) yakın bir değeri korudu. % 10 kayıpta VLESS Reality hâlâ VPN'siz bağlantıyla aynı düzeydeydi (78 % — VPN'siz 77 %), Hysteria2 47 %'ini, iki IP tüneli ise 4 %'ini korudu. Bu, tek bir güzergâhta tek bir koşul kümesidir; alıntılamadan önce sınırlar bölümünü okuyun.

Paket kaybında korunan indirme hızı

3 çalıştırmanın ortancası; her protokolün % 0 kayıptaki kendi hızına oranı olarak. Değerler için imleci üzerine getirin veya ok tuşlarını kullanın.

Ham veri

Eksen 0–100 %Kayıp düzeyleri: kategoriler

0%25%50%75%100%0 %1 %5 %10 %Paket kaybı, her yönde
Veri tablosu
Korunan hız% 0 kayıp% 1 kayıp% 5 kayıp% 10 kayıp
VPN yok100%97%88%77%
Hysteria2100%96%91%47%
VLESS Reality100%97%90%78%
WireGuard100%48%15%4%
OpenVPN (UDP)100%28%12%4%

İndirme hızı

Mbit/s, 3 çalıştırmanın ortancası; parantez içinde protokolün kendi % 0 hızına göre payı.

Kayıp, her yöndeVPN yokHysteria2VLESS RealityWireGuardOpenVPN (UDP)
0 %86,480,685,175,775,3
1 %83,8 (97 %)77,7 (96 %)82,9 (97 %)36,3 (48 %)20,8 (28 %)
5 %75,8 (88 %)73,6 (91 %)76,4 (90 %)11,2 (15 %)9,3 (12 %)
10 %66,3 (77 %)37,9 (47 %)66,8 (78 %)2,9 (4 %)2,9 (4 %)

Sayfa yükleme, 100 KB

60 isteğin ortanca süresi, saniye (çalıştırma başına 20). Düşük olan daha iyidir.

Kayıp, her yöndeVPN yokHysteria2VLESS RealityWireGuardOpenVPN (UDP)
0 %0,39 sn0,08 sn0,48 sn0,53 sn0,56 sn
1 %0,40 sn0,15 sn0,51 sn0,59 sn0,61 sn
5 %0,52 sn0,16 sn0,67 sn0,65 sn0,72 sn
10 %0,60 sn0,23 sn0,80 sn0,90 sn1,08 sn

Kurulum

Almanya ↔ Hollanda (yaklaşık 36 ms arayla), her yönde +20 ms gecikme, 100 Mbit/s sınır, her iki yönde rastgele kayıp; test sitesi BBR üzerinde (ana makine varsayılanı); kayıp düzeyi başına karışık sırada 3 çalıştırma; sayfa yükleme = 100 KB'lık 60 istek.

İki Linux sunucusu: biri istemci, diğeri VPN sunucularını ve küçük bir test sitesini çalıştırıyor. Kötü ağ, istemcide Linux tc netem ile oluşturulur: aynı kayıp, gecikme ve hız sınırı iki yönde de uygulanır, yalnızca laboratuvar sunucusuyla alışverişi yapılan paketlere. Kayıp yön başına olduğundan, her yönde % 5 bir gidiş-dönüşte kabaca % 10 eder.

ProtokolTaşıyıcıTrafiği nasıl taşır
WireGuardUDPIP tüneli: kendi TCP bağlantılarınız baştan sona onun içinde taşınır.
OpenVPN (UDP modu)UDPIP tüneli, WireGuard ile aynı fikir.
VLESS RealityTCPProxy: TCP, VPN sunucusunda sona erer ve TLS gibi görünen tek bir TCP bağlantısı üzerinden yeniden gönderilir.
Hysteria2QUIC (UDP)Kendi tıkanıklık denetimi olan, QUIC üzerinde proxy.
VPN yok—Referans: aynı istek, tünel olmadan.

Tüm protokoller standart, belgelenmiş ayarlarla çalışır; hiçbirine özel ayar yapılmaz. Hysteria2 varsayılanı olan bant genişliği ipuçsuz çalışır; bu durumda BBR kullanır.

Neler ölçüldü

  • İndirme hızı: 64 MB'lık tek bir dosya, 20 saniyeyle sınırlı, ortalama Mbit/s.
  • Sayfa yüklemeleri: çalıştırma başına 100 KB'lık yirmi istek, her biri 10 saniyelik zaman aşımıyla. Her yükleme süresi kaydedilir, hatalar sayılır. Bu, gezinmenin hissine bir hız testinden daha yakındır.
  • Her kayıp düzeyi ve protokol üç kez, karışık sırada çalıştırıldı; tablolar ortancaları gösterir.

Sonuçları okumak

IP tünelleri neden bu kadar düşüyor. WireGuard ve OpenVPN kaybolan paketleri kendisi kurtarmaz; bunu tünelin içindeki TCP bağlantısı, baştan sona, kayıplı yolun tamamında yapmak zorundadır. VLESS Reality TCP bağlantınızı VPN sunucusunda sonlandırır, bu yüzden kurtarma sunucunun kendi TCP bağlantısında olur; Hysteria2 ise kayıpları QUIC içinde kendi tıkanıklık denetimiyle kurtarır.

Hysteria2'nin sayfaları neden bu kadar hızlı yükleniyor. Çoğunlukla QUIC tek bir bağlantıyı açık tutup her istek için yeni bir akış açtığından; diğer yollar ise her istek için yeni bir TCP bağlantısı — VLESS Reality'de ayrıca yeni bir Reality el sıkışması — başlatır. Bu, kayıp yönetiminden olduğu kadar bağlantının yeniden kullanılmasından da kaynaklanır.

Hysteria2, % 10 kayıpta. 5 % kayıpta hızının 91 %'ini, 10 % kayıpta ise 47 %'ini korudu; VLESS Reality ise 78 %'ini korudu. Bu çalışma düşüşü gösteriyor, nedenini değil.

Sınırlar — alıntılamadan önce okuyun

  • Test sitesi BBR kullandı (ana makinenin varsayılanı). WireGuard ve OpenVPN içinde TCP bağlantınızı web sitesinin sunucusu denetler; BBR rastgele paket kaybını Linux'un varsayılanı CUBIC'ten çok daha iyi tolere eder. Bu, tünel içindeki TCP için tünel içindeki TCP için en toleranslı durum; CUBIC ile tünel sonuçları daha düşük olabilir.
  • Kayıp rastgele ve bağımsızdı. Gerçek Wi-Fi ve mobil kayıplar çoğu zaman ani dalgalar halinde gelir; bu da sıralamayı değiştirebilir.
  • Tek güzergâh, tek sunucu çifti. Başka mesafeler, işlemciler ya da sağlayıcılar başka mutlak değerler verir. Protokolleri bu çalışmanın içinde karşılaştırın, başka bir kurulumdan gelen sayılarla değil.
  • Bu bir sansür testi değildir. Her protokole geçiş izni verildi. UDP engellendiğinde ya da trafik incelendiğinde nasıl davrandıkları, sürekli ölçümler ve sonraki deneylerin konusudur.
  • Hız 100 Mbit/s ile sınırlandı bilerek, böylece test sunucu işlemcisini değil davranışı ölçsün.

Başarısız çalıştırmalar

% 1 kayıpta bir OpenVPN indirmesi ve % 5 kayıpta bir VLESS Reality indirmesi başlamadı. Bunlar 0 Mbit/s sayıldı; hücre başına üç çalıştırma olduğundan ortancalar etkilenmez. % 1 ve % 10 kayıpta birkaç sayfa isteği de başarısız oldu; bunlar ham verilerde.

Tekrarlayın

Betikler sunucuları kurar, ağ koşullarını uygular, ölçüm döngüsünü çalıştırır ve sonuçları özetler. Mümkünse farklı şehirlerde iki Linux sunucusu gerekir; tam bir çalıştırma yaklaşık bir saat sürer. Her şey github.com/colitu/vpn-lab adresindedir (betikler MIT lisansı altında); bu çalıştırmanın ham sonuçları results/ep01-packet-loss.jsonl içindedir.

Deney, protokollerin nasıl davrandığını ölçer; hangi VPN sağlayıcısının daha iyi olduğunu değil. Colitu'nun uygulamaları ağ kötüleştiğinde protokoller arasında otomatik geçiş yapar; her birinin nasıl ayakta kaldığı bu yüzden bizim için önemli. Bunun sonuçlarımız için ne anlama geldiği için yöntem sayfasına bakın.