|
起因是很快要准备装修改造线路, 都21世纪20年代了再不上光就说不过去了。初期考察了不少方案, 包括各种网吧机、软路由、交换, 最终选定ER2260T 和 CRS309的硬路由+ROS交换机的组合。ER2260T是能买到的最便宜的万兆硬路由 (820r~), CRS309(1600r~)因为可以跑RouterOS和SwitchOS, 既可以做纯交换机也当路由器, 可玩性很高所以看上了。除此之外TP的TL-ST5008F(850r~)也是带网管全光的性价比很高的选择。带网管是为了IPTV设置VLAN和组播相关。选的两款都是无风扇被动散热, 尺寸能塞进大部分弱电箱, 非常适合家用。
▲路由器+交换机, 大小对比
▲PCIe网卡外接, 见以前的帖子
除了主菜以外, 剩下的材料包括:
1) TP-Link NT521F 单口万兆光卡, AQC100方案, 非AQC107, 仅支持1G/10G, 不支持2.5G。到手还刷了新的固件。 全新 ~200r
2) Mellanox CX341a 洋垃圾单口万兆光卡 ~130r。买两种网卡测试兼容性 (因为路由是TP的)
3) Huawei 10G-1310nm-1.4km-SM-SFP+ 光模块 ~15r/pcs
4) 成品LC-LC单模光纤跳线若干, 单芯约0.6r/m, 因为万兆模块要接两根, 所以实际是1.2r/m
5) Raisecom USFP-GE/AN-R千兆自适应电口模块。同方案(Marvell 88E111)的很多, 像Avago ABCU-5731ARZ, 因为要求不高而且这玩意基本用不坏, 就挑最便宜的买, ~35r/pcs
6) Huawei MA5671a ONU (GPON Stick/猫棒), 资料比较多就买了这款, ~140r/pcs
以上全部都是黄鱼采购的价格。TP在淘宝都是指导价, 注意避坑。
构思的主要是单线复用的方案, 即路由及交换机之间只有一根线, 因为考虑到未来弱电箱不会太大。想到两种接法:
1) 猫棒接路由器光口1, IPTV机顶盒接到路由器电口, 然后一根光纤连接路由器光口2和交换机。这种比较简单, 但因为TP的路由器的网桥缺少组播相关选项, 经过若干失败的尝试没有采纳(后面排查发现可能是别的原因)
2) 猫棒、IPTV、电口模块全都接到MikroTik的交换机上, 配置VLAN单线接到路由器。这样做的好处是ROS有比较完善的VLAN/IGMP相关设置, 而且也可以利用弱电箱内原有的电口线材, 到时候只要铺设一根光纤到外部机柜(放置路由及其他设备)即可。
然后就是VLAN的划分与配置了。坐标020, 运营商是中国移动, 上网业务VID 41, IPTV IPoE VID 48, 直播源组播VID 900。猫棒设置如下
不设置PVID, 等下直接配置到trunk端口上。注意右侧的ME:309规则, 本市这里不勾选的话组播流只有数KB/s。VID一般根据当地地市而定, 可以从光猫原始设置查得, 不再赘述。
ROS配置如下
1) VLAN 48是IPTV专用, 将SFP7口的PVID设置为48并接机顶盒。
2) VLAN 50专门用来访问猫棒。不打算更改猫棒的默认地址以免出事, 而且默认设置192.168.1.10/24 网关192.168.2.1本身也是很有槽点 :D 之前接路由器的时候不配置VLAN可以直接NAT, 现在想将所有路由功能放到路由器, 暂且这么处理。需要访问猫棒管理web的时候将相应的端口PVID设置成50即可。
3) 填好VLANs表, 配置好各端口PVID后开启桥上的VLAN Filtering (注意不要勾选Ingress Filtering)。桥上的IGMP Snooping经测试开关无太大影响, 因为本身万兆线速的总交换容量, 加上根据VLAN ID=48进行存储转发, 不开也基本无伤大雅。
重点是路由器的配置。此前有讨论帖提到ER2260T只能建一个网桥 (https://www.chiphell.com/forum.php?mod=viewthread&tid=2408711&page=8#pid50175273) 。实际上通过拆解Web管理的http请求并模仿构造就可以创建多个网桥, 并可以将VLAN虚接口绑定到网桥上并打Tag。盲猜相似硬件的ER6160T带Console口可以通过终端进行配置。TP这里真的不厚道。
具体设置为
1) 在上连交换机的光口上创建VID 41, VID 100的虚接口。
2) 在同一个物理接口上创建PPPoE连接, 接口指向VLAN 100。
其余的设置DHCP, NAT, SLAAC不再赘述, 可以使用快速设置, TP官网有比较详细的文档。
然后重点来了, 打开浏览器DevTools, 找到stok, 构造HTTP请求, 将VLAN 100加入网桥。注意代码中的bindif项, 在这里追加你的VLAN虚接口即可。加完效果如图,下拉列表里V100是选不了的。增加第二个网桥的HTTP请求类似, 将method的set改成add即可。可以抓第一次添加网桥的http进行分析构造, 不再赘述。
性能之类的就不测了, 硬交换肯定能线速转发, MikroTik官网有详细数据。倒是这款交换机做路由的话单纯包转发性能最高只有1280Mbps, 加上NAT后肯定更差, 可以拿来应付普通几百兆宽带, 千兆以上建议还是能上硬路由硬路由吧。ER2260T的性能测试在acwifi上有, 小包也是没能跑满万兆的 , 但比同价位软路由也好不少。这也是选择硬路由的重要原因: 稳定、可靠、性价比。
最后放几张测速图, 移动没得多拨, 上传垃圾(
感谢阅读。附请求HTTP样本, 请自行替换<SESSION_TOKEN>为当前浏览器会话的stok (见Network选项卡), 将bindif修改为自己的, 粘贴到Console执行即可。
- var req = fetch("https://192.168.1.1/stok=<SESSION_TOKEN>/ds", {
- "headers": {
- "accept": "text/plain, */*; q=0.01",
- "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
- "cache-control": "no-cache",
- "content-type": "application/json; charset=UTF-8",
- "pragma": "no-cache",
- "sec-ch-ua": ""Chromium";v="104", " Not A;Brand";v="99", "Microsoft Edge";v="104"",
- "sec-ch-ua-mobile": "?0",
- "sec-ch-ua-platform": ""Windows"",
- "sec-fetch-dest": "empty",
- "sec-fetch-mode": "cors",
- "sec-fetch-site": "same-origin",
- "x-requested-with": "XMLHttpRequest"
- },
- "referrer": "https://192.168.1.1/",
- "referrerPolicy": "strict-origin-when-cross-origin",
- "body": '{"method":"add","network":{"table":"bridge","para":{"if_name":"TV","bindif":["GE1","GE2","V48"],"configif":"GE1","stp":"1"}}}',
- "method": "POST",
- "mode": "cors",
- "credentials": "omit"
- });
复制代码
Ref:
1) https://www.acwifi.net/19935.html
2) https://www.chiphell.com/thread-2408711-1-1.html
3) https://help.mikrotik.com/docs/display/ROS/Bridge+VLAN+Table |
|