Descripción General
Esta propuesta trata sobre la implementación de túneles bidireccionales en I2P.
Motivación
i2pd va a introducir túneles bidireccionales construidos a través de otros enrutadores i2pd solo por ahora. Para la red aparecerán como túneles regulares de entrada y salida.
Diseño
Objetivos
- Reducir el uso de red y CPU al disminuir el número de mensajes TunnelBuild.
- Capacidad para saber instantáneamente si un participante se ha ido.
- Perfilado y estadísticas más precisos.
- Usar otras darknets como pares intermedios.
Modificaciones al Túnel
TunnelBuild
Los túneles se construyen de la misma manera que los túneles de entrada. No se requiere un mensaje de respuesta. Hay un tipo especial de participante llamado "entrada" marcado por una bandera, que sirve como IBGW y OBEP al mismo tiempo. El mensaje tiene el mismo formato que VaribaleTunnelBuild pero ClearText contiene diferentes campos::
in_tunnel_id
out_tunnel_id
in_next_tunnel_id
out_next_tunnel_id
in_next_ident
out_next_ident
layer_key, iv_key
También contendrá un campo mencionando a qué darknet pertenece el siguiente par y alguna información adicional si no es I2P.
TunnelTermination
Si un par desea irse, crea mensajes TunnelTermination que cifra con la clave de capa y envía en dirección “de entrada”. Si un participante recibe dicho mensaje, lo cifra con su clave de capa y lo envía al siguiente par. Una vez que un mensaje llega al propietario del túnel, comienza a descifrarlo par a par hasta que obtiene un mensaje sin cifrar. Descubre qué par se ha ido y termina el túnel.