Carl Knutsson | 5 Mar 09:39 2012

Re: RFC4996 IP-ID with co_common and Random behavior

Hi,

Comment inline.

Cheers

/Calle

On 02/27/2012 05:02 PM, RoHC Team wrote:
>  Hello everybody,
> 
>  We are coding the RFC4996 and we don't understand how to send the value
> of the IPv4 IP-ID field, using the co_common compressed format, when the
> IP-ID has a random behavior.
> 
>  With the co_common format, there are :
>  ip_id_indicator
>  ip_id_behavior
>  and ip_id =:= optional_ip_id_lsb( ip_id_behavior.UVALUE,
>                                    ip_id_indicator.CVALUE)
> 
>  with :
> 
> optional_ip_id_lsb(behavior, indicator)
>  {
>    UNCOMPRESSED {
>      ip_id [ 16 ];
>    }
> 
>    COMPRESSED short {
(Continue reading)

RoHC Team | 5 Mar 10:59 2012
Picon

Re: RFC4996 IP-ID with co_common and Random behavior

  Hello Carl,

  When using co_common compressed packet format, described page 80 of 
the RFC, ip_id is optionaly sent with the optional_ip_id_lsb{} method. Ok.

  But when the IP-ID behavior is random, the value is not present in the 
header :

      COMPRESSED not_present {
        ENFORCE((behavior == IP_ID_BEHAVIOR_RANDOM) ||
                (behavior == IP_ID_BEHAVIOR_ZERO));
      }

  So I don't understand how to send IP-ID random value ...

  Perhaps you think of the ipv4_innermost_irregular{} method, page 63, 
but I don't understand how to use this method and the compressed format 
co_common{} ...

  And I don't have any samples or reference captures file : only the RFC 
text!

  Thank you for your help and explanation.

  Best regards,

               FWX.

Le 05/03/2012 09:39, Carl Knutsson a écrit :
> Hi,
(Continue reading)

Raffles | 6 Mar 00:02 2012

Re: RFC4996 IP-ID with co_common and Random behavior

Hello,

It looks like you are looking at the optional_ip_id_lsb encoding method on page 76. This encoding method is only used in the co_common compressed format (page 80), which I believe is what you are concerned with. In the optional_ip_id_lsb encoding method, the compressed ip_id has no bindings in the "not_present" case. That is, the not_present format leaves the ip_id to be defined elsewhere - it does not define it as absent (i.e. zero bits compressed length), which is, I suspect, how you may have interpreted the FN.

The English name for the format I think has misled you here. Remember that the header is defined in multiple chains (section 6.2 on page 21). I haven't looked but I assume the "not_present" format name is referring to the fact that the ip_id is not present in this chain. The ip_id must be defined in a different chain in this case. If it was not defined anywhere then the spec would be in error.

Caveat I am not that familiar with RFC 4996 so I may have misunderstood, but this is how the FN looks to me.

I hope this helps

Regards

R <at> ffles

On 05/03/2012 09:59, RoHC Team wrote:
 Hello Carl,

 When using co_common compressed packet format, described page 80 of the RFC, ip_id is optionaly sent with the optional_ip_id_lsb{} method. Ok.

 But when the IP-ID behavior is random, the value is not present in the header :

     COMPRESSED not_present {
       ENFORCE((behavior == IP_ID_BEHAVIOR_RANDOM) ||
               (behavior == IP_ID_BEHAVIOR_ZERO));
     }

 So I don't understand how to send IP-ID random value ...

 Perhaps you think of the ipv4_innermost_irregular{} method, page 63, but I don't understand how to use this method and the compressed format co_common{} ...

 And I don't have any samples or reference captures file : only the RFC text!

 Thank you for your help and explanation.

 Best regards,

              FWX.

Le 05/03/2012 09:39, Carl Knutsson a écrit :
Hi,

Comment inline.

Cheers

/Calle

On 02/27/2012 05:02 PM, RoHC Team wrote:
  Hello everybody,

  We are coding the RFC4996 and we don't understand how to send the value
of the IPv4 IP-ID field, using the co_common compressed format, when the
IP-ID has a random behavior.

  With the co_common format, there are :
  ip_id_indicator
  ip_id_behavior
  and ip_id =:= optional_ip_id_lsb( ip_id_behavior.UVALUE,
                                    ip_id_indicator.CVALUE)

  with :

optional_ip_id_lsb(behavior, indicator)
  {
    UNCOMPRESSED {
      ip_id [ 16 ];
    }

    COMPRESSED short {
      ip_id =:= ip_id_lsb(behavior, 8, 3) [ 8 ];
      ENFORCE((behavior == IP_ID_BEHAVIOR_SEQUENTIAL) ||
              (behavior == IP_ID_BEHAVIOR_SEQUENTIAL_SWAPPED));
      ENFORCE(indicator == 0);
    }

    COMPRESSED long {
      ip_id =:= irregular(16)  [ 16 ];
      ENFORCE((behavior == IP_ID_BEHAVIOR_SEQUENTIAL) ||
              (behavior == IP_ID_BEHAVIOR_SEQUENTIAL_SWAPPED));
      ENFORCE(indicator == 1);
    }

    COMPRESSED not_present {
      ENFORCE((behavior == IP_ID_BEHAVIOR_RANDOM) ||
              (behavior == IP_ID_BEHAVIOR_ZERO));
    }
  }



  So, if ip_id_behavior is RANDOM, ip_id is not compressed (not present)
! And we can't send the value ...

  Why not ip_id =:= irregular(16)  [ 16 ]; when behavior is RANDOM ?


The FN is correct. IP-ID is sent in the irregular chain.



  There is a contradiction with the paragraph 8.1 page 44/45 saying :

    All of the compressed base headers transmit LSB-encoded MSN bits, the
    TCP Push flag, and a CRC, and in addition to this, all the base
    headers in the sequential packet format set contain LSB-encoded IP-ID
    bits.

   o  Common header format: The common header format can be used for all
       kinds of IP-ID behavior and should be useful when some of the more
       rarely changing fields in the IP or TCP header change.  Since this
       header format can update control fields that decide how the
       decompressor interprets packets, it carries a 7-bit CRC to reduce
       the probability of context corruption.  This header can basically
       convey changes to any of the dynamic fields in the IP and TCP
       headers, and it uses a large set of flags to provide information
       about which fields are present in the header format.


I can't find any contradiction. Please be more specific.



_______________________________________________
Rohc mailing list
Rohc <at> ietf.org
https://www.ietf.org/mailman/listinfo/rohc


--
Raffles (Robert Finking) m: 0789 463 9887 e: raffles <at> gluft.com w: gluft.com O O OOOOOO O O O OOOOOO OOOOO O O O O O OOOOO O OOOOOO O OOOOOO O O OOOOOO we care about software ----------------------------------------------------------------- Gluft Ltd. Registered No.: 6795336 VAT No.: 974 2755 83 The information contained in this e-mail and any attachments is proprietary to Gluft Ltd and must not be passed to any third party without permission. This communication is for information only and shall not create or change any contractual relationship. Please consider the environment before printing. Thank you. -----------------------------------------------------------------
_______________________________________________
Rohc mailing list
Rohc <at> ietf.org
https://www.ietf.org/mailman/listinfo/rohc
Kristofer Sandlund | 15 Mar 16:33 2012
Picon

FYI: Update to RFC4996 available

Hi,

for those who still read this list, we've made a draft for RFC4996bis,
which is being run as an AD-sponsored individual submission.
This will obsolete RFC4996 (ROHC-TCP).

The draft can be found here:
http://www.ietf.org/internet-drafts/draft-sandlund-rfc4996bis-00.txt

I don't expect to make any further revisions of this draft.
Read the new section 9 for a list of changes and motivations on why we
needed an update to this draft.

I recommend those that have implementations of RFC4996 to update
according to this draft.

BR,
  Kristofer

Gmane