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
- Active:
- No. Drivers cannot target bugs and blueprints to this milestone.
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
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
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_
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/
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_
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-
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/
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_
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).
Unfortuna
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 |
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,
- The second bug was hidden by the first one. The IR-DYN decoding returned bad
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_
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
initializ
and uncompressed_
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_
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_
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_
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/
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
documenta
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/
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.