Packet Switching(分组交换机制)
Problem(解决什么问题)
分组交换要解决的是:当多个通信流共享同一套网络资源时,数据如何被切成 packet,并在多个节点之间一跳一跳地转发。
它关心的是:
- packet 如何被网络承载
- packet 如何在节点间逐跳传递
- packet 为什么会在转发过程中出现等待
- packet 的时延为什么可以按跳数累加
Basic Idea(核心思想)
分组交换的核心思想是:
把数据切成 packet,节点采用存储转发,packet 逐跳经过路由器,最终到达目的端系统。
它带来的结果是:
- 多个 packet 可以共享同一条链路
- packet 在每一跳都可能经历排队、发送和传播
- 端到端时延通常是逐跳累加的
Working Process(工作流程)
1. 数据被切成 packet
发送端把较大的数据切成一个个 packet,便于网络逐个转发。
2. 中间节点采用存储转发
packet 到达路由器后,节点先接收完整 packet,再查表决定输出链路,然后转发出去。
flowchart LR A[输入链路] --> B[接收完整 packet] B --> C[查转发表] C --> D[输出链路]
3. packet 在输出缓存中等待
如果输出口繁忙,packet 先进入输出缓存等待。
这一段产生:
排队时延(queuing delay)4. packet 被完整推出输出端口
轮到这个 packet 时,它会被完整发送到下一条链路。
这一段产生:
发送时延(transmission delay)计算公式:
其中:
- :packet 长度
- :链路发送速率
5. 信号在链路上传播
packet 的比特进入链路后,信号从一端传播到另一端。
这一段产生:
传播时延(propagation delay)计算公式:
其中:
- :链路长度
- :传播速度
Core Calculations(核心计算)
1. 发送时延
一个 packet 的发送时延:
含义:
- packet 有 个比特
- 链路每秒发送 个比特
- 把整个 packet 推出端口需要 时间
2. 传播时延
一个 packet 在单条链路上的传播时延:
含义:
- 是链路长度
- 是传播速度
- 这部分只由链路本身决定
3. 多个 packet 连续通过同一条链路
如果有 个 packet 连续通过同一条链路,那么发送时延部分是:
原因:
- 每个 packet 都要完整发送一次
- 同一条输出链路上不能把一个 packet 的发送过程拆成无限并行
4. 一个 packet 经过 N 条链路
如果 1 个 packet 经过 条链路,那么发送时延部分是:
原因:
- 每经过一条链路,都要完整发送一次
- 存储转发使得 packet 在每跳都要重新进入发送过程
如果每条链路传播时延相同,总传播时延部分是:
所以端到端的发送 + 传播部分可以写成:
flowchart LR P[packet] --> Q[输出缓存排队] Q --> T[完整发送到链路] T --> Pr[在链路上传播] Pr --> N[下一跳节点]
Example(具体例子)
例 1:单条链路上有 N 个 packet
总发送时延:
例 2:1 个 packet 经过 N 条链路
总发送时延:
例 3:加入传播时延
如果路径上有 条链路,且每条链路传播时延相同,那么总传播时延部分是:
因此端到端总时延中的发送 + 传播部分可以写成:
Related Concepts(关联概念)
- Packet:时延分析的基本对象
- Router:逐跳转发 packet 的节点
- Host & End System:packet 的起点和终点
- Packet Delay, Forwarding, and Routing QnA:这次学习过程的问答记录
- Network Fundamentals:协议、主机、路由器的整体理解