Packet Switching(分组交换机制)

Problem(解决什么问题)

分组交换要解决的是:当多个通信流共享同一套网络资源时,数据如何被切成 packet,并在多个节点之间一跳一跳地转发。

它关心的是:

  • packet 如何被网络承载
  • packet 如何在节点间逐跳传递
  • packet 为什么会在转发过程中出现等待
  • packet 的时延为什么可以按跳数累加

Basic Idea(核心思想)

分组交换的核心思想是:

把数据切成 packet,节点采用存储转发,packet 逐跳经过路由器,最终到达目的端系统。

它带来的结果是:

  1. 多个 packet 可以共享同一条链路
  2. packet 在每一跳都可能经历排队、发送和传播
  3. 端到端时延通常是逐跳累加的

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:加入传播时延

如果路径上有 条链路,且每条链路传播时延相同,那么总传播时延部分是:

因此端到端总时延中的发送 + 传播部分可以写成: