View Issue Details

IDProjectCategoryView StatusLast Update
000437110000-014: PubSubApi Changepublic2021-06-09 19:08
ReporterBernd Edlinger Assigned ToMatthias Damm  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Summary0004371: PubSub DataSetMessageSequenceNumber jump handling
Description

In the PubSub spec I see a problem, with the
DataSetMessageSequenceNumber handling.

Table 81 – DataSetMessage Header Structure

"DataSetMessageSequenceNumber - UInt16:

A strictly monotonically increasing sequence number assigned by the publisher to
each DataSetMessage sent.
A receiver should ignore older DataSetMessage than the last sequence processed
if it does not handle reordering of DataSetMessages.
To determine whether a received DataSetMessage is newer than the last processed
DataSetMessage the following formula shall be used:

(65535 + received sequence number – last processed sequence number) modulo 65536

Results below 16384 indicate that the received DataSetMessage is newer than the
last processed DataSetMessage and the received DataSetMessage is processed.
Results above 49162 indicate that the received message is older (or same) than the last processed DataSetMessage and the received DataSetMessage should be
ignored if reordering of DataSetMessages is not necessary.
Other results are invalid and the DataSetMessage shall be ignored."

This handling is unnecessary, when security is enabled, and
can get really dangerous if a publisher gets reset then they will likely
start the sequence number again from zero, thus 49162 message can
get ignored. When message N has just been received, I would only
ignore N, and N-1 which is consistent with the two macro cycle exception
at:

Table 75 – Layout of the MessageNonce for AES-CTR:

"Subscribers shall reset the records they
keep for sequence numbers if they do not
receive messages for two times the keep
alive time to deal with Publishers that are out of
service and were not able to continue from the last used
SequenceNumber."

TagsNo tags attached.
Commit Version
Fix Due Date

Relationships

has duplicate 0004160 closedMatthias Damm DataSetMessageSequenceNumber: What Happens on Crash? 

Activities

Bernd Edlinger

2018-08-16 10:05

reporter   ~0009319

I am furthermore not sure if that handling is consitent with:

7.2.2.3.8 KeepAlive Message:

"The keep alive message does not add any additional fields.
The message and the related headers are shown in Figure 33.

The sequence number contains the next expected sequence number for the
DataSetWriter."

So as I read this, for KeepAlive the SequenceNumber does not count up,
and the following DeltaFrame will use the same SequenceNumber.

Jim Luth

2018-09-19 12:44

administrator   ~0009362

Make sure text like this "Subscribers shall reset the records they
keep for sequence numbers if they do not
receive messages for two times the keep
alive time to deal with Publishers that are out of
service and were not able to continue from the last used
SequenceNumber." gets copied to the sequence number fields in the protocol (network message header and dataset message header).

Matthias Damm

2018-09-20 06:07

developer   ~0009369

The sequence number of the DataSetMessages is logically independent of any sequence numbers contained in the NetworkMessage Header.

Added the following clarification to SequenceNumber in Group Header and DataSetMessage Header
Subscribers shall reset the records they keep for sequence numbers if they do not receive messages for two times the keep alive time to deal with Publishers that are out of service and were not able to continue from the last used SequenceNumber.

Jim Luth

2018-09-25 15:47

administrator   ~0009422

Agreed to 1.04 Errata and 1.05 text edited in telecon.

Issue History

Date Modified Username Field Change
2018-08-16 09:59 Bernd Edlinger New Issue
2018-08-16 10:05 Bernd Edlinger Note Added: 0009319
2018-08-30 14:30 Paul Hunkar Project Specifications => 10000-014: PubSub
2018-08-30 14:30 Paul Hunkar Category Spec => Api Change
2018-09-19 12:42 Jim Luth Assigned To => Matthias Damm
2018-09-19 12:42 Jim Luth Status new => assigned
2018-09-19 12:44 Jim Luth Note Added: 0009362
2018-09-20 06:07 Matthias Damm Note Added: 0009369
2018-09-20 06:07 Matthias Damm Status assigned => resolved
2018-09-20 06:07 Matthias Damm Resolution open => fixed
2018-09-25 15:47 Jim Luth Note Added: 0009422
2018-09-25 15:47 Jim Luth Status resolved => closed
2018-09-25 15:47 Jim Luth Fixed in Version => 1.05
2021-06-09 19:08 Matthias Damm Relationship added has duplicate 0004160