mirror of
https://github.com/servalproject/serval-dna.git
synced 2024-12-22 06:27:51 +00:00
58 lines
2.7 KiB
Markdown
58 lines
2.7 KiB
Markdown
|
Mesh Datagram Protocol (MDP)
|
||
|
============================
|
||
|
[Serval Project], May 2014
|
||
|
|
||
|
The [Mesh Datagram Protocol][MDP] is a network protocol developed for the
|
||
|
[Serval mesh network][], with characteristics that make it particularly
|
||
|
suitable for use in Ad Hoc wireless networks, which can suffer high levels of
|
||
|
packet loss due to weak signal, interference and congestion.
|
||
|
|
||
|
MDP carries [datagram][] packets sent from an originating node to a single
|
||
|
destination node or broadcast to all nodes, guaranteeing only that packet
|
||
|
contents will be verbatim if delivered. MDP is similar to [UDP][] in terms of
|
||
|
the service it provides to applications, but unlike UDP it uses a per-hop
|
||
|
[retransmission][] protocol and adaptive link-state routing to boost packet
|
||
|
delivery rates, which largely immunises it from the cumulative packet loss
|
||
|
effect typical of wireless networks. This means that its end-to-end packet
|
||
|
delivery rate remains usefully high despite adverse network conditions.
|
||
|
|
||
|
**Copyright 2014 Serval Project Inc.** All rights reserved. Licensing terms
|
||
|
to be announced.
|
||
|
|
||
|
Overlay Mesh
|
||
|
------------
|
||
|
|
||
|
MDP packets are transmitted over a network link using the [Overlay Mesh][]
|
||
|
packet format, which aggregates packets into *overlay frames* which are
|
||
|
designed to minimise packet size. Each overlay frame uses back references to
|
||
|
avoid repeating [SID][] addresses unnecessarily within the frame, and [SID
|
||
|
abbreviation][] to significantly shorten [SID][] addresses that have been used
|
||
|
in prior frames.
|
||
|
|
||
|
MDP Interface
|
||
|
-------------
|
||
|
|
||
|
The [Serval DNA][] daemon provides an interface that allows client applications
|
||
|
to send and receive individual MDP packets on the [Serval mesh network][]
|
||
|
without having to construct and disassemble Overlay Mesh frames on their own.
|
||
|
|
||
|
MDP API
|
||
|
-------
|
||
|
|
||
|
The MDP API is a [C language][] [API][] that an application can use to send and
|
||
|
receive MDP packets over the [Serval mesh network][] using the
|
||
|
[interface](#mdp-interface) provided by the [Serval DNA][] daemon.
|
||
|
|
||
|
|
||
|
[Serval Project]: http://www.servalproject.org/
|
||
|
[Serval mesh network]: http://developer.servalproject.org/dokuwiki/doku.php?id=content:tech:mesh_network
|
||
|
[Serval DNA]: http://developer.servalproject.org/dokuwiki/doku.php?id=content:servaldna:
|
||
|
[MDP]: http://developer.servalproject.org/dokuwiki/doku.php?id=content:tech:mdp
|
||
|
[datagram]: http://en.wikipedia.org/wiki/Datagram
|
||
|
[UDP]: http://en.wikipedia.org/wiki/User_Datagram_Protocol
|
||
|
[Overlay Mesh]: ./Overlay-Mesh.md
|
||
|
[SID]: http://developer.servalproject.org/dokuwiki/doku.php?id=content:tech:sid
|
||
|
[SID abbreviation]: http://developer.servalproject.org/dokuwiki/doku.php?id=content:tech:sid_abbreviation
|
||
|
[C language]: http://en.wikipedia.org/wiki/C_(programming_language)
|
||
|
[API]:http://en.wikipedia.org/wiki/Application_programming_interface
|