User Tools

Site Tools


library-compliance-rfcs

======== Compliance with RFCs ======== This document tries to summarize the conformance status of the ROHC library against various IETF RFCs. If you have questions about the features listed below and/or interested by improving the conformance status of the library, contact us on the [[http://rohc-lib.org/#contact|mailing list or IRC]]. ===== Base RFCs ===== [[http://tools.ietf.org/html/rfc3095|RFC 3095]] - ROHC: Framework and four profiles: RTP, UDP, ESP, and uncompressed\\ [[http://tools.ietf.org/html/rfc3096|RFC 3096]] - Requirements for robust IP/UDP/RTP header compression\\ [[http://tools.ietf.org/html/rfc3759|RFC 3759]] - ROHC: Terminology and Channel Mapping Examples\\ [[http://tools.ietf.org/html/rfc4815|RFC 4815]] - ROHC: Corrections and Clarifications to RFC 3095\\ [[http://tools.ietf.org/html/rfc4995|RFC 4995]] - The RObust Header Compression (ROHC) Framework Library conforms to these RFCs with the following exceptions: * no "Bidirectional Reliable" mode, * all mode transitions except the U- to O-mode transition, * **IR packet without dynamic chain for RTP profile (support planned for 2.3.0)**, * <del>no padding support</del> (decompressor support in releases >= 1.7.0, compressor support in releases 2.1.0), * <del>no segmentation support</del> (ROHC segments supported in releases >= 1.6.0), * no "Timer-based compression of RTP Timestamp" algorithm, * some feedback options are not handled: * <del>Feedback option SN-NOT-VALID</del> (support in releases >= 2.0.0), * Feedback option REJECT, * Feedback option CLOCK, * Feedback option JITTER, * Feedback option LOSS, * <del>Logic for Negative ACKs [[https://bugs.launchpad.net/bugs/902465|bug]]</del> (support in releases >= 2.0.0), * <del>list compression is implemented but it is in bad shape</del> (better support in releases >= 2.0.0), * no "Reverse decompression", * <del>no extension support for UO-1-ID packets</del> (support in releases >= 1.7.0), * <del>no ESP profile</del> (ESP profile supported in releases >= 1.5.0), * <del>repair upon CRC failure</del> (support in releases >= 1.7.0), * **reducing IR frequency in U-Mode when receiving ACK(U) feedbacks (§5.3.2.3) (support planned for 2.3.0)**, * <del>IR/FO periodic refreshes should not be used in O-Mode</del> (support in releases >= 1.7.0), * no compression of CSRC list for RTP profiles, * <del>CRC-STATIC shall be cached (CRC shall re-computed only on CRC-DYNAMIC fields),</del> * **compressor shall check that CRC-STATIC changes upon updated static context [[https://bugs.launchpad.net/rohc/+bug/1604436|bug]] (planned for 2.4.0)** * more efficient profile switching with IR-DYN packets (reset all infos at the moment), * <del>no NO_OF_PACKET_SIZES_ALLOWED and the like parameters</del> (rohc_comp_pad() in versions >= 2.1.0) ===== PPP ===== [[http://tools.ietf.org/html/rfc3241|RFC 3241]] - Robust Header Compression (ROHC) over PPP No support at all. Out of the library scope. Should be developped in pppd with the help of the ROHC library. ===== SNMP / MIB ===== [[http://tools.ietf.org/html/rfc3816|RFC 3816]] - Definitions of Managed Objects for RObust Header Compression (ROHC) SNMP support shall probably not be implemented in the library itself but in applications using the library. Whether the library provides the required informations in its public API remains to be checked. ===== IP-only compression profile ===== [[http://tools.ietf.org/html/rfc3843|RFC 3843]] - ROHC: A Compression Profile for IP Library conforms to this RFC with the following exceptions: * no more than 2 IP headers, * <del>no support for "Constant IP-ID"</del> (supported in releases >= 1.6.0), * no support for "Cancel Mode Transition", * no support for "CONTEXT_MEMORY Feedback Option". ===== IP/UDP-Lite and IP/UDP-Lite/RTP compression profiles ===== [[http://tools.ietf.org/html/rfc4019|RFC 4019]] - ROHC: Profiles for User Datagram Protocol (UDP) Lite Library conforms to this RFC with the following exceptions: * Profile IP/UDP-Lite supported, but not the IP/UDP-Lite/RTP one, * <del>no support for "Constant IP-ID"</del> (supported in releases >= 1.6.0), * no support for "Cancel Mode Transition", * no support for "CONTEXT_MEMORY Feedback Option". ===== Context replication ===== [[http://tools.ietf.org/html/rfc4164|RFC 4164]] - ROHC: Context Replication for ROHC Profiles * <del>No support at all [[https://bugs.launchpad.net/rohc/+bug/1458392|bug]]</del> (versions >= 2.1.0). ===== Packet reordering ===== [[http://tools.ietf.org/html/rfc4224|RFC 4224]] - ROHC: ROHC over Channels That Can Reorder Packets No support at all, no schedule for addition yet. ===== Use of link-layer for better compression ===== [[http://tools.ietf.org/html/rfc3242|RFC 3242]] - ROHC: A Link-Layer Assisted Profile for IP/UDP/RTP\\ [[http://tools.ietf.org/html/rfc3243|RFC 3243]] - ROHC: Requirements and Assumptions for 0-byte IP/UDP/RTP Compression\\ [[http://tools.ietf.org/html/rfc3409|RFC 3409]] - Lower Layer Guidelines for Robust RTP/UDP/IP Header Compression\\ [[http://tools.ietf.org/html/rfc3408|RFC 3408]] - Zero-byte Support for R-mode in Extended Link-Layer Assisted ROHC Profile\\ [[http://tools.ietf.org/html/rfc4362|RFC 4362]] - ROHC: A Link-Layer Assisted Profile for IP/UDP/RTP No support at all, no schedule for addition yet. ===== IP/TCP compression profile ===== [[http://tools.ietf.org/html/rfc4163|RFC 4163]] - ROHC: Requirements on TCP/IP Header Compression\\ [[http://tools.ietf.org/html/rfc4996|RFC 4996]] - ROHC: A Profile for TCP/IP (ROHC-TCP) **[obsolete RFC]**\\ [[http://tools.ietf.org/html/rfc6846|RFC 6846]] - ROHC: A Profile for TCP/IP (ROHC-TCP) Preliminary support in releases >= 1.7.0. Stable support in releases >= 2.0.0. Context Replication in releases >= 2.1.0. Library conforms to these RFCs with the following exceptions: * <del>Context replication [[https://bugs.launchpad.net/rohc/+bug/1458392|bug]]</del> (versions >= 2.1.0), * **actions upon CRC failures (support planned for releases >= 2.4.0),** * some feedback options are not handled: * <del>Feedback option SN-NOT-VALID</del> (support in releases >= 2.0.0), * Feedback option REJECT, * Feedback option CONTEXT_MEMORY. * <del>TCP options list compression:</del> * <del>generic_stable_irregular / generic_full_irregular</del> (supported in releases >= 2.0.0), * IPv6 extension headers: * null ESP * **AH (support planned for >= 2.4.0)** * **MINE (support planned for >= 2.4.0)** * **GRE (support planned for >= 2.4.0)** ===== ROHC version 2 ===== [[http://tools.ietf.org/html/rfc5225|RFC 5225]] - ROHCv2: Profiles for RTP, UDP, IP, ESP and UDP-Lite * <del>ROHCv2 IP-only profile</del> (versions >= 2.2.0) * <del>ROHCv2 IP/ESP profile</del> (versions >= 2.2.0) * <del>ROHCv2 IP/UDP profile</del> (versions >= 2.2.0) * **ROHCv2 IP/UDP/RTP profile (scheduled for 2.3.0 and 2.4.0)** * ROHCv2 IP/UDP-Lite profile * ROHCv2 IP/RTP profile ===== ROHC & IPsec ===== [[http://tools.ietf.org/html/rfc5856|RFC 5856]] - Integration of Robust Header Compression over IPsec Security Associations\\ [[http://tools.ietf.org/html/rfc5857|RFC 5857]] - IKEv2 Extensions to Support Robust Header Compression over IPsec\\ [[http://tools.ietf.org/html/rfc5858|RFC 5858]] - IPsec Extensions to Support Robust Header Compression over IPsec Out of library scope? ===== system performances ===== * create reference captures for benchmarks: * RTP: * one single long VoIP stream (1GB capture?), * 16 long VoIP streams (1GB capture?), * MAX_LARGE_CID long VoIP streams (1GB capture?), * 100 * MAX_LARGE_CID short VoIP streams (1GB capture?), * TCP: * 1 single long FTP or SSH stream (1GB capture?), * 16 long FTP or SSH stream (1GB capture?), * MAX_LARGE_CID long FTP or SSH streams (1GB capture?), * 100 * MAX_LARGE_CID short HTTP streams (1GB capture?), * UDP (non-RTP): * 1 single long UDP stream (1GB capture?), * 16 long UDP stream (1GB capture?), * MAX_LARGE_CID long UDP streams (1GB capture?), * 100 * MAX_LARGE_CID short UDP streams (1GB capture?), * IP-only: * 1 single long ICMP stream (1GB capture?), * 16 long ICMP stream (1GB capture?), * MAX_LARGE_CID long ICMP streams (1GB capture?), * 100 * MAX_LARGE_CID short ICMP streams (1GB capture?), * mixed: * 100 * MAX_LARGE_CID short RTP/FTP/HTTP/UDP/ICMP streams (1GB capture?), * zero-allocation (no memory allocations in traffic paths): * still memory allocations for context creation * still memory allocation in TCP/CO packet parsing at decompressor * still memory allocation for feedback building * zero-copy (no copy of large data chunks in traffic paths)

library-compliance-rfcs.txt · Last modified: 2018/04/23 09:01 by didier