A fix is available
APAR status
Closed as program error.
Error description
If an application builds a RAW TCP-protocol packet with its length larger than a outgoing routing interface's MTU and uses the sendto() socket API call for the write, it gets no EMSGSIZE error for the response. The IP/RAW layer in the TCPIP stack simply discards the packet silently. If the EMSGSIZE error had been returned, then the application will know that it needs to carve the large packet into smaller segments without requiring fragmentation.
Local fix
Use packet length of 576 (smallest MTU) for all RAW TCP-protocol packets. That is, the application has to do the TCP segmentation (without fragmentation) that is not being done at the lower IP/RAW layer by design. KEYWORDS: RAW TCP SENDTO SOCKET API EZBRWWRI TORUWP EMSGSIZE MTU MSS PACKET
Problem summary
**************************************************************** * USERS AFFECTED: * * All users of the IBM Communications Server for z/OS Version * * 2 Release 2 and 3 IP: Raw sockets * **************************************************************** * PROBLEM DESCRIPTION: * * RAW socket application sends of TCP or UDP protocol packets * * do not fail with EMSGSIZE if the packet must be fragmented * * and has the don't fragment bit set in the IP header. * **************************************************************** * RECOMMENDATION: * * Apply PTF * **************************************************************** The raw sockets API does not support opening a raw socket with protocol 6 (IPPROTO_TCP) or protocol 17 (IPPROTO_UDP). To send packets with the TCP or UDP protocol the raw socket must be opened with protocol 255 (IPPROTO_RAW) and the IP header must be supplied by the application. The TCPIP stack will discard a packet when the don't fragment flag (IP_DF) is set in the supplied IP header and the length of the packet being sent is larger than the MTU defined for the route selected to reach the destination. When this happens the EMSGSIZE error is not returned to the application send operation, thus allowing it to complete successfully. The internally generated error is not presented as an ICMP protocol message so raw sockets open on protocol 1 (IPPROTO_ICMP) and protocl 255 (IPPROTO_RAW) are unable to detect the error condition. The raw application has no method of determining the send operation has failed to send the packet into the network. If an ICMP message was generated in the network it could have been delivered to the raw socket application, allowing the application to make adjustments to the packets being sent.
Problem conclusion
The raw sockets layer has been amended to fail a send operation when a TCP or UDP packet is discarded by the TCPIP stack.
Temporary fix
Comments
APAR Information
APAR number
PI90866
Reported component name
TCP/IP MVS
Reported component ID
5655HAL00
Reported release
220
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2017-11-29
Closed date
2018-07-19
Last modified date
2018-11-01
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI57364 UI57365
Modules/Macros
EZBRWRD
Fix information
Fixed component name
TCP/IP MVS
Fixed component ID
5655HAL00
Applicable component levels
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"220","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSCY4DZ","label":"DO NOT USE"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"220","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
01 November 2018