目录
一、HTTP2协议概述
HTTP/2即超文本传输协议2.0,是下一代HTTP协议。2.0协议是在1.x基础上的升级而不是重写HTTP方法/状态码/语义都与HTTP/1.x一样。HTTP/2基于SPDY,专注于性能,重点是对终端用户的感知延迟、网络及服务器资源的使用等性能的优化。
HTTP2 新特性
1.二进制传输
HTTP/2传输数据量的大幅减少,主要有两个原因:以二进制方式传输和Header 压缩。
HTTP/2 采用二进制格式传输数据,而非HTTP/1.x 里纯文本形式的报文 ,二进制协议解析起来更高效。 HTTP/2 将请求和响应数据分割为更小的帧,并且它们采用二进制编码。它把TCP协议的部分特性挪到了应用层,把原来的"Header+Body"的消息"打散"为数个小片的二进制"帧"(Frame),用"HEADERS"帧存放头数据、“DATA"帧存放实体数据。HTTP/2数据分帧后"Header+Body"的报文结构就完全消失了,协议看到的只是一个个的"碎片”。
HTTP/2 中,同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。
2.Header 压缩
HTTP/2并没有使用传统的压缩算法,而是开发了专门的"HPACK”算法,在客户端和服务器两端建立“字典”,用索引号表示重复的字符串,还采用哈夫曼编码来压缩整数和字符串,可以达到50%~90%的高压缩率。
3.多路复用
在HTTP/2中引入了多路复用的技术。多路复用的技术可以只通过一个TCP连接就可以传输所有的请求数据,很好的解决了浏览器限制同一个域名下的请求数量的问题,同时也接更容易实现全速传输。
在HTTP/2中,有了二进制分帧之后,HTTP/2不再依赖TCP连接接去实现多流并行。这一特性,使性能有了极大提升:
•同个域名只需要占用一个 TCP 连接,使用一个连接并行发送多个请求和响应,消除了因多个 TCP 连接而带来的延时和内存消耗。
•并行交错地发送多个请求,请求之间互不影响。
•并行交错地发送多个响应,响应之间互不干扰。
4.服务端推送
HTTP2还在一定程度上改变了传统的“请求-应答”工作模式,服务器不再是完全被动地响应请求,也可以新建“流”主动向客户端发送消息。比如,在浏览器刚请求HTML的时候就提前把可能会用到的JS、CSS文件发给客户端,减少等待的延迟,这被称为"服务器推送"( Server Push,也叫 Cache push)。
服务端可以主动推送,客户端也有权利选择是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收。主动推送也遵守同源策略,换句话说,服务器不能随便将第三方资源推送给客户端,而必须是经过双方确认才行。
HTTP/2 通过多路复用、二进制流、Header 压缩等等技术,极大地提高了性能,http2会慢慢取代HTTP/1.x 而被广泛采用。
二、Supernova上HTTP2协议仿真
支持HTTP2新建、吞吐性能测试;
支持IPv4、IPv6及IPv4&IPv6双栈运行;
支持自动填充和指定Host字段地址或域名;
支持Get、Post、Put、Head、Delete请求方式;
支持修改HTTP头部信息;
支持所有请求使用同一个TCP连接,或者使用新的TCP连接;
支持动态修改响应内容;
SSL版本支持SSLv3、TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3、国密v1.1;
支持多种RSA通用测试套件和国密算法套件;
证书认证方式支持单向、双向和不认证;
支持记录HTTP交互明文内容;
协议标识支持h2;
支持多路复用;
支持TCP重传机制;
客户端关闭方式支持3Way_Fin、Reset;
IP和端口变换算法支持增加和随机;
支持HTTP2新建速率、吞吐速率限速;
支持自定义HTTP请求;
三、在Supernova测试仪中可应用的场景
3.1网关模式
测试仪同时模拟客户端和服务器,测试流量穿过受测设备(防火墙、交换机、路由器等),得到受测设备的性能。
3.2代理模式
测试仪同时模拟客户端和服务器,测试流量穿过受测设备(代理设备、负载均衡设备),得到受测设备的性能。
3.3应用服务模式
测试仪只模拟客户端,向受测的HTTP2服务器发送流量,获取响应,得到HTTP2服务器的性能。
3.4 终端模式
测试仪只模拟服务器,接收客户端的请求,并回复正确的回应,得到客户端的性能。
四、HTTP2用例主要配置参数
4.1.分配cpu核
用例的运行需要分配cpu核数,HTTP2新建、吞吐的最高性能需要分配一定的核数。
4.2限速配置
HTTP2用例支持多种流量模型,包括固定速率:设置一个限速数值,运行过程中速率将一直保持该数值,上下浮动不超过1%;
随机速率:限速方式为随机速率时,设置最小、最大限速数值,速率将按每秒从最小速率和最大速率之间随机速率值运行直到运行结束;
梯形速率:限速方式为梯形速率时,设置一个限速数值,运行开始阶段速率将按时间或者百分比递增到该数值,中间过程将一直保持设置的限速数值,运行结束前速率按时间或者百分比递减至0,中间过程上下浮动不超过1%;
雪崩速率:限速方式为雪崩速率时,设置最大、最小速率和保持时长,测试过程中速率将以最大速率保持一段时长,再以最小速率保持一段时长,交替进行;
正弦速率:限速方式为正弦速率时,设置最大、最小速率和渐变时长,测试过程中速率会在每一个渐变时长内完成一次正弦变化;
楼梯速率:限速方式为楼梯速率时,设置初始、最大、递增速率和保持时长,测试过程中速率将以初始速率保持一段时长,按递增速率每次递增并保持一段时长,最后按最大速率一直运行结束,形状类似楼梯。
支持链路层和应用层的限速,限速单位支持最低为bps,最高为