Closed qwerttvv closed 4 years ago
不好意思啊!我用的是Merlin,貌似没有您说的这项参数设置 话说,IGMP我一直也开着,但是基本吃灰……送的那个机顶盒基本没怎么开机用。
其次中继带宽目前看也足够用,都是走千兆接口,300M上网带宽,IPTV正常是接在100M接口下面的,我继续使用千兆口中继了,所以平时使劲跑也占不了多少,就没有过多关注这一块的设置。
按理来说,这个参数是通过哪个程序的功能来实现?我也顺带学习一下! ssh登录路由器,ps查看相关的进程名称和运行的服务,应该是类似的。
例如,我这边Merlin的路由器:
ps命令找到路由器里面正在运行的三个程序daemon: ··· /usr/sbin/igmpproxy /tmp/igmpproxy.conf /usr/sbin/snooper -b br0 -s vlan1 -x /usr/sbin/udpxy -m eth0 -p 8012 -B 65536 -c 10 -a br0 ···
然后查看帮助文件和配置文件:
admin@xxxx:/tmp/home/root# /usr/sbin/snooper -h
Usage: snooper [-d|-D] [-q|-Q] [-s <switch>] [-b <bridge>] [-v <vid] [-x]
admin@xxxx:/tmp/home/root# /usr/sbin/igmpproxy -h
Usage: igmpproxy [-h] [-d] [-v [-v]] <configfile>
-h Display this help screen
-d Run in debug mode. Output all messages on stderr
-v Be verbose. Give twice to see even debug messages.
igmpproxy 0.1.2
admin@xxxx:/tmp/home/root#
admin@xxxx:/tmp/home/root# cat /tmp/igmpproxy.conf
phyint eth0 upstream ratelimit 0 threshold 1 altnet 0.0.0.0/0
phyint br0 downstream ratelimit 0 threshold 1
admin@xxxx:/tmp/home/root#
admin@xxxx:/tmp/home/root# /usr/sbin/udpxy
udpxy 1.0-23.10 (prod) standard [Linux 2.6.36.4brcmarm armv7l]
usage: /usr/sbin/udpxy [-vTS] [-a listenaddr] -p port [-m mcast_ifc_addr] [-c clients] [-l logfile] [-B sizeK] [-n nice_incr]
-v : enable verbose output [default = disabled]
-S : enable client statistics [default = disabled]
-T : do NOT run as a daemon [default = daemon if root]
-a : (IPv4) address/interface to listen on [default = 0.0.0.0]
-p : port to listen on
-m : (IPv4) address/interface of (multicast) source [default = 0.0.0.0]
-c : max clients to serve [default = 3, max = 5000]
-l : log output to file [default = stderr]
-B : buffer size (65536, 32Kb, 1Mb) for inbound (multicast) data [default = 2048 bytes]
-R : maximum messages to store in buffer (-1 = all) [default = 1]
-H : maximum time (sec) to hold data in buffer (-1 = unlimited) [default = 1]
-n : nice value increment [default = 0]
-M : periodically renew multicast subscription (skip if 0 sec) [default = 0 sec]
Examples:
/usr/sbin/udpxy -p 4022
listen for HTTP requests on port 4022, all network interfaces
/usr/sbin/udpxy -a lan0 -p 4022 -m lan1
listen for HTTP requests on interface lan0, port 4022;
subscribe to multicast groups on interface lan1
udpxy and udpxrec are Copyright (C) 2008-2013 Pavel V. Cherenkov and licensed under GNU GPLv3
Contact: www.udpxy.com/forum; support@udpxy.com
admin@xxxx:/tmp/home/root#
我其实没开组播,机顶盒隔几个月抓一次包看看频道更新
每次机顶盒链接的是猫的wifi
那问题就是以下几个方面:
我很奇怪就是我当时设置1m,一样可以看4k,4k台我看大概带宽需求是24m
所以不知道是设置不生效还是哪里的问题,单纯的奇怪,实际环境中其实用不到这个
我很奇怪就是我当时设置1m,一样可以看4k,4k台我看大概带宽需求是24m
所以不知道是设置不生效还是哪里的问题,单纯的奇怪,实际环境中其实用不到这个
那就是还是在路由器上UDPXY实现组播转多播呗?这个设置只是针对IGMP相关的带宽吧?你用udpxy以后下行播放的是TCP http流量,不属于IGMP组播流量,所以就没有限制了。 既然这个IGMP带宽限制不生效,那就说明它是针对IGMP组播的下行单宽的限制,而不是上行的源接口,这样就说的通了。
我实际环境中组播都关了,没igmp流泪
但是打开组播,设置广播风暴控制1m,也能看4k,就比较奇怪
你是路由器上关闭了IGMP吧?光猫里面关闭了么? 另外,你是PC端播放4K吧?不是IPTV机顶盒吧?
光猫当然没关,关了就都看不了了啊
pc播4k走udpxy的http流量
机顶盒连光猫wifi走igmp
测试的时候,路由打开组播,走igmp,pc走igmp播4k,设置1m广播风暴,不卡,pc到路由是wifi连接
请问最后一句是什么意思?
@qwerttvv 还有一个问题一直忘了 麻烦您设置好这个限速以后,ssh或telnet登录路由器,使用ps命令查看igmproxy进程,以及后面的igmproxy.conf的配置文件路径,然后cat /xxxx/igmproxy.conf,共享一下配置结果? 限速设置理论上来说,应该是写入了这个配置文件,所以,web上配置成功以后,麻烦看一下这个配置,里面会显示上行还是下行的速率!
电脑你随便来个支持的播放器,rtp地址直接播就是了,vlc,mpcbe都行
修改10m和100m,这个配置文件没变化
@qwerttvv 请问您用的什么路由器和固件版本?固件得查一下对应的web选项实际是配置哪个daemon上的限速功能了! 如果是针对igmproxy.config的,则可能是bug 如果是针对其他daemon的配置文件,则需要使用该daemon的连接,才能使用这个限速功能了, 所以,核心还得根据路由器固件和版本、尤其是源码去确认这个功能最终影响的范围。
这个端口监听冲突reuse的,没搞过……抱歉,估计只能follow作者的patch,验证一下reuse是否有效了如果能解决最好,如果实在解决不了,恐怕你还是得看看到底啥服务运行在udp的这个IP:port导致冲突,然后调整配置,太具体化的东西了
我编译失败。。。测都没能力测,,
@qwerttvv 我前几天找了个斐讯,刷了个Padavan,今天刚好看到了你说的这个广播风暴的配置,大概看明白了,这个参数应该和IPTV没啥直接联系,貌似是直接控制switch芯片的!
结论: 也就是修改这个参数,是直接通过switch芯片来控制**广播风暴的最大速率,根本不是多播或者IPTV直播的速率限制**(其实我没有环境,也没法仔细看,现在看完才清楚)
另外,这个页面里面应该是有多播控制的,估计是switch芯片不支持,所以就被隐藏了?所以实际只控制广播风暴,用英文版,旁边就有详细的图文说明了
网页原始配置源代码:
<table width="100%" align="center" cellpadding="4" cellspacing="0" class="table">
<tr>
<th colspan="2" style="background-color: #E3E3E3;"><#SwitchStorm#></th>
</tr>
<tr id="row_storm_ucast">
<th><a class="help_tooltip" href="javascript:void(0);" onmouseover="openTooltip(this, 6, 7);"><#RouterConfig_GWMulticast_unknownUni_itemname#></a></th>
<td>
<input type="text" maxlength="4" class="input" size="15" name="controlrate_unknown_unicast" value="<% nvram_get_x("", "controlrate_unknown_unicast"); %>" onkeypress="return is_number(this,ev
<span style="color:#888;">[0..1000]</span>
</td>
</tr>
<tr id="row_storm_mcast_unk">
<th><a class="help_tooltip" href="javascript:void(0);" onmouseover="openTooltip(this, 6, 8);"><#RouterConfig_GWMulticast_unknownMul_itemname#></a></th>
<td>
<input type="text" maxlength="4" class="input" size="15" name="controlrate_unknown_multicast" value="<% nvram_get_x("", "controlrate_unknown_multicast"); %>" onkeypress="return is_number(thi
<span style="color:#888;"></span>
</td>
</tr>
<tr id="row_storm_mcast">
<th><a class="help_tooltip" href="javascript:void(0);" onmouseover="openTooltip(this, 6, 9);"><#RouterConfig_GWMulticast_Multicast_itemname#></a></th>
<td>
<input type="text" maxlength="4" class="input" size="15" name="controlrate_multicast" value="<% nvram_get_x("", "controlrate_multicast"); %>" onkeypress="return is_number(this,event);"/>
<span style="color:#888;">[0..1000]</span>
</td>
</tr>
<tr>
<th width="50%"><a class="help_tooltip" href="javascript:void(0);" onmouseover="openTooltip(this, 6, 10);"><#RouterConfig_GWMulticast_Broadcast_itemname#></a></th>
<td>
<input type="text" maxlength="4" class="input" size="15" name="controlrate_broadcast" value="<% nvram_get_x("", "controlrate_broadcast"); %>" onkeypress="return is_number(this,event);"/>
<span id="lbl_bcast" style="color:#888;">[0..1000]</span>
</td>
</tr>
</table>
网页选项叫:Broadcast Storm Control (Mbps)
:
网页上详细解释是:Enable this feature to control the network traffic and avoid a broadcast storm, which would result to a network slowdown or to an unusable network. The range for this field is 1 to 1000. Enter 0 (zero) to disable this feature.
修改这个参数以后,所有的参数实际是直接存在nvram里面了,但是只支持broadcast配置,并没有开放multicast的配置功能,我不确定这个switch芯片是否支持:
xxx:/home/root # nvram show |grep broadcast
controlrate_broadcast=10
xxx:/home/root # nvram show |grep multicast
controlrate_unknown_multicast=0
controlrate_multicast=0
xxx:/home/root #
实际代码貌似是在这里: https://github.com/shantanugoel/asus-rt-n66u-merlin/blob/master/release/src/router/rc/sysdeps/init-ralink.c 搜索关键字broadcast即可。
开组播的话,这个应该多少合适啊