forked from I2P_Developers/i2p.www
prop. 144 options update
This commit is contained in:
@ -5,7 +5,7 @@ ECIES-X25519-AEAD-Ratchet
|
|||||||
:author: zzz, chisana, orignal
|
:author: zzz, chisana, orignal
|
||||||
:created: 2018-11-22
|
:created: 2018-11-22
|
||||||
:thread: http://zzz.i2p/topics/2639
|
:thread: http://zzz.i2p/topics/2639
|
||||||
:lastupdated: 2020-05-01
|
:lastupdated: 2020-05-03
|
||||||
:status: Open
|
:status: Open
|
||||||
:target: 0.9.46
|
:target: 0.9.46
|
||||||
:implementedin: 0.9.46
|
:implementedin: 0.9.46
|
||||||
@ -2264,7 +2264,7 @@ Typical contents include the following blocks:
|
|||||||
================================== ============= ============
|
================================== ============= ============
|
||||||
DateTime 0 7
|
DateTime 0 7
|
||||||
Termination (TBD) 4 9 typ.
|
Termination (TBD) 4 9 typ.
|
||||||
Options (TBD) 5 9
|
Options (TBD) 5 21+
|
||||||
Message Number (TBD) 6 TBD
|
Message Number (TBD) 6 TBD
|
||||||
Next Key 7 3 or 35
|
Next Key 7 3 or 35
|
||||||
ACK 8 4 typ.
|
ACK 8 4 typ.
|
||||||
@ -2512,46 +2512,80 @@ Options include various parameters for the session.
|
|||||||
See the Session Tag Length Analysis section below for more information.
|
See the Session Tag Length Analysis section below for more information.
|
||||||
|
|
||||||
The options block may be variable length,
|
The options block may be variable length,
|
||||||
nine or more bytes, as more_options may be present.
|
as more_options may be present.
|
||||||
|
|
||||||
|
|
||||||
.. raw:: html
|
.. raw:: html
|
||||||
|
|
||||||
{% highlight lang='dataspec' %}
|
{% highlight lang='dataspec' %}
|
||||||
+----+----+----+----+----+----+----+----+
|
+----+----+----+----+----+----+----+----+
|
||||||
| 5 | size |STL |OTW |STimeout |MITW|
|
| 5 | size |ver |flg |STL |STimeout |
|
||||||
+----+----+----+----+----+----+----+----+
|
+----+----+----+----+----+----+----+----+
|
||||||
|flg | more_options |
|
| SOTW | RITW |tmin|tmax|rmin|rmax|
|
||||||
+----+ +
|
+----+----+----+----+----+----+----+----+
|
||||||
| |
|
| tdmy | rdmy | tdelay | rdelay |
|
||||||
|
+----+----+----+----+----+----+----+----+
|
||||||
|
| more_options |
|
||||||
~ . . . ~
|
~ . . . ~
|
||||||
| |
|
| |
|
||||||
+----+----+----+----+----+----+----+----+
|
+----+----+----+----+----+----+----+----+
|
||||||
|
|
||||||
blk :: 5
|
blk :: 5
|
||||||
size :: 2 bytes, big endian, size of options to follow, 6 bytes minimum
|
size :: 2 bytes, big endian, size of options to follow, 21 bytes minimum
|
||||||
STL :: Session tag length (must be 8), other values unimplemented
|
ver :: Protocol version, must be 0
|
||||||
OTW :: Outbound Session tag window (max lookahead), big endian
|
|
||||||
STimeout :: Session idle timeout (seconds), big endian
|
|
||||||
MITW :: Max Inbound Session Tag window (max lookahead), big endian
|
|
||||||
flg :: 1 byte flags
|
flg :: 1 byte flags
|
||||||
bits 7-0: Unused, set to 0 for future compatibility
|
bits 7-0: Unused, set to 0 for future compatibility
|
||||||
|
STL :: Session tag length (must be 8), other values unimplemented
|
||||||
|
STimeout :: Session idle timeout (seconds), big endian
|
||||||
|
SOTW :: Sender Outbound Tag Window, 2 bytes big endian
|
||||||
|
RITW :: Receiver Inbound Tag Window 2 bytes big endian
|
||||||
|
|
||||||
|
tmin, tmax, rmin, rmax :: requested padding limits
|
||||||
|
tmin and rmin are for desired resistance to traffic analysis.
|
||||||
|
tmax and rmax are for bandwidth limits.
|
||||||
|
tmin and tmax are the transmit limits for the router sending this options block.
|
||||||
|
rmin and rmax are the receive limits for the router sending this options block.
|
||||||
|
Each is a 4.4 fixed-point float representing 0 to 15.9375
|
||||||
|
(or think of it as an unsigned 8-bit integer divided by 16.0).
|
||||||
|
This is the ratio of padding to data. Examples:
|
||||||
|
Value of 0x00 means no padding
|
||||||
|
Value of 0x01 means add 6 percent padding
|
||||||
|
Value of 0x10 means add 100 percent padding
|
||||||
|
Value of 0x80 means add 800 percent (8x) padding
|
||||||
|
Alice and Bob will negotiate the minimum and maximum in each direction.
|
||||||
|
These are guidelines, there is no enforcement.
|
||||||
|
Sender should honor receiver's maximum.
|
||||||
|
Sender may or may not honor receiver's minimum, within bandwidth constraints.
|
||||||
|
|
||||||
|
tdmy: Max dummy traffic willing to send, 2 bytes big endian, bytes/sec average
|
||||||
|
rdmy: Requested dummy traffic, 2 bytes big endian, bytes/sec average
|
||||||
|
tdelay: Max intra-message delay willing to insert, 2 bytes big endian, msec average
|
||||||
|
rdelay: Requested intra-message delay, 2 bytes big endian, msec average
|
||||||
|
|
||||||
more_options :: Format undefined, for future use
|
more_options :: Format undefined, for future use
|
||||||
|
|
||||||
{% endhighlight %}
|
{% endhighlight %}
|
||||||
|
|
||||||
|
SOTW is the sender's recommendation to the receiver for the
|
||||||
|
receiver's inbound tag window (the maximum lookahead).
|
||||||
|
RITW is the sender's declaration of the inbound tag window
|
||||||
|
(maximum lookahead) that he plans to use.
|
||||||
|
Each side then sets or adjusts the lookahead based
|
||||||
|
on some minimum or maximum or other calculation.
|
||||||
|
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
- Support for non-default session tag length is optional,
|
- Support for non-default session tag length will hopefully
|
||||||
probably not necessary
|
never be required.
|
||||||
- The tag window is MAX_SKIP in the Signal documentation.
|
- The tag window is MAX_SKIP in the Signal documentation.
|
||||||
|
|
||||||
Issues:
|
Issues:
|
||||||
|
|
||||||
- Options negotiation is TBD.
|
- Options negotiation is TBD.
|
||||||
- Padding parameters also?
|
- Defaults TBD.
|
||||||
- Is 255 big enough for max MITW?
|
- Padding and delay options are copied from NTCP2,
|
||||||
|
but those options have not been fully implemented or studied there.
|
||||||
|
|
||||||
|
|
||||||
Message Numbers
|
Message Numbers
|
||||||
|
Reference in New Issue
Block a user