0Özet
Adaptive Connect 2.0, bağlıyken bozulan yolu fark edip trafiği yedek hatta taşımayı öğretti. Saha verisi üç zayıf noktayı gösterdi: bir kesintiyi teşhis etmek on saniyeler sürüyordu, uygulama hiç tanımadığı bir ağda körlemesine deniyordu ve aynı mantık dört platformda ayrı ayrı yazıldığı için kararlar birbirinden ayrışmıştı. Adaptive Connect 3.0 bu üç noktaya yöneliktir: anonim toplu verilerden türetilen ağ ipuçları ile ilk denemede doğru bağlantı moduyla başlamak, API'ye ulaşılamadığında bile çalışan bir sunucu bulan kurtarma seti, kesintiyi yaklaşık 11 saniyede teşhis eden izleyici ve dört uygulamanın uyduğu 46 vektörlük ortak kural seti. Bu rapor 3.0'ın mimarisini, kademeli açılışını, ölçümlerini ve henüz alfa ya da plan aşamasında olan parçaları ayırarak anlatır.
1Neden 3.0?
2.0'ın yayınından sonraki ilk haftada iki kaynaktan veri topladık: arıza enjeksiyonlu laboratuvar koşuları ve uygulamaların gönderdiği anonim bağlantı telemetrisi (yapısı gizlilik bölümünde). Laboratuvarda 2.0 sürümünün temel ölçümünde 29 sunucuya karşı yoklamaların %85,2'si başarılıydı; sorunlar belirli arıza türlerinde yoğunlaşıyordu (laboratuvar raporu).
| Bulgu | Kaynak | Sonuç |
|---|---|---|
| Kesinti teşhisi yavaş | Saha telemetrisi | Tespit ile kurtarma arası ortalama Android'de 54 sn, Windows'ta 34 sn |
| Windows'ta uzun bağlantı kuyruğu | Saha telemetrisi + test bilgisayarı | İlk denemede başarılı bağlantılar ortalama 14,9 sn; kök neden kill switch tutulurken API adreslerinin yalnızca bellekte olması |
| Yedek hat bazen hiç devralmıyordu | Laboratuvar | Arka plan trafiği eşiği aştığı için yedek hatta geçiş süresiz erteleniyordu |
| Yeni ağda kör başlangıç | Saha telemetrisi | Uygulama hafızası olmayan bir ağda modları sabit sırayla deniyordu |
| Platformlar ayrışmıştı | Kod incelemesi | Aynı kural dört dilde ayrı yazılmıştı; Windows ve Linux'ta sıralama ve ipucu ayrıştırma farkları vardı |
Bu yüzden 3.0'ın hedefi yeni bir protokol değil, karar kalitesidir: daha az deneme, daha kısa kör süre, her platformda aynı karar. Kullanıcıdan hiçbir ek veri toplanmaz ve elle seçilen konum hiçbir zaman değiştirilmez.
2Mimari: yedi bileşen
3.0 baştan yedi bileşenli bir çerçeve olarak tasarlandı. Hepsi aynı olgunlukta değil; aşağıdaki tablo her bileşenin bugünkü durumunu açıkça gösterir.
| Bileşen | Ne yapar? | Durum |
|---|---|---|
| Kolektif ağ ipuçları | Anonim toplu verilerden, bir ağda hangi bağlantı modunun çalıştığını çıkarır | Yayında |
| Öngörülü başlangıç | Uygulama tanımadığı bir ağda ipucundaki modla başlar; kurallara dayanır, makine öğrenimi yoktur | Yayında |
| Otonom kurtarma | API'ye ulaşılamasa da cihazda saklanan kurtarma seti ve kayıtlı adreslerle bağlanır | Yayında |
| Hızlı kesinti tespiti | Bağlıyken kesintiyi ~11 sn'de teşhis eder, sunucudan ne zaman ayrılacağına karar verir | Yayında |
| Ağ laboratuvarı | Arıza enjeksiyon paketleri ve platformlar arası ortak test vektörleri | Yayında (iç araç) |
| Süreklilik motoru (CSL) | Tünel değişse de oturumu ayakta tutan oturum katmanı; birden fazla taşıyıcı hat | Alfa (Windows, test hesapları) |
| Uyarlanabilir kamuflaj | Ağa göre trafik biçimini ve taşıma ayarlarını seçme | Planlandı |
Ağ ipuçları v2
Uygulamalar her bağlantı denemesinin sonucunu (mod, başarılı ya da başarısız, süre) anonim olarak bildirir. Panel bunları ağ başına, yani ülke + otonom sistem (ASN) düzeyinde günlük toplamlara çevirir. Bir ağda yeterli veri varsa sunucu listesiyle birlikte bir `preferred` sırası döner: o ağda son 24 saatte çalışan modlar, başarı oranına göre önce. Ağ değişince uygulama listeyi yeniden alır ve yeni ağın ipucunu kullanır.
16 Ekim'deki ölçümde son yedi günde 89 farklı ağ görüldü; 44'ünde karar verecek kadar veri vardı ve 40'ı için bir tercih sırası üretildi. Bazı ağlarda UDP tabanlı Hysteria2'nin başarı oranı %92 iken TCP modları %44–54 aralığındaydı; sabit bir sıra bu ağlarda her bağlantıda zaman kaybettiriyordu.
Kurtarma seti
2.0'da sunucu listesi API'den alınamazsa uygulama bağlanacak yer bulamıyordu. 3.0'da uygulama, API yanıt verirken günde yaklaşık bir kez küçük bir kurtarma seti indirir ve cihazda saklar: farklı ülkelerdeki birkaç sunucu için normal yapılandırmadan çok daha uzun geçerli tam profiller. Önce bu cihazın son günlerde ulaştığı sunucular, ardından her ülkeden bir sunucu seçilir; böylece bir ülkedeki sunuculara erişim kesilse bile diğerleri kalır. Set yalnızca bütün API adresleri yanıt vermediğinde ve normal önbellek de bağlanamadığında kullanılır; bağlantı kurulunca uygulama API'ye tünelin içinden ulaşır ve her şeyi yeniler.
Windows ve Linux uygulamaları bunun yanında API adreslerini artık diskte saklar ve paralel olarak yeniler. Kill switch'in önceki çalışmadan tutulduğu durumda (çökme ya da yeniden başlatma sonrası otomatik bağlantı) sistem DNS'i kapalı olduğu için 2.0 adresleri sırayla çözmeye çalışıyor, açılıştan bağlantıya 21–25 saniye geçiyordu.
Hızlı kesinti tespiti
İzleyici ana yolu bir saniye arayla, üç saniyelik zaman aşımıyla yoklar. Tek bir kayıp henüz karar değildir; ardışık kayıplar doğrulanınca yaklaşık 11 saniye içinde kesinti kararı verilir. Kararın ardından ne yapılacağı, kesintinin kapsamına bağlıdır:
| Durum | Karar |
|---|---|
| Yalnızca ana yol düştü, yedek hat çalışıyor | Trafik yedek hatta kalır; aynı sunucudaki diğer modlar önce denenir |
| Ana yol ve yedek hat birlikte düştü, cihaz çevrimiçi | Otomatik modda sunucu bu ağ için 30 dakika geri plana alınır, sıradaki sunucuya geçilir |
| Cihazın kendi interneti gitti | Hiçbir mod ya da sunucu suçlanmaz; ağ geri gelince yeniden bağlanılır |
| Elle seçilmiş konum | Sunucu değiştirilmez; yalnızca aynı konumdaki modlar arasında geçiş yapılır |
2.0'daki bir hata da kapatıldı: arka planda sürekli küçük trafik olduğunda yedek hatta geçiş "meşgul" gerekçesiyle süresiz erteleniyordu. 3.0'da erteleme en fazla iki dakika ya da 32 KB ile sınırlıdır.
Anında cihaz kimliği
Her cihazın her sunucuda kendine özel bir kimliği vardır. 2.0'da yeni bir kimlik sunucuya ancak 15 saniyelik düzenli eşitlemede ulaşıyordu; yeni bir kullanıcının ilk bağlantısı bu yüzden 15–30 saniye başarısız olabiliyordu. Artık kimlik değişikliği sunuculara anında iletilir; yapılandırma isteği kısa bir süre bekler, kimlik hâlâ hazır değilse uygulama bunu bilir ve iki saniye arayla yeniden dener.
3Ortak karar kuralları ve Go motoru
Adaptive Connect'in kuralları dört uygulamada dört farklı dilde yaşar: Kotlin (Android), C# (Windows ve Linux), Dart ve Swift (iOS). 3.0 ile bu kurallar tek bir kaynağa bağlandı: ortak test vektörleri. Her vektör bir girdi (sunucular, ölçümler, hafıza, ipuçları) ve beklenen kararı içerir; dört uygulamanın test paketleri aynı dosyaları çalıştırır.
| Vektör dosyası | Kapsam |
|---|---|
| ranking | Otomatik modda sunucu sıralaması: son çalışan, ping, cezalar, kendi ülke kuralı (19 vaka) |
| transport | Bağlantı modlarının temel sırası, ipuçlu başlangıç, yok sayılan işaretler |
| hints | İpucu yanıtının ayrıştırılması |
| recovery | Kurtarma kararı, yenileme zamanı, setin okunması, sıradaki sunucu |
Dört dosyada toplam 46 vaka var. Bir uygulamada kural değişirse ve vektörlerden biri farklı sonuç verirse, o uygulamanın test paketi başarısız olur.
Vektörler ilk çalıştırıldığında gerçek farklar buldu: Windows ve Linux kendi ülkesini geri itme kuralını her ülkeye uyguluyordu; bu iki uygulamada sayı olmayan bir ipucu değeri bütün sunucu listesinin okunmasını bozabiliyordu; Linux TCP modlarını yalnızca gecikmeye göre sıralıyordu. Hepsi tek bir kurallar kümesinde birleştirildi.
Aynı kurallar açık kaynaklı Go paketinde de uygulandı ve aynı 46 vektörü geçer. Motor, Android, Windows ve Linux uygulamalarına gölge modda yerleşiktir: bağlanırken uygulamanın kendi kararı ile motorun kararı karşılaştırılır, fark varsa kaydedilir, ama karar uygulamanınkidir. Motor hata verirse on dakika devre dışı kalır. Gölge moddaki farklar sıfıra indiğinde karar motora devredilecek; iOS için motor henüz yerleşik değil.
4Kademeli açılış
3.0'ın uygulama tarafı, açılış kararı uzaktan verilebilecek şekilde sürümlere eklendi: Android 2.9.2, Windows 2.9.7, Linux 1.5.3 ve iOS 5.9 serisi. Panel, sunucu listesi yanıtında `features.adaptive_connect_3` bayrağını döner. Hangi cihazın açılış grubuna gireceği, cihaz kimliğinin SHA-256 özetinden türetilen kararlı bir kova ile belirlenir; aynı cihaz yüzde değişmedikçe aynı grupta kalır. Uygulama son bayrağı saklar, API'ye ulaşamadığı sürece onu kullanır.
| Tarih | Oran | Platformlar |
|---|---|---|
| 16 Ekim 2026 | %10 | Android, Windows, iOS |
| 17 Ekim 2026 | %15 | Android, Windows, iOS |
| 20 Ekim 2026 | %100 | Android, Windows, iOS |
Uzaktan açılan parçalar ağ ipuçlu başlangıç ve kurtarma setidir. Hızlı kesinti tespiti, sunucudan ayrılma kuralı, kayıtlı API adresleri ve ortak kurallar sürümle birlikte her kullanıcıya geldi. Linux uzaktan açılışın bilinçli olarak dışında bırakıldı: kullanıcı sayısı karşılaştırma yapmaya yetmeyecek kadar az ve 1.5.3 sürümünde 3.0 ile ilgisiz bir bağlantı hatası artışı vardı. Geri dönüş tek bir ayarla yapılır, uygulama güncellemesi gerektirmez.
5Ölçümler
| Ölçüm | 2.0 | 3.0 | Nasıl ölçüldü? |
|---|---|---|---|
| Kesinti teşhisi | 54 sn (Android), 34 sn (Windows), saha ortalaması | ~11 sn | İzleyici temposu; birim testleri ve test bilgisayarı |
| Sunucuya giden trafik 45 sn kesildiğinde toplam kesinti | 50 sn | 22,4 sn | Windows test bilgisayarı, cihazda güvenlik duvarı kuralıyla |
| Kill switch tutulurken açılıştan bağlantıya | 21–25 sn | 5,1–5,2 sn | Windows test bilgisayarı, tekrarlanan yeniden başlatma |
| Hafızası olmayan ağda ilk bağlantı | Sabit mod sırası | 1,6 sn (ipucundaki modla) | Android test cihazı |
| API'ye ulaşılamazken bağlantı | Bağlanacak yer yok | Dokunuştan 12 sn sonra bağlı | Android test cihazı, API engellenmiş, önbellek yok sayılmış |
Sahada, 16 Ekim'den sonraki günlerde Android'de bağlantı başarısı %98,3–98,6 aralığında ölçüldü (önceki haftalarda günden güne %80 ile %98 arasında değişiyordu); Windows 2.9.8'de %97,4. Bu farkı yalnızca 3.0'a bağlamıyoruz: telemetri yapısı gereği anonim olduğu için 3.0 grubundaki cihazlar diğerlerinden ayrılamıyor ve aynı sürümlerde başka düzeltmeler de yayınlandı. Açılış süresince 3.0'a bağlanan bir şikâyet ya da başarı düşüşü görülmedi; açılış kararları bu ölçüte dayandı.
6Gizlilik
3.0'ın öğrenen parçaları yeni bir kullanıcı verisi gerektirmez. Bağlantı telemetrisi yapısı gereği anonimdir: olaylar yalnızca günlük toplamlar olarak, ortak satırı olmayan iki ayrı tabloya yazılır.
- Ağ tablosu: ülke + ASN (imzalı ağ belirtecinden), mod, sonuç sayıları. Sunucu yok.
- Sunucu tablosu: sunucu × istemci ülkesi, sonuç sayıları. ASN yok.
- Hiçbir tabloda hesap, cihaz kimliği ya da IP adresi bulunmaz; iki tablo birleştirilerek tek bir kullanıcıya ulaşılamaz.
- Son çalışan sunucu, duraklama ve ceza hafızası cihazda tutulur ve panelle paylaşılmaz.
- Açılış kovası cihaz kimliğinin tek yönlü özetinden hesaplanır; hangi cihazın hangi grupta olduğu saklanmaz.
Ayrıntılar güvenlik raporunda ve gizlilik politikasında.
7Süreklilik motoru: CSL alfa
Colitu Session Layer (CSL), 2.0 raporunda gelecek çalışma olarak anılan oturum katmanıdır. Amacı, altındaki tünel değiştiğinde bile açık bağlantıların kopmamasıdır: oturum, birden fazla taşıyıcı hat (lane) üzerinden yürür; bir hat ölürse oturum diğerinde devam eder. Kaynak kodu Apache-2.0 lisansıyla açıktır: github.com/colitu/csl.
CSL bugün alfa aşamasındadır: Windows uygulamasında Gelişmiş moddaki "Kesintisiz oturum (alpha)" seçeneğiyle, yalnızca test hesaplarına ve ayrı bir test sunucusuna açıktır. Her cihaz için ayrı bir oturum kimliği üretilir; sunucu tarafı yalnızca yerel olarak dinler. CSL kapalıyken ya da başarısız olduğunda uygulama normal bağlantıya döner. Genel kullanım için bir tarih vermiyoruz.
8Sınırlar
- Kurallar, model değil. "Öngörülü" başlangıç, istatistiksel bir model değil anonim toplamlardan türetilen kurallardır. Az veri olan ağlarda ipucu yoktur ve 2.0 davranışı geçerlidir.
- Ölçümlerin kapsamı. Laboratuvar sonuçları tek bir test bilgisayarı ve tek bir test telefonuyla, cihazda üretilen arızalarla alındı; gerçek kullanıcıların bulunduğu sunucularda arıza testi yapılmadı. Her ağa genellenemez.
- Go motoru gölge modda. Karar hâlâ her uygulamanın kendi kodunda; iOS'ta motor yok.
- Linux'ta ağ ipuçları ve kurtarma seti henüz kapalı.
- Açık TCP akışları CSL genel kullanıma açılana kadar, yol değişiminde kopabilir; tarayıcılar ve uygulamalar genellikle kendiliğinden yeniden bağlanır.
9Sonraki adımlar
- Gölge moddaki farklar kapandıktan sonra kararları Go motoruna devretmek; iOS'a motoru eklemek.
- CSL'yi beta aşamasına taşımak: Android, UDP datagram desteği, sesli ve görüntülü görüşmeler için kritik trafiği iki hatta birden gönderen "görüşme modu".
- Uyarlanabilir kamuflaj: her ağ için mevcut taşıma ayarları arasından seçim.
- Linux'u ek doğrulamadan sonra açılışa almak.
Bu maddeler bir yol haritasıdır, tarih ya da sonuç vaadi değildir. Her biri yayına girdiğinde bu rapor güncellenecek.
10Sonuç
2.0 "bozulan yolu fark et ve kurtar" ilkesini kurdu. 3.0 bunu üç yönde genişletiyor: anonim ağ ipuçlarıyla daha az kör deneme, kurtarma seti ve kayıtlı adreslerle API'den bağımsız bağlanma, yaklaşık 11 saniyede teşhis edilen kesintiler. Ortak test vektörleri dört uygulamanın aynı durumda aynı kararı vermesini güvenceye alıyor. Süreklilik ve kamuflaj tarafı ise henüz yolun başında; bunları ölçülmüş sonuçlarla raporlayacağız. Önceki sürümün tasarımı ve bir saatlik arıza testi Adaptive Connect 2.0 raporunda.
·Kaynaklar
- RFC 8305, Happy Eyeballs Version 2: Better Connectivity Using Concurrency.
- RFC 9000, QUIC: A UDP-Based Multiplexed and Secure Transport.
- RFC 5482, TCP User Timeout Option.
- Colitu Adaptive Connect 2.0 teknik raporu, 10 Ekim 2026.
- Colitu Lab, Adaptive Connect arıza regresyon testi (faultlab).
- Colitu Session Layer (CSL) kaynak kodu, github.com/colitu/csl.
