本帖最后由 gaze 于 2018-12-3 12:21 编辑
{网络结构和目的:} (结构见下面图1) 1、主路由7620的padavan系统,在弱电箱,光猫是桥模式,分别输出IPTV信号和互联网链路。 2、IPTV盒子接在客厅的AP上(7620@padavan的AP模式),AP与住路由之间只有一根4芯网线。 3、AP与主路由之间要单线复用,以VLAN方式传输iptv信号和互联网信号。 4、成本考虑,不购买新的VLAN交换机,只利用这两个7620设备。
{修改AP和路由器的方法:} 简单而言,就是这样3种共4、5行命令: 【弱电箱路由器端,路由模式的Padavan:】 switch vlan set 0 1 00111011 0 0 --uuu-tt switch vlan set 1 2 10000011 0 0 u-----tt switch vlan set 2 10 01100000 0 0 -ut----- switch pvid 1 10 switch reg w 0x2210 0x81000000 # 我的设备0号口WAN,1号口接光猫iTV,2号口为Trunk口。vlan2为WAN区域,vlan10为IPTV区域。请勿照搬,你的设备可能不同。 # 设置Lan1 为iptv输入口,属于vlan10,给其pvid赋值 10 # 改Trunk口(Lan2,对应0x2210)的属性,让它接受任意类型数据帧
【客厅端,AP模式的Padavan:】 switch vlan set 0 1 11101011 0 0 uuu-u-tt switch vlan set 2 10 00011011 0 0 ---ut-tt switch pvid 3 10 switch reg w 0x2410 0x81000000 # AP端我用K2刷的Padavan固件。请勿完全照抄,请按你的设备实际情况划分vlan端口 # 第5口作Trunk口(外壳标注为WAN,端口对应0x2410)接路由端过来的复用线。 # 请按你设备的实际情况选择Trunk口的PVC寄存器地址。
------------------------------- 我是分割线,下面可以慢慢看整个的过程 -------------------------------
{【< 本作品使用 CC 知识共享协议,转载或引用请遵守该协议 >】} {署名-非商业性使用-相同方式共享 2.5 中国大陆 (CCBY-NC-SA 2.5 CN)}
===================== 第1节【起因】 =====================
新装的电信宽带,送了一个IPTV,奈何客厅电视到弱电箱只有一根网线,且年代久远,无法拉扯换成两根网线,而且在45线对上还有电话,无法拆分成1236和4578来当两条网线用,所以有了单线复用同时传输iptv和LAN的需要。。。话说恩山上关于vlan单线复用的贴子很多,参见: 但大多是用K2p的荒野无灯版本实现的,或基于梅林固件、Openwrt、PandoraBox实现的。 鉴于7620路由器是大量使用的、价格便宜的(二手的OYE0001只要30元),且Padavan固件从软件易用性来说,是满足各种需要的。所以还是考虑要使用基于7620芯片的Padavan来实现这个需求。
上图是我的单线复用的网络结构,可以看见: 在弱电箱光猫GPON那里有一个7620的Padavan系统,工作在Router模式,作为主路由PPPoE拨号上网, 7620的WAN接光猫互联网口,Lan1接光猫iTV口,Lan2作为Trunk口单线复用,Lan3、4为内网。 (注:光猫iTV口输出unTag的数据流,你也可以根据自己的网络设计在光猫里设置它带上特定VLAN信息)
===================== 第2节【VLAN问题】 =====================
7620划分vlan是非常容易的,几个命令switchvlan set 就实现了,(事先请确认端口顺序:你刷的什么版本的Padavan系统,WAN、LAN1-4是否与路由器外壳上的标志对应,这些,你都应该通过 switch dump 命令查看,搞清楚后,用纸笔记录下来。这是前置工作)而且,vlan间隔离得很好。但是,两个padavan相互联接的时候出现问题:
Trunk口上无法传递vlan不等于1的数据,也就是说,划分为Trunk的口无法作为单线复用口来使用。
就这个问题,使用K2p的大仙们有多样的解决方法,主要是用mtk_esw 命令。 虽然按照Andy.Padavan于2015年9月在bitbucket上的解释 但其中关于移位、写入地址、为何是该参数等等,解释得非常薄弱,参照该方法书写后,,,在7620芯片上,仍旧无法实现Trunk端口的数据通过。
此事情折腾了我很久,几乎都要放弃padavan系统,改而使用openwrt了。 (Openwrt/LEDE系统的交换机功能非常简洁,容易修改成功)
===================== 第3节【VLAN问题的解决】 =====================
一筹莫展,我在恩山上查询的所有帖子,都没有详细说明mtk_esw命令的参数含义,大家基本上都是照别人的样子写的,虽然也都成功了,但是不知道为什么成功。
他在恩山的第一篇文章,就是关于VLAN、switch、单线复用的详细的说明, 该文章里详尽地叙说了他在Router模式下创建vlan的成功,和在AP模式下的失败。 虽然他没有完美实现单线复用,虽然他没有搞定AP模式下的Trunk口的数据分流, 但是给我提供了一个很好的思路,就是,Trunk口的控制,是由某些寄存器来完成的。
他非常nice地帮我找到了7620的芯片级编程手册,并直接指出了应该阅读第xxx页的第377小节, 关于“PVC:端口vlan控制寄存器”的定义和参数。。。Very Nice的一个人。
我断断续续用了两天的时间阅读该pdf文档,并使用各种参数去填写PVC寄存器做试验, 终于在一个机缘巧合的参数组合下,Trunk口通了!!! 看到接在vlan10的端口上的计算机屏幕上ping通了另一端Padavan的vlan10端口上的服务器的时候, 我却毫无兴奋之情,研究这些耗费了太多的时间,前人们做vlan设置的时候并未仔细钻研,仅凭口耳相传。 ,,,后来我不断缩减改动的参数的地方,最后发现只需要改动一处即可,总结如下:
【将你Trunk端口的PVC寄存器的最低两bits,改为00,即可作为Trunk,传递所有vlan的数据, 原系统设置为10了,只允许unTag数据通过,或者有优先级设定的数据通过, 而一般人的Trunk口都是vlan1(LAN)设为unTag,并且不会给任何vlan数据设置优先级 所以除了vlan1,其他数据都无法通过Trunk端口,导致两端的设备无法连接】
OK,长话短说,在我的这两台7620的网络构架下(一端Router另一端AP,之间vlan单线复用) 你可以如此设置,4、5行语句即可,非常简单: 【路由器端:】 # 设备0号口WAN,vlan1为LAN,vlan2为WAN区域,vlan10为IPTV区域。你的设备可能不同 switch vlan set 0 1 00111011 0 0 --uuu-tt switch vlan set 1 2 10000011 0 0 u-----tt switch vlan set 2 10 01100000 0 0 -ut----- # 以下设置Lan1 为iptv输入口,属于vlan10,给pvid赋值 10 switch pvid 1 10 # 以下修改Trunk口(Lan2),接受任意类型数据帧 switch reg w 0x2210 0x81000000
【客厅端AP:】 #请勿完全照抄,请按你的设备实际情况划分vlan端口 switch vlan set 0 1 11101011 0 0 uuu-u-tt switch vlan set 2 10 00011011 0 0 ---ut-tt switch pvid 3 10 switch reg w 0x2410 0x81000000 # AP端我用K2刷的Padavan固件, # 第5口(外壳标注为WAN,端口对应0x2410寄存器)接路由端过来的复用线, # 请勿完全照抄,请按你设备的实际情况选择Trunk口的PVC寄存器地址。
修改好后,页面点击保存,在控制台或web页面执行“mtd_storage.sh save”以保存到NVRAM 重启路由器、AP之后即可生效{如下图:}
===================== 第4节【IPTV组播】 =====================
如上节所说,4、5行命令即可把一台30元的7620路由器模拟为一个标准vlan交换机,划分vlan端口,复用你珍贵的网线。但是,我在实际使用中发现,iptv机顶盒能播放点播、回看内容,却不能播放直播电视。 非常不解,,,经查,电信的IPTV直播电视节目使用组播数据,而iptv盒子不能播放直播电视,说明这个模拟的vlan交换机还有欠缺。 又探索了两天,发现直接在padvan的界面里就能修改,让组播数据变为单播从而穿越vlan传播给iptv盒子 路径为“内部网络LAN”--“IPTV”--“启用IGMP..侦听”--“M2U-以太网交换机”--设置为“组播到单播” 如下面两个图,两端的设备,不管AP模式,或者路由模式都是如此设置
到此,全部结束,iptv盒子完美观看所有节目,直播、点播、回看都可以, 客厅的AP端提供无线和3个LAN接口,给手机、计算机、智能电视使用互联网。 弱电箱的路由器提供第2个无线信号给周围房间,还剩2个LAN端口可以通往其他房间的有线网卡用。 (ps:路由器使用的是OYE001,不到1瓦功率,以USB输入电源,直接从光猫的USB口上取电,省了个电源插头呢。)
===================== 第5节【关于成本的后记】 =====================
有朋友说,这么做意义何在? 100M的路由器端口还复用啥,,,多拥挤! 要知道,很多用户不是都有100M、200Mbps的互联网宽带的,他们用不上K2p这样的千兆环境。 出于成本的考虑,30元的7620路由器,用两台就完全解决了IPTV单线复用的问题,不是很实惠吗? 也不需要在弱电箱里再放置一台专门的VLAN交换机,降低耗电和发热,,,不是更为安全吗? 话说,一台GS108e也不便宜哦,330大洋呢{参看下图}
至于iptv带宽挤占LAN内带宽问题,如下图,分别是高清节目和标清节目的带宽。 对于100Mbps的内网来说,iptv占用了约8Mbps的空间,8%,哦,还剩余92Mbps给互联网呢不是? 所以,不用很担忧啦,起码我用起来,100Mbps的速度和90Mbps速度相差不大。。
===================== 第6节【致谢!!!】 =====================
【鸣谢4】
他热心地提供了关于mtk7620的产品编程说明书的pdf, 里面详尽地介绍了关于各个片上寄存器的设置参数。以使得我的探索成功于看到这个pdf后的第二天。 真是天降贵人。
【鸣谢3】
他的贴子认真思考了用AP模式、路由器模式来做VLAN单线复用的问题 并照他人的文章,解决了部分难点,而在Padavan的AP模式下并未解决vlan问题。 认为在mtk7620的底层寄存器里有着vlan控制相关的信息, 从而研读7620的产品编程手册,最终解决问题。
【鸣谢2】
毫无疑问,hiboy是本版最功勋显著的大神,从2015年起我就在使用他编译和增补的Padavan系统。 在2015年末的时候,偶然发现上面这篇H大的关于编译Padavan的文章,有如进入了一个华美的宫殿,所需要的功能完全OK,简单填写参数就能顺畅使用。 甘之如饴。
【鸣谢1】
Hackpascal大神是一只老鸟,1990's的小伙。 在2015年春天的时候搞出来Breed这么一个完全不同于uBoot的替代品! (嗯,Breed,多么的温香暖玉满怀抱的感觉 o(∩_∩)o 哈哈) 想当年,我还在用TTL线在uboot启动的时候通过uBoot的tftp或Zmodem协议刷写路由器的固件。 那是一种非常辛苦的操作,需要在启动的某个特定瞬间阻止uboot加载OS,然后选择更新操作, 我常在深夜时分神情恍惚之下,选错1、2、3、4、、、导致死掉了好几个路由器。 所以,当你发现一款简单操作就能更新固件、而且永远不死不需要拆机接TTL或者编程器的软件的时候, 那种感激之心,简直无以言表。 4年过去了,也不知道Hackpascal硕士毕业后去了哪家硬件公司, 是否仍旧激情洋溢,还是被柴米油盐奶粉尿布磨灭了情怀。 万千台的路由器已经被刷入Breed启动, 江湖上流传着他的传说。。。
===================== 第7节【欢迎转载】 ======================
1、转载或引用请遵循: {【< 本作品使用 CC 知识共享协议,转载或引用请遵守该协议 >】} {署名-非商业性使用-相同方式共享 2.5 中国大陆 (CCBY-NC-SA 2.5 CN)}
或者email我:gaze#163.com(#号请自行替换)
3、全文pdf可从该地址获得:
------------------------------- 我是分割线,下面就不用看了 -------------------------------(最后,这个图片不知道怎跑这里来滴,而且在编辑状态里赶不走,,,,^_^ )
|