On Sat, May 27, 2023 at 5:35 PM Xiang Xiao <xiaoxiang781...@gmail.com>
wrote:

> On Sat, May 27, 2023 at 8:19 PM Fotis Panagiotopoulos <f.j.pa...@gmail.com
> >
> wrote:
>
> > Hello,
> >
> > I encounter some problems using sendfile().
> >
> > I am using sendfile to... send a file to a remote server, with my own
> > implementation of an FTP client.
> > sendfile() indeed starts to transmit chunks of the file, but as I see in
> > Wireshark, I get an ICMP response "Destination unreachable (Fragmentation
> > needed)".
> > I have verified that the Ethrenet MTU is correctly set to 1500.
> >
> > I tried lowering the MTU a lot (1000 bytes), and the problem is solved.
> > Communication succeeds.
> >
> > This raises some questions, and indicates some potential bugs:
> >
> > 1. Why is there a problem with MTU in the first place? Shouldn't MTU be
> > negotiated? (Is this functionality available in NuttX?)
> >
>
> MTU isn't negotiated but a physical attribute of your transport(netdev). On
> the other hand, PMTU could be discovered from ICMP.
>

I am not very familiar with MTU negotiation, so it seems that it doesn't
happen in the network layer that I thought...


>
>
> > 2. Why is the ICMP response not handled? It seems that sendfile() just
> > ignores it and continues to send chunks, nevertheless.
> >
>
> It is handled by the recent addition here:
> https://github.com/apachey/nuttx/pull/9254
> <https://github.com/apache/nuttx/pull/9254>
> but this feature is disabled by default, you have to enable it manually..
>

I will definitely take a look at this. Thank you.


>
>

> > 3. Why sendfile() sends TCP segments without receiving any ACKs back?
> > AFAIK, depending on the configuration, TCP allows at most two pending
> > segments on the wire. But I see dozens of them, till sendfile finally
> > fails.
> >
> >
> Why only two segments? TCP can send packages until the slide window is
> full.
>
> Disregard this. I was confused with delayed ACKs. Which is a receiver's
functionality, not a sender's...


>
> > This last point is also verified in my MQTT client.
> > I have seen NuttX TCP allowing sending lots of TCP segments without
> ACKing
> > the previous data.
> >
> > So, is there any insight on the above?
> > Is my configuration wrong, or is there anything wrong with TCP?
> >
> > Thank you.
> >
>

Reply via email to