ROHC
Robust Header Compression

The principal specification for ROHC is RFC 3095. The ROHC family of header compression protocols is intended for wireless links which have moderate to high error rates and/or packet loss rates. The prime application of ROHC will probably be to 3G wireless mobile telephony to facilitate the efficient integration of voice (and other real-time traffic) with data.

ROHC compresses only packet headers, not packet payloads. For example, the RTP compression protocol compresses the IP/UDP/RTP headers of voice and video RTP traffic typically from 40 bytes down to 4 bytes. The ROHC family also includes IP/UDP, IP/TCP and IP-only header compression. (The RoHC literature writes protocol layers in reverse order to the Internet community. This is because they write layers according to the order of packet headers. E.g. IP/UDP instead of UDP/IP.)

\"ROHC

Typical protocol stack for an ROHC bridge.
C = compressor. D = decompressor.

The word robust means that ROHC compression is not less robust than the corresponding uncompressed traffic. The word robust in ROHC does not mean that ROHC traffic is more robust than uncompressed traffic. The word robust distinguishes ROHC from other header compression protocols which are not robust for links with moderate to high error rates.

It should be noted, however, that smaller packets offer a smaller target for bit errors. So the packet loss rate for any compression method should be lower than for uncompressed packets. So if RoHC has only a very small probability of loss of sync between compressor/decompressor state machines, there should be a small reduction in overall packet loss rate between applications. This is a minor effect. The main purpose of RoHC is just to not increase the packet loss rate between applications.


RFCs related to ROHC and ROHC/PPP

RFC 768 UDP: User Datagram Protocol.
RFC 791 IP: Internet Protocol.
RFC 792 ICMP: Internet Control Message Protocol.
RFC 793 TCP: Transmission Control Protocol. There is no TCP profile in ROHC currently, but there will be one soon.
RFC 1144 Compressing TCP/IP headers for low-speed serial links. This Van Jacobson compression must co-exist with ROHC on PPP links. (Unfortunately this ASCII text file does not contain the diagrams, and I do not know where the PostScript version is.)
RFC 1305 NTP: Network Time Protocol Version 3. ROHC and RTP use NTP timestamps.
RFC 1332 IPCP: The PPP Internet Protocol Control Protocol.
RFC 1570 PPP LCP Extensions.
RFC 1661 PPP: The Point-to-Point Protocol.
RFC 1662 PPP in HDLC-like Framing. (This is used for PPP/serial.)
RFC 1700 Assigned Numbers. Obsoleted by RFC 3232; see instead IANA protocol number assignments.
RFC 1889 RTP: A Transport Protocol for Real-Time Applications.
RFC 1890 RTP Profile for Audio and Video Conferences with Minimal Control.
RFC 1979 PPP Deflate Protocol. (Compresses the whole PPP frame.)
RFC 1994 CHAP: PPP Challenge Handshake Authentication Protocol.
RFC 2394 IP Payload Compression Using DEFLATE. (Compresses the IP payload whereas RFC 1979 compresses an entire PPP frame.)
RFC 2460 IPv6: Internet Protocol, Version 6 (IPv6) Specification.
RFC 2472 IPv6/PPP: IP Version 6 over PPP.
RFC 2508 Compressing IP/UDP/RTP Headers. This is non-ROHC, an early non-robust header compression.
RFC 2686 The Multi-Class Extension to Multi-Link PPP.
RFC 3047 RTP Payload Format for ITU-T Recommendation G.722.1.
RFC 3095 ROHC: RObust Header Compression (ROHC): Framework and four profiles: RTP, UDP, ESP, and uncompressed. This is the main ROHC spec.
RFC 3096 Requirements for robust IP/UDP/RTP header compression. (ROHC requirements.)
RFC 3153 PPP Multiplexing.
RFC 3190 RTP Payload Format for 12-bit DAT Audio and 20- and 24-bit Linear Sampled Audio.
RFC 3241 ROHC/PPP: Robust Header Compression (ROHC) over PPP.
RFC 3242 RObust Header Compression (ROHC): A Link-Layer Assisted Profile for IP/UDP/RTP. (LLA profile for ROHC)
RFC 3243 RObust Header Compression (ROHC): Requirements and Assumptions for 0-byte IP/UDP/RTP Compression.
RFC 3320 SigComp protocol (Signalling Compression). This is often mentioned in the ROHC mailing list, but it's not obvious what it's got to do with ROHC.
RFC 3321 Signaling Compression (SigComp) - Extended Operations.
RFC 3322 Signaling Compression (SigComp) Requirements & Assumptions.
RFC 3408 Zero-byte Support for Bidirectional Reliable Mode (R-mode) in Extended Link-Layer Assisted RObust Header Compression (ROHC) Profile.
RFC 3409 Lower Layer Guidelines for Robust RTP/UDP/IP Header Compression.
RFC 3759 RObust Header Compression (ROHC): Terminology and Channel Mapping Examples.
RFC 3816 Definitions of Managed Objects for RObust Header Compression (ROHC).
RFC 3843 RObust Header Compression (ROHC): A Compression Profile for IP.


Internet drafts related to ROHC

Note: Since Internet Drafts expire after 6 months, some of these links may be out-of-date.
Internet-Drafts List of all current Internet drafts.
implementer's guide The RFC 3095 Implementer's Guide.
TCP/IP profile RObust Header Compression (ROHC):A Profile for TCP/IP (ROHC-TCP).
reordering support RObust Header Compression (ROHC): Support for Reordering and Constant IP-ID.
IP/TCP requirements Requirements for ROHC IP/TCP Header Compression.
TCP/IP field behaviour TCP/IP Field Behavior.
interoperability Interoperability of RFC 3095.
formal notation Formal Notation for Robust Header Compression (ROHC-FN).
SigComp imp guide Implementer's Guide for SigComp.
SigComp user guide SigComp Users' Guide.
context replication RObust Header Compression (ROHC):Context Replication for ROHC Profiles.
LLA imp guide ROHC LLA Implementer's Guide.
channels that can reorder RObust Header Compression (ROHC): ROHC over Channels that can Reorder Packets.
torture tests SigComp Torture Tests.
L2 assisted profile RObust Header Compression (ROHC): A Link-Layer Assisted Profile for IP/UDP/RTP.
improvements Improvements for the ROHC Profile Set Update.
avt-dsr-05 RTP Payload Format for ETSI ES 201 108 Distributed Speech Recognition Encoding.
rohc over 802 Robust Header Compression (ROHC) over 802 networks.
rohc in NEMO ROHC (Robust Header Compression) in NEMO network.


RFCs related to IP-in-IP and various extension headers

RFC 1241 A Scheme for an Internet Encapsulation Protocol: Version 1. (Experimental in 1991.)
RFC 1701 Generic Routing Encapsulation (GRE).
RFC 1702 GRE: Generic Routing Encapsulation over IPv4 networks.
RFC 1853 IP in IP Tunneling. (informational)
RFC 2003 IP Encapsulation within IP.
RFC 2004 Minimal Encapsulation within IP.
RFC 2401 IPsec: Security Architecture for the Internet Protocol.
RFC 2402 AH: IP Authentication Header.
RFC 2406 ESP: IP Encapsulating Security Payload (ESP).
RFC 2410 The NULL Encryption Algorithm and Its Use With IPsec.
RFC 2784 Generic Routing Encapsulation.
RFC 2890 Key and Sequence Number Extensions to GRE.


IPR issues  --  patents on ROHC

Note: I have heard that there are about 100 patents on RoHC. This is just a sample.
RFC 2026 The Internet Standards Process -- Revision 3. (See section 10 for info on IP rights claims procedures.)
IETF IPR notices IETF Page of Intellectual Property Rights Notices. Includes NTT DoCoMo's patent licensing statement on ROHC, Ericsson's patent statement pertaining to RFC 3095 (also Ericsson's Patent Claim pertaining to the I-D draft-jonsson-robust-hc), Nokia's statement on RFC 3095, and Matsushita Electronic's statement about IPR claimed in RFC3095.
WO0079763 Robust header compression in packet communications. The invention introduces in the header compressor a checksum that covers the uncompressed header. This checksum can be sent as the compressed header and used for verification of reconstructed header data at the decompressor. A patent on verifying decompression with a CRC.
US2002026620 Re-use of static checksum information in header compression/decompression applications. A patent on caching incremental CRC calculations. This invention actually makes the calculations slower because you have to rearrange the header fields to do the CRC in the right order, and less reliable because it introduces the possibility of the static CRC cache getting stale.
WO0167709 A technique for compressing a header field in a data packet. Timer-based compression.
CA2388006 Variable length encoding of compressed data.
US6542931 Using sparse feedback to increase bandwidth efficiency in high delay, low bandwidth environment. Patent on feedback referencing the SN field.
CN1355984T Requested patent on Estimation of time stamps in real-time packet communications.
US6535925 Packet header compression using division remainders. Patent on using low order bits for compression. This is like using 03 as an abbreviation for 2003 to save space.
WO03041424 Wireless communication arrangements with header compression. Melpignano Diego, Philips.
US6608841 System and method for achieving robust IP/UDP/RTP header compression in the presence of unreliable networks.
WO02080485 Robust and efficient compression of list of items. Nokia.

other locations related to ROHC

ROHC charter ROHC working group. See also ROHC mailing list info, the current ROHC mailing list archive at IETF, and the old ROHC mailing list (moved on about 2002-2-15 to a new location due to spam).
ROHC profiles IANA number assignments for ROHC profiles. (Not very up-to-date on 2003-9-10. The list is up-to-date for the formally accepted profile numbers, but does not include several numbers which are in the drafts already.)
PPP numbers IANA number assignments for PPP.
IETF drafts and RFCs A list of IETF RFC and draft documents at iptel.org related to IP telephony and SIP and such things.
ROHC TCP compression Some draft files relevant to ROHC TCP compression.
TZI ROHC web page Lists various contributions to ROHC standardisation.

publications about ROHC

Fitzek publications Frank Fitzek's publications (with others), including Video Quality Evaluation for Wireless Transmission with Robust Header Compression, Voice Quality Evaluation for Wireless Transmission with ROHC and Voice Quality Evaluation for Wireless Transmission with ROHC (extended version) (all PDF files).

ROHC software

ROHC at sourceforge See also the ROHC source download. Has GPL software licence for linux ROHC/PPP/ethernet implementation by Martin Juhlin. Implements UDP, UDP-Lite, IP-only and Uncompressed profiles.
EFFNET Company which sells ROHC software in ANSI C for mobile network infrastructure and handsets, and also other kinds of header compression intended for wireless and satellite.
acticom Company selling software for VoIP/ROHC/IP over mobile networks and PPP. Includes ROHC web page, feature list including ROHC/PPP (RFC 3241) and a PDF document about their ROHC product.
EPIC Siemens/Roke software for compression. Apparently applicable to ROHC IP compression protocol.
ROHC is a complex, convoluted family of protocols which looks like it was designed by martian spiders on acid.
But don't tell anyone I said that...

The first time I read the ROHC specification, I thought it was a dog's breakfast.
But as I studied it more carefully, I realised it was several dogs' breakfasts.

Go to RTP protocol links.
Go to SNMP links.
Go to internet audio/video software links.
Go to network traffic monitoring links.
Go to internet security links.
Go to UDP-based file transfer protocol links.
Go to IP protocol links.
Go to TCP protocol links.
Go to other telecommunications links.
Go to Alan Kennington's home page.