ZSTP Sockets Library
Quick project facts:
- ZSTP stands for "ZIG's SCTP-like Transport Protocol". If you understand SCTP, you understand ZSTP.
- ZSTP is an experimental protocol which was built over UDP. ZSTP packets are payloads of UDP packets. You can call ZSTP an application-layer protocol instead of a transport protocol (we don't mind! :-).
- ZSTP is similar to SCTP, but our protocol is much simpler. We encourage you to take a look on SCTP and DCCP first, which are standard Internet protocols.
- Like SCTP, ZSTP splits logical point-to-point connections into several streams, allowing each stream to configure message ordering and delivery guarantees separately for each stream, among other properties.
- Unlike SCTP and DCCP, ZSTP does not feature any kind of congestion control. To save face with the Internet community, we recommend ZSTP only for applications that are quick to drop connections when congestion occurs such as real-time action games. Either that or the application should implement its own congestion control mechanism.
- Unlike SCTP and DCCP, ZSTP leaves flow control to the application. However, ZSTP provides some mechanisms to help the application do this. For instance, the application can determine the exact rate of UDP packet emission for each ZSTP connection. Also, the application can indirectly limit the size of each outgoing UDP packet through settable packet-size and stream-size caps.
- The ZSTP Sockets Library (zstplib) is a C++ library that allows developers to use ZSTP through an easy-to-use sockets-like interface.
- Calls to library functions are all non-blocking and the library is completely single-threaded, which favors more pleasant debugging sessions in exchange for a bit of overhead due to network polling.
- The library includes some very useful utilities that make your life easier such as buffers for packing and unpacking data, packet loss and latency emulation, packet compression and others. It also provides security features, such as message authentication, integrity and secrecy, which are based on both public-key and secret-key (symmetric) cryptography.
- The library is tested on Windows and Linux, but it can probably be ported to any system that provides a non-blocking API for UDP sockets.
- The library is free software licensed under the LGPL v3.0.
The ZSTP Sockets Library (zstplib) is both the reference implementation of the ZSTP and the protocol's design. That is, we are testing and refining the protocol together with the library that implements it, as a unit. Each release of the library may be incompatible with the previous versions. Currently, the library has priority over protocol stability.
The library and its documentation are currently in development and the first release is planned for March/2009.
You may want to (sorry, most items are work in progress!):
- Download the latest release (currently not available - awaiting first release).
- Go to the Project Wiki, which should contain tutorials and a library manual.
- Read the latest library reference documentation in HTML format generated by Doxygen (currently not available).
- Download the library reference documentation (currently not available).
- Go to the Sourceforge project page, where you can go to find a link to browse the SVN repository, to file issues on the project trackers, etc.
- Subscribe to the users mailing list (currently not available).
- For the sake of completeness, you can read about how this project got started here.
You can also contact the project admins directly: |
Fabio Cecin: |  |
Diego Midon: | |