路由器的存储转发机制
🔧 问题设定:
- 一共有 P 个分组(packet)
- 每个分组大小为 L(比特)
- 链路速率为 R(比特/秒)
- 网络中有 N 条链路(意味着有 N+1 个节点,中间有 N 个转发节点)
✅ 1 个分组经过 N 条链路的时延:
存储转发网络中,每一跳都要先完整接收到整个分组,再开始向下一个节点发送。
因此,一个分组通过一条链路的传输时延为:
1 | L / R |
所以一个分组通过 N 条链路,总时延为:
1 | N × L / R |
✅ P 个分组经过 N 条链路的时延:
这是关键点。我们假设网络是流水线式传输的,也就是说:
- 当第一个分组发送到第 2 个节点时,第二个分组可以开始在第 1 条链路上传输;
- 所以不是简单的 P 倍时延!
结论:
P 个分组通过 N 条链路的总时延为:
1 (N + P - 1) × (L / R)
🧠 为什么是 (N + P - 1) × (L / R)?
第一个分组需要 N 次传输,每次耗时 L/R,总耗时是 N·L/R;
后续每个分组在流水线中紧随其后,每个分组间的“间隔”为一跳的传输时延 L/R;
所以总的结束时间是:
1
2
3第一个分组通过 N 条链路用时:N × L/R
后面还有 P - 1 个分组,每个分组只需要 L/R 的延迟才能排队完成
⇒ 总时延 = N·L/R + (P - 1)·L/R = (N + P - 1)·L/R
🧪 举个例子:
- N = 3 条链路
- P = 5 个分组
- L = 1000 bits
- R = 1 Mbps
计算:
1 | (3 + 5 - 1) × (1000 / 1,000,000) = 7 × 0.001 = 0.007 秒 |
分组交换中的时延
🌟 处理时延(Processing Delay)
📌 定义:
处理时延是指 路由器或主机接收到一个分组后,用于分析该分组首部、决定转发方向、查找路由表等操作所花费的时间。
也可以包括一些基本的错误检测(比如 CRC 校验)时间。
🧠 举个例子:
当你发出一个分组到达路由器时,这个分组并不会立刻被发送出去,路由器要:
- 检查 IP 头是否正确(CRC 校验);
- 解析目标 IP 地址;
- 查找路由表,决定从哪个端口转发;
- 准备发送。
这些操作花的时间就是处理时延。
⏱️ 时间量级:
- 通常非常小,一般在 微秒(μs)级别;
- 相比之下,传输时延、传播时延可能是毫秒级别,甚至更长;
- 所以在大多数粗略估算中,处理时延可以忽略,但在高精度网络性能分析(如实时系统、交换机设计)中就要考虑。
📌 排队时延(Queueing Delay)
🧠 定义:
排队时延是指一个分组在路由器或交换机中排队等候输出链路的时间。它出现在链路繁忙的时候。
通俗点说:
分组到了路由器,结果出口处已经有很多分组正在等待发送,于是它就只能在队列里等着,这个等待的时间就是排队时延。
🔧 举个例子:
假设你是一个快递员(路由器),你面前有一条狭窄的桥(链路),每次只能通过一辆车(分组)。
- 没有车:直接上桥,排队时延为 0;
- 前面有几辆车在排:你得等它们一个个过去;
- 越来越多车,桥过不来,排队越来越长,排队时延也越高。
我们来系统讲讲 传输时延(Transmission Delay)。
📌 传输时延
传输时延是指:
发送端将数据比特“推出”到链路上所需的时间。
也就是说,它描述的是 数据从发送端主机进入链路所花的时间。
🧮 传输时延的计算公式:
传输时延= $数据包大小/链路带宽$
- 数据包大小通常以 比特(bits) 为单位
- 链路带宽单位是 bps(bits per second)
🧠 举个例子:
假设:
- 数据包大小 = 1000 字节 = 8000 bits
- 链路带宽 = 1 Mbps = 1,000,000 bits/s
那么:
传输时延=8000/1000000=0.008 秒=8 毫秒
🚦 和传播时延的区别?
类型 | 定义 | 影响因素 |
---|---|---|
传输时延 | 将数据从主机推出到链路的时间 | 数据大小、带宽 |
传播时延 | 信号在线缆中从一端传到另一端的时间 | 物理距离、传播速度 |
举个比喻:
就像你往水管里倒水:
传输时延 是你往水管里倒水需要多久,
传播时延 是水从水管一头流到另一头需要多久。
✅ 总结一下:
- 📌 传输时延 = 数据大小 ÷ 带宽
- 🔍 单位一般是秒(s)、毫秒(ms)或微秒(μs)
- 🚫 与传播时延、排队时延、处理时延不同,它只跟数据大小和带宽有关
很好!接下来我们来讲讲 传播时延(Propagation Delay),它是计算网络时延的重要组成部分之一。
🧠 传播时延
传播时延(Propagation Delay) 是指:
一个比特从链路的一端“传播”到另一端所需的时间。
也就是说,它代表的是 信号在物理媒介(光纤、电缆等)中传输所需要的时间。
🧮 传播时延计算公式:
传播时延 = $\frac{\text{链路长度}}{\text{信号在媒介中的传播速度}}$
- 链路长度单位:通常是 米(m)
- 传播速度单位:通常是 米/秒(m/s)
✅ 总结一下:
- 📌 传播时延 = 距离 ÷ 传播速度
- 📏 与链路长度成正比,速度越快、距离越短,传播时延越小
- 🚫 与数据包大小、带宽无关