问题标签 [igmp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sockets - 嗅探本地网络上的 IGMP 消息
我正在尝试嗅探本地网络上的所有 IGMP 消息(出于不讨论的疯狂原因;-))。我有一些与此相关的问题,因为我并不是真正的 IGMP/路由专家。
甚至可能吗?我知道我可以从原始套接字读取 IGMP,并且我知道您可以使用 Wireshark 监视到达本地计算机的 IGMP 消息,但让我感到困惑的是:
我在另一台计算机上使用一个程序(通过开关与运行 Wireshark 的计算机分开),它将加入一个多播地址 - 但是 - 我并不总是在 Wireshark 中看到成员资格报告/加入。现在有谁知道是否可以保证每个IGMP 加入都分布在整个本地网络上?有时我在 Wireshark 中看到加入,有时我没有。
假设所有 IGMP 加入消息总是发送到网络上的每个站点,是否可以监视哪些站点是哪些多播组的成员,执行这样的操作(posix socket c++ 代码):
multicast - 在加入和离开时丢失多播数据报
我的服务器软件遇到了一个问题,如果一个线程加入多播,另一个线程可能不会在同一时刻接收到不同多播的传入数据报。我不确定这是否可以由于 UDP 多播的“不可靠性质”而被视为预期损失,或者这是否是严重的驱动程序/网卡缺陷。数据包捕获在那个时刻也显示了一个间隙。
我在多个 nic 型号和制造商(包括 Intel 和 HP)上观察到了这个问题。我觉得这是网卡或驱动程序问题的原因是,如果我运行数据包嗅探器将接口置于混杂模式,则根本不会出现问题。
是否有可能当 IGMP 加入或离开正在更新 nic 中的转发表时,它只是停止转发所有多播流量?这可以接受吗?
c - 如何获取 ip_sf_socklist 的大小
在我的代码中,我试图获取 ip_sf_socklist 的大小。唯一的问题是,这个结构是在以下之后定义的(在 igmp.h 中):
所以在用户空间,我看不到那个结构。我可以在 /usr/src/linux-headers-xxxx 形式中包含头文件,但这不会很优雅,如果我转向更高的内核可能会导致麻烦。如果我忘记更改这种情况下包含的标题,那会导致一些差异。
有没有一种更简单的方法来获取该结构的大小,这与使用指向最新标头的符号链接(将在 makefile 中更新)不同?
windows - Windows server 2008r2 多播和 igmp 问题
我在 Windows 2008 R2 服务器上运行多播,发现路由器为我加入的组关闭多播时出现间歇性问题。在使用wireshark 并查看IGMP 流量时,我发现当路由器发出一般IGMP 查询时,有时没有发送IGMP 成员报告。例如,如果我加入了 4 个小组,有时我会看到全部四个小组的回复,有时是三个小组,有时是两个小组。我在路由器中将到期时间设置为 300 秒,理论上可以弥补这一点,但这并不总是能保证成功。当路由器停止馈送时,它会在 120 秒后重新启动它,这对于我正在读取的数据来说太大了,无法尝试填补。
这是可以修复的吗?这似乎不是正常的行为。
multicast - 如何在 OpenWRT 中启用 IGMP Snooping?
我在 TP-LINK TL-WR703N 上使用 OpenWRT。我需要阻止有线端的大量多播数据在 Wifi 上传输。我想我可以为此使用 IGMP Snooping,因为我发现了一条评论“从 2.6.34 开始,内核具有软件桥的 IGMP 监听功能(在 OpenWrt 中默认禁用) ”并且我的内核是运行 r34761 的 3.6.11,但我找不到任何解释如何打开此功能的地方。
multicast - 以太网组播,不发送成员船报告
这是一个家庭作业问题。我尝试了将近一周的时间来寻找解决此问题的方法。问题如下
考虑在扩展以太网 LAN(通过网桥连接的多个以太网 LAN 段)中进行多播。假设主机不发送以太网成员报告(我们在课堂上讨论过)。但是,网桥(不是主机)可以按照我们的意愿配置它们的软件。假设要在该 LAN 上实现 IPv4 多播。您将如何修改网桥以允许有效的多播?即,网桥仅将 IP 多播数据包转发到有接收器的 LAN 网段,并且它应该在网桥处涉及最少的处理量。
提前致谢
c# - IGMP 加入消息给出错误的校验和
我正在尝试连接到多播组以接收一些 UDP 数据包。我正在使用的代码运行良好,我正在接收数据包并且我之前没有遇到过这个问题。但是刚才有一个新的要求,需要数据包通过一个需要看到组播加入消息的交换机。在它只是愚蠢的开关之前,这不是问题。
要加入多播组,我使用以下代码:
生成 IGMP Join 消息的行是
并发出 IGMP Join 消息。
但是,当我使用 Wireshark 窥探网络时,我发现 IGMP 消息的校验和错误;
这是我的代码或输入的问题吗?或者还有别的什么?
udp - Centos 6.3 服务器忽略 IGMP 查询
我正在使用 centos 6.3 服务器订阅 UDP 多播数据,我注意到我的服务器没有响应它所连接的交换机发送的 IGMP 查询。
结果,当我打开多播套接字时,我开始接收多播数据,直到我的 IGMP 订阅超时,因为服务器没有更新其订阅。(为了确保问题不是来自我的任何代码,我只是使用 smcroute 打开多播订阅)
我在网上搜索了一段时间,但我发现的任何提示都没有帮助我解决这个问题。
这是我服务器任何接口上 IGMP 通信的屏幕截图:
http://img521.imageshack.us/img521/9953/capture10y.png
如我们所见,我的服务器首先发送 2 个 IGMP 连接,但几分钟后,当交换机发送 IGMP 查询时,没有人回答。
相关接口的 IGMP 协议集版本为 V2:
rp_filter 在此接口上被禁用:
非常感谢你能给我的任何帮助。
最好的,
洛朗
c - 如何在 C 中使用 igmp v3 加入多播组
为了加入多播组,我习惯于看到这样的代码:
现在我遇到了一个问题,有人告诉我这是一个 v2 igmp 加入请求并且他们需要 v3。这是需要在上面的代码中解决的问题,还是运行上述代码的主机上的硬件/网络/操作系统问题?如果上面的代码有误,我可以采取哪些步骤来更正上面的代码?
c++ - 如何在linux下用c/c++构建igmp查询生成器
我正在寻找可用作 IGMP(原始套接字)查询生成器的 ac/c++ 测试,或者如何添加可用于 IGMP 查询生成器的合成测试我找到了一个 perl igmp 查询生成器(http://www.coexsi.fr/ Publications/igmp-querier/igmp-querier.pl),但实际上我不知道如何测试它,或者这样做的目的是什么?