Bug 198055 - Missing mechanism to find maximum datagram sizes (mandated by RFC 1122)
Summary: Missing mechanism to find maximum datagram sizes (mandated by RFC 1122)
Status: NEW
Alias: None
Product: Networking
Classification: Unclassified
Component: Other (show other bugs)
Hardware: All Linux
: P1 high
Assignee: Stephen Hemminger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-12-01 15:54 UTC by kwyut
Modified: 2017-12-01 15:54 UTC (History)
0 users

See Also:
Kernel Version: 4.13.15-300.fc27.x86_64
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description kwyut 2017-12-01 15:54:14 UTC
It's currently impossible to reliably implement an application layer protocol with UDP sockets in Linux. Applications can retrieve the PMTU from IP_RECVERR control messages but are unable to account for the variable size of IP and UDP headers beyond hard-coding a large enough guess.

Relevant section of RFC 1122

    4.1.4  UDP/APPLICATION LAYER INTERFACE

         The application interface to UDP MUST provide the full services
         of the IP/transport interface described in Section 3.4 of this
         document.  Thus, an application using UDP needs the functions
         of the GET_SRCADDR(), GET_MAXSIZES(), ADVISE_DELIVPROB(), and
         RECV_ICMP() calls described in Section 3.4.  For example,
         GET_MAXSIZES() can be used to learn the effective maximum UDP
         maximum datagram size for a particular {interface,remote
         host,TOS} triplet.

In particular, GET_MAXSIZES() appears to be missing.

Note You need to log in before you can comment on or make changes to this bug.