Comparison

Transport Layer Comparison Matrix

FeatureMXP0.5MXP0.6ENETKristalliSLUDPRaknetTCPSST
Connectivity+++++++
Optional guaranteed delivery++++++
Message assembly++++++
Message fragmentation++++++
Multiplexing++
Sequencing+++++
Channels+++++
Prioritization*++
Congestion avoidance*++++
Compression++
Encryption+
Separated transport layer++++++
Open source license+++?++
Open specification+++++
UDP support++++++
TCP support*+++
C++ Windows support+*+++++
C++ Linux support +*++++
C++ Solaris support ^*+??+
C++ Mac support +*++++
Native C# support +*+^
Native Java support +*?
Native Python support^*?
Binding Python support+?++
Browser JavaScript support?+
Mature and widely adopted implementation+++
'+' Supported, ' ' Not supported, '^' Developed, '*' Planned

Protocol Innovations

Kristalli

Three Step Connection Handshake

The extra last message explicitly allows the server to properly transition from a pending state into an ok state, without having to wait for a timeout to realize if there was a problem.

Message Prioritization

Prioritization comes into play when is more data to transfer than the channel bandwidth can handle. High priority messages get transferred first and low priority messages need to wait. The priority value manages the order of messages in a priority queue. The priority is a per-message attribute. If a message depends on another message, there is of course no sense in sending it with a higher priority than the previous one, since it would have to wait for a future message to appear to be processed.

Message Dependency Instead of Channels

Needs elaboration.

Raknet

Optional Guaranteed Delivery with Both ACK and NAK Schemes

Needs elaboration.

Protocol Notes

SLUDP

Connectivity

Partial. No connection establishment - only keepalive and disconnection

Raknet

Open Source License

OS-like for indie development, commercial for business use.

Open Specification

Documented on a high-level, can dig up details from sources. No official detailed spec available, and I doubt the company will welcome free implementations along their commercial one.

Native C# Support

Apparently being ported to a managed assembly, but not official.

Description of Features

Connectivity

Protocol forms logical connection between peers.

Optional Guaranteed Delivery

Protocol can mark packets not guaranteed so that if dropped they are not resend. Optional guaranteed delivery is something you can do only with UDP you need to be able to mark some of the messages unreliable so that those packets can be dropped by the network when they in flight. This is important for rapid resolving of congestion in the connection.

Message Assembly

Protocol can assemble multiple messages or message parts to single packet.

Message Fragmentation

Protocol can fragment long messages to suitable parts for transport.

Multiplexing

Protocol splits messages to small frames and multiplexes these to packets for fair delivery. In this approach packets are split to small frames having sizes up to for example one tenth of packet size.

Example:

With messages:

  • A - 512 bytes
  • B - 2048 bytes
  • C - 2048 bytes

If the packet size is 1024 then multiplexing feature would cause packets to be something like this:

  • Packet 1 - A (F1-256) B (F1-256) C (F1-256) A (F2-256)
  • Packet 2 - B (F2-256) C (F2-256) B (F3-256) C (F3-256)
  • Packet 3 - B (F3-256) C (F3-256)

Sequencing

Protocol can retain order of the guaranteed packets.

Channels

Protocol supports N-channel approach where channels have independent sequencing.

Prioritization

Protocol supports packet prioritization where low priority packets may be delayed or dropped.

Congestion Avoidance

Protocol has specified and built in congestion avoidance mechanism. It is not enough to leave it as a burden of the application level to manually limit the bandwidth according to metrics. This would require the library user to always implement their own congestion handling to avoid involuntarily jamming the network. Option for application level flow control is required for graceful congestion handling.

Compression

Protocol supports compression of transmitted data. Any kind of compression scheme is enough. For deeper analysis the protocol data bytes/control bytes ratio should be measured.

Encryption

Protocol supports encryption of the transmitted data.

Separated Transport Layer

The transport layer can be used independently of other related implementation like message serialization layer.

0 Attachments 0 Attachments
328 Views

CloudDeck Splash

bubble_cloud_demo_4_small.png

Bubble Bouncher Demo 1

Idealist Viewer 1

Bubble Bouncher Demo 2