找回密码
 注册

QQ登录

只需一步,快速开始

楼主: spicahan

关于用软件VLAN处理IPTV的方法

[复制链接]
发表于 2012-2-9 22:19:40 | 显示全部楼层
本帖最后由 chmjiong 于 2012-2-10 10:14 编辑

已经查清楚为什么虚拟出的wan失效了,原来是openwrt的驱动只支持16个vlan,哪怕是truke版也没用,把wan的vlan改成2,立刻就连上了
现在要修改ar8216的驱动了,头大了啊


更新:仔细研究了一下ar8216的源代码,有这样一行东西:
298 static struct switch_attr ar8216_globals[] = {
299         {
300                 .type = SWITCH_TYPE_INT,
301                 .name = "enable_vlan",
302                 .description = "Enable VLAN mode",
303                 .set = ar8216_set_vlan,
304                 .get = ar8216_get_vlan,
305                 .max = 1
306         },
307 };
308  
309 static struct switch_attr ar8216_port[] = {
310 };
311  
312 static struct switch_attr ar8216_vlan[] = {
313         {
314                 .type = SWITCH_TYPE_INT,
315                 .name = "pvid",
316                 .description = "VLAN ID",
317                 .set = ar8216_set_vid,
318                 .get = ar8216_get_vid,
319                 .max = 4094,
320         },
那么是不是应该用“option pvid 1”来配置vlan,以启用硬件vlan标识呢???
源代码里显示,10.03版的驱动支持128个vlan,truke版的更是可以支持到255
发表于 2012-2-10 13:24:44 | 显示全部楼层
等你的测试呀,如果好用我也去买个
 楼主| 发表于 2012-2-10 20:54:48 | 显示全部楼层
chmjiong 发表于 2012-2-9 22:19
已经查清楚为什么虚拟出的wan失效了,原来是openwrt的驱动只支持16个vlan,哪怕是truke版也没用,把wan的vl ...

是这样的,不同芯片的交换机,有自己的vlan驱动。比如broadcom的5325e和53115是在 /proc 下弄出接口来配置的。G300NH用的是Realtek的芯片,配置VLAN的时候用的是一个专门的程序,名字我忘记了。。。
但是不管是用的什么芯片,从外面来看,配置的方法都是一样的,就是改 /etc/config/network.
OpenWrt 的 UCI 自己会选择合适的方式去配置交换机芯片的。ar8216底层的VLAN驱动是什么我不清楚,不过我估计和G300NH用的Rtl8366大概是一个类型的。
G300NH/RTL8366 默认的时候只支持16个VLAN, 需要在/etc/config/network里写上 option enable_vlan4k 1 才能打开全部vlan.
你可以找找ar8216是不是也有类似的option.

最后,PVID这个 option 我记得是完全不需要的。详细文档可以看
wiki。openwrt。org / doc / uci / network / switch

等我有空的时候我会看一下 trunk 里的代码,看看 ar8216 到底是什么情况。
发表于 2012-2-10 22:50:29 | 显示全部楼层
本帖最后由 chmjiong 于 2012-2-10 22:53 编辑

但是8216的源代码里没有option enable_vlan4k 1
现在那个不能工作的network如下:
config interface loopback
        option ifname   lo
        option proto    static
        option ipaddr   127.0.0.1
        option netmask  255.0.0.0

config interface lan
        option ifname   eth0.1
        option type     bridge
        option proto    static
        option ipaddr   192.168.1.1
        option netmask  255.255.255.0

config interface wan
        option ifname   eth0.81
        option proto    dhcp
      
config switch
        option name     eth0
        option reset    1
        option enable_vlan 1
        

config switch_vlan vlan_lan
        option device   eth0
        option vlan     1
        option ports    '2 3 0t'

config switch_vlan vlan_iptvm
        option device   eth0
        option vlan     51
        option ports    '1t 4'

config switch_vlan vlan_iptvu
        option device   eth0
        option vlan     85
        option ports    '1t 4'

config switch_vlan vlan_wan
        option device   eth0
        option vlan     81
        option ports    '0t 1'
所以我非常困惑,源代码里那些128个vid究竟是怎么回事
 楼主| 发表于 2012-2-10 23:02:27 | 显示全部楼层
chmjiong 发表于 2012-2-10 22:50
但是8216的源代码里没有option enable_vlan4k 1
现在那个不能工作的network如下:
config interface loop ...


config switch_vlan vlan_iptvu
        option device   eth0
        option vlan     85
        option ports    '1t 4'

最后一行,改成 option ports '1t 4u*'
我看了一下我自己之前写的配置,85那里居然没有星号。。可能是运气好,正好rtl8366的驱动把85作为了那个端口上的PVID.
 楼主| 发表于 2012-2-10 23:14:09 | 显示全部楼层
chmjiong 发表于 2012-2-10 22:50
但是8216的源代码里没有option enable_vlan4k 1
现在那个不能工作的network如下:
config interface loop ...

对了,我终于想起来 atheos 用什么命令改 vlan 了。。。
在我的 G300NH 上,可以用这个命令来看 vlan 的详细配置:
swconfig dev rtl8366rb show

在你这里,我估计大概是用
swconfig dev ar8216 show
如果能工作的话,你把结果都贴上来我看看

另外,swconfig的文档:
wiki。openwrt。org / doc / techref / swconfig
发表于 2012-2-10 23:19:27 | 显示全部楼层
请教:4、4t、4u、4u*之间都有点什么区别?这个配置的毛病是,lan正常,wan不能工作,一定要把wan的vid改成2才能连上上级路由,把dhcp改成pppoe就能接光猫上网,但是这样的话,itv是不能连接的
 楼主| 发表于 2012-2-10 23:46:03 | 显示全部楼层
chmjiong 发表于 2012-2-10 23:19
请教:4、4t、4u、4u*之间都有点什么区别?这个配置的毛病是,lan正常,wan不能工作,一定要把wan的vid改成 ...

4 和 4u 的意思是一样的,都是说从这个端口发出去的数据包是不带VLAN标签的,所谓的Untagged
4t 的意思就是说从这个端口发出去的数据是带VLAN标签的,所谓的Tagged
4u* (理论上和4*是一个意思,不过我一般写成u*)的意思除了有4u的意思之外,还说了从这个端口上收到的数据包,如果是untagged, 那么将把它当成端口的PVID所在的VLAN来处理。在这里,PVID是85, 因为option vlan 是 85

4t* 也是可以的,意思你自己就可以推出来了吧。

我不理解你说的接上级路由是什么意思。我现在看出来了,这个无线路由器的VLAN功能是全的。正确的用法就是把 LAN 口中的一个当 WAN 口来用,然后接光猫。WAN 配成 PPPoE.

config switch_vlan vlan_wan
        option device   eth0
        option vlan     81
        option ports    '0t 1''

最后一行改成 option ports '0t 1u*'.
如果我没理解错的话,你这里端口
0 是 CPU 口
1 是 WAN
2, 3 是 LAN
4 是 IPTV?

如果是的话,明天我写个完整的配置给你,你可以再试试看。
发表于 2012-2-11 13:39:27 | 显示全部楼层
本帖最后由 chmjiong 于 2012-2-11 14:17 编辑

端口没有问题了,今天继续试验那个虚拟的wan,
config switch_vlan vlan_wan
        option device   eth0
        option vlan     2
        option ports    "0t 1*"
wan不通,表现为只有发送没有接受,去掉那个*以后就拿到ip
再进一步试验
        option vlan    81
        option ports    "0t 1"
也不通,如果把81改成11,又通了

更进一步,把lan改成81,wan改成82,lan挂掉,只能重刷
目前刷的是10.03正式版,等下刷trunk版再试试看

默认的network是这样的:config 'interface' 'loopback'
        option 'ifname' 'lo'
        option 'proto' 'static'
        option 'ipaddr' '127.0.0.1'
        option 'netmask' '255.0.0.0'

config 'interface' 'lan'
        option 'ifname' 'eth0'
        option 'type' 'bridge'
        option 'proto' 'static'
        option 'ipaddr' '192.168.1.1'
        option 'netmask' '255.255.255.0'

config 'interface' 'wan'
        option 'ifname' 'eth1'
        option 'proto' 'dhcp'

config 'switch'
        option 'name' 'eth0'
        option 'reset' '1'
        option 'enable_vlan' '1'

config 'switch_vlan'
        option 'device' 'eth0'
        option 'vlan' '1'
        option 'ports' '0 1 2 3 4'

在web里面看,1234对应4个端口,5关闭,0是cpu


trunk版一切照旧,和正式版一个样子
 楼主| 发表于 2012-2-11 15:34:39 | 显示全部楼层
chmjiong 发表于 2012-2-11 13:39
端口没有问题了,今天继续试验那个虚拟的wan,
config switch_vlan vlan_wan
        option device   et ...

完整的配置文件应该是这样的:

config 'interface' 'loopback'
        option 'ifname' 'lo'
        option 'proto' 'static'
        option 'ipaddr' '127.0.0.1'
        option 'netmask' '255.0.0.0'

config 'interface' 'lan'
        option 'ifname' 'eth0.1'
        option 'type' 'bridge'
        option 'proto' 'static'
        option 'ipaddr' '192.168.1.1'
        option 'netmask' '255.255.255.0'

config 'interface' 'wan'
        option 'ifname' 'eth0.81'
        option 'proto' 'pppoe'
        option 'username'
        option 'password'

config 'switch'
        option 'name' 'eth0'
        option 'reset' '1'
        option 'enable_vlan' '1'

config 'switch_vlan_lan'
        option 'device' 'eth0'
        option 'vlan' '1'
        option 'ports' '0t 2 3'

config 'switch_vlan_iptvm'
        option 'device' 'eth0'
        option 'vlan' '51'
        option 'ports' '1t 4'

config 'switch_vlan_iptvu'
        option 'device' 'eth0'
        option 'vlan' '85'
        option 'ports' '1t 4u*'

config 'switch_vlan_wan'
        option 'device' 'eth0'
        option 'vlan' '81'
        option 'ports' '0t 1u*'

起来之后不管行不行,你先运行
swconfig dev ar8216 show
把结果贴上来看看。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-8-3 07:09 , Processed in 0.025148 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表