Happy Eyeballs, dual-stack (IPv4 ve IPv6'yı birlikte destekleyen) istemcilerde bağlantı gecikmesini azaltmayı amaçlayan bir algoritmadır. Kullanılabilir adreslere kısa aralıklarla bağlantı denemeleri başlatır ve ilk başarıyla kurulan bağlantıyı kullanır. Bir protokol yolu bozuk, çok yavaş veya yanıt vermiyor olsa bile istemcinin diğer seçeneği denemek için gereksiz yere beklemesini önlemeyi amaçlar.

Bir alan adı hem IPv6 hem IPv4 adreslerine sahip olabilir; ancak adresin DNS sonucunda bulunması, o protokol üzerinden uçtan uca bağlantının kesin olarak çalıştığı anlamına gelmez. İstemci yalnız IPv6 denemesinin tam zaman aşımını bekleyip sonra IPv4'e geçseydi, çalışmayan IPv6 yolu sayfanın veya uygulamanın belirgin biçimde geç açılmasına neden olabilirdi.

Happy Eyeballs bir hız testi veya kalıcı protokol seçimi değildir. Görevi, o bağlantı kurulurken kullanılabilir adayları düzenli biçimde denemek ve kullanıcıyı uzun süre bekletmeden çalışan yolu seçmektir.

Happy Eyeballs'ın IPv4 ve IPv6 Seçimi

  • İstemci, A ve AAAA sonuçlarından IPv4 ve IPv6 bağlantı adayları oluşturur.
  • İstemci, adres seçim politikasına ve çözümleme sonuçlarının sırasına göre adayları düzenler.
  • İlk aday denenir; bağlantı hemen kurulmazsa diğer adaylar kısa aralıklarla devreye alınır.
  • İstemci, bağlantıyı ilk kuran IPv4 veya IPv6 adayını kullanır ve diğer denemeleri durdurur.
  • Zamanlama ayrıntıları uygulamaya göre değişebilir; algoritma IPv6'nın her zaman kazanacağını garanti etmez.

A ve AAAA Sonuçları Nasıl Bağlantı Adayına Dönüşür?

Bir istemci alan adını çözümlerken IPv4 adreslerini A, IPv6 adreslerini ise AAAA sonuçlarından alabilir. Aynı alan adı için her iki türde birden fazla adres bulunması da mümkündür. Happy Eyeballs bu adresleri doğrudan tek bir protokol tercihi olarak değil, sırayla veya aralıklı biçimde denenebilecek bağlantı adayları olarak ele alır.

Adayların sıralanmasında işletim sisteminin ve uygulamanın adres seçim politikası etkili olur. RFC 6724'te tanımlanan varsayılan seçim yaklaşımı; kaynak ve hedef adreslerin uyumu, adres kapsamı, etiketleri ve öncelikleri gibi özelliklere göre kullanılabilir adresleri sıralamak için bir temel sunar. Bu seçim politikası çoğu yapılandırmada kullanılabilir bir IPv6 adayını öne taşıyabilir, fakat IPv6'nın her koşulda ilk sırada bulunması zorunlu değildir.

RFC 8305'te tanımlanan Happy Eyeballs v2, yalnızca bütün IPv6 adreslerini bitirip ardından bütün IPv4 adreslerini denemek yerine iki adres ailesinin adaylarını dengeli bir sıraya yerleştirmeyi hedefler. Çözümleme sonuçları farklı zamanlarda gelirse uygulama, elindeki kullanılabilir adaylarla bağlantı sürecini başlatabilir; tüm sonuçların tamamlanmasını gereksiz yere beklemek zorunda değildir.

Bağlantı Denemeleri Neden Kısa Aralıklarla Başlatılır?

İlk sıradaki aday için bağlantı denemesi başlatıldığında istemci aynı anda bütün adresler için bağlantı kurmaya çalışmaz. İlk deneme kısa sürede tamamlanmazsa sıradaki aday, çoğu durumda diğer adres ailesinden bir seçenek olacak biçimde devreye alınır. Böylece hem gereksiz eş zamanlı bağlantı yükü azaltılır hem de çalışmayan bir yolun tam zaman aşımı beklenmez.

Bu aralık, protokollerin kesin hız farkını ölçen sabit bir yarış süresi değildir. İşletim sistemi, tarayıcı, uygulama, kullanılan taşıma protokolü ve ağ koşulları zamanlamayı etkileyebilir. Bu nedenle Happy Eyeballs için bütün cihazlarda geçerli tek bir gecikme değeri vermek doğru değildir; alternatif deneme, ilk adayın uzun zaman aşımı tamamlanmadan başlamalıdır.

İlk iki aday da başarısız olursa istemci listedeki diğer adreslerle denemeye devam edebilir. Her yeni deneme, aday sırasına ve uygulamanın zamanlama kurallarına göre başlatılır; sonuçta çalışan bir yol bulunur veya bütün uygun adaylar tükendiğinde bağlantı hatası oluşur.

Kazanan Bağlantı Nasıl Belirlenir?

Kazanan, bağlantıyı ilk başarıyla kuran adaydır. IPv6 bağlantısı önce tamamlanırsa uygulama IPv6 üzerinden devam eder; IPv4 önce tamamlanırsa IPv4 kullanılır. İstemci genellikle diğer devam eden bağlantı denemelerini iptal eder veya kapatır, böylece aynı istek için gereksiz bağlantılar açık kalmaz.

Bu seçim, bütün adayların hızını ölçüp en düşük gecikmeli olanı sonradan belirleyen kapsamlı bir karşılaştırma değildir. Bir aday kullanılabilir bağlantıyı kurduğu anda işlem tamamlanır; algoritma daha hızlı olabilecek başka bir adayın sonucunu beklemez. Bu yaklaşım, teorik olarak en iyi yolu aramaktan çok çalışan bağlantıyı kısa sürede kurmaya odaklanır.

Seçim kalıcı değildir. Aynı cihaz farklı bir Wi-Fi ağına veya mobil veriye geçtiğinde, hedef sunucunun adresleri değiştiğinde veya ağ yolu farklılaştığında sonraki bağlantının kazanan protokolü de değişebilir.

Bozuk Bir IPv6 Yolunun Gecikmesi Nasıl Sınırlanır?

Varsayımsal bir örnekte cihazın IPv6 adresi vardır ve alan adı için AAAA sonucu alınır, fakat ağ üzerindeki bir yönlendirme veya güvenlik duvarı sorunu nedeniyle hedefe giden IPv6 paketleri yanıt alamaz. Bağlantı adaylarını yalnız sırayla deneyen bir istemci, IPv6 denemesinin uzun zaman aşımı tamamlandıktan sonra IPv4'e geçebilir. Kullanıcı bu süreyi sayfanın açılmaması veya uygulamanın beklemesi olarak görür.

Happy Eyeballs, IPv6 denemesi sürerken kısa bir aradan sonra IPv4 adayını da başlatır. IPv4 yolu çalışıyorsa bağlantı bu aday üzerinden tamamlanır ve bozuk IPv6 yolunun tam zaman aşımı süresi kullanıcıya yansımaz. Algoritma IPv6 sorununu onarmaz; yalnızca sorunun tek bağlantı üzerindeki gecikme etkisini sınırlar.

Aynı mantık ters yönde de geçerlidir. IPv4 yolu çalışmıyor fakat IPv6 kullanılabiliyorsa IPv6 bağlantısı kazanabilir. Bu nedenle Happy Eyeballs yalnızca “IPv6 başarısız olursa IPv4'e dön” kuralı değil, iki adres ailesindeki kullanılabilir adayları gecikmeyi sınırlayarak değerlendiren bir seçim sürecidir.

Happy Eyeballs Neleri Ölçmez ve Düzeltmez?

Happy Eyeballs, IPv6'nın her zaman daha hızlı veya her zaman öncelikli olduğunu kanıtlamaz. Bağlantıyı önce kuran adayı seçer; indirme hızı, uzun süreli gecikme, paket kaybı veya ağın genel performansı hakkında kapsamlı ölçüm yapmaz. Ayrıca bozuk DNS kaydını, hatalı yönlendirmeyi veya güvenlik duvarı yapılandırmasını düzeltmez.

IPv4 ve IPv6 Test Sonuçları Nasıl Yorumlanır?

Bir web isteğinde görülen kaynak IP adresi, o isteğin IPv4 mü IPv6 mı kullandığını gösterir. IPv6 Testi, cihazın IPv6 üzerinden bağlantı kurup kuramadığını ayrıca değerlendirmeye yardımcı olur. Bu sonuçlar bağlantının dışarıdan görülen durumunu açıklar; Happy Eyeballs'ın uygulama içinde kullandığı aday sırasını veya zamanlayıcı değerlerini doğrudan göstermez.

Bir testte IPv4 görülmesi, cihazda IPv6 bulunmadığını tek başına kanıtlamaz. O bağlantıda IPv4 adayı bağlantıyı daha önce kurmuş, IPv6 yolu geçici olarak yavaşlamış veya uygulamanın aday sıralaması farklı çalışmış olabilir. Benzer biçimde IPv6 ile bağlanılması da IPv4'ün kullanılamaz olduğu anlamına gelmez.