丢包在数据​​中心内的通信中有多普遍?


10

假设我在同一数据中心中有两台计算机,但不一定在同一机架中。

在这两台计算机之间使用UDP发送时,丢弃的数据包有多普遍?

我的假设下问这个,因为只有在机器之间最少数交换机的数据包不会被丢弃在所有

无序数据包到达同一数据中心的情况有多普遍?我的假设是,只有99.9%的时间只有一条路线,所以这不可能发生。

但是,每当我陷入绝对的思考时,我都知道我一定会错过一些东西!

我需要什么背景信息来更好地了解何时应该丢弃数据包,以及丢弃数据包的频率以及在同一数据中心内的机器出现故障的频率?

最终,我试图在位于同一数据中心的不同Linode VPS实例之间进行通信时,决定使用多播UDP还是PGM。信息必须按顺序到达。当然,UDP听起来不那么好!

但是,如果可以期望在同一数据中心内实现几乎完美或完美的交付,那很好。但是,我正在测试该假设。

谢谢。

Answers:


11

您不能依赖UDP来按顺序传递数据包,因为该规范未提供这些保证。即使假设是最理想的情况,即两台主机之间只有一条以太网电缆,仍然存在操作系统,网络堆栈,NIC驱动程序和您编写所针对的libc实现的问题。

在该链的每一步中,该代码的编写者都会选择按优先级排序UDP数据包,即使这些数据包是按顺序到达的,其原因也很简单。

一个人为的例子可能是传入的数据包被读入的数据结构,它可能是一个环形缓冲区。按顺序到达的数据包将按顺序放入环形缓冲区,但对于驱动程序编写者而言,按内存顺序将其转储到网络代码的上层可能更简单,从而使它们的顺序随机化。

考虑到您的情况,虚拟机将在共享基础结构上运行,而该共享基础结构将按数量运行,而不是按性能运行,因此预测将接收UDP数据包的顺序的可能性较低。

简而言之,如果规范说您不能依赖UDP数据包排序。您不能依靠它,也不能尝试调整环境以提供比以前承诺的规格更强大的保证。


这就是我认为应该思考的。谢谢您说得不错!
z8000 2010年

1
如果您想要可靠的多播(可能用于流传输),请访问en.wikipedia.org/wiki/Real-time_Transport_Protocol
Dave Cheney 2010年

0

如果有人对实验感兴趣,请使用Wireshark。如果有人真的对慢速连接或丢包的情况有所了解,我们只需在交换机上镜像端口,然后用Wireshark连接一台笔记本电脑,然后看看。


Linode上的FWIW VPS实例无法进入混杂模式。
z8000 2010年

您应该能够在计算机上本地安装Wireshark来捕获传入的数据,或者仅镜像交换机上的端口并以此方式捕获数据。如果为可能共享几个端口的虚拟系统完成镜像,端口将变得更加棘手。但是Wireshark可以过滤IP和我认为主机名之类的特定项目。

0

几乎任何交换机都会随时导致两个数据包的重新排序,并且许多网络协议(例如PGM)都将其考虑在内。

要考虑的一件事是,大多数数据中心会阻止数据报并阻止多播,以简化和减少其网络基础结构的开销。

仅当您启用了PGM路由器辅助功能并且知道服务器和客户端之间的网络元素时,才需要使用IP / PGM协议本身,否则,请使用封装在UDP中的PGM并节省管理应用程序权限的负担。

如果使用ØMQ之类的消息传递层,则可以将IP / PGM,UDP / PGM或TCP覆盖网络的选择推迟到部署和集成。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.