Skip to content

Commit bd30bd0

Browse files
Merge branch 'master' into utf8-byte
2 parents ab28568 + 44521fb commit bd30bd0

File tree

4 files changed

+32
-16
lines changed

4 files changed

+32
-16
lines changed

specification/application/conventions.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ \subsection{Node identifier distribution}
1212
Valid values of node-ID range from 0 up to a transport-specific upper boundary
1313
which is guaranteed to be above 127 for any transport.
1414

15-
The two uppermost node-ID values are reserved for diagnostic and debugging tools;
16-
these node-ID values should not be used in fielded systems.
15+
Node-ID values of 126 and 127 are reserved for diagnostic and debugging tools.
16+
These values should not be used in fielded systems.
1717

1818
\subsection{Service latency}
1919

specification/introduction/introduction.tex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,8 @@ \subsection{v1.0 -- work in progress}
243243
\item Support for UTF-8 strings and byte strings has been added.
244244

245245
\item Cyphal/UDP and Cyphal/serial transport specifications have been introduced.
246+
247+
\item Minor adjustments of the transport layer definitions.
246248
\end{itemize}
247249

248250
\subsection{v1.0-beta -- Sep 2020}

specification/transport/abstract.tex

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -480,22 +480,22 @@ \subsubsection{Transfer-ID}\label{sec:transport_transfer_id}
480480
The transfer-ID value of every emitted transfer is determined by sampling the corresponding counter
481481
keyed 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.
484492
Once 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
500500
for monotonic transfer-ID as their arithmetic difference $a-b$.
501501
For 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}
673673
Implementations may define this value statically according to the application requirements.
674674
Implementations may automatically adjust this value per session at runtime as a function of the
675675
observed transfer reception interval.
676-
Transfer-ID timeout values greater than 2 (two) seconds are not recommended.
677676
Implementations 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

699698
If the optimal transfer-ID timeout value for a given session cannot be known in advance,
700699
it can be computed at runtime on a per-session basis\footnote{%
@@ -703,6 +702,13 @@ \subsubsection{Behaviors}
703702
The parameters of such computation are to be chosen according to the requirements of the application,
704703
but 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,

specification/transport/udp/udp.tex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,14 @@ \subsection{Maximum transmission unit}
373373
which is allowed as long as such behavior is opaque to the Cyphal/UDP end systems.
374374
}.
375375

376+
In multi-frame transfers, the payload size of all frames except the last one shall be the same.
377+
The payload size of the last frame shall be greater than zero and not greater than that of the preceding
378+
frames\footnote{%
379+
The same-MTU constraint for all frames except the last is necessary to enable efficient reassembly of
380+
multi-frame transfers with frames arriving out-of-order, including the case of frames interleaving between
381+
adjacent transfers.
382+
}.
383+
376384
\subsection{Real-time and resource-constrained systems}
377385

378386
It is anticipated that real-time and/or resource-constrained systems may implement Cyphal/UDP

0 commit comments

Comments
 (0)