上海电信 TL-EP110 + RT-AC86U 实现观看 4K IPTV 无卡顿 (2019-10)

前言

网上能找到不少路由器接 IPTV 的例子,前期给了我很大的帮助。但我选的这两个设备给我留了两个大坑,几经折腾才终于能流畅观看了。过程中学到不少目前百度/谷歌都找不到或很难找到的东西,做一下分享。

拓扑图

两个大坑

  • RT-AC86U 不支持 robocfg 命令,网上找不到正确配置 VLAN 的例子。
  • 目前能找到的例子都有使用电信设备设置组播(VLAN 51),这背后隐藏了一些细节,不正确配置会导致卡顿/卡死。

几个知识点

  • 路由器接 IPTV 需要在路由器上配置 DHCP OPTION 125 (上海电信是这个),网上很多例子,这里不再赘述。
  • 上海电信拨号上网(PPPoE)走 Native VLAN (untagged),IPTV 专网走 VLAN 85,组播走 VLAN 51。
  • 网上有人提到现在 4K IPTV 不需要 VLAN 51 了,其实是需要的,这跟前面提到的坑有关。

RT-AC86U VLAN 配置

照着网上的例子,发现 RT-AC86U 没有 robocfg,而且找不到替代方法,很绝望啊有没有。倒是看到有人提到 vlanctl,但没正确配置的例子,谷歌也只看到有人在研究,没有个结果。不过发现梅林的源代码里其实有用到这个命令,经过仔细对比上下文,加上大脑的飞速运转 [滑稽](其实是花了一整天就琢磨那几个参数),终于弄明白了。

由于示例太长,单独发了博客:RT-AC86U VLAN 配置 - vlanctl 篇。另外过程中还发现使用 vconfig 同样可以配置 VLAN,甚至更简单,参见: RT-AC86U VLAN 配置 - vconfig 篇

IGMP Snooping

配置好 VLAN 85 后,IPTV 盒子 就能同时获取到 公网 和 专网 的 IP 地址了。但是事情总没那么顺利,这时你会发现看直播一会就卡,再过一会直接卡死。

在说怎么解决之前,先说一下我当时的情况。因为某种没必要细说的原因,我当时撤下了自己的光猫(TL-EP110),换回了电信光猫,这时候抓包会发现组播的数据是在 VLAN 85 传输的。

经过对每一层接口进行抓包分析,发现组播数据传到了 vlan85 这个 bridge 后就没再往后传了。好在当时花时间狂补了组播相关知识,感觉应该跟 IGMP Snooping 有关。几番查找,在 梅林 源代码中看到 bcmmcastctl 这个命令,用法如下:

bcmmcastctl mode -i vlan85 -p 1 -m 1  # 对 vlan85 启用 IGMP Snooping
bcmmcastctl mode -i vlan85 -p 2 -m 1  # 对 vlan85 启用 MLD Snooping(这个是针对 IPv6 的,可以不管)

测试后可用![泪流满面]

然而还是高兴得太早...

VLAN 51

换回自己的光猫,发现直播还是卡,这时候心里飘过一群草泥马。继续抓包发现组播数据是从 VLAN 51 传进来的,而用电信光猫时完全就没看见 VLAN 51 的影子!这时候我做了一个大胆的假设,电信光猫一定是把 VLAN 51 的数据转发到了 LAN 端 的 VLAN 85 ,如下图所示:

说时迟那时快(其实是说时快那时傻p兮兮的),我立马尝试在路由器上做类似的配置,果不其然(心里想我真TND聪明),终于可以无比丝滑地看电视了(虽然以后会不会看还不一定呢)!

最终配置

两个版本二选一,推荐使用 vconfig 版。另外,记得还要配置 DHCP OPTION 125(自行百度吧)。

#!/bin/sh

# 该脚本需要在 services-start 中运行

ifconfig eth0 allmulti up

#####################################################################
vlanctl --mcast --if-create eth0 0                                  #
vlanctl --if eth0 --rx --tags 0 --set-rxif eth0.v0 --rule-append    #
ifconfig eth0.v0 up                                                 #
                                                                    #
brctl addbr br1                                                     #
brctl addif br1 eth0.v0                                             #
ifconfig br1 up                                                     #
                                                                    #
nvram set wan_ifnames=br1                                           #
nvram set wan_ifname=br1                                            #
nvram set wan0_ifname=br1                                           #
#####################################################################

#####################################################################
brctl delif br0 eth1                                                #
                                                                    #
vlanctl --mcast --if-create eth1 0                                  #
vlanctl --if eth1 --rx --tags 0 --set-rxif eth1.v0 --rule-append    #
ifconfig eth1.v0 up                                                 #
                                                                    #
brctl addif br0 eth1.v0                                             #
#####################################################################

vlanctl --mcast --if-create eth0 85
vlanctl --if eth0 --rx --tags 1 --filter-vid 85 0 --pop-tag --set-rxif eth0.v85 --rule-append
vlanctl --if eth0 --rx --tags 1 --filter-vid 51 0 --pop-tag --set-rxif eth0.v85 --rule-append
vlanctl --if eth0 --tx --tags 0 --filter-txif eth0.v85 --push-tag --set-vid 85 0 --rule-append
ifconfig eth0.v85 up

vlanctl --mcast --if-create eth1 85
vlanctl --if eth1 --rx --tags 1 --filter-vid 85 0 --pop-tag --set-rxif eth1.v85 --rule-append
vlanctl --if eth1 --tx --tags 0 --filter-txif eth1.v85 --push-tag --set-vid 85 0 --rule-append
ifconfig eth1.v85 up

brctl addbr vlan85
brctl addif vlan85 eth0.v85
brctl addif vlan85 eth1.v85
ifconfig vlan85 up

bcmmcastctl mode -i vlan85 -p 1 -m 1
bcmmcastctl mode -i vlan85 -p 2 -m 1
#!/bin/sh

# 该脚本可手动执行,或放入 wan-start 中开机自动运行

vconfig set_name_type DEV_PLUS_VID_NO_PAD
vconfig add eth0 85
vconfig add br0 85

brctl addbr vlan85
brctl addif vlan85 eth0.85
brctl addif vlan85 br0.85

bcmmcastctl mode -i vlan85 -p 1 -m 1
bcmmcastctl mode -i vlan85 -p 2 -m 1

ifconfig eth0.85 up
ifconfig br0.85 up
ifconfig vlan85 up

vconfig add eth0 51
brctl addif vlan85 eth0.51
ebtables -A FORWARD -i eth0.51 -o ! br0.85 -j DROP
ebtables -A FORWARD -o eth0.51 -j DROP
ifconfig eth0.51 up

作者:u128393
首发:https://www.cnblogs.com/u128393/p/11629969.html

原文地址:https://www.cnblogs.com/u128393/p/11629969.html

时间: 2024-10-28 00:25:13

上海电信 TL-EP110 + RT-AC86U 实现观看 4K IPTV 无卡顿 (2019-10)的相关文章

上海电信推出的企业宽带费用新标准

上海电信推出的企业宽带费用新标准在政府和大形势驱动下,宽带资费都有一定的下浮. 一般情况下,电信用户无需忧虑资费下浮后,资源或IP地址都能保存持续的优质服务.资源也不是电信客户所需顾虑的. 中国宽带的发展,特别是上海这所国际金融大魔都,对企业宽带的需求是毋容置疑的. 其实在2011年初,上海电信就率先提出"两免已赠一极速"的宽带提速计划.同年10月1日,上海电信又全面启动了"光网家庭再提速.免费体验大签约,中小企业宽带新回馈"智慧城市宽带再提速计划.2012年4月1

实战入侵上海电信宽带

=.= 文件爬了一下 发现如下 下载下来是网站的整站源码. 如此一来,轻松的多啦. 看308行 $sql="select * from cms_users where cms_username='$UserName' and cms_userpass='$PassWord'"; 根据此sql构造万能密码. 当$username=' or /* $password=hello world*/ 时候该sql语句就为:"select * from cms_users where c

RT-AC86U VLAN 配置 - vlanctl 篇

RT-AC86U 没有 robocfg 命令,网上找不到成功配置 VLAN 的例子.几番摸索,发现可以用 vlanctl 或 vconfig 来实现,本篇介绍 vlanctl 的用法(传送门:vconfig 篇). 示例 1 vlanctl --mcast --if-create eth0 85 vlanctl --if eth0 --rx --tags 1 --filter-vid 85 0 --pop-tag --set-rxif eth0.v85 --rule-append vlanctl

RT-AC86U VLAN 配置 - vconfig 篇

RT-AC86U 没有 robocfg 命令,网上找不到成功配置 VLAN 的例子.几番摸索,发现可以用 vlanctl 或 vconfig 来实现,本篇介绍 vconfig 的用法(传送门:vlanctl 篇). 示例 1 vconfig set_name_type DEV_PLUS_VID_NO_PAD vconfig add eth0 85 ifconfig eth0.85 up 我们逐条分解: vconfig set_name_type DEV_PLUS_VID_NO_PAD 设置创建虚

如何实现1080P延迟低于500ms的实时超清直播传输技术<转>

转载地址:http://www.yunweipai.com/archives/9037.html 最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案.众所周知,视频直播用 CDN + RTMP 就可以满足绝大部分视频直播业务,我们也接触了和测试了几家 CDN 提供的方案,单人直播没有问题,一旦涉及到多人互动延迟非常大,无法进行正常的互动交谈.对于我们做在线教育的企业来说没有互动的直播是毫无意义的,所以我们决定自己来构建一个超清晰(1080P)实时视频的传输方案. 先来解释下

如何实现1080P延迟低于500ms的实时超清直播传输技术

再来当一次技术搬运工,内容来自高可用框架,学霸君工程师袁荣喜的如何实现1080P延迟低于500ms的实时超清直播传输技术. 导语:视频直播是很多技术团队及架构师关注的问题,在实时性方面,大部分直播是准实时的,存在 1-3 秒延迟.本文由袁荣喜向「高可用架构」投稿,介绍其将直播延迟控制在 500ms 的背后的实现. 袁荣喜,学霸君工程师,2015 年加入学霸君,负责学霸君的网络实时传输和分布式系统的架构设计和实现,专注于基础技术领域,在网络传输.数据库内核.分布式系统和并发编程方面有一定了解. 最

OTT/IPTV互联网电视运营平台

一.介绍: 800Li OTT-TV System是基于开放互联网的视频服务系统,终端可以是电视机.电脑.机顶盒.PAD.智能手机.智能投影仪等等.OTT-TV通过互联网传输的视频节目,不受物理网络局限,全球各地有互联网即可观看. 800Li OTT-TV System提供信号采集.信号推流.视频承载.视频分发.节目单采集.用户授权管理.客户端APP和网页.在线快编.统计报表等功能的全套解决方案,拥有大规模跨国部署.P2P省带宽.H.265/H.264高清编码.加密防盗链.全网络穿透.多码率编码

如何快速搭建一个完整的移动直播系统?

移动直播行业的火热会在很长一段时间内持续,通过和各行业的整合,从而成为具有无限可能性的行业.主要因为以下三个原因: 第一,移动直播的UGC生产模式比PC端的直播更明显,人人都有设备,随时随地开播,完全顺应了互联网时代的开放性原则,能刺激更多人去创造和传播优质内容. 第二,网络带宽和速度在逐渐提高,网络成本在逐渐下降,为移动直播提供一个极佳的发展环境.文字.声音.视频.游戏等都会在移动直播中呈现,创造出更加丰富的用户体验.直播可以以SDK的形式接入到自己的应用中,比如,教育领域中的课后辅导完全可以

智能高清播放器使用心得

Android系统已经成为了目前市面上最为流行的智能系统,不论是手机,平板电脑还是部分数码产品均已被安卓强大的实力所攻破,绿色机器人的大军已经踏入了各个行业.现在,连高清播放器也不能幸免的被Android所占据了. 我曾经在前年买了一支U盘大小的Android电视机顶盒产品,这款产品可以使用户通过Android系统,让电视具有上网.看网络视频.玩游戏.看电子书.听音乐等功能,把电视变成一个大屏的平板电脑.我就是被这一系列的功能所吸引,所以不惜重金买了一个,结果在实际使用中效果却并不理想.但是在心