计算机网络自顶向下方法3——详解分组交换时延、丢包、吞吐量
详解分组交换网络性能三要素:时延、丢包与吞吐量
本文深入剖析分组交换网络中决定性能的关键指标,帮助你从本质上理解网络“快慢”的成因。
在分组交换网络中,数据被分割成一个个分组 独立传输。这种设计带来了高效,也引入了几个至关重要的性能概念。理解它们,是诊断网络问题、进行系统优化的基础。
一、时延:数据包从出发到抵达的总时间
时延是指一个分组从源端系统出发,到最终抵达目的端系统所经历的总时间。它并非单一因素造成,而是由以下四种主要时延叠加而成:
1. 处理时延
定义:分组到达路由器后,路由器检查其首部、决定其转发方向所花费的时间。
动作包括:
检查比特级错误。
解析IP首部,提取目的IP地址。
查询转发表,确定该分组应从哪个输出链路转发。
影响因素:路由器的处理能力、网络层协议的处理复杂度。
典型值:通常为微秒级别或更短。
比喻:邮局分拣员拿起一个信件,查看邮政编码(检查首部),然后根据邮编决定把它扔进哪个地区的篮子(查询转发表)。这个过程所花的时间就是处理时延。
2. 排队时延
定义:分组在路由器的输出队列中等待被发送到链路上去的时间。
这是时延中最复杂、变化最大的部分。
影响因素:
流量强度:这是关键因素。
流量强度 = 分组到达速率 / 链路输出速率。如果流量强度 > 1,意味着到达的速率持续高于发送的速率,队列将无限增长,排队时延趋于无穷大。
如果流量强度 ≈ 1,队列持续繁忙,时延会很大。
如果流量强度 < 1,到达过程是随机的,即使平均速率低于输出速率,也可能因为分组突发到达而产生排队时延。
比喻:在高速公路收费站。即使收费站处理速度很快(高输出速率),但如果短时间内来了很多车(高到达速率),车辆也不得不在收费口排队等待。排队时间就是排队时延。
3. 传输时延
定义:将分组的所有比特推上(传输到) 链路所需要的时间。
计算公式:
传输时延 = 分组长度 / 链路带宽影响因素:
分组长度:分组越大,传输时延越长。
链路带宽:链路速率越高,传输时延越短。
比喻:一辆完整的货车通过一座桥。货车越长(分组越大),通过时间越长;桥面越宽,允许通行速度越快(带宽越高),通过时间越短。它只关心“把整个货车头到尾开上桥”的时间,不关心桥有多长。
4. 传播时延
定义:一个比特从链路的起点传播到终点所需要的时间。
计算公式:
传播时延 = 链路长度 / 传播速度影响因素:
物理距离:这是决定性因素。从北京到上海的光纤,传播时延远大于从你家到邻居家。
传播介质:信号在介质中的传播速度(在光纤和铜线中约为光速的2/3,即
2 * 10^8 m/s)。
比喻:货车的第一节车厢从桥头开到桥尾所需要的时间。它只关心桥的长度和货车的行驶速度,不关心货车有多长。
关键辨析:传输时延 vs 传播时延
| 特性 | 传输时延 | 传播时延 |
|---|---|---|
| 关注点 | 将分组推上链路 | 比特在链路上传播 |
| 决定因素 | 分组长度、链路带宽 | 物理距离、传播速度 |
| 比喻 | 车队通过收费站的时间 | 车队从收费站开到下一个城市的时间 |
| 谁更主导? | 在局域网、短距离中 | 在广域网、长距离中 |
总时延 = 处理时延 + 排队时延 + 传输时延 + 传播时延
二、丢包:当网络不堪重负
1. 丢包是如何发生的?
每台路由器的出口链路都有一个缓存队列。当分组到达路由器,发现输出链路正忙时,它会被放入这个队列中等待。
队列溢出:由于路由器的缓存空间是有限的,如果分组到达的速率持续高于发送速率,队列将会被填满。后续到达的分组将无处容身,只能被丢弃。这就是丢包。
主动队列管理:有时,为了向发送端发出“拥塞”信号,路由器甚至在队列满之前就会主动丢弃一些分组。
2. 丢包的后果
可靠性机制触发:对于TCP这样的可靠传输协议,丢包意味着接收端没有收到数据,它会通过确认机制 通知发送端。
重传:发送端检测到丢包后,会重新发送 那些丢失的分组。
性能下降:重传意味着有效吞吐量的降低和时延的增加。严重的丢包会导致网络连接变得极其缓慢。
丢包是网络拥塞的典型标志。
三、吞吐量:网络的真实有效速度
1. 定义
瞬时吞吐量:在某个瞬间,接收方接收到数据的速率。
平均吞吐量:在一段时间内,接收到的总数据量除以总时间。
我们通常关心的是平均吞吐量。它衡量的是端到端连接的实际有效数据传输速率。
2. 瓶颈链路原理
端到端的吞吐量不由路径上最快的链路决定,而是由最慢的链路决定。
经典比喻:水管系统
想象一组串联的水管,水流从最粗的水管流经一段细水管,再流入粗水管。
整体流速完全由最细的那段水管的直径(带宽)决定。
无论其他部分多粗,水流的速度都无法超过最细部分的极限。
3. 现实世界中的吞吐量
在你的上网体验中:
服务器吞吐量:你从视频网站下载,其服务器可能连接着10Gbps的链路。
你家的接入吞吐量:而你家的宽带是100Mbps。
端到端吞吐量:那么,你下载的有效吞吐量最多就是100Mbps。你的接入链路就是瓶颈链路。
即使你家有1000Mbps的宽带,如果你访问的服务器本身带宽不足或正在被大量用户访问,该服务器到其ISP的链路也可能成为新的瓶颈。
总结:三者间的内在联系
时延、丢包、吞吐量是相互关联的,共同描绘了网络的健康状况:
拥塞初期:随着流量增加,排队时延开始显著上升。
拥塞加剧:当队列开始被填满,丢包开始出现。
性能恶化:丢包触发重传,导致有效吞吐量下降,并且由于重传,总时延进一步增加。
理解这三者的关系和成因,是进行网络性能调优、应用程序开发(例如,为什么视频流要使用UDP而非TCP)以及系统架构设计的基础。下次当你遇到网络卡顿时,你就可以从这三个维度去思考问题的根源所在
