EPON模块 ERX-SFP 北京联通 IPTV 设置教程

为了省一个光猫,购入了epon sfp模块。宽带是北京联通,关于pppoe上网的设置已有文章,本文主要叙述IPTV的设置。

1.前情:
最开始使用的是中兴F420光猫,一个千兆口、3个百兆口。不久前更换了F477V2光猫,也是1个千兆,3个百兆口。更换光猫后在原有的网络结构下IPTV出现了问题。F420的时候是光猫两个口(internet和iptv)接交换机,并引入erx同时设置双wan,添加iptv静态路由分流。更换为F477V2这个光猫时,联通装维设置了桥接,但4个口不是隔离的,所以直接接到交换机上会环路并down掉一个口。最后只能在光猫iptv口和交换机原有iptv口中间加了个路由隔离开,浪费了一个路由。

2.因此我认为光猫只需从1个口透传出vlan,然后vlan、iptv等等在路由上完成比较好一些。epon模块可解决这个问题。这个模块是sfp规格,可插入交换机、路由器的sfp口,没在sfp+口上试过,无法确认兼容性。和erx-sfp是绝配。接入联通epon涉及到的这个模块中的设置,网上已有教程,就不多说了。在erx上我把几个口包括eth5(sfp口)都加入了switch,并建了switch0.3964和switch0.3996 vlan接口。这里要说明一点,北京联通的iptv vlan是3964,3996是组播vlan(这是我这里的配置,别的区可能有所不同,需要从原有光猫核实)。由于是2个vlan,普通光猫的做法是组播流量和点播流量从光猫LAN口流出的时候剥除vlan tag,流入的时候相应打上不同的vlan tag。所以最开始的想法是如何合并这2个vlan,也就是说把组播流量转入到iptv vlan。有人提到可以用交换机的MVR(Multicast VLAN Registration)解决,也算是一种可行的办法。我的交换机虽然支持,不过multicast groups只能支持最多128条(每组对应一个直播频道),对联通的iptv来说是不够的,所以放弃了这个打算。之后还是聚焦在合并2个vlan这个思路上,包括建桥,veth等等但没有成功。点播可以,但直播是不行的,最接近成功的一次是有了直播,但持续几分钟后就报10071错,抓包得到的信息是从epg服务器获得频道列表时失败,总是在这一步tcp重传,而这步之前的向epg服务器的请求却有回应,比较诡异。

3.最终发现在switch0.3964 自动获取到10.x.x.x的iptv内网IP后,把switch0.3996这个接口(组播vlan)配上一个不相关的ip(和其他使用中的网段不重合的),然后把组播3996vlan接口设成igmp proxy的upstream,lan口设成downstream后,直播解决了。如果不设这个dummy ip的话,igmp proxy会报错起不来。

一共需要这些步骤:
1.建vlan接口、vlan接口配ip
2.添加iptv接口switch0.3964上的masquerade
3.配igmp proxy
这些都需要你预先在erx的cli或web界面中弄好,比较简单就不说了。

4.添加静态路由(我写了个脚本,在dhclient获得动态ip后会自动执行添加iptv专网静态路由)

如何使用这个脚本:
scp或其它工具传入/config/scripts/中,文件名是iptv.sh,然后
bash iptv.sh -i
这步是在dhclient的两个hook目录中建立指向该脚本的链接。
bash iptv.sh -u
是删除hook目录里的链接即反安装。
这样的话dhclient每次更新ip后都会自动执行脚本添加静态路由。
脚本里只需更改iptv vlan接口名称。

#!/bin/bash
iptv_iface=switch0.3964

enter_hooks_dir=dhclient-enter-hooks.d
exit_hooks_dir=dhclient-exit-hooks.d

script_path="$(readlink -f $0)"
target_name="iptv"

networks=(10.128.0.0/9
	  27.115.67.141/32
	  27.115.67.199/32
	  27.115.67.225/32
	  27.195.129.0/24
	  27.195.130.32/27
	  27.195.130.64/26
	  27.195.131.32/27
	  27.195.131.64/26
	  27.195.131.128/27
	  27.195.235.0/25
	  27.200.213.96/27
	  27.223.111.0/24
	  27.223.112.0/22
	  27.223.123.0/27
	  27.223.123.64/26
	  27.223.123.192/26
	  27.223.125.0/24
	  27.223.126.0/24
	  39.90.34.0/27
	  39.91.29.0/25
	  39.91.29.128/26
	  39.91.31.192/27
	  60.210.139.0/25
	  60.211.158.128/28
	  60.211.161.0/27
	  60.211.161.48/28
	  60.211.161.64/27
	  60.211.161.112/28
	  60.211.163.0/27
	  60.211.163.48/28
	  60.211.163.64/26
	  60.211.163.128/26
	  60.211.164.192/27
	  60.211.165.32/28
	  60.211.165.64/26
	  60.211.165.128/25
	  60.211.201.224/27
	  60.211.202.224/27
	  60.211.203.192/26
	  60.212.113.0/27
	  60.212.113.64/26
	  60.212.114.0/25
	  60.212.114.128/26
	  60.212.114.192/27
	  60.212.114.224/28
	  60.212.115.0/25
	  60.212.115.128/26
	  60.213.13.128/25
	  60.213.49.144/29
	  60.213.52.32/27
	  60.213.52.64/26
	  60.213.52.128/25
	  60.213.55.160/27
	  60.213.235.0/27
	  60.214.108.0/25
	  60.214.108.128/26
	  60.214.108.192/27
	  60.214.109.0/24
	  60.214.173.32/27
	  60.214.235.0/26
	  60.214.235.64/27
	  60.214.249.0/24
	  60.214.250.192/27
	  60.217.44.0/26
	  61.133.63.32/27
	  61.133.63.64/27
	  61.133.116.160/27
	  61.135.88.0/23
	  61.135.91.128/25
	  61.135.92.128/25
	  61.135.93.0/25
	  61.135.94.0/23
	  61.135.97.0/25
	  61.135.98.0/25
	  61.135.99.0/25
	  61.135.101.0/24
	  61.135.102.0/25
	  61.135.106.128/25
	  61.135.107.0/24
	  61.135.108.0/25
	  61.135.110.0/24
	  61.135.111.0/25
	  61.148.240.0/24
	  61.149.3.0/24
	  61.149.51.0/25
	  61.149.61.0/24
	  61.149.62.0/23
	  61.149.64.0/22
	  61.149.68.0/23
	  61.156.42.128/25
	  61.156.103.0/26
	  61.156.104.0/25
	  61.156.105.0/25
	  61.156.105.128/26
	  61.156.105.192/27
	  61.156.106.32/27
	  61.156.106.192/26
	  61.156.107.0/27
	  61.156.107.64/26
	  61.156.108.0/24
	  61.156.109.0/24
	  61.156.185.0/26
	  61.156.185.64/27
	  61.156.185.128/25
	  61.156.186.0/27
	  61.156.186.32/28
	  61.156.186.64/26
	  61.156.186.128/26
	  61.156.186.192/27
	  61.156.186.224/28
	  61.156.187.32/27
	  61.162.110.64/26
	  61.162.110.128/26
	  61.162.110.192/27
	  100.64.0.0/26
	  103.3.99.224/28
	  112.230.193.0/24
	  112.230.194.0/26
	  112.230.194.64/27
	  112.230.194.128/25
	  112.231.17.0/24
	  112.231.22.0/27
	  112.231.22.64/27
	  112.232.118.0/24
	  112.232.164.192/26
	  112.245.16.160/27
	  112.245.125.0/26
	  112.250.71.0/26
	  112.252.78.0/25
	  112.252.79.0/24
	  112.253.37.192/26
	  119.164.58.0/24
	  119.164.59.0/25
	  119.164.60.0/27
	  119.164.60.64/26
	  119.164.60.192/27
	  119.164.61.0/24
	  119.164.210.0/24
	  119.164.228.128/28
	  119.164.228.160/28
	  119.164.248.0/24
	  119.164.249.0/25
	  119.180.21.0/27
	  119.184.120.64/26
	  119.184.120.128/25
	  119.184.179.192/27
	  119.184.191.128/25
	  119.187.121.0/24
	  119.187.125.0/26
	  119.187.125.64/27
	  119.187.125.128/25
	  119.189.3.128/26
	  119.189.3.192/27
	  123.128.10.208/28
	  123.128.15.0/25
	  123.128.15.128/27
	  123.128.15.224/27
	  123.131.75.0/24
	  123.131.128.128/27
	  123.132.251.112/28
	  123.132.251.128/25
	  123.133.90.0/24
	  123.133.91.0/27
	  123.133.91.64/27
	  123.133.91.128/25
	  123.133.93.0/26
	  123.133.95.0/25
	  123.133.95.192/27
	  123.135.193.32/27
	  123.235.19.0/24
	  124.128.255.224/27
	  124.130.182.192/27
	  124.131.220.0/27
	  124.131.220.112/28
	  124.132.96.32/27
	  124.132.99.0/27
	  124.132.164.128/27
	  124.132.240.0/23
	  124.132.242.0/24
	  124.132.243.0/27
	  124.132.250.0/24
	  124.132.252.0/24
	  124.132.253.0/24
	  124.132.254.0/23
	  124.135.185.192/27
	  202.99.114.0/24
	  202.106.212.0/23
	  202.106.214.0/24
	  210.13.0.0/19
	  218.56.128.48/28
	  218.56.128.160/27
	  218.56.128.240/28
	  218.56.129.64/27
	  218.56.130.64/28
	  218.56.131.64/26
	  218.56.131.192/26
	  218.57.14.0/25
	  218.58.25.0/25
	  218.58.25.128/27
	  218.58.25.192/27
	  218.59.9.0/26
	  218.59.9.64/27
	  218.59.9.128/27
	  218.59.181.224/27
	  221.2.197.64/27
	  222.132.188.128/26
	  222.133.46.0/25
	  222.133.239.0/25
	  222.134.14.0/26
	  222.134.206.0/27
	  222.134.221.0/26
	 )

setup_routes() {
    case $reason in
	BOUND|RENEW|REBIND|REBOOT)
	    for network in "${networks[@]}"; do
		ip route replace $network via $iptv_router dev $interface
	    done
	    ;;
    esac
}

save_router() {
    case $reason in
        BOUND|RENEW|REBIND|REBOOT)
	    set -- $new_routers
	    iptv_router=$1
	    unset new_routers
            ;;
    esac
}

restart_igmpproxy() {
    run=/opt/vyatta/bin/vyatta-op-cmd-wrapper
    $run restart igmp-proxy | grep  -q 'is disabled' || echo "Restarted IGMP Proxy"
}

for hooks_dir in $enter_hooks_dir $exit_hooks_dir; do
    target="/etc/dhcp3/$hooks_dir/$target_name"
    if [ "$1" = "-i" ]; then
	ln -sf "$script_path" "$target"
	echo "Linked $script_path to $target"
    elif [ "$1" = "-u" ]; then
	rm -f "$target"
	echo "Removed $target"
    fi
done

[ "$interface" = "$iptv_iface" ] || exit

script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && basename "$(pwd)")"

case $script_dir in
    $enter_hooks_dir)
	save_router
	;;
    $exit_hooks_dir)
	setup_routes
	;;
esac
1赞

请问usg pro 4支持双模stick吗?

只要有sfp口的交换机或路由器都支持,usg pro 4也是支持的。onu stick其实就是一个光转电的设备,在它自己的web界面设置好连入epon或gpon之后,剩下的工作就是在usg 的sfp口上做相应的设置了,和通常所做的在ethX口连一根网线然后再做设置是没什么区别的。

能请教一下IPV6怎么配置吗,我现在获取不到ipv6地址,之前光猫桥接可以