DGHMux for Java
Current Status
The project is in pre-alpha stage. It works for simple cases, but there are several features
missing and numerous bugs.
Design Goals
- Multiplx several streams over one TCP connection.
- Allow priorities for each of the streams so that some transmit faster than others
- Easy to use in an application
- Built-in flow control. This prevents one stream blocking all the other streams.
The application thread sending the data will block until there is room in the remote buffer. This
prevents blocking when writing the data to the remote buffer.
Additional Benefits
- No latency for new streams. The local application can immediately send data,
before the remote application accepts the connection.
- 0.5% byte overhead when the network limits the speed
- Not restricted to TCP connections. Any byte, connection oriented, reliable transport
will work
- Individual TCP packets not required to setup the DGHMux connection. Many people are concerned
with the overhead in the IP and TCP layers to setup a multiplexed stream.
Since data can be sent right after the DGHMux connection is made, the DGHMux fragment for setting
up a stream can be in the same IP packet as the DGHMux data. Therefore, there are no
additional TCP packets necessary for a DGHMux stream.
Site Contents:
License
DGHMux is released under the LGPL.
This should allow anyone to use the software in their application, however if you want
to develop and release DGHMux, you must release under the terms of the LGPL.
As long as the DGHMux code itself remains free (as in freedom), I do not care!