ComparisonTransport Layer Comparison Matrix
Protocol InnovationsKristalliThree Step Connection HandshakeThe 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 PrioritizationPrioritization 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 ChannelsNeeds elaboration. RaknetOptional Guaranteed Delivery with Both ACK and NAK SchemesNeeds elaboration. Protocol NotesSLUDPConnectivityPartial. No connection establishment - only keepalive and disconnection RaknetOpen Source LicenseOS-like for indie development, commercial for business use. Open SpecificationDocumented 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# SupportApparently being ported to a managed assembly, but not official. Description of FeaturesConnectivityProtocol forms logical connection between peers. Optional Guaranteed DeliveryProtocol 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 AssemblyProtocol can assemble multiple messages or message parts to single packet. Message FragmentationProtocol can fragment long messages to suitable parts for transport. MultiplexingProtocol 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:
If the packet size is 1024 then multiplexing feature would cause packets to be something like this:
SequencingProtocol can retain order of the guaranteed packets. ChannelsProtocol supports N-channel approach where channels have independent sequencing. PrioritizationProtocol supports packet prioritization where low priority packets may be delayed or dropped. Congestion AvoidanceProtocol 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. CompressionProtocol 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. EncryptionProtocol supports encryption of the transmitted data. Separated Transport LayerThe transport layer can be used independently of other related implementation like message serialization layer. 328 Views |