我认为我在计算带宽数学时遇到了一个相当基本的问题。
我从事流媒体视频工作,经常有客户问我一个著名的问题:“我一次可以推送多少个流?”
我的回答始终如一:
假设你有 1,024 公斤少量每秒的流。这不太可能,因为这是极高质量的高清流。无论如何,如果你有一台 100 兆少量每秒链接,这意味着通过简单的计算,理论上你应该能够同时推出 100 个这种极高质量的流。
...我总是收到这样的回复“只有 100 个流!?!?!”
我不知道该怎么回答。我的计算准确吗?在野外,客户端经常会看到比这高得多的并发用户,并且流质量很高。我的计算是否漏掉了什么?
答案1
从技术上讲,考虑到你问题中的单位,你的数学是错误的。然而,它更语义上错误的,因为它可以被解释为正确的,这取决于如何定义单位。
最大的困惑在于所使用的单位。千比特与千比比特。 A兆比特与兆比比特。
请参阅维基百科页面数据速率单位了解更多详情。
此外,我假设在线流的数据速率。如果您的媒体流(编码器输出的内容)为每秒 1,024 千比特,则线路数据速率(RTP、UDP、IP、以太网开销)将大于每秒 1,024 千比特。如果您想在现实世界中做到准确,则必须考虑开销。但是,下面的示例是为了说明与编码器输出速率无关的数学运算。
对于我们的例子,我假设在线数据速率为每秒 1,024 千比特,即编码器输出小于每秒 1,024 千比特。
每秒 1,024 千比特在线数据速率为每秒 1,024,000 比特。每秒 100 兆比特的链路即为每秒 100,000,000 比特。
100,000,000 bps / 1,024,000 bps可能产生 97100 兆比特链路上的“流/数据速率”为每秒 1,024 千比特。
就像我的物理老师总是结结巴巴地说的那样: 单位!单位!单位!
答案2
不,你的计算是正确的。1024 千比特等于 1 兆比特。或者说,1024千比比特是 1 兆比比特。但是,1 兆比比特是很多单个流的带宽。
答案3
您的计算结果已经足够接近了。人们在野外推送更多流的原因可能是因为某些客户端实际上没有跟上流的速度。如果您的客户端提供数据包接收报告,您应该会发现客户端每秒接收的平均字节数根本无法超过出站线路可以容纳的字节数。
答案4
还有另一个方面需要注意。通常,当我们谈论每秒 100MBit 时,我们谈论的是以太网。通过以太网发送的所有数据都被分成数据包。最大的以太网数据包(MTU - 最大传输单元)默认为 1518。从这个大小中,您必须减去标头:
- 以太网报头 (L2) - 18 字节
- IP 报头(L3)- 20 字节,以及
- TCP 报头(L4)- 20 字节
因此,总共有 58 字节的标头和 1460 个可用于数据传输的字节。这是另一个约 96.2% 的系数。