iroh icon indicating copy to clipboard operation
iroh copied to clipboard

Backpressure handling when derp traffic is faster than local processing

Open rklaehn opened this issue 1 year ago • 2 comments

@ppodolsky hit this issue:

2024-01-24T20:09:53.623716Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.623791Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.623811Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.623827Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.623844Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.623860Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.624204Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.624227Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.624250Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network./
2024-01-24T20:09:53.624276Z  WARN magicsock:derp-actor:active-derp: dropping received DERP packet: "Full(..)" me=... url=https://euw1-1.derp.iroh.network.

This seems to drop packets coming from the DERP relay when local processing can not keep up. Since the connection to the relay is a TCP connection, could we just use the TCP backpressure instead?

rklaehn avatar Jan 25 '24 09:01 rklaehn

question is whether that really is any better. It is only incidental that the derper connection is TCP (and a little unfortunate). As far as quinn is concerned it is sending datagrams somewhere. The inside of iroh is just another router along that path, things go as far as they can and are then dropped when the buffer is full. That is how UDP works.

If we use TCP's backpressure I think we'll confuse things more and move the problem around. Probably next is the derper who would have to either drop the packets or slow down the flow from the derper channel to sending node. But that it can't do, because it needs to keep that flowing so that DISCO packets still get through.

So, my take is that this is fine. Maybe we should trim down the logging to be somewhat more reasonable though.

flub avatar Feb 16 '24 11:02 flub

lets at least reduce the logs for now

dignifiedquire avatar Feb 16 '24 12:02 dignifiedquire