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 mailing list or IRC.

Base RFCs

RFC 3095 - ROHC: Framework and four profiles: RTP, UDP, ESP, and uncompressed
RFC 3096 - Requirements for robust IP/UDP/RTP header compression
RFC 3759 - ROHC: Terminology and Channel Mapping Examples
RFC 4815 - ROHC: Corrections and Clarifications to RFC 3095
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),
  • no padding support (decompressor support in releases >= 1.7.0, compressor support in releases 2.1.0),
  • no segmentation support (ROHC segments supported in releases >= 1.6.0),
  • no “Timer-based compression of RTP Timestamp” algorithm,
  • some feedback options are not handled:
    • Feedback option SN-NOT-VALID (support in releases >= 2.0.0),
    • Feedback option REJECT,
    • Feedback option CLOCK,
    • Feedback option JITTER,
    • Feedback option LOSS,
  • Logic for Negative ACKs bug (support in releases >= 2.0.0),
  • list compression is implemented but it is in bad shape (better support in releases >= 2.0.0),
  • no “Reverse decompression”,
  • no extension support for UO-1-ID packets (support in releases >= 1.7.0),
  • no ESP profile (ESP profile supported in releases >= 1.5.0),
  • repair upon CRC failure (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),
  • IR/FO periodic refreshes should not be used in O-Mode (support in releases >= 1.7.0),
  • no compression of CSRC list for RTP profiles,
  • CRC-STATIC shall be cached (CRC shall re-computed only on CRC-DYNAMIC fields),
  • compressor shall check that CRC-STATIC changes upon updated static context bug (planned for 2.4.0)
  • more efficient profile switching with IR-DYN packets (reset all infos at the moment),
  • no NO_OF_PACKET_SIZES_ALLOWED and the like parameters (rohc_comp_pad() in versions >= 2.1.0)

PPP

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

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

RFC 3843 - ROHC: A Compression Profile for IP

Library conforms to this RFC with the following exceptions:

  • no more than 2 IP headers,
  • no support for “Constant IP-ID” (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

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,
  • no support for “Constant IP-ID” (supported in releases >= 1.6.0),
  • no support for “Cancel Mode Transition”,
  • no support for “CONTEXT_MEMORY Feedback Option”.

Context replication

RFC 4164 - ROHC: Context Replication for ROHC Profiles

  • No support at all bug (versions >= 2.1.0).

Packet reordering

RFC 4224 - ROHC: ROHC over Channels That Can Reorder Packets

No support at all, no schedule for addition yet.

RFC 3242 - ROHC: A Link-Layer Assisted Profile for IP/UDP/RTP
RFC 3243 - ROHC: Requirements and Assumptions for 0-byte IP/UDP/RTP Compression
RFC 3409 - Lower Layer Guidelines for Robust RTP/UDP/IP Header Compression
RFC 3408 - Zero-byte Support for R-mode in Extended Link-Layer Assisted ROHC Profile
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

RFC 4163 - ROHC: Requirements on TCP/IP Header Compression
RFC 4996 - ROHC: A Profile for TCP/IP (ROHC-TCP) [obsolete RFC]
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:

  • Context replication bug (versions >= 2.1.0),
  • actions upon CRC failures (support planned for releases >= 2.4.0),
  • some feedback options are not handled:
    • Feedback option SN-NOT-VALID (support in releases >= 2.0.0),
    • Feedback option REJECT,
    • Feedback option CONTEXT_MEMORY.
  • TCP options list compression:
    • generic_stable_irregular / generic_full_irregular (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

RFC 5225 - ROHCv2: Profiles for RTP, UDP, IP, ESP and UDP-Lite

  • ROHCv2 IP-only profile (versions >= 2.2.0)
  • ROHCv2 IP/ESP profile (versions >= 2.2.0)
  • ROHCv2 IP/UDP profile (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

RFC 5856 - Integration of Robust Header Compression over IPsec Security Associations
RFC 5857 - IKEv2 Extensions to Support Robust Header Compression over IPsec
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 11:01 by didier