Назад | Перейти на главную страницу

TCP KeepAlives с NAT?

У нас есть сеть, настроенная следующим образом:

MQTT Client -- TCP Forward (Netscaler) -- TLS Termination + TCP Forwarding (HAProxy) -- MQTT Server 

По нескольким причинам нам нужно было включить TCP KeepAlives в HAProxy, потому что у клиента огромный тайм-аут, который не поддерживается сетевой инфраструктурой за HAProxy.

Согласно Wireshark, эти TCP-KA правильно отправляются от HAProxy к другим одноранговым узлам, но в некоторых сеансах TCP KeepAlives на стороне Netscaler не получает ACK, что приводит к разрыву соединения.

Теперь мне интересно, связана ли проблема с Netscaler или MQTT Client. KeepAlives обычно отправляется только следующему узлу или они являются своего рода "End2End"? Или другими словами - Кто должен подтверждать TCP-KeepAlives, отправленные HAProxy - Netscaler или Mqtt Client?