Subject: Implementations of Sequencing function in PWE3 drafts

From: Sasha Vainshtein <[email-masked]>
Date: Wed, 27 Nov 2002 17:32:05 +0200

Stewart, Prayson and all,
This message has been prompted by two recent developments:

1. An annoumcement (made at the Atlanta WG session) that
   format(s) of control words will be moved to the PWE3 architecture
   document

2. A lively discussion (prompted by Yaakov's proposal on unified CWs)
   on the number of bits in the sequence number (S/N) needed in
   the CW that has taken place on the WG mailing list.

I have attempted to take a slightly more generic position and
to look at different implementations of seqeuncing functions
currently under consideration in the PWE3 WG and closely
related documents.

I have found that at the moment no less than four different implementations 
are proposed. The following table lists them all with what I see as 
the points of difference:

----------------------------------------------------------------------
   The   |     Published     |       S/N Details                     |
 Method  |       in a        |---------------------------------------|
 Nickname|      Document     |  N bits | Wraparound | Initial value  |
---------|-------------------|---------|------------|----------------|
"Martini"| draft-martini-    |  16     | Skip 0.    |       1        |
         | l2circuit-encap-  |         | S/N=0 is   |                |
         | mpls-04.txt       |         | always "in |                |
         |                   |         | order"     |                |
---------|-------------------|---------|------------|----------------|
 "RTP"   | RFC 1889          |  16     | 64K-->0    |     random     |
         | draft-ietf-pwe3-  |         |            |                |
         | arch-01.txt       |         |            |                |
         |                   |         |            |                |
         |                   |         |            |                |
---------|-------------------|---------|------------|----------------|
"Malis"  | draft-ietf-pwe3-  |  14     | 16K-->0    |     random     |
         | sonet-00.txt      |         |            |                |
---------|-------------------|---------|------------|----------------|
"L2TPv3" |draft-ietf-l2tpext-|  24     | 16M-->0    |       1        |
         |l2tp-base-04.txt   |         |            |                |
----------------------------------------------------------------------

This table probably requires some comments:

1. The "Martini" method has been adopted by several L2 service-specific
drafts
   as well as by draft-anavi-tdmoip-04.txt which described emulation of some
   L1 services. It allosw to combine sequenced and unsequenced packets on
the same PW
2. The "RTP" method is relevant because the PWE3 Architecture draft states
that
   the RTP header (rather than service-specific encapsulation header)
provides
   the sequencing function if it is present in the PW packets. This method
   requires for all the PW packets to be sequenced and is adopted by most
   drafts describing emulation of L1 services
3. The "Malis" method is used in several L1 encapsulations which basically
use
   the RTP header (and hence the "RTP" sequencing method) but allow to
   suppress RTP optionally. Actually it 14 least significant bits from
   the RTP S/N. This method also requires for all the PW packets 
   to be sequenced.
4. The "L2TPv3" sequencing method is defined in conjunction with the default
   PWE3 control word. It also allows to combine sequenced and unsequenced
   packets on the PW but uses its own method to distinguish between these.

IMHO, several questions would be in place:

Q1. Is there any real need to combine sequenced and unsequenced
    packets on the same PW? And if not, why not to signal 
    sequencing (or lack thereof) at the PW setup, thus saving
    the need to accomodate two types of packets on the PW?

Q2. Is there any significance to a fixed initial value of S/N?

Q3. To which effect does the difference in the number of bits
    in the S/N affect interoperability?

Q4. To which extent do differences in the wraparound mechanism
    between the "Martini" method and all the other methods
    affect interoperability?

My tentative answers to these questions look like following:

A1. PWs we know come either "all numbered" or "all unnumbered""
    PWs that carry L1 services MUST be "all numbered"; 
    PWs that carry L2 services MAY be "all unnumbered", 
    and this fact should be signaled at their setup. 

A2. There is no special significance to the initial value of S/N
    because the 1st packet on the PW (just as any other packet) may
    be lost. 

A3. The difference in the number of bits in the S/N, if known,
    can be accomodated by reducing the S/N with more bits 
    to the appropriate number of its least significant bits. 
    (This does not change the fact that the number of bits
    actually used in the S/N must be sufficient to overcome
    re-ordering problems). Both sides of the PW must be
    aware of such an arrangment for successful interoperability.

A4. If one of a pair of PEs terminating a given "all numbered"
    PW uses the "Martini" wrap-around method, and the other uses,
    say,the "RTP" method, then:
    * The "RTP side" will occasionally falsely register a lost
      packet. The consequences will be serios for a PW 
      emulating an L1 service (because it will try to 
      compensate for the lost packet) but probably could be 
      tolerated by PWs emulating L2 services
    * The "Martini" side may not register a lost packet if its
      S/N happens to be 0. Possible effect is probably minimal
      on all kinds of services.

I am far from reaching and promoting any conclusions beyond that
at the moment. However, I hope that these notes may be helpful
in the WG architectural discussions.

With best regards,
                                   Sasha Vainshtein
email:     [email-masked]
tel:       +972-3-7659993 (office)
           +972-8-9254948 (res.)
           +972-58-674833 (cell.)

---

From: "Yaakov Stein" <[email-masked]>
Date: Wed, 27 Nov 2002 18:26:03 +0200

Sasha, 

Thanks for an insightful analysis of the situation.

I agree that the optionality of the sequence number
is artificial, and I think that one can assume that
it is known a priori whether a sequence number
will be used.

The rationale behind random initialization
has to do with security considerations.
If the first packet in an exchange has
some known fields, then the knowledge of clear-text
along with the observation of the encrypted version
can aid the code breaker. Since everyone is
security conscious nowadays, I think it best
not to fight this one too much.

I agree that interop can be facilitated in the direction
between the higher number of bits and the lower one.
The other direction will require instance memory.

As you mention, the main problem with the different
wrap-around mechanisms is that they will hamper
clock recovery for L1 services. However, if this
possibility is expected, we could guard against it.

Y(J)S

---

From: Sasha Vainshtein <[email-masked]>
Date: Wed, 27 Nov 2002 18:51:48 +0200

Yaakov and all,
Please see a brief clarification inline.

With best regards,
                                   Sasha Vainshtein
email:     [email-masked] <mailto:[email-masked]> 
tel:       +972-3-7659993 (office)
           +972-8-9254948 (res.)
           +972-58-674833 (cell.)

> -----Original Message-----
> From: Yaakov Stein [mailto:[email-masked]]
> Sent: Wednesday, November 27, 2002 6:26 PM
> To: Alexander Vainshtein; Stewart Bryant (E-mail); Prayson 
> Pate (E-mail)
> Cc: Andrew G. Malis (E-mail); Mark Townsley (E-mail); Luca 
> (E-mail); Ron
> Cohen (E-mail); PWE3 WG (E-mail)
> Subject: RE: Implementations of Sequencing function in PWE3 drafts
> 
> 
> Sasha, 
> 
I am not fighting it, on the contrary, I think
that it should be adopted because, in addition to
security considerations, there is no
advantage in setting it to any fixed value.