Subject: [rohc] RE: FN updates

From: "Ghyslain Pelletier \(LU/EAB\)" <[email-masked]>
Date: Fri, 3 Feb 2006 10:23:48 +0100

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