I2P nasıl çalışır, neden yavaştır ve neden tüm bant genişliğimi kullanmıyor?
Büyük olasılıkla insanların en sık sorduğu şeylerden biri "I2P ne kadar hızlı?" olur. Hiç kimse "duruma göre değişir" yanıtını beğenmiyor gibi görünüyor. I2P uygulamasını denedikten sonra sorulan soru, "daha hızlı olacak mı?" olur ve bunun yanıtı çok kesin bir evet.
I2P tam dinamik bir ağdır. Her istemci diğer düğümler tarafından bilinir ve yerel olarak bildiği düğümleri erişilebilirlik ve kapasite açısından sınar. Yalnızca erişilebilir ve yetenekli düğümler yerel Ağ Veritabanı üzerine kaydedilir (bu da genellikle yaklaşık 500-1000 olan ağın yalnızca bir kısmıdır). I2P tüneller oluşturduğunda bu havuzdan en iyi kaynağı seçer. Örneğin, 20-50 düğümden oluşan küçük bir alt küme, yalnızca tüneller oluşturmak için kullanılabilir. Sınama her dakika yapıldığından, kullanılan düğüm havuzu her dakika değişir. Her I2P düğümü, ağın farklı bir bölümünü bilir. Bu durum, her yönelticinin tüneller için kullanılacak farklı bir I2P düğümü kümesinin olduğu anlamına gelir. İki yöneltici aynı bilinen düğüm alt kümesine sahip olsa bile, erişilebilirlik ve kapasite sınamaları büyük olasılıkla farklı sonuçlar gösterecektir. Diğer yönelticiler yalnızca bir yöneltici sınaması gibi yük altında olabilir. Ancak ikinci yöneltici sınarsa ücretsiz olabilir.
Yukarıdakiler, her I2P düğümünün neden tünel oluşturmak için farklı düğümlere sahip olduğunu açıklamaktadır. Her I2P düğümünün farklı bir gecikme süresi ve bant genişliği olduğundan, tüneller (bu düğümler aracılığıyla oluşturulan) farklı gecikme ve bant genişliği değerlerine sahiptir. Ayrıca her I2P düğümünün oluşturulmuş farklı tünelleri bulunduğundan, hiçbir iki I2P düğümünde aynı tünel kümeleri bulunmaz.
Bir sunucu/istemci "hedef" olarak bilinir ve her hedefin en az bir geliş ve bir gidiş tüneli vardır. Varsayılan değer, her tünel için 3 atlamadır. Böylece, tam bir istemci-sunucu-istemci gidiş dönüşü için 12 taneye kadar atlama (12 farklı I2P düğümü) eklenir.
Her veri paketi, sunucuya ulaşana kadar 6 diğer I2P düğümü aracılığıyla gönderilir:
client - hop1 - hop2 - hop3 - hopa1 - hopa2 - hopa3 - server
ve dönüş yolunda 6 farklı I2P düğümü kullanılır:
server - hopb1 - hopb2 - hopb3 - hopc1 - hopc2 - hopc3 - client
I2P üzerindeki çoğu trafik (www, torrent,...) yeni veriler göndermeden önce onay paketlerine gerek duyar ve sunucudan bir onay paketi dönene kadar beklemesi gerekir. Sonunda: Veri gönder, onay bekle, daha fazla veri gönder, onay bekle, .. RTT (gidiş dönüş süresi), bu gidiş dönüşteki her bir bireysel I2P düğümünün ve her bağlantının gecikme süresine eklendiğinden, istemciye bir onay paketinin geri gelmesi genellikle 1-3 saniye sürer. Bazı iç TCP ve I2P aktarımlarında, bir veri paketinin boyutu sınırlıdır ve olmasını istediğimiz kadar büyük olamaz. Bu koşullar dikkate alındığında, tünel başına en fazla bant genişliği 20-50 kbyte/sn arasında olur. Ancak tüneldeki YALNIZ BİR atlamanın harcayacak yalnızca 5 kb/sn bant genişliği varsa, gecikme ve diğer sınırlamalardan bağımsız olarak tüm tünel 5 kb/sn ile sınırlanır.
I2P üzerinde kullanılan şifreleme ve diğer kurulumlar (tünellerin nasıl oluşturulacağı, gecikme, ...) nedeniyle bir tünel oluşturmak işlemci zamanı açısından oldukça pahalıdır. Bu nedenle bir hedefin veri taşımak için yalnızca en fazla 6 GİRİŞ ve 6 ÇIKIŞ tüneline sahip olmasına izin verilir. Tünel başına en fazla 50 kb/sn ile bir hedef, toplamda yaklaşık 300 kb/sn trafik kullanabilir (gerçekte, düşük ya da hiç olmayan anonimlik ile daha kısa tüneller kullanılıyorsa bu daha fazla olabilir). Her 10 dakikada bir kullanılmış tüneller atılır ve yenileri oluşturulur. Tünellerdeki bu değişiklik (ve bazen "toplu kapanma" kullanımı veya güç kaybının olduğu durumlar nedeniyle ani kapanan istemciler) bazen IRC2P ağında görüldüğü gibi bağlantı kaybında (ping zaman aşımı) veya eepget kullanırken olduğu gibi tünelleri ve bağlantıları keser.
Sınırlı bir hedef kümesi ve hedef başına sınırlı bir tünel kümesiyle, bir I2P düğümü, diğer I2P düğümlerinde yalnızca sınırlı sayıda tünel kullanır. Örneğin, yukarıdaki küçük örnekte bir I2P düğümü "hop1" ise, istemciden kaynaklanan yalnız 1 katılımcı tünel görürüz. Tüm I2P ağını özetlersek, hep birlikte sınırlı miktarda bant genişliği ile yalnızca oldukça sınırlı sayıda katılımcı tünel oluşturulabilir. Bu sınırlı sayılar, I2P düğümlerinin sayılarına dağıtılırsa, kullanılabilir bant genişliğinin/kapasitenin yalnızca bir kısmı kullanılabilir.
Anonim kalmak için, bir yöneltici tüm ağ tarafından tünel oluşturmak için kullanılmamalıdır. Bir yöneltici TÜM I2P düğümleri için bir tünel yönelticisi işlevi görürse, çok gerçek bir merkezi başarısızlık noktası ve aynı zamanda istemcilerden IP adreslerini ve verileri almak için merkezi bir nokta haline gelir. Bu iyi olmaz. Bu nedenle I2P yükü birçok I2P düğümüne yaymaya çalışır.
Diğer bir nokta ise tam ağ kapsamasıdır. Her bağlantıdaki atlama-atlama, I2P düğümlerinde bir TCP veya UDP bağlantısı kullanır. 1000 bağlantı ile bir kişi 1000 TCP bağlantısı görür. Bu oldukça fazladır ve bazı ev ve küçük ofis yönlendiricileri (DSL, kablo, ..) yalnızca az sayıda bağlantıya izin verir (veya fazla bağlantı kullanırsanız çıldırır). I2P, bu bağlantıları UDP ve TCP türü başına 1500 altında olacak şekilde sınırlamaya çalışır. Bu durum, I2P düğümünüz üzerinden yöneltilen trafik miktarını da sınırlar.
Özetle, I2P çok karmaşıktır ve düğümünüzün neden kullanılmadığını belirlemenin kolay bir yolu yoktur. Düğümünüz erişilebilir durumdaysa, 128 kbayt/sn üzerinde bir paylaşılan bant genişliği ayarına sahipse ve 7/24 erişilebilir durumdaysa, bir süre sonra katılımcı trafik için kullanılmalıdır. Bunların altında ya da arasındaysa, I2P düğümünüzün diğer düğümler tarafından yapılan sınaması onlara şunu söyleyecektir: Size ulaşılamıyor. Bu durum, düğümünüzün diğer düğümler tarafından kullanılmasını en az 24 saat engeller. Sizi kapalı olarak sınayan diğer düğümler, tünel oluşturmak için 24 saat boyunca düğümünüzü kullanmayacaktır. Bu nedenle, yeniden başlatma/kapatma sonrasında trafiğiniz en az 24 saat süreyle daha düşük düzeyde olacaktır.
Ayrıca: diğer I2P düğümlerinin, erişilebilirlik ve kapasite açısından sınayabilmesi için I2P yönelticinizi bilmesi gerekir. Düğümünüzün diğer düğümler tarafından tanınması zaman alır. I2P kullanıyorsanız ve daha fazla tünel oluşturursanız daha hızlı olur. Örneğin bir süre torrent veya www kullanın.
Başarım iyileştirmeleri
Gelecekte yapılabilecek başarım iyileştirmelerine bakabilirsiniz.
Geçmişte yapılmış başarım iyileştirmeleri için Başarım geçmişine bakabilirsiniz.