高性能HTTPS服务中的TIME_WAIT分析

2017-05-31 06:33杜旻翔
软件导刊 2017年5期

杜旻翔

摘要摘要:超文本传输安全协议(Hypertext Transfer Protocol Secure,HTTPS)是近年来快速发展的网络安全技术,具有网络身份认证、数据传输加密功能。提出对HTTPS优化的思路,针对HTTPS底层的TCP协议中的TIME_WAIT参数进行分析,研究TCP特性对TLS性能的影响,并建立数学模型。研究在不同TIME_WAIT时长、不同网络环境下,TIME_WAIT参数对用户响应延时、服务器吞吐率、网络效益、平均访问时间等参数的影响。

关键词关键词:安全传输层协议;安全超文本传输协议;TIME_WAIT;传输控制协议

DOIDOI:10.11907/rjdk.162886

中图分类号:TP393

文献标识码:A文章编号文章编号:16727800(2017)005015503

0引言

互联网无处不在,所有的网页访问都通过HTTP协议进行,但其并不具有数据安全保障功能,该协议在安全方面最大的问题是数据明文传输,通过简单抓包就能获取隐私数据。HTTPS应用广泛,Google、Facebook、Twitter等都支持HTTPS服务,各大互联网公司的核心业务都在大范围应用HTTPS。在此背景下,高并发量、高性能的HTTPS服务研究更具现实意义[1]。安全模块的引入使网络访问资源消耗增大、速度变慢,如何对超文本传输安全协议进行优化是目前研究热点之一[2]。 通过优化HTTPS协议中的TLS协议与底层的TCP/IP协议能够实现HTTPS服务性能优化。

基于网络安全的结构模型,本文重点分析TIME_WAIT参数在不稳定的网络环境下对超文本传输安全协议性能的影响与优化。

1网络模型

网络安全结构模型如图1所示,构成安全超文本传输协议握手过程如图2所示,传输控制协议连接过程如图3所示,关闭过程如图4所示。图1表示了研究对象在整体结构中所处的位置,图2在实际连接过程中位于图3和图4之间,是相互依赖承接的关系[3] ,本文分析的重点是TIME_WAIT对服务器性能及后续连接操作的影响。

总延时等于中介协议访问延迟之和,见式(1):

di(t)=di(tcp3)+di(tls)+di(tcp4)+di(rep)(1)

在四层网络结构中,TLS协议介于Application Lay和Transport Lay之间。其中Transport Lay中的TCP/UDP协议同时也是TLS协议基础[4],针对底层进行上层优化。在TCP协议完成握手之后进入HTTPS握手阶段,图2是图3与图4的中间过程。本文研究的内容就是在图3和图4所示建立连接与关闭连接过程中,参数的等待状态时间长度对服务器的影响。

2基于可变参数的服务器状态分析

2.1数学建模

首先对过程进行描述,关闭过程:A发送CLOSE请求到B,A→TIME_WAIT状态;接收到请求之后B→CLOSE_WAIT状态并发送FIN_WAIT到A;接收到FIN_WAIT之后A发送ACK到B→CLOSED,结束。最后一个ACK状态由主动关闭连接的一段发出,并且在发出之后进入TIME_WAIT状态。如果ACK状态丢失,B端会重新发出FIN请求ACK,保证全双工连接终止[5]。如果所有的TCP连接都由服务器端关闭,则每个连接都会保持一个TIME_WAIT(后文使用TW代称)状态并持续两个最大分节生命周期。

假设并发数为N,记TW时长为t,服务器可承载并发总量为m1,经过n(n>0)次TW状态之后可用并发数为m2,任意p时间可用并发数m=m1+m2,时长t以秒为单位,按照规定可知t∈[0,240]。客户端访问的时间间隔为t2,对于socket pair是否重新建立连接存在两种情况:①在客户端建立连接时间间隔长于TW时间的时候可以重用端口;②在时间间隔长于TW时间时必须调用新的端口建立连接,这两种情况表示如下:

0≤t≤t2=>t∈[0,t2](2)

t2≤t≤240=>t∈[t2,240](3)

TW对网络、服务器的性能影响主要关注4个指标:

(1)网络连接效率:当用户数为N时,在正常流程下有效连接占全部连接的数据比例。

(2)可用并发数:单位时间内可建立连接的用户数量。

(3)TFA(time-to-first-ack):用户首次关闭连接耗时。

(4)TSA(time-to-second-ack):用户再次关闭连接耗时。

这里,每次访问的客户端数量为N,批次访问数为k,访问时间间隔为t2,假定TW状态全部产生在服务器端。

2.2式(2)条件下讨论

数据发送次数(假定每次连接时长都稳定相同的情况下)= T/t1,网络连接效率見式(2)。显然在WT时间小于网络传输间隔时,传输效率与服务器可承载的连接数m1有关。可见在t∈[0,t2]情况下,TW参数不会对服务器负载产生影响,但是t2时间是不稳定的,所以t的值应该尽可能小。

m1*T/t2N*T/t2 =m1/N(4)

可用并发数在TW阶段,每个TW状态都会占用一个可用连接,故可用并发数和t成反比。

对于TFA延时, FIN发送与ACK返回的时间受网络环境影响,按照目前的网络设备与网络环境而言,首次请求丢包的可能性很小。如果首次请求产生丢包,这个概率取决于通信质量和网络繁忙程度。由于CLOSE动作的报文长度是固定的,所以TW于TFA基本没有关联,不同的TW基本不会影响TFA的时间。对于TSA延时,在网络条件稳定的环境下,这个延时指接收第二个FIN消息并进行ACK返回实现全双工关闭[6]。如果TW状态存在时间小于FIN数据包接收到的时间节点,或者状态维持不到ACK丢失之后重新请求的时间阶段,在B端请求重发ACK的时候A端发送RST数据,导致B端进行错误连接;另一种情况是连接混淆。A端正常终止之后,仍然接收到B端相同端口和句柄的数据组重复报文,此时的A端如果有新的连接建立就会导致连接混淆。

2.3 式(3)条件下讨论

网络连接效率见式(3),显然t参数越小网络连接效率越高。当t∈[t2,240]时,t越小越好,最优值应该为t2。

m1*T/tN*T/t2 =m1*t2/(N*t)(5)

对于TFA延时,在网络稳定的环境下,不同的TW基本不会影响TFA时间。对于TSA延时,在网络稳定的环境下,仍然会有全双工以及RST导致的错误连接问题,只要在t=240时,2MSL的时长就可保证因路由器异常而延缓的数据包在网络中消逝,避免连接混淆问题。

3仿真验证

测试环境使用模拟环境,在TLS协议上进行改进,并完成协议的编译和调试。客户端环境参数为:OS X 10.11 Beta操作系统、4核Intel Core i5 2.6GHz CPU、8G内存、HTTPS服务器与静态Web服务器。按照压力测试工具基本设计思路和原则进行测试。实验参数为相同的请求次数、客户端数量、请求时间间隔,比对服务器上的数据吞吐率、可用连接数、并发连接数、并发用户数、用户平均请求时间、服务器平均请求等待时间等参数。

实验步骤:启动HTTPS服务,使用digitalocean上1Mbps带宽服务器,保持1 000个连接100个客户端间隔5s请求服务器进行5次请求,观察服务器吞吐率、并发连接数、并发用户数、用户平均请求时间、服务器平均请求等待时间等参数变化。按照时间间隔记录实验数据,再修改TIME_WAIT参数,分别按照10、30、120、240进行对照实验。观察服务器吞吐率、并发连接数、并发用户数、用户平均请求时间、服务器平均请求等待时间等参数变化,如图5-7所示。

随着单次实验内请求次数增加,最长连接耗时从9 404ms逐步上升至38 883ms,在这个过程中,服务器中的TIME_WAIT数量从0逐步上升至1 649,并在达到2 048后开始下降,下降的时间节点在请求结束之后。

在修改TIME_WAIT时间长度值之后,服务器各项指标都随着TIME_WAIT时间长度的变化而变化,以第一次实验数据作为基准数据,记录之后参数的变化。

4结语

本文讨论了TIME_WAIT时间长度对服务器性能指标的影响,从两种不同的场景进行了分析。

一般场景下,TIME_WAIT的时间长度在[0, t2]时服务器可用并发量最优,TIME_WAIT时间长度越短,吞吐率、并发连接数、平均响应时间都可达到较优秀的结果。

在移动网络环境中对TCP/IP进行优化,考虑传输过程中数据包的稳定性传输问题[7],TIME_WAIT的时间长度依然符合以上论述,但这时需要更多地考虑网络环境对数据包传输的影响,弱网络会导致数据包在网络中有更多的丢包和错误,导致协议结束时产生更多的不确定性。因此,TIME_WAIT时长与网络的状况优劣成反比。

参考文献参考文献:

[1]NAYLOR D, FINAMORE A, LEONTIADIS I, et al. The cost of the s in https[C].Proceedings of the 10th ACM International on Conference on emerging Networking Experiments and Technologies. ACM, 2014: 133140.

[2]BLAKE WILSON S, MOELLER B, GUPTA V, et al. Elliptic curve cryptography (ECC) cipher suites for transport layer security (TLS)[EB/OL]. http://www.faqs.org/rfcs/rfc4492.html.

[3]徐偉.TCP协议的性能建模研究[D].合肥:中国科学技术大学,2012.

[4]DIERKS T. The transport layer security (TLS) protocol version 1.2[EB/OL]. https://tools.ietf.org/html/rfc5246.

[5]何泉.在繁忙服务器上避免TCPTIME_WAIT状态的研究[J]. 小型微型计算机系统,2000 (6):600602.

[6]李天科,刘正歧. 2MSL等待状态及应用分析[J]. 计算机与数字工程,2011 (12):115118.

[7]MORRIS R. Scalable TCP congestion control[J]. Proceedings IEEE INFOCOM, 1970, 3(5):11761183.

责任编辑(责任编辑:杜能钢)