SSL 隧道是首先创建到 ASA 中的 TCP 隧道。完全建立该隧道后,客户端会尝试协商 UDP DTLS 隧道。在 DTLS 隧道的建立过程中,数据可以通过 SSL 隧道进行传输。当 DTLS 隧道完全建立后,所有数据都会移动到 DTLS 隧道,SSL 隧道则仅用于偶尔出现的控制信道数据流。如果 UDP 中有异常情况发生,则会切断 DTLS 隧道,所有数据将重新通过 SSL 隧道进行传输。
数据发送方式的决策非常具有动态性。在处理每个网络绑定数据包的同时,代码中有一个点,在这里将会决定是使用 SSL 连接还是 DTLS 连接。如果DTL连接是健康的在该瞬间,数据包通过DTL连接发送。否则就通过 SSL 连接发送。
首先会建立 SSL 连接,然后数据就会通过这一连接进行传输,与此同时,也会尝试建立 DTLS 连接。一旦 DTLS 连接建立起来,上文所述代码中的决策点就会立即开始通过 DTLS 连接(而不是 SSL 连接)来发送数据包。另一方面,控制数据包始终通过 SSL 连接进行传输。
关键点在于是否认为连接正常。如果DTL,一份不可靠协议,是在使用中的,并且DTL连接无论什么原因变坏了,客户端不认识此,直到对端死机检测(DPD)发生。因此,在这短短的一段时间内,通过 DTLS 连接传输的数据就会丢失,因为该连接仍被认为是正常的。一旦发生
DPD,数据会立即通过 SSL 连接发送,DTLS 会重新连接。
ASA 将通过上次接收数据的连接来发送数据。因此,如果客户端已确定 DTLS 连接不正常,并且开始通过 SSL 连接发送数据,ASA 就会通过 SSL 连接进行回复。通过 DTLS 连接来接收数据时,ASA 将恢复使用 DTLS 连接。