rohc 1.0.0

First release of ROHC library:
        - IPv4/v6 profiles
        - UDP profile
        - UDP-Lite profile
        - RTP profile
        - some improvements (use of jamming, new RTP bit type)

Milestone information

Project:
rohc
Series:
1.0.x
Version:
1.0.0
Released:
 
Registrant:
TAS Viveris
Release registered:
Active:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata

Activities

Assigned to you:
No blueprints or bugs assigned to you.
Assignees:
No users assigned to blueprints and bugs.
Blueprints:
No blueprints are targeted to this milestone.
Bugs:
No bugs are targeted to this milestone.

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon rohc-1.0.0.tar.bz2 (md5, sig) ROHC library 1.0.0 118
last downloaded 6 weeks ago
Total downloads: 118

Release notes 

First release of ROHC library:
        - IPv4/v6 profiles
        - UDP profile
        - UDP-Lite profile
        - RTP profile
        - some improvements (use of jamming, new RTP bit type)

Changelog 

View the full changelog

   73 Emmanuelle Péchereau 2007-11-28 {rohc-1.0.0}
      - Change version to 1.0.0, first official release.
      - Add Emmnanuelle Pechereau to AUTHORS file.
      - Add a new rohc_version() function to get the library version.

   72 Emmanuelle Péchereau 2007-11-28
      Add some improvements to ROHC:
       - use encapsulation jamming (padding) to send bigger packets.
       - use an additional bit to distingush RTP UOR-2-TS and UOR-2-ID
         packets.

   71 Damien Pinet 2007-11-13
      fix a segmentation fault
      debug wants to read rtp_context in a case no rtp

   70 Didier Barvaux 2007-09-06
      Tunnel application:
       - unidirectionnal mode can now be forced
       - packet losses can be emulated according to 2 models: uniform and burst

   69 Didier Barvaux 2007-07-30
      Add the -Werror compilation option. This forces to not to have compilation
      warnings. The #warning preprocessor statement has been deleted accordingly.

   68 Didier Barvaux 2007-07-26
      This patch:
       - makes the frequently-called is_changed() function inline to speed up the
         packet processing
       - fixes some code indentation
       - moves an affectation in the changed_static_both_hdr() function inside the if
         statement to avoid useless affectation if the if statement is false

   67 Didier Barvaux 2007-07-06
      This patch:
       - adds David Moreau to the list of authors
       - changes 'Alcatel Alenia Space' to 'Thales Alenia Space'

   66 Didier Barvaux 2007-07-06
      This patch merges the RTP profile into the main branch of the ROHC library. The
      RTP profile was mainly developed by David Moreau from Thales Alenia Space. Code
      cleaning and some bug fixes was done by Didier Barvaux from B2i.

      The patch also adds some validation tests for the report tool (see test/report/
      directory and subdirectories) and some statistics tools (see statistics/
      directory).

   65 Didier Barvaux 2007-07-06
      This patch:
       - fixes a problem in choice of packet type (UOR-2 packet if IPv4, but needed
         IP-ID bits = 0)
       - adds a test counter during report processing
       - ensures logs are printed in the HTML report in case of failure

   64 Didier Barvaux 2007-05-16
      The SIGKILL signal cannot be catched nor masked. Thus, this is totally useless
      to try to catch or mask it.

   63 Didier Barvaux 2007-05-11
      This patch adds some scripts and file data to generates graphics of performance
      measures for the ROHC library.

   62 Didier Barvaux 2007-05-11
      A warning is printed if modes at compressor and at decompressor are different.
      This patch makes this warning print the two different modes to help debugging.

   61 Didier Barvaux 2007-05-11
      Avoid building feedback packets if no compressor is associated with
      decompressor. Avoid changing mode at decompressor (U-mode -> O-mode) if feedback
      is not available (a warning is printed if modes at compressor and at
      decompressor are different).

   60 Didier Barvaux 2007-05-11
      This patch adds:
       - A new error emulation model (burst). The command line usage is modified to be
         able to choose between the three error models (none, uniform and burst)
       - The discovery of lost packets is modified. The ROHC SN is not used anymore.
         The ROHC SN may be incorrectly decoded and causes wrong discovery of lost
         packets. Modifications on src/comp/rohc_comp.h, src/comp/c_generic.c and
         src/comp/c_generic.h files to be able to use ROHC SN from outside the library
         are reverted. The tunnel now sends its own sequence number with each ROHC
         packet it sends.
       - Packet reordering is now taken into account for lost packets computation.
         When packets N is received after packet N+1, lost packets counter is
         decreased by one.
       - Output of decompression statistics is modified. There are now 4 fields per
         record: tunnel sequence number, lost packets + decompression errors, lost
         packets, decompression errors.

   59 Didier Barvaux 2007-04-26
      With this patch, the tunnel application is able to emulate:
       - both unidirectional and bidirectional links
       - a lossy link (error rate is specified by the BER given by user)

      When unidirectional mode is choosen, the decompressor is not linked with the
      compressor. Thus, no feedback is transmitted. The ROHC compressor stays in
      U-mode.

      When a binary error hits a ROHC packet, the packet is fully dropped. The
      decompressor never receives it. This can cause error propagation in next
      packets.

      The statistics output is modified. The packet ID is not the number of packets
      received or sent, but the ROHC Sequence Number (SN). It helps drawing graphs
      with error propagation.

   58 Didier Barvaux 2007-04-12
      Flush feedback packets on a regular basis if there is no data to send on the UDP
      socket. This is useful when flows in the tunnel are highly asymmetrical (FTP for
      example).

   57 Didier Barvaux 2007-04-11
      Change the statistics output. Do not print all the decompression error counters,
      but only the total decompression error counter. Compression statistics are
      printed on file descriptor 3 and decompression statistics on file descriptor 4.

      Note: the tunnel messages are printed on stderr (fd 3) and ROHC library
      messages on stdout (fd 2).

   56 Didier Barvaux 2007-04-11
      This patch adds a new feedback related function. Feedback packets are currently
      sent only by piggybacking. This is a problem if there is very few traffic on the
      channel used for feedback. Feedback packets are queued and sent late to the
      compressor.

      This patch introduces a new functionality: feedback-only packets. Feedback-only
      packets are ROHC packets that do not contain any compressed data, but only
      concatened feedback packets. The decompressor forwards the feedback packets to
      the associated compressor and then discards the ROHC packet. Feedback-only
      packets are described in the ROHC RFC.

      The patch updates the library API. The rohc_feedback_flush() function allows
      applications to flush the feedback packets waiting in the queue. This function
      could be called on a regular basis by applications to send feedback even if
      there is no traffic.

   55 Didier Barvaux 2007-04-11
      In piggyback mode, the compressor current sends only one feedback packet per
      ROHC packet. The ROHC RFC allows several feedback packets to be concatenated in
      the header of the compressed packet. This patch modifies the rohc_compress()
      function so that it adds as much feedback packets as possible in the head the
      ROHC packet.

   54 Didier Barvaux 2007-04-11
      Check the output buffer size in the c_piggyback_get function.

   53 Didier Barvaux 2007-04-11
      Change the position of a debug message. The message was printed in case of
      compression failure, not in the normal case.

   52 Didier Barvaux 2007-04-11
      There is no point for the decompressor to update the statistics of the
      associated compressor.

   51 Didier Barvaux 2007-04-11
      Add some traces for feedback debug. Change the trace level of the unknown
      feedback type to the error level.

   50 Didier Barvaux 2007-04-11
      Prefer 'ir_count' against 'g_context->ir_count'. It simplifies the code.

   49 Didier Barvaux 2007-04-10
      Do not print the length of decompressed packet if the decompression fails.
      Update the doxygen comments with the different possible error codes.

   48 Didier Barvaux 2007-04-10
      Add debug traces in the tunnel application optional.
      Do not stop the tunnel application when compression/decompression fails.

   47 Didier Barvaux 2007-04-10
      This patch makes the tunnel application output some statistics on file
      descriptor 3. The statistics could be later parsed to print graphics.

   46 Didier Barvaux 2007-04-10
      Declare the CRC tables as extern.

   45 Didier Barvaux 2007-04-10
      Add some traces to debug periodic transitions to lower states.

   44 Didier Barvaux 2007-04-10
      This patch simplifies the decide_SO_packet function. The logic to decide the
      packet to send while in SO state does not change.

   43 Didier Barvaux 2007-03-20
      This patch improves the Stream Classifier.

      If one or more IPv4 + IPv4 packet has already been classified (and a context
      created for the stream), one IPv4-only packet may currently be classified in
      the same stream (and the same context will be used for the compression). If the
      IPv4 packet is received before the IPv4 + IPv4 packets, the problem does not
      occur. The problem also occurs with IPv4 and IPv4 + IPv6 packets, with IPv6 and
      IPv6 + IPv4 packets or with IPv6 and IPv6 + IPv6 packets.

      The ROHC compression scheme is more efficient if packets with double IP headers
      and packets with single IP headers are seperated in two different streams. The
      patch fixes this classification problem.

   42 Didier Barvaux 2007-03-14
      This patch suppresses the connection_type variable and the
      set_connection_type() function that are totally useless.

   41 Didier Barvaux 2007-03-12
      This patch fixes a bug in the IP-only profile.

      When the compressor compresses IP packets carrying different transport protocols
      (ICMP and TCP for example), the STATIC Protocol field changes and thus needs to
      be sent to the decompressor (so that it can update its decompression context).

      The STATIC Protocol field cannot be sent in an IR-DYN packet (no static fields).
      Unfortunately, the compressor prefers sending an IR-DYN packet rather than an
      UOR-2 packet (with static fields).

      The patch changes the algorithm that selects the packet to send: when STATIC
      fields are modified, an UOR-2 packet is sent rather than an IR-DYN packet.

      The patch also adds a new test in the report. It tests the compressor with mixed
      IPv4/ICMP and IPv4/TCP packets.

   40 Didier Barvaux 2007-03-12
      Tell the app/ and app/tunnel/ directories to ignore some automatically built
      files such as Makefile.in or Makefile.

      Correct a minor typo mistake in the tunnel usage.

   39 Didier Barvaux 2007-03-12
      Initial import of a new application that creates ROHC over UDP tunnels. This
      application can help in debugging the ROHC library.

      Description:

      The program creates a ROHC tunnel over UDP. A ROHC tunnel compresses the IP
      packets it receives from a virtual network interface and decompresses the
      ROHC packets it receives from one UDP flow.

                     +-----------+ +----------+
       IP packets | Virtual | +--------------+ | |
       sent by --> | interface | --> | Compressor | --> | ROHC |
       the host | (TUN) | +--------------+ | packets |
                     | | | over |
       IP packets | | +--------------+ | UDP flow |
       received <-- | | <-- | Decompressor | <-- | |
       from the | | +--------------+ | |
       tunnel +-----------+ +----------+

      The program outputs messages from the tunnel application on stderr and
      messages from the ROHC library on stdout.

      Usage:

      rohctunnel NAME remote RADDR local LADDR port PORT

      NAME the name of the tunnel
      RADDR the IP address of the remote host
      LADDR the IP address of the local host
      PORT the UDP port to use (local and remote)

      Example:

      Type as root on machine A:

       # rohctunnel rohc0 remote 192.168.0.20 local 192.168.0.21 port 5000
       # ip link set rohc0 up
       # ip -4 addr add 10.0.0.1/24 dev rohc0
       # ip -6 addr add 2001:eeee::1/64 dev rohc0

      Type as root on machine B:

       # rohctunnel rohc0 remote 192.168.0.20 local 192.168.0.21 port 5000
       # ip link set rohc0 up
       # ip -4 addr add 10.0.0.1/24 dev rohc0
       # ip -6 addr add 2001:eeee::1/64 dev rohc0

      Then:

       $ ping 10.0.0.1
       $ ping6 2001:eeee::1

   38 Didier Barvaux 2007-03-09
      This patch fixes a bug in the test application. The problem comes from the
      padding in the Ethernet frame.

      Padding can be added at the end of the payload of an Ethernet frame if the
      payload is too short, so that the Ethernet frame is at least 60-byte long.

      Example: a 44-byte IPv4 packet packed in an Ethernet frame (header = 14 bytes)
      makes a 58-byte frame, leading in the insertion of 2 bytes of padding.

      Now, the test application reads the IP total length in order to draw aside the
      padding bytes.

   37 Didier Barvaux 2007-03-09
      This patch adds debug traces in the IP module. This changes makes debugging
      easier.

   36 Didier Barvaux 2007-03-09
      This patch fixes a bug introduced by the bugfix committed in revision 374. The
      profile API changed and the Uncompressed profile not correctly updated. The
      report script reported the regression. The problem only affects the Uncompressed
      profile.

   35 Didier Barvaux 2007-03-08
      This patch fixes a bug on the statistics.

      At the end of one packet decompression, the library stores the length of the
      compressed ROHC header and the length of the decompressed IP header for
      statistical purposes. The length of the ROHC header was incorrectly computed.
      The first bytes (add-CID, large CID, Profile ID, CRC fields for example) were
      not taken in account.

      The patch fixes the computation of the ROHC header length. The prototype of the
      decode_ir() function changed in order to know the length of the large CID field
      and whether the add-CID field is present.

   34 Didier Barvaux 2007-03-08
      This patch fixes bugs with the length of the decompressed IP packets:
       - The test program does not fully compare the decompressed IP packets with
         original ones if they have different lengths. Only the min(original length,
         decompressed length) bytes are tested. The patch fixes this bug.
       - The second bug was hidden by the first one. The IR-DYN decoding returned bad
         uncompressed IP lengths. The patch fixes this bug.

   33 Didier Barvaux 2007-03-06
      Update the changelog. Uncompressed profile now working.

   32 Didier Barvaux 2007-03-06
      Add a new test in the report. The test is focused on the Uncompressed profile.
      Source packets are fragmented IP packets (with an UDP payload) that cannot be
      compressed by IP-only, UDP nor UDP-Lite profiles (because of the fragmentation).

   31 Didier Barvaux 2007-03-06
      This patch slightly changes the behaviour of the context check functions of the
      IP-only, UDP and UDP-Lite profiles.

      The context check functions check whether an IP packet belongs to a given
      context or not. They currently return code 0 (= bad context) for two distinct
      cases:
       - the IP packet does not match the context (different IP version or IP
         addresses for example)
       - the packet can not be compressed by the profile at all (IP version different
         from 4 or 6, fragmented IP packet for example).

      Bad context is ok for case 1, but not for case 2. The 2nd case must cause a
      profile change, ie. the compressor must stop finding a context in the current
      profile and must switch to another profile (IP-only or Uncompressed profile).

      The patch fixes the problem by returning code -1 (= error code) in the 2nd case.

   30 Didier Barvaux 2007-03-06
      This patch adds a length check in the uncompressed_decode() function. It also
      adds an error message if the Uncompressed profile receives a Normal packet in
      No Context state.

   29 Didier Barvaux 2007-03-06
      This patch fixes the calculation of the IR and IR-DYN lengths by the
      Uncompressed profile.

      The previous algorithm was absolutely wrong and probably came from another
      profile. In the Uncompressed profile, the IR packet is always 3-byte length and
      the IR-DYN packet is not defined at all.

   28 Didier Barvaux 2007-03-06
      This patch fixes the CRC calculation of the IR packet in the Uncompressed
      profile. The CRC field must be zeroed before the CRC calculation.

      The patch also adds some traces to help debugging and removes the useless
      initialization of the "counter" variable in the uncompressed_code_IR_packet()
      and uncompressed_code_normal_packet() functions.

   27 Didier Barvaux 2007-03-06
      Add some debug info.

   26 Didier Barvaux 2007-03-05
      Update the changelog. IPv6 is now supported.

   25 Didier Barvaux 2007-03-05
      Add several new tests in the report. They are mainly focused on testing IPv6.

      Test the IP-only profile with:
       - IPv4/IPv6/ICMP packets
       - IPv6/ICMP packets
       - IPv6/IPv6/ICMP packets (with different flow labels)

      Test the UDP profile with:
       - IPv4/IPv6/UDP packets
       - IPv6/UDP packets
       - IPv6/IPv6/UDP packets

      Test the UDP-Lite profile with:
       - IPv4/IPv6/UDP-Lite packets
       - IPv6/UDP-Lite packets (with different checksum coverage values)
       - IPv6/IPv6/UDP-Lite packets

   24 Didier Barvaux 2007-03-05
      Add to the test program the support for a new PCAP link layer. Now, it is able
      to read and write PCAP files using Linux Cooked Sockets headers.

   23 Didier Barvaux 2007-03-05
      This patch fixes a CFP-related bug in the UDP-Lite decompression.

      Context:

      The dynamic part of the UDP-Lite header may contain the Checksum Coverage field
      if necessary. It depends on the type of packet (the CC field is mandatory for
      IR and IR-DYN packets) and on the CC value (the CC field is mandatory if the
      value is different from the UDP-Lite packet length).

      The decompressor knows if the CC field is present with the CFP flag. This flag
      is part of the decompression context and is initialized upon reception of IR or
      IR-DYN packets (the CC field is always present in IR and IR-DYN packets). If the
      CC value of an IR/IR-DYN packet is different from the UDP-Lite packet length,
      CFP = 1, otherwise CFP = 0.

      In order to initialize the CFP field, the udp_lite_decode_dynamic_udp() function
      must compute the length of UDP-Lite packet. This computation needs to know the
      type of packet (IR, IR-DYN, UO...).

      Problem:

      The d_generic_decode_ir() function does not set the packet_type context variable
      to PACKET_IR. The patch fixes this problem. There is no problem with the other
      types of packets.

   22 Didier Barvaux 2007-03-05
      This patch suppresses some useless TODO comments.

   21 Didier Barvaux 2007-03-05
      Correct a small error in a comment: the number of bits assigned to the SN in an
      UO2 packet is 5, not 4.

   20 Didier Barvaux 2007-03-05
      Add the IPv6 support to the decompression library. This patch intensely uses
      the previously added IP module.

   19 Didier Barvaux 2007-03-05
      Add the IPv6 support to the compression library. This patch intensely uses
      the previously added IP module.

   18 Didier Barvaux 2007-03-05
      Add a new IP module that handles both IPv4 and IPv6 packets. Replace the
      old GET_DF macro by the new IPV4_GET_DF macro defined in the IP module.

   17 Didier Barvaux 2007-03-05
      The return type of the get_milliseconds() and get_microseconds() functions
      changed to unsigned int. Some changes were forgotten.

   16 Didier Barvaux 2007-03-05
      Move the definition of IPPROTO_UDPLITE in the common library. The constant
      will thus be available for both compression and decompression libraries.

   15 Didier Barvaux 2007-03-05
      Change the return type of the get_milliseconds() and get_microseconds()
      functions to unsigned int to avoid integer overflow.

   14 Didier Barvaux 2007-03-05
      Change the return type of the get_milliseconds() and get_microseconds()
      functions to unsigned int to avoid integer overflow.

   13 Didier Barvaux 2007-03-05
      Add more info in the debug traces: source file, line in the source file and
      function name.

   12 Didier Barvaux 2007-03-05
      The GET_DUAL_0_4_AND_7 and GET_DUAL_0_2_AND_ALL macros are not used anymore,
      they can be safely removed.

   11 Didier Barvaux 2007-03-05
      Simply change the test organisation to prepare for the arrival of the IPv6
      tests. No new functionnality is added with this patch.

   10 Didier Barvaux 2007-03-02
      This patch fixes a bug in the test/report process.

      Each test is divided into several steps:
       1. startup/initialization
       2. compression
       3. comparison of ROHC packets
       4. decompression
       5. comparision of uncompressed packets
       6. shutdown/cleaning

      The test program reports problems occuring during steps 2-5, but not those
      occuring during steps 1 and 6. The shutdown step can not fail (memory cleaning
      only), but the startup step may eventually fail (missing PCAP file for example).
      If the startup fails, all the following steps are ignored and the report script
      prints a PASS status for them. This is obviously wrong and can lead to bad
      reports.

      The patch alters the XML ouput of the test program: the startup step now outputs
      its status. The report script prints this status on the HTML page and changes
      the status of the other steps to FAIL when the startup step fails.

    9 Didier Barvaux 2007-03-02
      This patch makes the HTML report look better:
       - The FAIL status are now always in red even if the FAIL status is a link.
       - The font in the result table becomes smaller to display more table lines.
       - The first column of the result table becomes larger to display the test name
         on one single line. More table lines may be displayed on the screen. This
         allows seeing the whole result table without scrolling.

    8 Didier Barvaux 2007-03-02
      When one step fails during a test (the decompression process for example), the
      reason often comes from the previous step (the compression process if an error
      occurs during the decompression process). However, if the previous step was
      successful, no debug information about the previous step is shown in the HTML
      report. It makes debugging more difficult.

      This patch makes the test program print the debug information on the previous
      step if one step fails. The patch also adds a special CSS style for this debug
      information, so it looks different on the HTML report.

    7 Didier Barvaux 2007-03-02
      Add support for the PCAP link layer type 'raw' in the test program. This is
      useful for packet captures over virtual network interfaces like IPv4-in-IPv4
      or IPv6-in-IPv4 tunnels. The link layer types supported by the test program
      are now Ethernet (DLT_EN10MB) and raw (DLT_RAW).

    6 Didier Barvaux 2007-02-19
      When the comparison of the ROHC packets failed, the reason often comes from the
      compression process. However, if the compression process was successful, no
      debug information about the compression process is shown in the HTML report. It
      makes debugging more difficult.

      This patch makes the test program print the debug information on the compression
      process if the comparison of the ROHC packets fails.

    5 Didier Barvaux 2007-02-19
      Correct a problem in the HTML report. The link to the debug info about the
      comparison of the ROHC packets was incorrect. The link pointed to the comparison
      of the IP packets.

    4 Didier Barvaux 2007-02-13
      Update the INSTALL instructions (how to generate the doxygen documentation)
      and add a doxygen comment that will appear on the main page of the doxygen
      documentation.

    3 Didier Barvaux 2007-01-12
      The content of the .deps and .libs is generated at compilation time, there is
      no need to save them in SVN.

    2 Didier Barvaux 2007-01-12
      The Makefile is generated, there is no need to save it in SVN.

    1 Didier Barvaux 2007-01-12
      Initial import of the ROHC compression/decompression library.

0 blueprints and 0 bugs targeted

There are no feature specifications or bug tasks targeted to this milestone. The project's maintainer, driver, or bug supervisor can target specifications and bug tasks to this milestone to track the things that are expected to be completed for the release.

This milestone contains Public information
Everyone can see this information.