Subject: [rohc] RE: FN updates

From: "Finking, Robert" <[email-masked]>
Date: Fri, 3 Feb 2006 10:57:47 -0000

Hi Ghyslain,

Many thanks for the feedback. You are correct that the "uncomp_length"
(or "ULENGTH") is not obviously set in the control field blocks, and
that use of ENFORCE is the right solution to this. In fact my colleague
who is developing the FN->BoxNotation compiler picked up an error in one
of the examples in the FN draft. His tool was complaining that it didn't
know the uncompressed length of one of the control fields.

It is worth noting however that in some instances the ULENGTH of a
control field is not significant and it doesn't need to be defined.

Thanks again

Raffles

PS By the way have you seen either your post or mine appear on the list?
I've only seen the direct e-mails.

> -----Original Message-----
> From: Ghyslain Pelletier (LU/EAB) 
> [mailto:[email-masked]] 
> Sent: 03 February 2006 09:24
> To: Raffles; [email-masked]
> Cc: Finking, Robert; Kristofer Sandlund (LU/EAB); West, Mark; 
> Ford, Alan
> Subject: RE: FN updates
> 
> 
> Hello Robert,
> 
> I am very positive to the changes that you are proposing.
> I think this is moving in a good direction, as we've 
> discussed offline.
> 
> However, from your comment on the annotations, I started 
> wondering how we actually define the "uncomp_length" 
> attribute of control fields (I don't recall if/how we did it 
> earlier either). As you know, I would not like to make the 
> annotations normative for the control fields, so I wonder if 
> it would make sense to use ENFORCE in the control field 
> declaration to set this attribute for all control fields that 
> are declared within that block.
> 
> e.g.: from: 
> 
> CONTROL {
>   some_flag;            //[ 1 ]
>   some_field;           //[ 16 ]
> }
> 
> to:
> 
> CONTROL {
>   some_flag;
>   some_field;
> 
>   ENFORCE(some_flag.ULENGTH == 1);
>   ENFORCE(some_field.ULENGTH == 16);
> }
> 
> Would this makle sense, or do we already express the length 
> of the control fields somehow in a way that I missed?
> 
> /Ghyslain
> 
> Raffles wrote:
> > Hi All,
> > 
> > It's been a bit quiet here recently, but I (finally) have an update 
> > for the FN to present to you. This is basically the result of 
> > implementing as many of the WGLC changes as possible, as discussed 
> > previously on this list.
> > 
> > Before I go and do the full updates needed to the draft itself I 
> > thought it would be wise to post a sample of the post WGLC 
> notation. 
> > The changes are entirely cosmetic, but the appearance of  
> the new FN 
> > is nonetheless considerably different from the old notation. In 
> > particular it is hopefully much clearer than it used to be.
> > 
> > Please could I have feedback as to whether the below syntax is 
> > acceptable as a basis for the response to the WGLC 
> comments, and also 
> > whether you're generally happy to go with this?
> > 
> > If everybody is happy then I'll update the FN draft 
> accordingly (may 
> > take a few weeks) and work with the TCP profile I-D authors 
> to update 
> > the profile to the new syntax.
> > 
> > Thanks in advance
> > 
> > Raffles
> > 
> > PS Note that the controversial field length annotations have been 
> > removed. This is on the basis that an FN-to-boxNotation compiler is 
> > currently under development, and whilst in it's early stages, can 
> > already produce ASCII diagrams of simple profiles. However 
> these are 
> > missing from the below since the tool isn't yet complete, 
> except for 
> > in the control fields, which I've left in to illustrate 
> what it would 
> > look like if we left the field length annotations in (hope 
> that makes 
> > sense).
> > 
> > 
> > ////////////////////////////////////////////
> > // Constants
> > ////////////////////////////////////////////
> > 
> > IP_ID_BEHAVIOR_SEQUENTIAL         = 0;
> > IP_ID_BEHAVIOR_SEQUENTIAL_SWAPPED = 1;
> > IP_ID_BEHAVIOR_RANDOM             = 2;
> > IP_ID_BEHAVIOR_ZERO               = 3;
> > 
> > 
> > ////////////////////////////////////////////
> > // Global control fields 
> ////////////////////////////////////////////
> > // The control fields here reside in the context and are
> > persistent // between packets. Some of these (such as the
> > sequence number // scaling/residue are never transmitted
> > explicitly, but are inferred // from other values.
> > //
> > CONTROL {
> >   ecn_used;            //[ 1 ]
> >   msn;                 //[ 16 ]
> >   ip_inner_ecn;        //[ 2 ]
> >   seq_number_scaled;   //[ 32 ]
> >   seq_number_residue;  //[ 32 ]
> >   ack_stride;          //[ 16 ]
> >   ack_number_scaled;   //[ 16 ]
> >   ack_number_residue;  //[ 16 ]
> > }
> > 
> > 
> > ////////////////////////////////////////////
> > // External Encoding Methods 
> > ////////////////////////////////////////////
> > inferred_ip_v4_header_checksum "defined in Section 6.4.1" 
> > inferred_mine_header_checksum  "defined in Section 6.4.2"
> > inferred_ip_v4_length          "defined in Section 6.4.3"
> > inferred_ip_v6_length          "defined in Section 6.4.4"
> > inferred_offset                "defined in Section 6.4.5"
> > list_tcp_options               "defined in Section 6.3.3"
> > 
> > 
> > ////////////////////////////////////////////
> > // General structures ////////////////////////////////////////////
> > 
> > static_or_irreg32(flag)
> > {
> >   UNCOMPRESSED {
> >     field;
> >   }
> > 
> >   COMPRESSED irreg_enc {
> >     field ::= irregular(32);
> >     ENFORCE(flag == 1);
> >   }
> > 
> >   COMPRESSED static_enc {
> >     field ::= static;
> >     ENFORCE(flag == 0);
> >   }
> > }
> > 
> > 
> > variable_length_32_enc(flag)
> > {
> >   UNCOMPRESSED {
> >     field;
> >   }
> > 
> >   COMPRESSED not_present {
> >     field ::= static;
> >     ENFORCE(flag == 0);
> >   }
> > 
> >   COMPRESSED 8_bit {
> >     field ::= lsb(8, 63);
> >     ENFORCE(flag == 1);
> >   }
> > 
> >   COMPRESSED 16_bit {
> >     field ::= lsb(16, 16383);
> >     ENFORCE(flag == 2);
> >   }
> > 
> >   COMPRESSED 32_bit {
> >     field ::= irregular(32);
> >     ENFORCE(flag == 3);
> >   }
> > }
> > 
> > 
> > ////////////////////////////////////////////
> > // IPv6 Destination options header 
> > ////////////////////////////////////////////
> > 
> > 
> > ip_dest_opt
> > {
> >   UNCOMPRESSED {
> >     next_header;
> >     length;
> >     value;
> >   }
> > 
> >   DEFAULT {
> >     length      ::= static;
> >     next_header ::= static;
> >     value       ::= static;
> >   }
> > 
> >   COMPRESSED dest_opt_static {
> >     next_header ::= irregular(8);
> >     length      ::= irregular(8);
> >   }
> > 
> >   COMPRESSED dest_opt_dynamic {
> >     value ::= irregular(length.UVALUE*64+48);
> >   }
> > 
> >   COMPRESSED dest_opt_replicate_0 {
> >     discriminator ::= '00000000';
> >   }
> > 
> >   COMPRESSED dest_opt_replicate_1 {
> >     discriminator ::= '10000000';
> >     length        ::= irregular(8);
> >     value         ::= irregular(length.UVALUE * 64 + 48);   }
> > }
> 
> 

_______________________________________________
Rohc mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rohc