By using AWS re:Post, you agree to the Terms of Use

Unidirectional TCP keep-alive for Classic Load Balancer and Network Load Balancer


I own a fleet of IoT devices. The devices send data to the cloud on varying frequencies (it can be 1 minute or 30 minutes). The devices are old and can't be modified to send keep-alives. I'm currently using Classic Load Balancer and considering Network Load Balancer. I'm trying to mimic Classic Load Balancer's behavior for TCP flows, and prevent Network Load Balancer from closing the connection after an idle timeout of 350 seconds. Will a unidirectional keep-alive that is sent from the server be enough to keep the Network Load Balancer connection open?

1 Answer
Accepted Answer

For Classic Load Balancer, TCP keep-alives will not keep the connection alive. HTTP payload is required for the connection to be alive for Classic Load Balancers.

With Network Load Balancer, the TCP keep-alives can prevent the connection from reaching the idle timeout. However, the keep-alives must be enabled in both directions. If the server sends a keep-alive message, the client has to respond with a keep-alive acknowledgment. If the clients are unresponsive to keep-alives from the server, the idle timeout of 350 seconds will be reached. If either endpoint (client or server) sends traffic to the idle connection, Network load Balancer will generate a reset.

The HTTP payload will also keep the connection alive in case of NLB however you will have to make sure that it is being sent before hitting the 350sec timeout.

answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions