Updates to datagram overview page

Add missing references
This commit is contained in:
zzz
2025-04-16 09:04:24 -04:00
parent 5242a5831c
commit 9ad5a37bff
2 changed files with 28 additions and 16 deletions

View File

@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Datagrams{% endtrans %}{% endblock %}
{% block lastupdated %}{% trans %}February 2019{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.39{% endblock %}
{% block lastupdated %}2025-04{% endblock %}
{% block accuratefor %}0.9.66{% endblock %}
{% block content %}
<h2>{% trans %}Datagram Overview{% endtrans %}</h2>
<p>{% trans i2cp=site_url('docs/protocol/i2cp') -%}
@ -35,30 +35,30 @@ the 'streamr' tunnel types, and udpTunnel classes.
{%- endtrans %}</p>
<h3>{% trans %}Datagram Length{% endtrans %}</h3>
<p>{% trans -%}
<p>
The application designer should carefully consider the tradeoff of repliable vs. non-repliable
datagrams. Also, the datagram size will affect reliability, due to tunnel fragmentation into 1KB
tunnel messages. The more message fragments, the more likely that one of them will be dropped
by an intermediate hop. Messages larger than a few KB are not recommended.
Over about 10 KB, the delivery probablility drops dramatically.
Messages over 16 KB cannot be delivered over NTCP, dropping delivery chances even more.
{%- endtrans %}</p>
</p>
<a href="{{ site_url('docs/spec/datagrams') }}">{% trans -%}
See the Datagrams Specification page.
{%- endtrans %}</a>
<p>{% trans elgamalaes=site_url('docs/how/elgamal-aes') -%}
Also note that the various overheads added by lower layers, in particular asymmetric
<a href="{{ elgamalaes }}">ElGamal/AES</a>, place a large burden on intermittent messages
<p>
Also note that the various overheads added by lower layers, in particular
garlic messages, place a large burden on intermittent messages
such as used by a Kademlia-over-UDP application. The implementations are currently tuned
for frequent traffic using the streaming library. There are a high number
of session tags delivered, and a short session tag lifetime, for example.
There are currently no configuration parameters available within I2CP to tune
the ElGamal Session Tag parameters.
{%- endtrans %}</p>
for frequent traffic using the streaming library.
</p>
<h3>{% trans %}I2CP Protocol Number and Ports{% endtrans %}</h3>
<p>{% trans -%}
The standard I2CP protocol number for datagrams is PROTO_DATAGRAM (17).
The standard I2CP protocol number for signed (repliable) datagrams is PROTO_DATAGRAM (17).
Applications may or may not choose to set the
protocol in the I2CP header. It is not set by default.
protocol in the I2CP header. The default is implementation-dependent.
It must be set to demultiplex datagram and streaming traffic received on the same Destination.
{%- endtrans %}</p>
@ -75,7 +75,8 @@ There is no method within the datagram API to specify whether it is non-repliabl
or repliable. The application should be designed to expect the appropriate type.
The I2CP protocol number or port should be used by the application to
indicate datagram type.
The I2CP protocol numbers PROTO_DATAGRAM (signed) and PROTO_DATAGRAM_RAW are defined in the
The I2CP protocol numbers PROTO_DATAGRAM (signed, also known as Datagram1), PROTO_DATAGRAM_RAW,
PROTO_DATAGRAM2, and PROTO_DATAGRAM3 are defined in the
<a href="{{ i2psession }}">I2PSession API</a>
for this purpose. A common design pattern in client/server datagram applications is to
use signed datagrams for a request which includes a nonce, and use a raw datagram
@ -86,6 +87,10 @@ for the reply, returning the nonce from the request.
PROTO_DATAGRAM = 17
</li><li>
PROTO_DATAGRAM_RAW = 18
<ul><li>
PROTO_DATAGRAM2 = 19
<ul><li>
PROTO_DATAGRAM3 = 20
</li></ul>
<p>{% trans i2psession='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/I2PSession.html',
@ -100,6 +105,7 @@ as implemented in
<p>{% trans i2cp=site_url('docs/protocol/i2cp') -%}
Data integrity is assured by the gzip CRC-32 checksum implemented in
<a href="{{ i2cp }}#format">the I2CP layer</a>.
Authenticated datagrams (Datagram1 and Datagram2) also ensure integrity.
There is no checksum field in the datagram protocol.
{%- endtrans %}</p>

View File

@ -449,6 +449,9 @@ Total length: minimum 34 + payload length.
References
==========
.. [Common]
{{ spec_url('common-structures') }}
.. [DATAGRAMS]
{{ site_url('docs/api/datagrams', True) }}
@ -467,6 +470,9 @@ References
.. [SAMv3]
{{ site_url('docs/api/samv3') }}
.. [Streaming]
{{ spec_url('streaming') }}
.. [TRANSPORT]
{{ site_url('docs/transport', True) }}