User Tools

Site Tools


library-todo

TODO list

This document tries to list all the missing features of the ROHC library. See also the list of tasks for more details about the most important parts of the TODO list.

If you have questions about one of the items listed below and/or interested by implementing one of them, contact us on the mailing list or IRC.

Library

ROHC features

Base framework:

  • R-mode (only U-mode and O-mode are implemented yet) RFC
  • IR packet without dynamic chain for RTP profile (scheduled for 2.4.0)
  • add actions upon CRC failures for non-TCP profiles RFC RFC (versions >= 1.7.0)
  • add actions upon CRC failures for TCP profile (scheduled for 2.4.0)
  • Extensions:
    • Add extension support for UO-1-ID packet bug (versions >= 1.7.0)
    • extension 2 support for UOR-2-TS bug (versions >= 1.5.0)
  • feedback
    • rate limitation conform to RFC bug (versions >= 2.1.0)
    • Option 'SN-Not-Valid' not supported (versions >= 2.0.0)
    • reducing IR frequency in U-Mode when receiving ACK(U) feedbacks is not supported RFC (scheduled for 2.4.0)
    • going back to U-mode with ACK(U)/NACK(U) RFC
    • Uncompressed profile shall use only ACK and FEEDBACK-1 bug (versions >= 2.0.0)
  • Compressed IPv6 Header Extension List in UOR-2 with extension 3
  • Compressed IPv4 Header Extension List RFC RFC
  • Reverse decompression RFC
  • ROHC padding at compressor (supported only at decompressor currently) RFC (versions >= 2.1.0)
  • ROHC segmentation RFC (versions >= 1.6.0)
  • Context Replication RFC (versions >= 2.1.0)
    • Context Replication for TCP profile (IR-CR packet) RFC1 RFC2 (versions >= 2.1.0)
    • Keep the SO state of base context for replicated context (scheduled for 2.4.0)
  • parameters at compressor RFC:
    • CONTEXT_REINITIALIZATION (implemented by rohc_comp_force_contexts_reinit() in versions >= 1.6.0)
    • NO_OF_PACKET_SIZES_ALLOWED (rohc_comp_pad() available in versions >= 2.1.0)
    • NO_OF_PACKET_SIZES_USED (rohc_comp_pad() available in versions >= 2.1.0)
    • PACKET_SIZES_ALLOWED (rohc_comp_pad() available in versions >= 2.1.0)
    • PACKET_SIZES_USED (rohc_comp_pad() available in versions >= 2.1.0)
    • PAYLOAD_SIZES (rohc_comp_pad() available in versions >= 2.1.0)
  • parameters at decompressor RFC:
    • CLOCK_RESOLUTION
    • REVERSE_DECOMPRESSION_DEPTH
  • Handling of resource limitations at the decompressor (REJECT option) RFC

Missing parts for IP-only profile:

  • Constant IP-ID (versions >= 1.6.0)
  • support more than 2 levels of IP headers blueprint
  • Cancel Mode Transition
  • CONTEXT_MEMORY Feedback Option

Missing parts for RTP profile:

  • Handle TS wraprounds bug (versions >= 1.5.0)
  • Compressed CSRC List RFC
  • Timer-based compression of RTP Timestamp RFC RFC

Missing parts for IP / UDP-Lite (0x0008) profile:

  • Constant IP-ID (versions >= 1.6.0)
  • Cancel Mode Transition
  • CONTEXT_MEMORY Feedback Option

New profiles / support for new headers:

  • ROHCv1:
    • IP / UDP-Lite / RTP (0x0007) RFC
    • Link-Layer Assisted Profile for IP / UDP / RTP (0x0005) RFC RFC
    • ESP profile (versions >= 1.5.0)
    • IP / TCP profile (bug (versions >= 1.7.0)
    • Stable, mature IP / TCP profile (versions >= 2.0.0)
  • ROHCv2:
    • ROHCv2 IP-only profile RFC bug (versions >= 2.2.0)
    • ROHCv2 IP/UDP profile RFC bug (versions >= 2.2.0)
    • ROHCv2 IP/ESP profile RFC bug (versions >= 2.2.0)
    • ROHCv2 IP/UDP/RTP profile RFC bug (partial for 2.3.0, full for 2.4.0)
    • ROHCv2 IP/UDP-Lite profile RFC bug
    • ROHCv2 IP/UDP-Lite/RTP profile RFC bug
  • ROHCv1 and ROHCv2:
    • support for ESP header in IP-based profile
    • support for GRE header in IP-based profile (maybe for 2.4.0)
    • support for AH header in IP-based profile (maybe for 2.4.0)
    • support for MINE header in IP-based profile (maybe for 2.4.0)

Optimizations:

  • rework the algorithm that decides what packet type to code bug

Performances

Trace bottlenecks with callgrind/kcachegrind bug, then select the better optimizations among: (scheduled for 2.3.0)

  • inlines functions whenever possible
  • check if inline functions are inlined by the compiler with -Winline
  • try to use the C99 restrict qualifier on pointers Restrict
  • try to use partial IP checksums instead of full checksums
  • avoid memory allocation at runtime

Portability

Languages:

  • Python binding bug (versions >= 2.0.0)
  • Javascript binding bug
  • Rust binding

Systems:

  • FreeBSD bug (versions >= 1.5.0)
  • NetBSD bug
  • OpenBSD bug (versions >= 1.6.0)
  • Windows (through MinGW) support bug (versions >= 1.5.0)
  • Windows (through Cygwin) support + tutorial (versions >= 1.6.0)
  • module for Linux kernel blueprint (someone provided a patch on ML 1, to be tested/verified/committed) (versions >= 1.6.0)

Inter-operability / documentation

Infrastructure

Wiki

  • install a wiki engine
  • add content on wiki:
    • describe the ROHC compression schemes
    • describe the architecture of the library

Website

  • create a great website to better advertise the ROHC library
  • put changelogs on download page
  • publish performances results (live performances from sniffer?)
  • create a “success story” page
  • list all papers on ROHC
  • re-try to contact authors of forked project on SF.net

Packaging

  • create DEB packages work in progress by Simon for 2.0.x and 2.1.0
  • create RPM packages (versions >= 1.5.2 or >= 1.6.0)
  • update RPM packages for 1.7.x (not done on time)
  • update RPM packages (for 2.0.x and 2.1.0)
  • Gentoo ebuild:
    • rework Gentoo ebuild for 2.0.x and 2.1.0 releases
    • publish Gentoo ebuild on sunrise overlay
    • Update the 'install on Gentoo' FAQ/tutorial
  • Windows installer?

Miscellaneous

  • make (automated) snapshots of master

Advertising

  • journal / news on linuxfr.org
  • article for lwn.net?

Applications using the ROHC library

OpenVPN

Rework OpenVPN patch patch:

  • fix build failures
  • disable ROHC support by default in configure
  • compat with 1.3.x and 1.4.x versions
  • use trace callbacks with versions >= 1.6.0
  • multi-client support on server
  • update RPM spec file
  • update INSTALL file
  • submit patches upstream

IP/ROHC tunnel application

ROHC sniffer

An application that captures packets on a network interface, compresses them, then decompresses them. Its objective is to test the ROHC library on a network with specific streams wihout any risk (no traffic modified). The sniffer should prints some stats too. (versions >= 1.6.0)

Wireshark

dissector for wireshark (there is already some work done in Wireshark)

library-todo.txt · Last modified: 2018/04/23 11:03 by didier