与我合作的一家软件供应商需要千兆以太网连接才能实现传统的客户端-服务器软件设置。我惊讶地问他们为什么需要在客户端和服务器之间传输如此大量的数据,供应商回答说他们不传输任何大数据包,而是传输许多小数据包。他告诉我,根据他们的经验,这在千兆位上比在 10 兆或 100 兆位连接上要快得多。
我理解以太网是一种串行连接,传输速度主要受介质(光纤、铜线等)限制,因此我感到很困惑。供应商是否对这种现象给出了我可能遗漏的理论解释?我的背景并不是硬件,所以也许千兆标准中存在优化措施,可以以某种方式针对这种特殊情况进行优化。
因此,假设我必须发送 1,000,000 个只有几个字节的数据包,那么为什么千兆以太网上的速度会比 10/100 兆以太网上的速度更快呢?
答案1
数据包速率 (pps) 是线路速度除以数据包大小的直接结果。因此,它可以扩展线性地以线速度。
以太网帧的最小大小为 84 字节,最大大小(不考虑巨型帧)为 1,538 字节。因此,可以实现以下帧速率:
- 100 Mbit/s:8,127 f/s 至 148,809 f/s
- 1 GBit/s:81,274 f/s 至 1,488,096 f/s
从吞吐量方面来说,带宽越大越好。但从延迟方面来说,带宽可能越差,而且可能消耗更多电量。
答案2
如果我有一个 5kb 的数据包,那么线路能够传输 10、100 或 1000mbit 又有什么关系呢?
线路不是以“兆比特”为单位,以兆比特为单位每秒。它是适用于任何数据大小的速率单位 - 就像“公里/小时”适用于任何距离一样。(例如,以 20 公里/小时的速度行驶 10 米仍比以 2 公里/小时的速度行驶 10 米快 10 倍。)
如果需要,可以缩小单位 - 例如,1 km/h 可以转换为 ~0.27 m/s。同样,1 Gb/s 可以转换为 1 kb/µs。这仍然是相同的值,但您可以看到以 1 kb/µs(1 Gb/s)传输 5 千比特需要 5 微秒 - 比 50 µs 快十倍。
[我希望我的计算是正确的]
因此,假设我必须发送 1'000'000 个只有几个字节的包,那么为什么千兆以太网上的速度会比兆以太网上的速度更快呢?
它之所以被称为“千兆以太网”,是因为其数据传输率为 1 Gbps(每秒千兆位)。这实际上不是一个容量,而是一个固定时钟速率。例如,如果你发送 1 千兆比特,它将以 1 Gbps 的速度在一秒钟内传输完毕。但如果你发送 10 兆比特,它们将在 0.01 秒内传输完毕,仍为 1 Gbps,并且链接将在剩余的0.99秒内保持空闲状态。
换句话说,它不会根据数据包大小改变齿轮。无论您发送由大数据包组成的 X Gb,还是由小数据包组成的 X Gb,它们都是总是以相同的 1 Gbps 速率发送,这始终比 100 Mbps 快 10 倍。
了解到以太网是一种串行连接,小数据包的传输速度主要受介质(光纤、铜线等)的限制,
并非所有串行连接都以相同的方式工作。在同一介质上可实现的比特率可能有所不同,具体取决于编码和调制您可以使用它们将这些位放在线上。(还有许多其他我不知道的东西。)除此之外,千兆以太网(以及类似的 USB 3.2、PCI-e、SATA 和许多其他串行链路)使用多个通道同时发送多个数据块。