我从未有幸在需要复杂路由的环境中工作,或者如果确实需要,它会在我的上游处理。我一直使用非常简单的静态路由配置,从不需要进行任何多路径路由——因此我对这个主题普遍感到困惑。我想更好地了解多播和任播。
最近我设置了一个新的 Ubuntu Server 10.04,并注意到我的 UDP 服务器不再能够看到任何发送到接口的多播数据,即使在加入多播组之后也是如此。我在另外两台 Ubuntu 8.04.4 LTS 机器上进行了完全相同的设置,加入同一个多播组后接收数据没有问题。
以太网卡是 Broadcom netXtreme II BCM5709,使用的驱动程序是:
b $ ethtool -i eth1
driver: bnx2
version: 2.0.2
firmware-version: 5.0.11 NCSI 2.0.5
bus-info: 0000:01:00.1
Run Code Online (Sandbox Code Playgroud)
我正在使用 smcroute 来管理我的多播注册。
b$ smcroute -d
b$ smcroute -j eth1 233.37.54.71
Run Code Online (Sandbox Code Playgroud)
加入组后ip maddr 显示新添加的注册。
b$ ip maddr
1: lo
inet 224.0.0.1
inet6 ff02::1
2: eth0
link 33:33:ff:40:c6:ad
link 01:00:5e:00:00:01
link 33:33:00:00:00:01
inet 224.0.0.1
inet6 ff02::1:ff40:c6ad
inet6 ff02::1
3: eth1
link 01:00:5e:25:36:47
link 01:00:5e:25:36:3e
link 01:00:5e:25:36:3d
link 33:33:ff:40:c6:af
link 01:00:5e:00:00:01
link …Run Code Online (Sandbox Code Playgroud) 我与一个团队一起管理 500 到 600 台租用的 Windows 7 计算机,用于年度会议。我们有大量数据需要同步到这些计算机,最多 1 TiB。计算机被分成多个房间并通过非管理型千兆交换机连接。在我们将基本映像发送给租赁公司进行复制之前,我们会提前准备好这些计算机,并安装和配置 Windows,以及我们可用的任何文件。每年,我们都会让演示者在现场处理多达演出数据,这些数据需要推送到他们将要演示的房间。有时他们只有几个小文件,例如幻灯片 PDF,但可以有时要大得多> 5 GiB。
我们当前推送这些文件的策略是使用批处理脚本和 RoboCopy。对于大推送,我们实际上是使用 BitTorrent 客户端生成一个 torrent 文件,然后我们使用批处理 RoboCopy 将 torrent 推送到远程机器上的文件夹中,该文件夹由已安装的 BT 客户端监控。很多时候,这些数据需要在很小的时间窗口内立即推送。我们在控制室里有几台机器,它们与我们用于这些推送的地板上的机器相同。
我们偶尔需要在远程机器上执行一个程序,我们目前使用批处理和 PSexec 来处理这个任务。
我们希望能够以“对不起,你自己的错”来回应这些最后一分钟的推送,但它不会发生。BT 方法让我们有更快的响应时间,但是当有多个作业被推送时,整个批处理过程会变得混乱。我们将 Enterprise Ghost 用于其他流程,它在如此大规模的情况下效果不佳,而且对于像这样一年一次的任务来说,它确实非常昂贵。
编辑:地板上的远程机器运行 Windows 有一个硬性要求。控制机器没有硬性操作系统要求。由于上游路由器的复杂性,我真的很想远离多播。多播或 BitTorrent 是更好的方法吗?是否有另一种可能更好的协议?
我在同一个子网上有两台服务器。我安装了一个应用程序,它使用多播 UDP 在两台服务器之间传播事件并使它们保持同步。
这似乎没有发生,所以我想确保多播 UDP 消息能够通过作为我的第一步。
服务器运行的是 Windows 2008 R2。
如何测试两台服务器之间的多播 UDP 连接?
据我了解,IANA 分配的公共 IPv6 地址的前缀为 2000::/3。这些 IP 地址可通过 Internet 路由。
另一端的 IPv6 组播地址前缀为 FF00::/8。
我的理解是 IPv6 多播地址无法通过互联网路由。我对吗?如果是这样,有没有办法在 IPv6 中通过 Internet 进行一对多 IP 路由?
这是与上面相同的问题,但对于 Windows。
我正在寻找一个在标准操作系统(Windows 或 Linux)上运行的简单工具,我可以用它来测试路由器是否正确传递了多播。
客户要求我在充当路由器的 Linux 机器上启用多播路由,因为他们的电话系统需要多播才能实现一些功能。因为我不在客户端附近,所以我真的没有能力尝试在 Linux 上设置多播路由的各种方法。我可以在我的办公桌上设置一个与部署在他们网络上的路由器相同的路由器,但我不知道有什么好的简单工具可以用来生成或侦听多播流量。
我发现的一个多播工具是mcast.exe 工具,它是 Windows 2000/2003 资源工具包的一部分。从我在网上阅读的内容来看,mcast.exe 似乎不能跨路由器工作,只能在本地网络上工作,因此这对我测试多播路由似乎没有用。
那么您使用什么工具来测试组播路由是否正确设置?
我对术语有点迷茫。我想开始使用Bonjour。作为第一步,我试图找到一种简单的方法来使用它。我想我可能可以从命令行调用 Bonjour 来注册和发现服务。
当我问其他人怎么做时,我被告知 mDNS(适用于 Mac 和 Linux,但不适用于 Windows)。人们还告诉我,我可以使用“dns-sd”(适用于 Windows)。有人告诉我,“dns-sd”只是 mDNS 的别名。
但!后来我发现 DNS 服务发现和多播 DNS 是两个不同的东西(它们是兼容的,一起使用时效果特别好,但它们不需要彼此)。
此外,在我看来,mDNS 和 DNS-SD 是 Bonjour 的三个主要组件中的两个。这样对吗?我可以在没有 Bonjour 的情况下使用它们吗?在我的 Windows 7 上,我安装了 Bonjour,并且能够在命令行中运行“dns-sd”。但我无法运行 mDNS。
所以,我现在有点困惑。任何人都可以请澄清一下情况吗?
假设我在同一个数据中心有 2 台机器,但不一定在同一个机架中。
在这两台机器之间使用 UDP 发送时,丢弃的数据包有多常见?
我的假设下问这个,因为只有在机器之间最少数交换机的数据包不会被丢弃在所有。
无序数据包到达同一数据中心有多常见?我的假设是 99.9% 的时间只有一条路线,所以这不会发生。
然而,每当我发现自己在思考绝对的问题时,我知道我一定错过了一些东西!
我需要哪些背景信息才能更好地了解何时会出现丢弃的数据包,以及它们可能被丢弃的频率以及同一数据中心内的机器出现故障的频率?
最终,我试图在位于同一数据中心的不同 Linode VPS 实例之间进行通信时决定是使用多播 UDP 还是 PGM。信息必须按顺序到达。当然,UDP 听起来不是那么好!
但是,如果人们可以期望在同一个数据中心内实现几乎完美或完美的交付,那就没问题了。但是,我正在测试这个假设。
谢谢。
TLDR:有没有办法使用“ip route”为多个 NIC 添加多播路由?
我们的软件使用两个多播组与两个不同物理网络上的两组不同设备进行通信。除此应用程序外,一个网络上的设备不需要通过我们的设备与另一个网络上的设备进行通信。
为此,软件会创建两个套接字。每个都绑定到单独 NICS 的 IP 地址之一。然后,该套接字加入到该网络上存在的多播组,例如,套接字 1 绑定到 192.168.0.2 并加入多播组 233.255.10.1,而套接字 2 绑定到 10.57.31.2 并加入多播组 239.255.100.1。
我们目前正在使用 bash 脚本(Linux 内核 3.14.39)使用路由在两个网络接口上设置多播路由,例如
route add -net 224.0.0.0 netmask 240.0.0.0 eth0
route add -net 224.0.0.0 netmask 240.0.0.0 eth1
Run Code Online (Sandbox Code Playgroud)
并通过 route -n 验证
Destination Gateway Genmask Flags Metric Ref Use Iface
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth1
Run Code Online (Sandbox Code Playgroud)
我最近读到该路由已弃用/过时,我们应该改用 ip route,例如
ip route add 224.0.0.0/4 dev eth0
ip route add 224.0.0.0/4 …Run Code Online (Sandbox Code Playgroud) multicast ×10
networking ×3
udp ×3
routing ×2
anycast ×1
bittorrent ×1
bonjour ×1
datacenter ×1
files ×1
ip ×1
iproute ×1
ipv6 ×1
linux ×1
packetloss ×1
service ×1
testing ×1
windows ×1