tftp client does not ack if server re-sends same block

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

tftp client does not ack if server re-sends same block

4,558 Views
hetul
Contributor I

Hello,

 

Has anyone encountered a situation where trying to use tftp client to get a file results in "Unknown transfer ID" after it receives few blocks?  In my scenario, after debugging it came down to server re-sending a block (possible ack timeout due to delay) which resulted in tftp_recv_data function returning bad TID error.

 

I found a work around to this by adding additional else if statement in tftp_recv_data function(screenshot attached).

 

Is this a possible bug or am I doing something wrong?

Labels (1)
Tags (2)
0 Kudos
Reply
3 Replies

3,549 Views
Carlos_Musich
NXP Employee
NXP Employee

Hi Hetul,

TFTP is implemented on the top of UDP/IP protocol. UDP is a non-connection oriented transport protocol, therefore it not acknowledge whether data it is lost or not. This is the normal behavior of the protocol and if you dont get the file you are waiting for you must ask for it again.

If this happens very often you may consider your network settings.

- If network is too fast and the MCU is not able to process all packets it may loss data.

- If there is too much traffic in the network it is possible to have collisions and data would be lost.

As I told before, as TFTP is implemented over UDP there is no acknowledge when data is received or not.

I hope this helps.

Regards,

Carlos

0 Kudos
Reply

3,549 Views
hetul
Contributor I

Hello Carlos,

Looking at the RFC, i understand that client has to ack before server would send the next block.  And if timeout occurs on server side before client has ack receive of block, then server re-sends the block. In this case, client has to ack that re-transmitted block to receive next block.  This last part was not done in the tftp client in RTCS.

RFC 1350 - The TFTP Protocol (Revision 2)  Section 2, talks about this.

Best Regards,

Hetul

0 Kudos
Reply

3,549 Views
Carlos_Musich
NXP Employee
NXP Employee

Hi Hetul,

this is now being handled by MQX development team.

Regards,

Carlos

0 Kudos
Reply