{% extends "_layout.html" %} {% block title %}Transport Overview{% endblock %} {% block content %} Updated July 2010, current as of router version 0.8
I2P supports multiple transports simultaneously. There are two transports currently implemented:
Each provides a "connection" paradigm, with authentication, flow control, acknowledgments and retransmission.Typical scenarios are:
For each outgoing message, the transport system solicits "bids" from each transport. The transport bidding the lowest (best) value wins the bid and receives the message for delivery. A transport may refuse to bid.
Whether a transport bids, and with what value, depend on numerous factors:
In general, the bid values are selected so that two routers are only connected by a single transport at any one time. However, this is not a requirement.
Also, the existing transports will be enhanced to support multiple addresses within a single transport, including IPV6 addresses. Currently, a transport may only advertise a single IPV4 address.
Work continues on adjusting default connection limits for each transport. I2P is designed as a "mesh network", where it is assumed that any router can connect to any other router. This assumption may be broken by routers that have exceeded their connection limits, and by routers that are behind restrictive state firewalls (restricted routes).
The current connection limits are higher for SSU than for NTCP, based on the assumption that the memory requirements for an NTCP connection are higher than that for SSU. However, as NTCP buffers are partially in the kernel and SSU buffers are on the Java heap, that assumption is difficult to verify.
Analyze Breaking and Improving Protocol Obfuscation and see how transport-layer padding may improve things.
{% endblock %}