跳转到正文

千兆网卡为什么跑不出每秒千兆字节?延迟又是从哪来的? ​

阶段 1 · 物理层 · 第 7 课

宿舍刚升级了“千兆宽带”,你在第 6 课用 ethtool 确认网卡已经稳定工作在 1000 Mb/s 全双工。可当你满怀期待地下载一个大文件时,下载软件上显示的速度却停在 112 MB/s 左右,怎么也到不了 1000。与此同时,室友在旁边打游戏,哪怕只发送几百字节的小数据包,屏幕右上角依然显示着 25 ms 的网络延迟。

为什么 1000 Mb/s 的链路最多只能测出约 118 MB/s 的下载速度?换了更快的网卡,能让跨省光缆里光脉冲的飞行速度变快吗?

学完本课后,你将能够:

  1. 区分接口速率(带宽)(标称速率)与端到端实际吞吐量,并熟练换算 Mb/s 与 MB/s。
  2. 算出给定帧长度、链路速率、介质距离与信号速度下的发送时延和传播时延。
  3. 完成阶段 1 总目标:结合波形、链路状态与四类时延模型,判断一个网络现象究竟受限于带宽还是受限于距离。

三段水管类比:左右两端接入链路为 1000 Mb/s,中间瓶颈链路为 100 Mb/s,端到端吞吐量受最窄的 100 Mb/s 瓶颈限制,且扣除协议首部开销后约为 94.9 Mb/s。

1. 速率(带宽) vs 吞吐量:为什么下载速度到不了 1000? ​

要解开“千兆宽带下载只有一百多兆”的疑惑,我们需要连续跨越两道换算关卡:

第一关:比特(bit,b)与字节(Byte,B)相差 8 倍 ​

回顾第 1 课,1 个字节(Byte)(B)等于 8 个比特(bit)(b):

  • 网络运营商、交换机端口和 ethtool 标注的速率(带宽)(速率),一律按**每秒传输多少个比特(bit/s 或 bps)**计算,并且使用十进制词头:
    • 1 kb/s=103 bit/s
    • 1 Mb/s=106 bit/s
    • 1 Gb/s=109 bit/s
  • 而浏览器、迅雷、Steam 等下载软件显示的下载速度,通常是每秒写入硬盘多少个字节(MB/s)。
  • 因此,就算没有任何损耗,1000 Mb/s 换算成每秒字节数也只有:1000 Mb/s8 bit/Byte=125 MB/s

第二关:瓶颈链路与协议封装开销 ​

如上图所示,数据从服务器流向你的电脑,往往要经过多段不同速率的链路:

  1. 瓶颈带宽限制:如果接入网线是 1000 Mb/s,但中间某一段出口链路只有 100 Mb/s,那么端到端的最大水流速度(即吞吐量上限)就卡在最窄的 100 Mb/s 上。
  2. 协议首部开销:正如第 3 课所讲,网卡发出的比特里不全是你的文件内容,还包含以太网前导码、帧间隔、帧头帧尾、IP 首部和 TCP 首部(通常每个满载帧约有 5%∼6% 的控制开销)。
  3. 扣掉这约 5.1% 的封装开销后,千兆以太网在应用层能测出的有效吞吐量上限大约是 949 Mb/s,除以 8 正好就是你在下载软件里看到的 112 MB/s ~ 118 MB/s!

2. 四类时延:一个数据包在路上花了哪些时间? ​

带宽决定了“水管有多粗”,而**时延(Delay / Latency)**决定了“第一滴水从龙头流到终点要花多久”。当一个数据包从主机 A 出发,经过交换机或路由器到达主机 B 时,总单向时延由四部分组成:

四类时延的位置:发送端网卡将比特推上线产生发送时延(L/R),信号在介质中飞行产生传播时延(D/v),到达中间设备后产生排队时延与处理时延。

时延类型发生在哪里?物理意义与决定因素计算公式与常用单位
① 发送时延(传输时延)发送端网卡出口网卡把一帧的第 1 个比特到最后 1 个比特全部推上网线所需的时间dtrans=L (帧比特数)R (链路速率 bit/s)
② 传播时延铜缆、光纤或空气中1 个比特变成物理信号后,从链路这头飞到那头所需的时间(铜缆/光纤中 v≈2.0×108 m/s)dprop=D (距离 m)v (传播速度 m/s)
③ 处理时延交换机 / 路由器内部设备检查帧差错(FCS)、读取首部并查找转发表/路由表的时间硬件转发通常为微秒(μs)或纳秒级
④ 排队时延设备的输出/输入队列当出接口繁忙时,数据包在内存队列里排队等待前面数据包发完的时间随网络拥塞程度从 0 到数十毫秒剧烈波动

最易混考点:发送时延(L/R)vs 传播时延(D/v) ​

在华为 ICT 大赛和计算机网络考试中,90% 的计算失分都源自把发送时延和传播时延搞混,或者忘记把字节乘以 8。请记住一个形象的比喻:

  • 发送时延(L/R)像车队通过高速收费站:100 辆车的车队(帧长 L),收费站每秒放行 10 辆(速率 R),整支车队全部驶入高速需要 100/10=10 秒。它只看车队多长、收费站多快,跟高速公路有多长毫无关系。
  • 传播时延(D/v)像头车在高速公路上狂奔:高速公路长 200 千米(距离 D),车速是每小时 100 千米(电磁波传播速度 v),头车跑到终点需要 2 小时。它只看路有多远、电磁波跑多快,跟收费站放行速度毫无关系。

手算一步:百米千兆网线 vs 千里万兆光纤 ​

让我们亲手算两个典型例子(取铜缆与光纤中的信号传播速度 v=2.0×108 m/s,即每微秒跑 200 m,每毫秒跑 200 km):

  1. 场景 A:工位电脑通过 100 m 千兆网线(R=109 bit/s)发送一个 1500 Byte 的满载帧
    • 帧比特数:L=1500 Byte×8=12000 bit
    • 发送时延:dtrans=12000 bit109 bit/s=12×10−6 s=12 μs
    • 传播时延:dprop=100 m2.0×108 m/s=0.5×10−6 s=0.5 μs
    • 对比发现:在百米局域网里,发送时延(12 μs)是传播时延(0.5 μs)的 24 倍!
  2. 场景 B:跨城数据中心通过 1000 km 万兆光纤(R=1010 bit/s)发送同一个 1500 Byte 的帧
    • 发送时延:dtrans=12000 bit1010 bit/s=1.2 μs
    • 传播时延:dprop=106 m2.0×108 m/s=5×10−3 s=5000 μs (即 5 ms)
    • 对比发现:在长途骨干网里,光脉冲在光纤里飞行的时间(5000 μs)是发送时延(1.2 μs)的 4000 多倍!哪怕把网卡升级到 100 Gbps,这 5 ms 的物理光速飞行时间也一微秒都省不掉。

3. 动手预测并验证:调整帧长、速率与距离 ​

先在心里预测:如果把速率从 1000 Mb/s 降到早期的 10 Mb/s,百米网线上的发送时延会放大多少倍?点击下方实验面板的预设按钮或拖动滑块亲自验证:

交互实验 · 发送时延 vs 传播时延

调整帧长度、接口速率和链路距离(设铜缆/光纤信号传播速度 v = 2.0 × 108 m/s),观察哪项时延占主导。

发送时延 (L / R)
12.00 μs
传播时延 (D / v)
0.50 μs
两项合计
12.50 μs

结论:当前场景下 发送时延占主导(升级网卡速率能明显提速)。

课后巩固 · 练习 · 单选

主机通过 100 Mb/s(即 10^8 bit/s)以太网接口发送一个长度为 1250 字节(Byte)的帧,链接的双绞线长 100 m,电信号传播速度为 2.0 × 10^8 m/s。该帧的发送时延和传播时延分别是多少?

课后巩固 · 练习 · 单选

某客户端经千兆交换机(1000 Mb/s)连入企业出口路由器,而企业出口的互联网专线速率上限为 50 Mb/s。客户端从公网服务器下载大文件时,为什么下载速度始终无法超过约 6 MB/s(约 48 Mb/s)?

4. 阶段 1 总结与下一步 ​

至此,我们已经走完了**阶段 1(物理层,第 4~7 课)**的全部旅程!回头看一眼物理层为我们解决了什么问题:

  1. 波形、噪声与编码(第 4 课):在存在衰减和噪声的信道上,利用线路编码(曼彻斯特、4B/5B、8B/10B、64B/66B)与多电平调制保持时钟同步,在高信噪比(SNR)下实现极低误码率(BER)。
  2. 传输介质(第 5 课):100 米内用对绞抗干扰的双绞线,机房短距高速用多模光纤(MMF),跨楼宇与远距离主干用单模光纤(SMF),移动接入用无线电波。
  3. 网卡与链路状态(第 6 课):网卡内部由 PHY 负责物理信号与自动协商,由 MAC 负责帧处理;通过 ip -br link 和 ethtool 可以一眼分辨管理状态(UP)与物理连通状态(LOWER_UP)。
  4. 速率与四类时延(第 7 课):分清 bit/s 与 Byte/s、接口速率(带宽)与实际吞吐量,掌握发送时延(L/R)与传播时延(D/v)的计算。

现在,物理层已经能把一连串 0 和 1 可靠地从网线这一头送到那一头。但新的问题马上出现了:物理层看到的只是源源不断的比特流,接收端网卡的 MAC 控制器怎么知道一个帧从哪一位开始、到哪一位结束?如果交换机上连着十台电脑,这一帧又该交给谁? 下一阶段(阶段 2 · 数据链路层),我们从以太网帧和 MAC 地址继续追下去!