Istio / Envoy:15秒后SSL握手超时

时间:2019-11-15 20:13:38

标签: ssl istio envoyproxy

在客户端(python)和服务器(Istio / Envoy)之间的TCP连接期间,我注意到服务器正在重置连接,如下所示:

t+00s - CLIENT ---> SERVER: SYN
t+00s - SERVER ---> CLIENT: SYN, ACK
t+00s - CLIENT ---> SERVER: ACK
t+15s - SERVER ---> CLIENT: FIN, ACK
t+15s - CLIENT ---> SERVER: ACK
t+45s - CLIENT ---> SERVER: "client hello"
t+45s - SERVER ---> CLIENT: RST

在TCP连接的正常过程中,通常会发生以下情况:

t+00s - CLIENT ---> SERVER: SYN
t+00s - SERVER ---> CLIENT: SYN, ACK
t+00s - CLIENT ---> SERVER: "Client Hello"
t+00s - SERVER ---> CLIENT: ACK
t+00s - SERVER ---> CLIENT: "Server hello"
t+00s - SERVER ---> CLIENT: Sends its certificate
t+00s - SERVER ---> CLIENT: Server key exchange
t+00s - CLIENT ---> SERVER: ACK
t+00s - CLIENT ---> SERVER: ACK
t+00s - CLIENT ---> SERVER: Client key exchange
t+00s - SERVER ---> CLIENT: New session ticket
t+00s - CLIENT ---> SERVER: ACK
... data / ack ...

这里的第一个问题是客户端不发送其“客户端问候”的延迟为15秒。这个问题归结于客户端代码中的错误异步调用,从而使整个程序进入睡眠状态(而不仅仅是正在执行的任务)。

我想知道的部分是15秒钟的超时时间-我在Istio / Envoy中看不到此内容。据我阅读文档了解,tcp连接的默认超时是没有超时。

我试图通过更新目标规则中的tcp connectTimeout属性来对其进行修改,但这无效。超时时间仍为15秒:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  ....
spec:
  host: example.com
  trafficPolicy:
    connectionPool:
      tcp:
        connectTimeout: 5s

这段时间从哪里来?如何将其更新为高于/低于15秒的值?

this question不同,这不是虚拟服务的参数。我尝试添加45秒的超时时间,然后添加4秒的超时时间,在这两种情况下,SSL握手都会在15秒后完全超时。

0 个答案:

没有答案