The UDP Convergence Layer connects DTN nodes via a UDP channel. A UDP channel is unreliable, but the the DTN protocols overcome this and attempt to achieve reliable delivery of bundles over the unreliable UDP channel.
A UDP datagram is limited in size to 65507 bytes. The UDP convergence layer adds a header of variable size (but almost always less than 1000 bytes) to every datagram. Because bundles are sent inside of a single UDP datagram, that means that bundles which exceed about 64000 bytes cannot be transmitted or received with the UDP convergence layer.
Because the underlying datalink protocol (often Ethernet) rarely supports the full size of the maximum UDP datagram, is will be broken into fragments and reassembled at the far end. This process, like the UDP protocol itself, has no provisions for retransmissions. As a result, over a sufficiently lossy link UDP datgrams large enough to trigger IP fragmentation may end up with a successful transmission rate of 0. As a result, the practical upper limit for the size of bundles sent via the UDP Convergence Layer is nearer to 2 to 3 times the Maximum Transmission Unit (MTU) of the underlying medium. For Ethernet, the MTU is 1500 bytes.
Each UDP link needs to be configured on both sides. On one side, it is configured as a passive listener (called an interface by dtnd), and on the other side as an active session initiator (called a link).
The interface add command creates the passive listener side of the session.
The link add command creates an object in the system that is capable of sending bundles outbound to other DTN nodes. Depending on the state of the link, as managed by the various options to the link command, it may or may not actually be in use to forward bundles at a given time.
These options can appear after the link add command, or after the interface add command.
Name | Type | Default | Comment |
---|---|---|---|
local_addr | IP address or a DNS hostname | 0.0.0.0 (interface), -1 (link) | In the case of an interface, this is the IP address that the server will listen on. In the case of a link, the default ensures that the operating system choses the appropriate source address for the connection before it is initiated. |
local_port | IP port number | 4556 (interface), 0 (link) | In the case of an interface, this is the UDP port that the server will listen on. In the case of a link, changing this setting from the default of 0 instructs the operating system to use the given port. In general, it is better to allow the OS to choose the source port itself. |
remote_addr | IP address or a DNS hostname | No default. | The IP address to which this link will send datagrams. |
remote_port | IP port number | No default. | The UDP port to which this link will send datagrams. |