@@ -480,22 +480,22 @@ \subsubsection{Transfer-ID}\label{sec:transport_transfer_id}
480480The transfer-ID value of every emitted transfer is determined by sampling the corresponding counter
481481keyed by the session specifier of the transfer; afterwards, the counter is incremented by one.
482482
483- The initial value of a transfer-ID counter shall be zero.
483+ When the transfer-ID counter reaches the maximum value defined for the concrete transport,
484+ the next increment resets its value to zero.
485+ Transports where the number of distinct transfer-ID values is not less than $ 2 ^{48}$ are said to have
486+ \emph {monotonic transfer-ID }.
487+ Those with narrower transfer-ID counters are said to have \emph {cyclic transfer-ID };
488+ the number of unique transfer-ID values is referred to as \emph {transfer-ID modulo }.
489+
490+ The initial value of a cyclic transfer-ID counter shall be zero.
491+ The initial value of a monotonic transfer-ID counter should be zero.
484492Once a new transfer-ID counter is created,
485- it shall be kept at least as long as the node remains connected to the transport network;
486- destruction of transfer-ID counter states is prohibited\footnote {%
493+ it should be kept at least as long as the node remains connected to the network.\footnote {%
487494 The number of unique session specifiers is bounded and can be determined statically per application,
488495 so this requirement does not introduce non-deterministic features into the application even if it leverages
489496 aperiodic/ad-hoc transfers.
490497}.
491498
492- When the transfer-ID counter reaches the maximum value defined for the concrete transport,
493- the next increment resets its value to zero.
494- Transports where such events are expected to take place during operation are said to have \emph {cyclic transfer-ID };
495- the number of unique transfer-ID values is referred to as \emph {transfer-ID modulo }.
496- Transports where the maximum value of the transfer-ID is high enough to be unreachable under all conceivable
497- practical circumstances are said to have \emph {monotonic transfer-ID }.
498-
499499\emph {Transfer-ID difference } for a pair of transfer-ID values $ a$ and $ b$ is defined
500500for monotonic transfer-ID as their arithmetic difference $ a-b$ .
501501For a cyclic transfer-ID, the difference is defined as the number of increment operations that need to be applied
@@ -673,7 +673,6 @@ \subsubsection{Definitions}
673673Implementations may define this value statically according to the application requirements.
674674Implementations may automatically adjust this value per session at runtime as a function of the
675675observed transfer reception interval.
676- Transfer-ID timeout values greater than 2 (two) seconds are not recommended.
677676Implementations should document the value of transfer-ID timeout or the rules of its computation.
678677
679678\emph {Transport frame reception timestamp } specifies the moment of time when the frame is received by a node.
@@ -692,9 +691,9 @@ \subsubsection{Behaviors}
692691 Unintentional duplications may be introduced by various artifacts of the transport network.
693692}.
694693
695- For a given session specifier, a successfully reassembled transfer that is temporally separated from
696- any other successfully reassembled transfer under the same session specifier by more than the transfer-ID timeout
697- is considered unique regardless of its transfer-ID value.
694+ For a given session specifier, a successfully reassembled transfer that is
695+ temporally separated from any other successfully reassembled transfer under the same session specifier
696+ by more than the transfer-ID timeout is considered unique regardless of its transfer-ID value.
698697
699698If the optimal transfer-ID timeout value for a given session cannot be known in advance,
700699it can be computed at runtime on a per-session basis\footnote {%
@@ -703,6 +702,13 @@ \subsubsection{Behaviors}
703702The parameters of such computation are to be chosen according to the requirements of the application,
704703but they should always be documented.
705704
705+ The transfer-ID timeout used with service response transfers should be zero\footnote {%
706+ With a non-zero transfer-ID timeout, responses may be lost if the server responds to multiple requests
707+ from the same client not in the order of their arrival.
708+ There is no risk of response duplication because the client will retire the pending request entry
709+ once its first response is received, ignoring subsequent duplicates.
710+ }.
711+
706712\begin {remark }
707713 Low transfer-ID timeout values increase the risk of undetected transfer duplication when such transfers
708714 are significantly delayed due to network congestion,
0 commit comments