Opened 7 years ago

Closed 7 years ago

#682 closed defect (fixed)

SSU PMTU

Reported by: zzz Owned by: zzz
Priority: minor Milestone: 0.9.2
Component: router/transport Version: 0.9.1
Keywords: Cc: fnord@…
Parent Tickets:

Description

Background: http://zzz.i2p/topics/1209

Reporter is seeing 1464 byte packets truncated to 1460. 1464 means the other end is sending 1484 byte packets (including 20 byte IP header) and that the sending routers are recent versions (not 0.8.9,10,11 which have MTU bugs). Reporter is using PPTP and ifconfig reports an MTU of 1396 for the interface.

Current SSU uses 620 and 1484 and has rather crude logic to switch between them.

Advanced config i2np.udp.mtu overrides only small MTU value, not large.

TODO:

1) Add a config for max mtu, or fix existing config
2) Detect local interface MTU value with NetworkInterface?.getMTU() (Java 6 only)
3) Extend SSU protocol to pass MTU through to other side
3a) use a flag or extended data in the DATA message
3b) add something to one of the Session messages

Subtickets

Change History (6)

comment:1 Changed 7 years ago by fnord

  • Cc fnord@… added

comment:2 Changed 7 years ago by zzz

  • Status changed from new to accepted

Local MTU detection stubbed out in 0.9.1-5. This is a portion of what is needed for 2) above.

comment:3 Changed 7 years ago by zzz

3c) (probably easiest) Put the MTU in the netdb

comment:4 Changed 7 years ago by zzz

0.9.1-6 includes:
1) Change i2np.udp.mtu to set the max MTU, not the initial MTU
2) Use the detected local interface MTU as the max MTU
3c) Publishes the MTU in the netdb if less than the default

What remains is the rest of 3c), i.e. to recognize and use the other side's published MTU

comment:5 Changed 7 years ago by zzz

  • Milestone changed from 0.9.3 to 0.9.2

0.9.1-12 includes the rest of 3c), i.e. pulling the peer's MTU from the netdb. Untested.

This works for outbound. For inbound, it works if we already have the netdb entry... otherwise it won't.

To fix that, we need a callback from netdb to SSU when the RI exchange happens (or intercept it in SSU?). Or extend the protocol, i.e. imlement 3b).

Leaving ticket open until tested... or possibly until fixing the inbound problem.

comment:6 Changed 7 years ago by zzz

  • Resolution set to fixed
  • Status changed from accepted to closed

0.9.2 is out and I see at least two routers advertising a non-default MTU of 1452 in their RouterInfos?. I also see my router adjusting its MTU for that peer to match.

The inbound case is marked as a TODO in EstablishmentManager?. As that's hard and may not be worth it, I'm closing this ticket.

Note: See TracTickets for help on using tickets.