User Tools

Site Tools


library-todo

======= TODO list ======= This document tries to list all the missing features of the ROHC library. See also the [[ideas-list|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 [[http://rohc-lib.org/#contact|mailing list or IRC]]. ====== Library ====== ===== ROHC features ===== Base framework: * R-mode (only U-mode and O-mode are implemented yet) [[http://tools.ietf.org/html/rfc3095#section-4.4.3|RFC]] * **IR packet without dynamic chain for RTP profile (scheduled for 2.4.0)** * <del>add actions upon CRC failures for non-TCP profiles [[http://tools.ietf.org/html/rfc3095#section-5.3.2.2.3|RFC]] [[http://tools.ietf.org/html/rfc3095#section-5.3.2.2.4|RFC]]</del> (versions >= 1.7.0) * **add actions upon CRC failures for TCP profile (scheduled for 2.4.0)** * <del>Extensions:</del> * <del>Add extension support for UO-1-ID packet [[https://bugs.launchpad.net/bugs/896842|bug]]</del> (versions >= 1.7.0) * <del>extension 2 support for UOR-2-TS [[https://bugs.launchpad.net/rohc/+bug/792801|bug]]</del> (versions >= 1.5.0) * feedback * <del>rate limitation conform to RFC [[https://bugs.launchpad.net/rohc/+bug/902465|bug]]</del> (versions >= 2.1.0) * <del>Option 'SN-Not-Valid' not supported</del> (versions >= 2.0.0) * **reducing IR frequency in U-Mode when receiving ACK(U) feedbacks is not supported [[http://tools.ietf.org/html/rfc3095#section-5.3.2.3|RFC]] (scheduled for 2.4.0)** * going back to U-mode with ACK(U)/NACK(U) [[http://tools.ietf.org/html/rfc3095#section-5.6.6|RFC]] * <del>Uncompressed profile shall use only ACK and FEEDBACK-1 [[https://bugs.launchpad.net/rohc/+bug/1263693|bug]]</del> (versions >= 2.0.0) * Compressed IPv6 Header Extension List in UOR-2 with extension 3 * Compressed IPv4 Header Extension List [[http://tools.ietf.org/html/rfc3095#section-5.8.4.1|RFC]] [[http://tools.ietf.org/html/rfc3095#section-5.8.5.1|RFC]] * Reverse decompression [[http://tools.ietf.org/html/rfc3095#section-6.1|RFC]] * <del>ROHC padding at compressor (supported only at decompressor currently) [[http://tools.ietf.org/html/rfc3095#section-5.2|RFC]]</del> (versions >= 2.1.0) * <del>ROHC segmentation [[http://tools.ietf.org/html/rfc3095#section-5.2.5|RFC]]</del> (versions >= 1.6.0) * <del>Context Replication [[http://tools.ietf.org/html/rfc4164|RFC]]</del> (versions >= 2.1.0) * <del>Context Replication for TCP profile (IR-CR packet) [[http://tools.ietf.org/html/rfc6846#section-5.2.3|RFC1]] [[http://tools.ietf.org/html/rfc6846#section-7.2|RFC2]]</del> (versions >= 2.1.0) * **Keep the SO state of base context for replicated context (scheduled for 2.4.0)** * <del>parameters at compressor [[http://tools.ietf.org/html/rfc3095#section-6.3.1|RFC]]:</del> * <del>CONTEXT_REINITIALIZATION</del> (implemented by rohc_comp_force_contexts_reinit() in versions >= 1.6.0) * <del>NO_OF_PACKET_SIZES_ALLOWED</del> (rohc_comp_pad() available in versions >= 2.1.0) * <del>NO_OF_PACKET_SIZES_USED</del> (rohc_comp_pad() available in versions >= 2.1.0) * <del> PACKET_SIZES_ALLOWED</del> (rohc_comp_pad() available in versions >= 2.1.0) * <del>PACKET_SIZES_USED</del> (rohc_comp_pad() available in versions >= 2.1.0) * <del>PAYLOAD_SIZES</del> (rohc_comp_pad() available in versions >= 2.1.0) * parameters at decompressor [[http://tools.ietf.org/html/rfc3095#section-6.3.2|RFC]]: * CLOCK_RESOLUTION * REVERSE_DECOMPRESSION_DEPTH * Handling of resource limitations at the decompressor (REJECT option) [[http://tools.ietf.org/html/rfc3095#section-6.4|RFC]] Missing parts for IP-only profile: * <del>Constant IP-ID</del> (versions >= 1.6.0) * support more than 2 levels of IP headers [[https://blueprints.launchpad.net/rohc/+spec/generic+tunneling|blueprint]] * Cancel Mode Transition * CONTEXT_MEMORY Feedback Option Missing parts for RTP profile: * <del>Handle TS wraprounds [[https://bugs.launchpad.net/bugs/1001611|bug]]</del> (versions >= 1.5.0) * Compressed CSRC List [[http://tools.ietf.org/html/rfc3095#section-5.8.5.2|RFC]] * Timer-based compression of RTP Timestamp [[http://tools.ietf.org/html/rfc3095#section-4.5.4|RFC]] [[http://tools.ietf.org/html/rfc3095#section-5.3.2.2.5|RFC]] Missing parts for IP / UDP-Lite (0x0008) profile: * <del>Constant IP-ID</del> (versions >= 1.6.0) * Cancel Mode Transition * CONTEXT_MEMORY Feedback Option New profiles / support for new headers: * ROHCv1: * IP / UDP-Lite / RTP (0x0007) [[http://tools.ietf.org/html/rfc4019|RFC]] * Link-Layer Assisted Profile for IP / UDP / RTP (0x0005) [[http://tools.ietf.org/html/rfc4362|RFC]] [[http://tools.ietf.org/html/rfc3408|RFC]] * <del>ESP profile</del> (versions >= 1.5.0) * <del>IP / TCP profile ([[https://bugs.launchpad.net/rohc/+bug/1069409|bug]]</del> (versions >= 1.7.0) * <del>Stable, mature IP / TCP profile</del> (versions >= 2.0.0) * ROHCv2: * <del>ROHCv2 IP-only profile [[http://tools.ietf.org/html/rfc5225|RFC]] [[https://bugs.launchpad.net/rohc/+bug/1094745|bug]]</del> (versions >= 2.2.0) * <del>ROHCv2 IP/UDP profile [[http://tools.ietf.org/html/rfc5225|RFC]] [[https://bugs.launchpad.net/rohc/+bug/1094745|bug]]</del> (versions >= 2.2.0) * <del>ROHCv2 IP/ESP profile [[http://tools.ietf.org/html/rfc5225|RFC]] [[https://bugs.launchpad.net/rohc/+bug/1094745|bug]]</del> (versions >= 2.2.0) * **ROHCv2 IP/UDP/RTP profile [[http://tools.ietf.org/html/rfc5225|RFC]] [[https://bugs.launchpad.net/rohc/+bug/1094745|bug]] (partial for 2.3.0, full for 2.4.0)** * ROHCv2 IP/UDP-Lite profile [[http://tools.ietf.org/html/rfc5225|RFC]] [[https://bugs.launchpad.net/rohc/+bug/1094745|bug]] * ROHCv2 IP/UDP-Lite/RTP profile [[http://tools.ietf.org/html/rfc5225|RFC]] [[https://bugs.launchpad.net/rohc/+bug/1094745|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 [[https://bugs.launchpad.net/bugs/995598|bug]] ===== Performances ===== Trace bottlenecks with callgrind/kcachegrind [[https://bugs.launchpad.net/bugs/408982|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 [[wp>Restrict]] * try to use partial IP checksums instead of full checksums * avoid memory allocation at runtime ===== Portability ===== Languages: * <del>Python binding [[https://bugs.launchpad.net/bugs/804542|bug]]</del> (versions >= 2.0.0) * <del>Javascript binding [[https://bugs.launchpad.net/bugs/1309967|bug]]</del> * Rust binding Systems: * <del>FreeBSD [[https://bugs.launchpad.net/bugs/799204|bug]]</del> (versions >= 1.5.0) * NetBSD [[https://bugs.launchpad.net/bugs/1051618|bug]] * <del>OpenBSD [[https://bugs.launchpad.net/bugs/1051619|bug]]</del> (versions >= 1.6.0) * <del>Windows (through MinGW) support [[https://bugs.launchpad.net/rohc/+bug/970770|bug]]</del> (versions >= 1.5.0) * <del>Windows (through Cygwin) support + tutorial</del> (versions >= 1.6.0) * <del>module for Linux kernel [[https://blueprints.launchpad.net/rohc/+spec/kernel+module|blueprint]] (someone provided a patch on ML [[https://lists.launchpad.net/rohc/msg00538.html|1]], to be tested/verified/committed)</del> (versions >= 1.6.0) ===== Inter-operability / documentation ===== * <del>Write man pages [[https://bugs.launchpad.net/bugs/809028|bug]]</del> (versions >= 1.7.0) * test library with other implementations (list to be completed): * [[http://rohc.sourceforge.net/|ROHC on SF.net]] (discontinued, the ROHC library was based on it, so no need to test with) * [[http://www.acticom.de/|Acticom]] ([[http://www.acticom.de/rohc.html|Acticom]]) * [[http://www.effnet.com/|Effnet]] ([[http://www.effnet.com/sites/effnet/pages/uk/products_rohc.asp|Effnet ROHC]] + [[http://www.effnet.com/sites/effnet/pages/uk/products_rohc_tcp.asp|Effnet ROHC-TCP]]) **(in progress, for 2.2.0 and later versions)** * [[http://www.roke.co.uk/|Roke]] ([[http://www.roke.co.uk/resources/datasheets/045-Link-Optimisation.pdf|datasheet]]) ====== Infrastructure ====== ===== Wiki ===== * <del>install a wiki engine</del> * add content on wiki: * describe the ROHC compression schemes * describe the architecture of the library ===== Website ===== * <del>create a great website to better advertise the ROHC library</del> * 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** * <del>create RPM packages</del> (versions >= 1.5.2 or >= 1.6.0) * <del>update RPM packages for 1.7.x</del> (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 [[http://www.barvaux.org/~didier/resources/openvpn-2.1-add_rohc_support_v2.patch|patch]]: * <del>fix build failures</del> * 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 ===== * <del>create a production-grade ROHC tunnel application (assigned: Alex)</del> * update for new API of ROHC library 1.7.0/2.0.0 * use seccomp sandboxing for the production-grade ROHC tunnel application (http://lwn.net/Articles/494252/ http://sourceforge.net/projects/libseccomp) * supervision with collectd ===== ROHC sniffer ====== <del>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.</del> (versions >= 1.6.0) ===== Wireshark ===== dissector for wireshark (there is already some work done in Wireshark)

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