基础知识
网络延时
网络延时指一个数据包从用户的计算机发送到网站服务器,然后再立即从网站服务器返回用户计算机的来回时间。通常使用网络管理工具PING(Packet Internet Grope)来测量网络延时。
由于互联网络的复杂性、网络流量的动态变化和网络路由的动态选择,网络延时随时都在不停的变化称为抖动。网络延时和网络延时的抖动越小,那么网络的质量就越好。
在互联网上,典型的网络延时为几十到几百毫秒。影响网络延时的主要因素是路由的跳数(因为每次路由转发都需要时间,因此路由跳数越多,网络延时越大)和网络的流量(网络流量越大,交换机和路由器排队的时间就越长,网络延时也就越大)。
交换机延时(Latency)是指从交换机接收到数据包到开始向目的端口复制数据包之间的时间间隔。有许多因素会影响延时大小,比如转发技术等等。采用直通转发技术的交换机有固定的延时。因为直通式交换机不管数据包的整体大小,而只根据目的地址来决定转发方向。所以,它的延时是固定的,取决于交换机解读数据包前6个字节中目的地址的解读速率。采用存储转发技术的交换机由于必须要接收完了完整的数据包才开始转发数据包,所以它的延时与数据包大小有关。数据包大,则延时大;数据包小,则延时小。采用直通转发技术的千兆交换机有固定的延时,因为直通式交换机不管数据包的整体大小,而只根据目的地址来决定转发方向。所以,它的延时是固定的。采用存储转发技术的交换机由于必须要接收完了完整的数据包才开始转发数据包,所以它的数据包大,则延时大;数据包小,则延时小。
抖动
抖动是QOS里面常用的一个概念,其意思是指分组延迟的变化程度。网络延时随时都在不停的变化称为抖动(延时的变化成为抖动)。
如果网络发生拥塞,排队延迟将影响端到端的延迟,并导致通过同一连接传输的分组延迟各不相同,而抖动,就是用来描述这样一延迟变化的程度。
因此,抖动对于实时性的传输将会是一个重要参数,比如:VOIP,视频等。
丢包
丢包率,是一个比率,网络中数据的传输是以发送和接收数据包的形式传输的,理想状态下是发送了多少数据包就能接收到多少数据包,但是由于信号衰减、网络质量等等诸多因素的影响下,并不会出现理想状态的结果,就是不会发多少数据包就能接收到多少。
网络丢包率是指测试中所丢失数据包数量占所发送数据包的比率,通常在吞吐量范围内测试。
丢包率主要与网络的流量,准确的说是与从用户计算机到网站服务器之间每段路由的网络拥塞程度有关。由于交换机和路由器的处理能力有限,当网络流量过高来不及处理时就将一部分数据包丢弃造成丢包。由于TCP/IP网络能够自动实现重发,这样发生丢包后不断重发,将造成更大量的丢包。因此,网络拥塞发生后经常会发生丢包率越来越高的现象,和马路上的交通堵塞十分相似。
MTU
因为协议数据单元的包头和包尾的长度是固定的,MTU越大,则一个协议数据单元的承载的有效数据就越长,通信效率也越高。MTU越大,传送相同的用户数据所需的数据包个数也越低。
MTU也不是越大越好,因为MTU越大, 传送一个数据包的延迟也越大;并且MTU越大,数据包中 bit位发生错误的概率也越大。
MTU越大,通信效率越高而传输延迟增大,所以要权衡通信效率和传输延迟选择合适的MTU。
以以太网传送IPv4报文为例。MTU表示的长度包含IP包头的长度,如果IP层以上的协议层发送的数据报文的长度超过了MTU,则在发送者的IP层将对数据报文进行分片,在接收者的IP层对接收到的分片进行重组。
这里举一个具体的例子说明IP包分片的原理。以太网的MTU值是1500 bytes,假设发送者的协议高层向IP层发送了长度为3008 bytes的数据报文,则该报文在添加20 bytes的IP包头后IP包的总长度是 3028 bytes,因为3028 > 1500,所以该数据报文将被分片,分片过程如下:
首先计算最大的IP包中IP净荷的长度 =MTU-IP包头长度=1500-20= 1480 bytes。
然后把3028 bytes按照1480 bytes的长度分片,将要分为3片,3028= 1480+1480+68。
最后发送者将为3个分片分别添加IP包头,组成3个IP包后再发送,3个IP包的长度分别为1500 bytes、1500 bytes和 88 bytes。
从以上分片例子可以看出第一、二个分片包组成的IP包的长度都等于MTU即1500 bytes。
在网络通讯中,需要尽量避免发生分片和重组,因为分片重组对网络性能影响较大。数据包发送时选择合适的MTU大小对提高通讯性能很有必要。MTU大小的选择有协议协商方式,通过全路径的MTU发现机制,找到整条路径的最小MTU(也就是路径MTU),然后报文发送式小于等于路径MTU,这就避免了数据传输过程中产生分片,从而提高数据转发性能。MTU的协议发现机制由于安全等方面的原因,并不能总是生效,这时候就需要根据网络的特性选择合理的MTU。如果在报文传送过程中分片是不可避免的,那么要想办法让重组尽量在终端进行,避免在转发路径中进行。
弱网测试要点
image.png
利用抓包工具charles进行弱网设置,适用PC端和移动端(IOS/Android)
1.以charles 4.0版本为例,打开Proxy->Throttle Settings
image.png
2.打开Throttle Settings界面如下
image.png
3.charles的预设已经有常用的网速模拟设置,根据需要设置即可,当然也可以自己添加预设,自己去研究吧。
charles-Throttle Settings(选项含义讲解)
image.png
Bandwidth(带宽)【吞吐量】
带宽定义数据可以传送超过时间上限,这是千比特每秒指定。可以指定上载和下载链接的不同带宽限制。
Utilisation(利用)
利用率是总带宽的百分比,可以在任何一个时间使用。它只是作为可用带宽的缩放因子。对于大多数现代互联网连接利用率始终是100%。
Round-trip Latency(请求往返延迟)【延时】
往返延迟测量客户端和远程服务器之间的第一次往返通信的毫秒延迟。它用于客户端向服务器和服务器向客户端的每次请求。
MTU(最大传输单元)
在任何传输的TCP数据包的最大尺寸。指定MTU不改变的可用带宽,但允许Charles在MTU分配带宽大小的块,导致在每个传输包分割的现实水平。
Reliability(可靠性)【丢包】
可靠性是衡量连接完全失败的可能性。这是非常有用的模拟不可靠的网络条件。可靠性是指定为成功发射10kib消息的可能性,所以,值为50%意味着所有10kib传输一半会成功。较大的邮件或更小的消息或多或少都有可能失败,所以20kib传输将只有25%的成功率和5kib传输成功率约70%。
Stability(稳定性)【抖动】
稳定性是衡量一个连接的可能性是不稳定的,因此降低了质量。这是非常有用的模拟网络,如移动网络,定期连接质量差。如果连接不稳定,则连接的质量会在不稳定的质量范围内随机下降。此质量值,然后应用作为另一个缩放因子的可用带宽。
unstable quality range(不稳定质量范围)
此处设置主要针对于Stability中设置中的范围
以下配置用于模拟不太好的2G蜂窝网络
带宽256 kbps(上传和下载)
利用100%
延迟300 ms
MTU为1500字节
可靠性75%
稳定75%
不稳定的质量范围为20%至25%
原文:https://www.jianshu.com/p/b7c56df6f7d0