|
||||||||||
|
Library FeaturesProtocol ConformanceThe Open SigComp stack has been developed to comply strictly with all relevant standards, including RFC 3320 and RFC 4077. For more information on the standards implemented by the Open SigComp stack, see our standards page The Open SigComp stack passes all the SigComp torture tests defined in the IETF document "draft-ietf-rohc-sigcomp-torture-tests". In fact, to protect against any regressions, these tests are run as part of the normal build system every time we compile the library. RobustnessBy implementing RFC 4077, the Open SigComp stack has the ability to recover from loss or corruption of state, both in the network and in mobile terminals. While SigComp libraries without RFC 4077 support perform adequately in controlled laboratory settings, they are not generally well suited for live deployments. In real-world networks, a variety of uncontrollable factors -- such as intermittent radio coverage, loss of battery power in mobile phones, and network server fail-overs -- can cause such libraries to irrecoverably lose state synchronization, resulting in service outages. FlexibilityThe stack can be compiled in two different configurations. One is optimized for speed; the other is optimized for size. The speed optimized version is suitable for use in high-load servers, such as Edge Proxies and 3GPP P-CSCFs. The size-optimized version is appropriate for constrained and embedded environments, such as mobile phones. When used in servers, the stack can be compiled with support for synchronization, allowing multiple threads to access the library simultaneously. This allows for multi-core or multi-CPU systems to scale their performance -- including the performance of their compression and decompression -- across multiple processors. Small FootprintBecause the needs of constrained environments were considered a high priority during its design and development, the Open SigComp stack is well suited for use in highly constrained environments. When compiled with size optimizations and used in a typical handset application, the stack takes as little as 43 kb of static (ROM) memory, 45 kb of heap (RAM) memory, and less than 800 bytes of stack memory. Extreme PortabilityOpen SigComp has been carefully developed to use only the most portable C and C++ constructs available. It uses no exceptions, RTTI, static initializers, or multiple inheritance. It can be compiled without the use of templates or the C++ Standard Template Library (STL). It depends on libc only for memmove() and memset(), both of which can be trivially replaced. Ease of useApplications need no understanding of the underlying compression being performed. For example, compressing a message to be sent is as simple as:
osc::SigcompMessage *sm;
sm = ss->compressMessage(buffer, bufferLen, id, idLength);
if (sm)
{
sendto(socket, sm->getDatagramMessage(),
sm->getDatagramLength(),
0, address, sizeof(address));
}
ExtensibilityThe Open SigComp library has been designed to make adding new compression modules straightforward. Applications can add new compression algorithms without having to modify the library itself; and the library can operate with more than one compression algorithm at a time. |
|||||||||
|
||||||||||