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.
| Protokol | Taşıyıcı | Trafiği nasıl taşır |
|---|---|---|
| WireGuard | UDP | IP tüneli: kendi TCP bağlantılarınız baştan sona onun içinde taşınır. |
| OpenVPN (UDP modu) | UDP | IP tüneli, WireGuard ile aynı fikir. |
| VLESS Reality | TCP | Proxy: TCP, VPN sunucusunda sona erer ve TLS gibi görünen tek bir TCP bağlantısı üzerinden yeniden gönderilir. |
| Hysteria2 | QUIC (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.