Skip to Main Content
IBM Power Ideas Portal


This portal is to open public enhancement requests against IBM Power Systems products, including IBM i. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Not under consideration
Workspace IBM i
Categories Networking
Created by Guest
Created on Feb 21, 2019

Please change the timeout settings on the CONNECT() API.

This request is to provide a change to the SYN process when connecting to a remote host.

I have a situation where we have a number of devices like IOT devices.

I wrote a program to send data to a non IBM I device and the program works as designed except the timeout out time when a remote host is not listening, the wait is 3.5 minutes before timing out. IBM advises that this is as per design.

Hi Darryl,

There isn't any way of controlling that when establishing a TCP socket connection. What is happening is that your application initiates a connect() which has TCP send a SYN packet. If the other end is not listening on that server, we won't get a SYN ACK back. Because of TCP re-transmission settings, if we haven't received a response, we will try again (re-transmit the SYN) in 3 seconds, and then in 6, 12, 24, 48, etc seconds each time waiting for a SYN ACK response. After 5 attempts if there is no response, we will give up. I think this would match up with your 180 seconds (3 minutes approx). Connection retries are hardcoded on the IBM i, so there isn't any way of changing that sequence. However, if the application server were to send back a RST packet to our SYN attempt, then I believe we would immediately stop retransmitting the packet because we have received a response that the port is not listening/accepting requests. If the whole system is unavailable, then it might depend on how the remote network responds to a request to that IP address. If no response is received however, we will attempt to retransmit the SYN as above.


Use Case:

We use this process to connect to remote hosts such as IOT devices. These are non IBM I devices.

Currently we use this process with about 30 devices to transmit data to external systems in the manufacturing process.


Idea priority High
  • Guest
    Reply
    |
    Apr 22, 2020

    This team has a long list of higher priority requirements, so this request is not likely to be implemented anytime soon.

  • Guest
    Reply
    |
    Mar 6, 2019

    IBM has received this requirement and is evaluating it. IBM will provide a response after evaluation is complete.

    However, in the mean time, you can make an update to your application to timeout the connection with sockets APIs. Use a non-blocking socket on your connect call and if the connection has not completed upon return from connect, poll can be used to wait for the socket to become writable. If after the specified timeout the socket is not writable, poll will timeout because the connection has not completed. You can then close the socket to end the connection attempt and move on to your next connection.

  • Guest
    Reply
    |
    Mar 1, 2019

    It would be very useful to have a setting on the IBM i that allowed you to control the number of times a SYN was retransmitted before failing and handing back control to the application. It would bring it in line with a number of other Operating Systems that do allow this as a tunable option, although this would need to be a general TCP attribute setting (or *SYS ENVVAR) rather than an option on the connect() API I suspect.

    As a potential stop gap or workaround to the OP, perhaps add some code to the application to do a PING to the remote address before attempting a connect() to test if the remote address is available or not??