Title: SigComp:%20Signaling%20Compression
1SigComp Signaling Compression
- Andrea G. Forte
- Department of Computer Science
- Columbia University
2Why Compression?
- Text-based protocols (SIP, )
- Large messages (INVITE 1200 bytes)
- Internet Multimedia Subsystem (IMS)
- Low bit-rate links
- Delay
- GSM About 2 sec. one-way delay (SS7)
- IMS SIP Above 6 sec. (more?)
3Introduction
- Compression
- Can be in one direction only
- The compression algorithm can differ on each end
- Improves with the number of messages exchanged
(static dictionary) - SigComp messages
- Five most significant bits of a SigComp message
are set to 1 - Special prefix which does not occur in UTF-8
- Receive uncompressed messages and SigComp
messages on the same port - Compartment
- An application-specific grouping of messages that
relate to a peer endpoint RFC 3320 - The application determines when a compartment
should be created and or closed - Compartment ID Uniquely identifies a compartment
- State memory and compressor allocated on a
per-compartment basis
4Architecture
5Application Layer
- Provides
- Message to compress
- Compartment identifier
- IP address and port number of destination
- Receives
- Decompressed message
- What it does
- Keeps track of which compartment belongs to which
application session - It decides when to close a certain compartment
(i.e. BYE) - By providing compartment IDs implicitly marks
messages as legitimate and grants access to state
information
6Compressor Dispatcher
- Maintains a mapping between compartment IDs and
compressors - New compartment ID ? new compressor
- Compartment not needed ?close compressor
- Receives application message and compartment ID
- Selects appropriate compressor
- Receives compressed message and passes it to the
transport layer
7Compressor (1/2)
- Compresses messages
- Use of any compression algorithm
- End-point must be able to decompress
- Virtual machine for decompression
- SigComp message contains bytecode (decompression
algorithm) - It must ensure that the destination has enough
resource to correctly decompress the SigComp
message
8Compressor (2/2)
- LZ77, LZSS Algorithms
- Compression via text substitution
- Encountered before in the message?
9Decompressor Dispatcher
- Receives SigComp message from transport layer
- Invokes a new UDVM instance to decompress the
message - Initializes the UDVM memory with a previously
saved state whose ID is included in the header of
the SigComp message just received (this includes
the bytecode used for decompression) - Sends decompressed message to application
- Applications sends a compartment ID for that
message to the decompressor dispatcher - The compartment ID is then forwarded to the state
handler which saves state information, content of
UDVM memory and any eventual feedback item
10UDVM (1/3)
- Virtual machine optimized for running
decompression algorithms - Executes a program called bytecode on the virtual
machine - The header of a SigComp message contains UDVM
instructions (bytecode) to instruct the UDVM on
how to decompress the received message - Unsecure transport layer
- Separate UDVM instances are invoked on a
per-message basis - Damaged messages do not affect decompression of
subsequent messages - State of a previous UDVM instance can be restored
and used by a later UDVM instance for
decompression of subsequent messages
11UDVM (2/3)
- End of message
- Dispatcher provides compartment ID
- UDVM sends a state creation request containing
compartment ID to the state handler - State handler saves state information in the
state memory reserved for the corresponding
compartment - UDVM cycle (limit)
- CPU power required to execute a UDVM instruction
- Bytecode containing looping code
12UDVM (3/3)
- Decompression memory
- Typical sizes 4096, 8192, bytes
- Size is negotiable and can be advertised to the
other party (compressor) - Divided in two parts
- Store decompressed message
- Hold bytecode and a circular buffer used for state
13State Handler
- A new UDVM instance is invoked on a per-message
basis? Save information between messages - Messages can be compressed relative to
information in previous messages? Improved
compression ratio - State item (either) UDVM instances memory
snapshot, uncompressed message - State memory on a per-compartment basis
- Ensures that no compartment exceeds its allocated
state memory
14SigComp Message
header
- The format of the field remaining SigComp message
is an implementation decision and is done by the
compressor supplying the UDVM bytecode - RFC 3321 defines a new header in remaining
SigComp message in order to support extended
operations (no changes required to the protocol)
15Extended Operations
- Dynamic compression
- Compress current message relatively to previous
sent messages (feedback) - Shared compression
- Compress current message relatively to previous
sent and received messages - State maintained across application sessions
- Lifetime of a compartment longer than the
duration of an application session - User-specific dictionary
- A user-device combination produces the same
values for many of the fields contained in a
message ( To, Via, )
16Feedback Mechanism (1/2)
- Request/Response model
- Requested feedback item
- Returned feedback item
- Feedback items are always piggybacked on SigComp
messages - Feedback items are part of the overall state and
are associated to a compartment? Feedback item
needs a valid compartment ID to be saved as state
item - Returned feedback item has a size of 1-128 bytes
17Feedback Mechanism (2/2)
- Feedback can help in having one end-point
discover the capabilities of the other end-point - State items available
- State_memory_size
- Compressor must choose a compression algorithm so
that decompressor has all the resource needed for
decompression - Successful decompression needs to be acknowledged
for unreliable transport (UDP)
18Negative Acknowledgment (1/2)
- One end-node has an implicit corrupted
compartment (failure, loss of connectivity,
terminal restart, etc.) - SigComp RFC 3320 considers all states lost for
that end-point (WASTE!) - NACK allows the reporting of error information
(decompression failure) between two nodes - The NACK contains information regarding the
particular failure - The compressor can use the received information
to tweak the compression parameters and prevent
other failures
19Negative Acknowledgment (2/2)
- The compressor calculates a hash value of each
SigComp message - If decompression failure happens, the receiver
sends a NACK to the compressor - The NACK contains
- Hash of the message whose decompression failed
- Exact reason for the failure
- Additional details that might help in solving the
problem - If NACK received when using reliable transport,
SigComp must indicate the error to the
application - The application will respond to a normal
transport layer error
20Experiments (1/2)
21Experiments (2/2)
22Related Work (some)
- SigComp RFC 3320
- Basic mechanism
- Extended Operations RFC 3321
- Dynamic compression
- Shared compression
- User Specific Dictionary (USD)
- Requirements RFC 3322
- Requirements on SIP RFC 3486
23Thank you!
24(No Transcript)
25Template-based Compression Why compression?
- SIP
- Chosen as signaling protocol for IMS
- text-based protocol
- Average SIP INVITE as large as 1200 bytes
- IP Multimedia Subsystem (IMS)
- Low bit-rate links
- Long call set-up delay
- Not suitable for PoC
- Delay
- GSM 2 sec one-way delay (SS7)
- PoC 1 sec requirement
26Template-based Compression SigComp Pros and Cons
- Advantages
- Already standardized by IETF
- Mandatory in IMS rel 5 and above
- Implementations already available
- Open SigComp (Deflate)
- Disadvantages
- Complex and heavy
- LZ-based compression not good enough for PoC and
IMS - Overhead
- UDVM bytecode, feedback item, state identifier,
etc.
27Template-based Compression Our approach
- Templates
- Send only variable parameters of SIP messages
- Shared Dictionary (SD)
- Association between URIs and index in SD
- Headers affected From, To, Contact, etc.
- Association between codecs and indexes in SD
- Lines affected m lines, rtpmap lines, fmtp
lines, etc. - Other
- Header Stripping
- Some SIP headers and SDP lines are irrelevant to
the receiver (Via, Max-Forwards, Record Route,
etc.) - Compression
- Various compression techniques are used (integer
encoding, bit-mask encoding, etc.) - Packet Optimization
- The compressed packet is structured so to
minimize its size and the order of the compressed
values in the packet is fixed
28Template-based Compression Incoming INVITE
Contributions
New heuristic is added to the previous one Original Size Template Stripped Headers Various (bit-masks, string2int) SD Public IDs Packet Optimization
Size (Bytes) 1182 517 343 196 137 81
Savings (Bytes) - 665 174 147 59 56
Savings () - 56.26 14.72 12.43 5.0 4.73
29Template-based Compression Incoming INVITE
Compression
Original size SigComp only Template only Template SigComp Template SD Template SD SigComp
Full Flow (Bytes) 1182 592 149 115 81 87
Optimized Flow (Bytes) 1182 658 149 122 81 87
SigComp makes things worst !
30Template-based Compression Conclusions
- Why compression
- SIP rich text protocol
- Good for high bandwidth
- IMS and cellular
- low bandwidth
- Long call set-up delay
- SigComp
- Advantages
- Already RFC
- Mandatory in IMS release 5 and above
- Implementations already available (Open SigComp -
deflate) - Disadvantages
- Not good enough for PoC and IMS
- Complex and heavy
- Template based compression (TBC)
- Templates
- SD
- Performances
- Below 113 bytes for downlink direction