[ENet-discuss] Retransmission mechanism of enet

Todd Huang huangtodd at hotmail.com
Thu Jul 26 05:00:43 PDT 2007


Hi, Lee:

    Thanks for your kindly answers.

>The initial timeout is RTT + 4*variance. Next timeout is double that.
>Next is double again. Repeat ad nauseum until a limit. If limit reached,
>assume disconnected.

    What's the value of the limit? The number of retransmission occurs or 
the timeout value?
If the limit is the timeout value, is it defined by 
ENET_PEER_TIMEOUT_MAXIMUM?

    It seems that the enet will terminate the connection if the timeout 
limit is reached. Could enet
be programmed to drop the unacked packets if the timeout limit is reached 
instead of closing
the connection?

>Packets are not sent over the network in any particular order. They are
>sent as soon as possibly can be, in any order. Reordering and sequencing
>happens on the delivery end of things. Doing otherwise would massively
>increase latency, and latency is the enemy here.
>
>It's just that if you're using reliable packets, even if ENet has the
>101st and 102nd packet, if the 100th is missing, then it waits till it
>gets the 100th and delivers it to you before passing you 101 and 102.

    I think it's reasonable for the receiver to send data up to the 
application in sequence in reliable
transmission. However, if the sender doesn't retransmit the unacked packets 
in sequence, I think
the receiver could wait much time to receive the waiting packet.

>
>On top of this, they can all be delivered over independent channels
>which have no sequencing between them.
>

    Could the multi-channel delivery be used in reliable transmission? If 
the encoded data of
multimedia source (say, DVD) is sent over three channels to the player, how 
does the player
reassemble the correct data sequence to the decoder?

>
>If you specify some decent values for bandwidth on enet_host_create(),
>instead of just 0, then ENet can also limit how high the throttle of
>individual clients will go based on the individual bandwidth limits of
>the client and how much data you're sending back and forth to them.

    Do you mean the parameters of incomingBandwidth and outgoingBandwidth 
used in
enet_host_create()? I think these two parameters are used to define the 
window size.
Am I right?

    By the way, what kind of parameters (RTT, throttle,.....) are 
recommended to fine tune the
enet connection (reliable) in a low bandwidth environment?

    Thanks.

         Todd

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! 
http://search.msn.com/



More information about the ENet-discuss mailing list