z80*_*000 10 networking multicast udp datacenter packetloss
假设我在同一个数据中心有 2 台机器,但不一定在同一个机架中。
在这两台机器之间使用 UDP 发送时,丢弃的数据包有多常见?
我的假设下问这个,因为只有在机器之间最少数交换机的数据包不会被丢弃在所有。
无序数据包到达同一数据中心有多常见?我的假设是 99.9% 的时间只有一条路线,所以这不会发生。
然而,每当我发现自己在思考绝对的问题时,我知道我一定错过了一些东西!
我需要哪些背景信息才能更好地了解何时会出现丢弃的数据包,以及它们可能被丢弃的频率以及同一数据中心内的机器出现故障的频率?
最终,我试图在位于同一数据中心的不同 Linode VPS 实例之间进行通信时决定是使用多播 UDP 还是 PGM。信息必须按顺序到达。当然,UDP 听起来不是那么好!
但是,如果人们可以期望在同一个数据中心内实现几乎完美或完美的交付,那就没问题了。但是,我正在测试这个假设。
谢谢。
Dav*_*ney 11
您不能依赖 UDP 来按顺序传送数据包,因为规范不提供这些保证。即使假设最理想的情况,两台主机之间的单根以太网电缆,仍然存在操作系统、网络堆栈、NIC 驱动程序和您编写的 libc 实现的问题。
在该链的每一步,该代码的编写者都将选择不优先排序 UDP 数据包,即使它们是按顺序到达的,原因很简单,他们不必这样做。
一个人为的例子可能是传入数据包被读入的数据结构,它可能是一个环形缓冲区。按顺序到达的数据包将按顺序放入环形缓冲区,但驱动程序编写者将它们按内存顺序转储到网络代码的上层可能更简单,从而随机化它们的顺序。
就您的情况而言,在共享基础架构上运行的虚拟机将针对容量而不是性能运行,那么预测接收 UDP 数据包顺序的可能性将很低。
简而言之,如果规范说你不能依赖 UDP 数据包排序。您不能依赖它,也不能尝试调整环境以提供比规范所承诺的更强大的保证。
归档时间: |
|
查看次数: |
1561 次 |
最近记录: |