Linux - NetworkingThis forum is for any issue related to networks or networking.
Routing, network cards, OSI, etc. Anything is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Can anyone explain me why TCP/IP stack when transmitting file larger than 64K causing packets to transmit out of sequence. This is causing client to set DUP-ACK. And after 2-3 dup-ack, server slows down significantly to send more packets. I am using linux 2.6.12. I have tried increasing tcp buffers but all that is doing is allowing application to give entire file to the stack in one go.
I think you mean 64k packets? If so, the network is fragmenting your large packets, likely into 1500 byte packets. This would be fine unless;
1) You are using Frame Relay and packets are being dropped.
2) You have a full/half duplex mismatch somewhere between a device and a switch.
3) You have an overloaded network and packets are being lost from buffer overflows and/or collisions.
4) You have a defective network interface device or cable damaging packets. Or the network is out of spec, such as running a cable farther than it is made for.
Every packet is kept open until they are complete. If you have a 10% packet loss, and each Large Internet Packet (LIP) is being divided into 6 parts, then every other packet must remain open until it is NAK'd and retransmitted.
When you do ifconfig, are you seeing errors in the interface statistics?
Last edited by Suncoast; 08-25-2009 at 10:27 AM..
Reason: More info
>>I think you mean 64k packets? If so, the network is fragmenting your large packets, likely into 1500 byte packets.
Yes, that exactly what I meant. That part is fine except it is taking long time to tranmit file. I also verified that its not application which taking long time to pass entire file to the stack.
>> When you do ifconfig, are you seeing errors in the interface statistics?
When I check for errors on server side thru ifconfig, I observed Tx errors and carrier error going up. However, packets are not lost on receiving end. However, packets are arriving out-of-sequence. Then client sends dup-ack. After about three dup-ack server sends the missing packet. This keeps happening very frequently for the entire file transfer. After one or two dup-ack, server slows down in transmitting more packets.
Is there a way to find out what kind of errors are occuring on ethernet?
I have seen this too many times. Automatic negotiation of the Ethernet links Duplex setting has failed. So either the Network Card on the server or on the Switch Port it's connected to is set to half-duplex. You always want FULL DUPLEX on both ends.
Use ethtool and mii-tool to check and set your system to full duplex. Set the switch port to full duplex also. Do not let either remain at "auto." Be careful of what mii-tool reports, because sometimes it lies.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.