Hello

I am hoping someone will give me some pointers towards adding an 
optional semi-reliable data delivery mode to openvpn.

I would like to set up OpenVPN on an international link that has a 
~500ms round trip time, and a round trip packet loss of 50% to 60% 
(i.e. around 20% to 30% probability of loss in one direction). 

The design is currently like this:

 1. Data packets are incrementally numbered (e.g. 16 bits). Each 
sender maintains a buffer of packets sent

 2. Each packet is sent with information about data-packets received:
        Last received data-packet sequence number
        History of packets received: e.g. 16 bits, 1=received, 0=packet not 
seen

 3. When data packets are received, confirmations of received packets 
are tallied.  If a packet is confirmed un-delivered after a 
configurable timeout, it is retransmitted a maximum of 2 times 
(higher level protocols can handle duplicates and loss beyond this - 
that's their domain).

 4. A packet about which no further information is received is assumed 
to have been delivered.  

Now, questions:

 - Should I define a separate data protocol for semi-reliable 
delivery? (e.g. P_DATA_RETRY_V1) - or would it be possible to extend  
P_DATA_V1?

 - Where would I add code? - I think encrypt_sign() function in 
forward.c for a start, but pointers to other places would be welcome.  

 - Is there an existing sequence number for the data packets that I 
can re-use?

 - Should I use/adapt the existing reliable transport code?

&:-)

-- 
I don't believe in evolution or microsoft outlook

Reply via email to