-
Notifications
You must be signed in to change notification settings - Fork 6
Mockets Overview
This page will provide documentation about the Mockets transport protocol component of the Agile Computing Middleware.
Mockets is a communication Middleware specifically designed to address the challenges of Mobile Ad Hoc Network (MANET) scenarios, it provides the transport capability to applications and is a replacement for TCP and UDP sockets. The Mockets Middleware adopts the traditional Client/Server programming paradigm of sockets and provides a message-oriented communication API with advanced functionalities to manage endpoints mobility and monitor network conditions. All the messages exchanged by the Mockets communication protocol are encapsulated in UDP packets. Reliability and stream abstractions are provided by Mockets on top of the unreliable UDP packet delivery service. Communications between two unicast datagram Mockets are established by connecting an active Mocket to a passive one listening on a peer that, apart from the case of explicit endpoint migration commands issued at Middleware or application level, will not change during the entire communication. On server side, the communication is not established on the same port on which the server application listens for incoming connection, but on a new, system-assigned port. If a server Mocket receives more that one Connection Request Message (the equivalent of a SYN packet in TCP) from the same peer application, it assumes that SYN_ACK replies are not reaching the sender and it automatically increases the frequency of acknowledgements for that connection. The self-regulating acknowledgements mechanism allows Mockets to dynamically adapt to specific network conditions on a per-connection basis, increasing the chances of a success and avoiding unnecessary additional traffic for protocol negotiation.
The Mockets Middleware allows applications to exploit one or more delivery services on a per-message basis, by choosing orthogonally between Reliable/Unreliable and Sequenced/Unsequenced transmission. Mockets also provides other useful features for client applications, including the possibility to request statistics about the status of the connection, replacing unsent and outdated messages in the delivery queue, and migrating the connection endpoints. Mockets support secure end-to-end communications via Datagram Transport Layer Security (DTLS).