We have a Network set up like this:
MQTT Client -- TCP Forward (Netscaler) -- TLS Termination + TCP Forwarding (HAProxy) -- MQTT Server
For several reasons we needed to turn on TCP KeepAlives in HAProxy, because the client has a huge timeout which is not supported by the networking infrastructure behind the HAProxy.
According to Wireshark these TCP-KA's are sent out correctly from HAProxy to the other peers, but within some sessions, the TCP KeepAlives to the Netscaler side is not ACK'ed, which causes the connection to be dropped.
I am now wondering if the problem is the Netscaler or MQTT Client. Are KeepAlives usually only sent to the next peer or are they kind of "End2End"? Or in other words - Who is supposed to ACK the TCP-KeepAlives sent by HAProxy - Netscaler or Mqtt Client?
0 Answers