这个帖子的内容会很多,写下来仅给和我一样追求完美的朋友参考。如果有人要说,我就用电信送的网关来看IPTV, 再用一个自己的无线路由器,两个一起用交换机连 ONU 就行了,为毛要折腾 VLAN ? 那我请你要么耐着性子看下去,我会解释为什么这个方法不好;要么就不要往下看了,也不要回帖了,节省大家的时间。
5 r" T$ P4 ?9 r9 b/ m3 D& h1 ^+ U" m. G经过好几个晚上的折腾,终于让家里的网络架构完美了。现在我的 H618C 上面跑着 OpenWrt, 接两路 IPTV, 再当路由器,跑 BT 下载能稳定在 2.0MB/s, 同时两路 IPTV 也完全不卡,H618C 的 CPU 还空闲 40%.
# N) @* [! u' V1 Z. A先介绍一点背景知识: 9 o: Y* a. E' {# Z. L6 k% y7 k
电信现在的 FTTH 能同时提供 PPPoE 上网,IPTV 和 VoIP 业务。这是靠 VLAN 来实现的。ONU, 或者俗称的 光猫 上的以太口,是一个 VLAN TRUNK 的端口,也就是说上面同时跑了多路 VLAN 数据。那么理想情况下,如果用分离的设备要怎么来用这些业务呢?
" g+ T2 F% r' S8 t
有人说,直接把普通的无线路由器接到 ONU 上面,就可以 PPPoE 拨号了。这没错。但是如果直接把 IPTV 机顶盒接到 ONU 上,能工作吗?不能。这是为什么呢? - p% E, _0 s. v& y0 z a b
因为 FTTH 过来的 PPPoE 数据走的是所谓的 native VLAN, 意思就是,这个 VLAN 上的以太帧,是没有 VLAN 标签的,事实上也就是普通的以太帧。一般来说,用户的终端网络设备只能处理这种以太帧。而 IPTV 的数据就不一样了,上面的以太帧是打上了 VLAN 标签的,这样一来,IPTV 机顶盒就没法直接用了,必须有设备把这些 VLAN 标签去掉再转发给 IPTV 机顶盒,然后才能用。这是下行方向的,上行方向是倒过来的,必须要有设备把 IPTV 发出来的普通数据包打上 VLAN 标签再传到 ONU 上,这样才能,顺利地把 IPTV 机顶盒的请求数据发到局端正确的 VLAN 上去。
+ v) f( \% _ H* w
所以这里需要的是一个支持 VLAN 功能的交换机。需要配置三个端口:一个是 VLAN TRUNK, 直接和 ONU 上的端口相连;另两个分别是连 PPPoE 设备和 IPTV 机顶盒的端口,它们都需要配置成 untag 模式,也就是说,从它们出去的端口必须要不带 VLAN 标签。 & z6 y! K! ], S4 x, M+ V- o O
这里说的能处理 VLAN 标签的交换机不是那种几十块钱就能买到的傻瓜交换机,而是一般用在企业里的支持网管功能的那种。当然了,这样的东西大多数人家里是不会有的,电信也不会免费送给你。那么这个处理 VLAN 标签的功能就必须在电信送给你的网关里来实现。他们是怎么样来实现的呢?答案是:靠 CPU 和软件来实现的。具体到 H618C 上,就是依赖于 Linux 内核里的 802.1q 功能来实现的。CPU 会检查 WAN 上收到的所有数据包,并根据 VLAN 标签再把这些数据包转发到不同的端口上。这时候,交换机的功能实际上也被 CPU 接管了,H618C 后面四个 LAN 口不再是一个交换机里的了,而是变成了四个独立的网络设备,它们之间的数据转发依赖的是 Linux 内核里的 bridge 功能。 2 r: [4 k; S0 [+ z6 U1 i! p5 S
说得再明白一点,这个方法等效于一台装了五张网卡的 Linux 机器(无线网卡没算进去),然后依赖 Linux 内核实现 VLAN 标签和交换机的功能。这种实现方法和用硬件 VLAN 交换机的方法差别太大了,前者效率非常低下,基本上是让 CPU 去干它最不擅长的活。这就有点类似于 H264 视频的软解和硬解的区别。 ; S. Y0 E+ s. F5 \$ ] [2 r
看到这里如果你还没晕的话请继续看下去哈~~
/ G8 E1 ~+ J% p/ \( y* j( B7 _我们现在来回答一开始的问题:为什么直接用傻瓜交换机把电信网关和自己的无线路由器与 ONU 一起接起来不好?首先这个方法在处理 IPTV VLAN 标签上一点改进也没有,靠的就是 CPU 和软件来处理。其次,用这个方法的时候,你在看 IPTV 直播的时候,你所有的 IPTV 数据包都会被一并广播到你自己的 PPPoE 无线路由器上,凭空增加它的负担。虽然理论上讲,IPTV 直播依赖的是 IPv4 组播技术,在合适的设备上,只有 IPTV 机顶盒才会收到直播数据包。但不幸的是,这里 ONU 后面接的是一个不支持 IGMP snooping 的傻瓜交换机,它会把组播数据当成广播数据来处理,于是你的 PPPoE 设备也就会不停地收到视频包,网卡不停地通知 CPU 有数据来了,CPU 忙着让网卡丢弃不属于它的数据。
I) [( H1 j! [+ Y, U4 a3 P) b" f接下来是本文的重点了:H618C 和广大其它型号的电信赠送的网关一样,采用的是标准的 BCM6359(8) + BCM5325E 的方案,这里 BCM5325E 是一个交换机芯片。如果你查一下它的功能简介,就会发现它是支持 802.1Q VLAN 的。这是什么意思呢?意思就是,理论上讲,它也能实现前面提到的企业级网管交换机才有的硬件处理 VLAN 标签的功能。也就是说我们有希望可以摆脱 CPU + 软件 这种低效的方式。
6 A! D& A( y& x) E) G1 y/ k第一部分先写到这里吧,让我休息一下再继续。。 % `, P& M/ R1 }. q9 a2 J0 i
! z8 R) s# D- N$ y/ @- a7 N; b e
补充内容 (2011-7-5 14:31):
- x7 C: [& S+ s2 U应网友要求,补充一下具体的接法。在13页 #123 那里有张图还有一些解释。) ~" T$ i; }" M
/ O: A# f! U3 _补充内容 (2011-8-31 11:59):& D3 Y7 H9 l9 E+ D+ f
最后买了一个 RT-N16, 里面用的是 BCM53115, 一个机器可以搞定全部的事情。下面这个链接的27楼有方法:
. M3 _9 {- h0 I) W# K1 Y! yhttps://www.chinadsl.net/forum.php?mo ... &fromuid=266817
# d+ R8 p) ^8 V N/ n8 R) R7 ?! b4 c; Z! s) R1 q3 V( z( T
补充内容 (2011-10-8 19:13):4 P( B+ V5 K ~3 r+ x
Atheros 系的 Buffalo WZR HP G300NH 也可以用交换机硬件直接处理 VLAN, 请看
. w8 ]$ [6 p; Q+ V; I% v shttps://www.chinadsl.net/forum.php?mo ... &fromuid=266817
9 f. i7 d: d( O/ q" r! U, Y. _; L+ k0 ~
补充内容 (2011-11-26 08:36):
$ g/ I6 u- s2 O7 o- E- Q# k还有一个用软件处理VLAN看IPTV的帖子:https://www.chinadsl.net/forum.ph ... &fromuid=266817
, l6 F# l& q, t5 v: Q5 ~' d |