@@ -662,16 +662,19 @@ \subsubsection{Transmission over redundant transports}
662662 in section~\ref {sec:application_functions }.
663663}.
664664
665- \subsection {Transfer reception }
665+ \subsection {Transfer reception }\label { sec:transport_transfer_reception }
666666
667667\subsubsection {Definitions }
668668
669669\emph {Transfer reassembly } is the real-time process of reconstruction of the transfer payload and its metadata from
670670a sequence of relevant transport frames.
671671
672- \emph {Transfer-ID timeout } is a time interval that is 2 (two) seconds long.
673- The semantics of this entity are explained below.
674- Implementations are allowed to redefine this value provided that such redefinition is explicitly documented.
672+ \emph {Transfer-ID timeout } is a time interval whose semantics are explained below.
673+ Implementations may define this value statically according to the application requirements.
674+ Implementations may automatically adjust this value per session at runtime as a function of the
675+ observed transfer reception interval.
676+ Transfer-ID timeout values greater than 2 (two) seconds are not recommended.
677+ Implementations should document the value of transfer-ID timeout or the rules of its computation.
675678
676679\emph {Transport frame reception timestamp } specifies the moment of time when the frame is received by a node.
677680\emph {Transfer reception timestamp } is the reception timestamp of the earliest received frame of the transfer.
@@ -693,13 +696,32 @@ \subsubsection{Behaviors}
693696any other successfully reassembled transfer under the same session specifier by more than the transfer-ID timeout
694697is considered unique regardless of its transfer-ID value.
695698
699+ If the optimal transfer-ID timeout value for a given session cannot be known in advance,
700+ it can be computed at runtime on a per-session basis\footnote {%
701+ E.g., as a multiple of the average transfer reception interval.
702+ }.
703+ The parameters of such computation are to be chosen according to the requirements of the application,
704+ but they should always be documented.
705+
696706\begin {remark }
697707 Low transfer-ID timeout values increase the risk of undetected transfer duplication when such transfers
698708 are significantly delayed due to network congestion,
699709 which is possible with very low-priority transfers when the network load is high.
700710
701711 High transfer-ID timeout values increase the risk of an undetected transfer loss
702712 when a remote node suffers a loss of state (e.g., due to a software reset).
713+
714+ The ability to auto-detect the optimal transfer-ID timeout value per session at runtime ensures that the
715+ application can find the optimal balance even if the temporal properties of the network are not known in advance.
716+ As a practical example, an implementation could compute the exponential moving average of the
717+ transfer reception interval $ x$ for a given session and define the transfer-ID timeout as $ 2 x$ .
718+
719+ It is important to note that the automatic adjustment of the transfer-ID timeout should only be done
720+ on a per-session basis rather than for the entire port, because there may be multiple remote nodes
721+ emitting transfers on the same port at different rates.
722+ For example, if one node emits transfers at a rate $ r$ transfers per second, and another node emits transfers
723+ on the same port at a much higher rate $ 100 r$ , the resulting auto-detected transfer-ID timeout might be
724+ too low, creating the risk of accepting duplicates.
703725\end {remark }
704726
705727Implementations are recommended, but not required, to support reassembly of
0 commit comments