errata logo graphic

Found 2 records.

Status: Verified (2)

RFC5326, "Licklider Transmission Protocol - Specification", September 2008

Source of RFC: IRTF

Errata ID: 1657

Status: Verified
Type: Technical

Reported By: Alfred Hoenes
Date Reported: 2009-01-23
Verifier Name: Stephen Farrell
Date Verified: 2009-11-10

Section 3.1.1, pg.12 says:

   if (CTRL flag = 0)
      segment is a data segment if (EXC flag = 0)
         segment contains only red-part data if (Flag 1 = 1)
            segment is a checkpoint segment is the last segment in the
            red part of the block if (Flag 0 = 1)
               segment is the last segment in the block
         else // segment is not end of red-part
            if (Flag 0 = 1)
               segment is a checkpoint
      else
         segment contains only green-part data if (Flag 1 = 1)
            if (Flag 0 = 1)
               segment is the last segment in the block
   else
      segment is a control segment if (EXC flag = 0)
         segment pertains to report activity if (flag 0 = 0)
            segment is a report segment
         else
            segment is an acknowledgment of a report segment
      else
         segment pertains to session cancellation activity if (Flag 1 =
         0)
            segment pertains to cancellation by block sender if (Flag 0
            = 1)
               segment is a cancellation by sender
            else
               segment is an acknowledgment of a cancellation by sender
         else
            segment pertains to cancellation by block receiver if (Flag
            0 = 1)
               segment is a cancellation by receiver
            else
               segment is an acknowledgment of a cancellation by
               receiver

It should say:

   if (CTRL flag = 0)
      segment is a data segment
      if (EXC flag = 0)
         segment contains only red-part data
         if (Flag 1 = 1)
            segment is a checkpoint
            segment is the last segment in the red part of the block
            if (Flag 0 = 1)
               segment is the last segment in the block
         else // segment is not end of red-part
            if (Flag 0 = 1)
               segment is a checkpoint
      else
         segment contains only green-part data
         if (Flag 1 = 1)
            if (Flag 0 = 1)
               segment is the last segment in the block
   else
      segment is a control segment
      if (EXC flag = 0)
         segment pertains to report activity
         if (flag 0 = 0)
            segment is a report segment
         else
            segment is an acknowledgment of a report segment
      else
         segment pertains to session cancellation activity
         if (Flag 1 = 0)
            segment pertains to cancellation by block sender
|           if (Flag 0 = 0)
               segment is a cancellation by sender
            else
               segment is an acknowledgment of a cancellation by sender
         else
            segment pertains to cancellation by block receiver
|           if (Flag 0 = 0)
               segment is a cancellation by receiver
            else
               segment is an acknowledgment of a cancellation by
               receiver

Notes:

Issues:

a) Confusing placement of line breaks: "if" clauses could be
understood as postfix qualifiers, but in fact shall be prefixes
to subsequent clauses; independent statements should be separated
by line breaks.

Correction: re-formating of entire pseudocode block

b) Sense of "Flag 0" in the "CTRL=1" branches is illogical and inconsistent
with remainder of the RFC -- e.g., cf. sections 3.1.2 and 3.1.3 !

Correction: Change "if (Flag 0 = 1)" --> "if (Flag 0 = 0)"
in the two lines tagged with change bars in the corrected text.


Errata ID: 1658

Status: Verified
Type: Technical

Reported By: Alfred Hoenes
Date Reported: 2009-01-23
Verifier Name: Stephen Farrell
Date Verified: 2009-11-10

Section 3.2.1, pg.16 says:

   If the data segment is a checkpoint, the segment MUST additionally
   include the following two serial numbers (checkpoint serial number
   and report serial number) to support efficient retransmission.  Data
   segments that are not checkpoints MUST NOT have these two fields in
|  the header and MUST continue on directly with the client service
       ^^^^^^ 
  data.

It should say:

   If the data segment is a checkpoint, the segment MUST additionally
   include the following two serial numbers (checkpoint serial number
   and report serial number) to support efficient retransmission.  Data
   segments that are not checkpoints MUST NOT have these two fields in
|  the segment content and MUST continue on directly with the client
       ^^^^^^^^^^^^^^^
   service data.

Notes:

Rationale:
Section 3.2 is about 'Segment Content' as defined in section 3
and depicted in the figure on page 10 of the RFC.
Accordingly, the subject two fields are *not* part of the segment
_header_, and the original text is misleading.

Additional concern (please 'Keep for Update'):
The subject two fields, checkpoint serial number and report serial
number, obviously are not in the restricted scope of the Client
Service ID -- they are related to corrresponding fields carried in
non-data segments which do not contain a Client Service ID field.
Therefore, with respect to layering considerations, it would have
been more reasonable to place the two subject fields in front of
the Client Service ID field, at the front of the data segment, to
get them conceptionally out of the scope of the Client Service ID
field governing the Offset, Length, and Client Service Data fields.


Report New Errata