Subject: Comment on Generalized ID FEC format.

From: Toby Smith <[email-masked]>
Date: Thu, 26 Feb 2004 10:11:46 -0500

Hi guys,

I'd like to propose a small change to the current Generalized ID FEC 
format as specified in draft-ietf-pwe3-control-protocol-05.txt.  The 
current format is:

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     129       |C|         PW Type             |VC info Length |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      AGI      |    Length         |  Value                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                      Value (contd.)                           ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     SAII      |    Length         |  Value                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                      Value (contd.)                           ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     TAII      |    Length         |  Value                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                      Value (contd.)                           ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                    Interface Parameters                       |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

...and includes the comment:

    If a particular application does not need all three of these sub-
    elements, it may simply omit the ones it does not need.

I'd like to propose that we get rid of the AGI, SAII and TAII tags and 
simply assign them positions:

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     129       |C|         PW Type             |VC info Length |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   AGI Length  |                    Value                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                      Value (contd.)                           ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  SAII Length  |                    Value                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                      Value (contd.)                           ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  TAII Length  |                    Value                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                      Value (contd.)                           ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                    Interface Parameters                       |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The motivation here is two-fold.  First, we don't need to wait around 
for anyone to assign values the AGI, SAII and TAII bytes (admittedly, 
not a compelling reason).

Second, it makes the parsing of this FEC much simpler and less prone to 
ID collisions.  With the current format, one needs to look ahead one 
byte in the FEC to determine what's coming up next.  While that's not 
the worst thing in the world by itself, the problem arises when parsing 
reaches the interface parameters, which also begin with a one-byte type 
field.  If the AGI, SAII or TAII values conflict with any of the 
present or future interface parameter values, parsing confusion ensues.

Does anyone have objections to this proposed change?  Zero-length AGI, 
SAII and TAII values are still supported.  The only thing that changes 
is that the parsing is less error-prone, and we lose the ability to 
completely omit one or more of these values.  (Although the way in 
which value of omitting the value is substantially different from 
having a zero-length one is unclear to me anyway...).

Regards,
Tob