udp todo_fr

This commit is contained in:
magma
2011-02-26 14:50:37 +00:00
parent 3e5d39211d
commit 9a4d62d921

View File

@ -112,92 +112,80 @@ Traduction en cours (25 fév 2011)
autant de petits paquets, vu que les ACKs sont du même ordre de grandeur. autant de petits paquets, vu que les ACKs sont du même ordre de grandeur.
Avec UDP, nous pouvons optimiser le transport tant pour l'efficacité que pour la souplesse Avec UDP, nous pouvons optimiser le transport tant pour l'efficacité que pour la souplesse
en prenant en compte les besoins sp&eacute;cifiques d'I2P.</p> en prenant en compte les besoins sp&eacute;cifiques d'I2P.</p>
<p>&Ccedil;a ne va malgr&eacute; tout pas &ecirc;tre un &eacute;norme travail.</p> <p>&Ccedil;a ne va quand-m&ecirc;me pas &ecirc;tre un travail &eacute;norme.</p>
<h4>NIO or NBIO</h4> <h4>NIO or NBIO</h4>
<b><i>NIO Implemented in I2P 0.6.1.22 ("NTCP")</i></b> <b><i>NIO implémenté dans I2P 0.6.1.22 ("NTCP")</i></b>
<p>In Java 1.4, a set of "New I/O" packages was introduced, allowing Java <p>Java 1.4 propose un jeu de paquetage "New I/O", permettant aux
developers to take advantage of the operating system's nonblocking IO développeurs de tirer avantage des possibilités d'E/S non blocantes du système d'exploitation
capabilities - allowing you to maintain a large number of concurrent IO - vous pouvez maintenir un grand nombre d'opérations d'E/S simultanées sans avoir besoin de définir une tâche
operations without requiring a separate thread for each. There is much dédiée pour chacune. Cette approche est très prometteuse, car nous pouvons utiliser un grand nombre de connexion
promise with this approach, as we can scalable handle a large number of simultanées et nous n'avons pas besoin d'écrire une mini-pile TCP pour UDP. Cependant, selon les développeurs
concurrent connections and we don't have to write a mini-TCP stack with de Freenet les paquetages NIO n'ont passé l'épreuve du feu. De plus, le recours aux NIO impliquerait une
UDP. However, the NIO packages have not proven themselves to be battle-ready, incompatibilité avec les JVM open-sources telles que <a href="http://www.kaffe.org/">Kaffe</a>, car
as the Freenet developer's found. In addition, requiring NIO support would <a href="http://www.classpath.org/">GNU/Classpath</a> ne les supporte que partiellement. <i>(note: ça ne devrait
mean we can't run on any of the open source JVMs like <a href="http://www.kaffe.org/">Kaffe</a>, pas durer car il y a eu quelques progrès dans les NIO de Classpath, bien qu'en quantité inconnue)</i></p>
as <a href="http://www.classpath.org/">GNU/Classpath</a> has only limited <p>Dans la même veine, il y a l'alternative du paquetage
support for NIO. <i>(note: this may not be the case anymore, as there <a href="http://www.eecs.harvard.edu/~mdw/proj/java-nbio/">Non blocking IO</a> -
has been some progress on Classpath's NIO, but it is an unknown quantity)</i></p> essentiellement une implémentation NIO de salle blanche (écrite avant la parution des NIO).
<p>Another alternative along the same lines is the <a href="http://www.eecs.harvard.edu/~mdw/proj/java-nbio/">Non Il utilise du code natif du SE pour faire les E/S non blocantes, en présentant les évènements via Java.
Blocking I/O</a> package - essentially a cleanroom NIO implementation Il semble fonctionner avec Kaffe, mais il a peu d'activité de développement à son sujet (probablement
(written before NIO was around). It works by using some native OS code à cause de la parution des NIO de Java 1.4).</p>
to do the nonblocking IO, passing off events through Java. It seems to
be working with Kaffe, though there doesn't seem to be much development
activity on it lately (likely due to 1.4's NIO deployment).</p>
</li> </li>
</ul> </ul>
<ul class="targetlist"> <ul class="targetlist">
<li> <li>
<h3 id="netdb">NetworkDB and profile tuning and ejection policy for large <h3 id="netdb">Base de donn&eacute;e r&eacute;seau, ajustement de profil et strat&eacute;gie d'&eacute;jection pour les grands r&eacute;seaux.</h3>
nets</h3> <p>Dans l'implémentation actuelle de la base de donnée réseau et de la gestion de profil,
<p>Within the current network database and profile management implementation, on s'est permi quelques raccourcis pratiques. Par exemple, nous n'avons pas de code pour
we have taken the liberty of some practical shortcuts. For instance, we nettoyer les références aux pairs dans les K-buckets, vu que nous n'avons pas assez de pairs pour avoir ne
don't have the code to drop peer references from the K-buckets, as we serait-ce qu'une petite chance d'en remplir une. Alors on garde les pairs dans n'importe quelle liste appropriée.
don't have enough peers to even plausibly fill any of them, so instead, Un autre exemple avec les profils de pairs: la quantité de mémoire nécessaire pour maintenir chaque profil est suffisament
we just keep the peers in whatever bucket is appropriate. Another example faible pour que nous puissions garder des milliers de profils bien détaillés sans aucun problème.
deals with the peer profiles - the memory required to maintain each peer's Comme nous avons la possibilité d'utiliser des profils réduits (dont nous pouvons maintenir des centaines de
profile is small enough that we can keep thousands of full blown profiles milliers en mémoire), nous n'avons pas non-plus le code qui ferait la conversion de détaillé en réduit et vice-versa,
in memory without problems. While we have the capacity to use trimmed ni même la purge des deux. Ça ne serait pertinent d'écrire ce code maintenant car nous sommes loin d'en avoir besoin
down profiles (which we can maintain 100s of thousands in memory), we avant longtemps.</p>
don't have any code to deal with moving a profile from a "minimal profile" <p>Ceci dit, nous devons quand même garder ça en tête car la taille du réseau grandit.
to a "full profile", a "full profile" to a "minimal profile", or to simply Il restera du travail, mais on peut le remettre à plus tard.</p>
eject a profile altogether. It just wouldn't be practical to write that
code yet, since we aren't going to need it for a while.</p>
<p>That said, as the network grows we are going to want to keep these considerations
in mind. We will have some work to do, but we can put it off for later.</p>
</li> </li>
</ul> </ul>
<h2 id="security">Security / anonymity</h2> <h2 id="security">Sécurité / anonymat</h2>
<ul class="targetlist"> <ul class="targetlist">
<li> <li>
<h3 id="tunnelId">Per-hop tunnel id &amp; new permuted TunnelVerificationStructure <h3 id="tunnelId">ID de tunnel "par saut" &amp; nouvelle encryption permut&eacute;e de la structure de v&eacute;rification des tunnels. TunnelVerificationStructure
encryption</h3> encryption</h3>
<b><i>Addressed in I2P 0.5 as documented <a href="tunnel-alt.html">elsewhere</a></i></b> <b><i>Depuis I2P v0.5 et documenté <a href="tunnel-alt.html"></a>.</i></b>
<p>Right now, if Alice builds a four hop inbound tunnel starting at Elvis, <p>À l'heure actuelle, quand Alice initie un tunnel entrant à quatre sauts commençant par Elvis,
going to Dave, then to Charlie, then Bob, and finally Alice (A&lt;--B&lt;--C&lt;--D&lt;--E), puis passant par Dave, puis Charlie,puis Bob, et se terminant chez elle, Alice (A&lt;--B&lt;--C&lt;--D&lt;--E),
all five of them will know they are participating in tunnel "123", as tous les cinq sont au fait qu'ils participent au tunnel "123", car
the messages are tagged as such. What we want to do is give each hop their les messages font en font état (TunnelID commun). Nous voulons donner à chaque saut un
own unique tunnel hop ID - Charlie will receive messages on tunnel 234 identifiant unique de saut de tunnel:Charlie recevra des messages sur le tunnel 234
and forward them to tunnel 876 on Bob. The intent is to prevent Bob or et les transmettra à Bob par le tunnel 876. Le but est d'empêcher Bob ou
Charlie from knowing that they are in Alice's tunnel, as if each hop in Charlie de savoir qu'ils participent au tunnel d'Alice, car quand chaque saut
the tunnel had the same tunnel ID, collusion attacks aren't much work. a le même tunnelID pour un tunnel donné, les attaques par coalition sont simples à mettre en &oelig;uvre.
</p> </p>
<p>Adding a unique tunnel ID per hop isn't hard, but by itself, insufficient. <p>L'ajout d'un TunnelID unique par saut n'est pas difficile, mais c'est insuffisant:
If Dave and Bob are under the control of the same attacker, they wouldn't Si Dave et Bob sont contrôlés par le même attaquant, ils ne pourraient plus identifier un tunnel
be able to tell they are in the same tunnel due to the tunnel ID, but par leur participation commune via l'information TunnelID, mais seraient quand-même capable de le
would be able to tell by the message bodies and verification structures faire par simple comparaison des corps de messages et des structures de vérification.
by simply comparing them. To prevent that, the tunnel must use layered Pour l'empêcher, le tunnel doit appliquer un cryptage étagé tout au long du chemin,
encryption along the path, both on the payload of the tunneled message à la fois sur la charge utile et les structures de vérification (utilisées pour empêcher les attaques
and on the verification structure (used to prevent simple tagging attacks). par marquages). On a besoin de modifications simples du TunnelMessage, et aussi d'inclure par saut, des clés
This requires some simple modifications to the TunnelMessage, as well secrètes générées pendant la création du tunnel et passées à la passerelle du tunnel.
as the inclusion of per-hop secret keys delivered during tunnel creation Nous devons définir une longueur maximale de tunnel (p.e. 16 sauts)
and given to the tunnel's gateway. We must fix a maximum tunnel length et indiquer à la passerelle de chiffrer le message pour chacune des 16 clés,
(e.g. 16 hops) and instruct the gateway to encrypt the message to each en ordre inverse, et de crypter la signature du hachage de la charge utile (cryptée) à chaque étape.
of the 16 delivered secret keys, in reverse order, and to encrypt the La passerelle envoie alors ce message au premier saut chiffré 16 fois, accompagné d'un plan
signature of the hash of the (encrypted) payload at each step. The gateway à 16 entrée chiffré 16 fois. Le premier saut déchiffre le plan et la charge utile avec leur clef secrète
then sends that 16-step encrypted message, along with a 16-step and 16-wide pour chercher dans le plan l'entrée associée à son propre saut (indiquée par le tunnelID unique par saut)
encrypted mapping to the first hop, which then decrypts the mapping and et pour vérifier la charge utile en la confrontant au hachage signé associé.
the payload with their secret key, looking in the 16-wide mapping for </p>
the entry associated with their own hop (keyed by the per-hop tunnel ID) <p>La passerelle dispose encore de plus d'informations que les autre pairs,
and verifying the payload by checking it against the associated signed et sa compromission avec un participant leur permettrait d'indentier leur participation à un tunnel donné.
hash.</p> De toute façon, les pairs voisins savent qu'ils participent au même tunnel, car ils savent à qui ils
<p>The tunnel gateway does still have more information than the other peers envoient un message (et avec les transport IP sans routes réservées, ils savent aussi de qui ils reçoivent).
in the tunnel, and compromising both the gateway and a tunnel participant Malgré tout, les deux techniques ci-dessus augmentent très sensiblement le coût d'obtension d'échantillons
would allow those peers to collude, exposing the fact that they are both signifiants dans des tunnels très longs.</p>
in the same tunnel. In addition, neighboring peers know that they are
in the same tunnel anyway, as they know who they send the message to (and
with IP-based transports without restricted routes, they know who they
got it from). However, the above two techniques significantly increase
the cost of gaining meaningful samples when dealing with longer tunnels.</p>
</li> </li>
<ul class="targetlist"> <ul class="targetlist">
<li> <li>
@ -322,9 +310,9 @@ Traduction en cours (25 f&eacute;v 2011)
clove exposed includes delay instructions.</p> clove exposed includes delay instructions.</p>
</li> </li>
</ul> </ul>
<h2 id="performance">Performance</h2> <h2 id="performance">Performances</h2>
<p> <p>
Performance related improvements are listed on the Les am&eacute;liorations de performances sont r&eacute;pertori&eacute;es sur une page d&eacute;di&eacute;e aux
<a href="performance.html">Performance</a> page. <a href="performance.html">performances</a>.
</p> </p>
{% endblock %} {% endblock %}