VSAT 中的网络问题

VSAT 中的网络问题

在我的服务器-客户端架构中,我组播通过卫星链路从服务器向许多客户端发送 100 MB 文件。网络遍历经过 5 跳。我有 10Mbps(即每秒 1250 千字节)带宽链接。

当我将第一个文件多播到许多客户端时,第一跳获得的传入速度约为 9.0 mbps,但接收端的速度仅为约 4.2 mbps。所有客户端均为 10mb 半双工。

我可以看到,网络使用率很低;但我不知道具体在哪里。如果服务器以 ~9.0 mbps 的速度发送,那么客户端应该获得相同的速度。

我正在使用可靠的 UDP 进行多播。

有什么方法可以找出每个跃点(对于特定端口)的传入和传出带宽使用情况是多少?是否存在任何可以达到此目的的工具/实用程序/应用程序。

所有的跃点都位于远程位置,因此不可能越过那里。

答案1

工具

有什么方法可以找出每个跃点(对于特定端口)的传入和传出带宽使用情况是多少?

除非您拥有该网络元件,或者您的第三方 WAN 提供商披露了该信息,否则您只能估计沿网络路径的端到端可用入口和出口带宽。见下文。

是否存在任何可以达到此目的的工具/实用程序/应用程序。

  • 对于我上面提到的路径“可用带宽估计”,您应该回顾一下Sally Floyd 的端到端 TCP/IP 带宽估算工具档案。我最熟悉的是yaz,它基于单播UDP数据包。
  • 要查看您是否在任何给定的路由器跃点处丢弃数据包(这是您的底线问题),您可以使用mtr;还有一个win-mtr客户端,支持Windows。要查看我通常如何解决丢包问题的简单示例,请参阅我在超级用户上的回答。此技术最有效地在数据包丢失发生的第一个点提供可见性(因为mtr在纠正第一个点之前,不会为超出该点的下游丢弃提供太多可见性)。

粗略估计掉落位置的一个简单方法是安装mtr在您的服务器上,然后运行mtr在传输 100M 文件时跟踪单个多播客户端的数据包丢失情况。为了更精确的测量,您可以使用iperf让网络而不是你的 100M 文件饱和(只要你与公司的其他组适当地协调 WAN 停机时间)。

图表

我的回答的其余部分将使用下图作为参考:

Mcast_问题

图中:

  • R1 到 R5 是 IP 路由器
  • S1和S5是以太网交换机
  • 172.16.1.0/24 上的蓝色服务器代表您的多播服务器。
  • C51 到 C55 是多播接收器的示例(可以是任意数量的接收器)

R1 和 R5 之间的 WAN 细节通常并不重要,我们只需要一个基线拓扑,这样我们就可以达成共识。

据我所知,您是说,当您发送 100MB 文件时,172.16.1.0/24 上的 R1 接口显示大约 9Mbps,而当客户端通过可靠的 UDP 多播接收时,172.16.5.0/24 上的 R5 接口显示大约 4.2Mbps 。当您说可靠时,我认为这意味着多播服务中内置了某种数据包排序,并且客户端应用程序知道如何从服务器请求重传。

诊断

如果此描述正确,则可能有以下几个原因:

  1. 正如您在问题中所断言的,R1 之后的某个地方出现链路拥塞。
  2. 路径中任何 Rx 设备(包括 R1 和 R5)的性能限制(例如达到多播复制性能限制)
  3. 您遇到了 10M 半双工以太网的吞吐量限制。

原因 1 或 2 可以通过使用来揭示mtr。但是,原因 3 值得进一步讨论。10M/半链路最多可为单向转移。如果您在 10M/half 链路上发送双向流量,由于以太网的原因,您通常会看到远低于 10MbpsCSMA/CD动态。在半双工链路上,以太网不能同时发送和接收;如果站点尝试这样做,它们的帧将发生冲突,并且两个站点将延迟重传随机时间。

我以测试网络为生。当我测试 10M/half 链路的有效双向吞吐量时,我通常看到在 3Mbps 到 4Mbps 之间。您在上面分享的数字听起来非常相似。我没有足够的证据来提出指控,但如果你的 10M/half 链接是问题所在,我不会感到惊讶;特别是如果 R5 和 S5 之间的链路为 10M/half。

答案2

假设您可以远程访问每台计算机(并拥有特权帐户),您可以尝试该iftop实用程序。

类似的东西iftop -f udp -F "port <port> and host <previous hop>"应该为您提供给定端口上给定主机的所有 udp 流量。有关构造过滤器的更多信息,请参阅手册页。 (另请注意:假设您可以访问网络,您还可以通过指定网络/网络掩码来监视整个网络,如下所示-F 10.0.0.0/255.0.0.0:)

如果您不想/无法安装 iftop,但可以访问 iptables,您也​​可以让它记录您的流量并使用它来计算带宽。

首先为您的应用程序设置一条链并转发所有传入/传出流量:

iptables -N $CHAIN && iptables -A FORWARD

然后设置单独上传/下载的规则:

# Downloads
iptables -A FORWARD -d $PREVIOUSHOP -j $CHAIN

# Town A Uploads
iptables -A FORWARD -s $PREVIOUSHOP -j $CHAIN`

现在查看每个链的流量使用情况:iptables -L -v -n

相关内容