ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

单线复用实战:两台网管交换机一条网线搞定IPTV和宽带共存

单线复用实战:两台网管交换机一条网线搞定IPTV和宽带共存 装修的时候在电视墙只留了一根网线住进去才发现麻烦IPTV机顶盒占住这个网口电视想接有线网络根本没地方插。我当时试过无线方案但隔着一堵承重墙看4K视频缓冲起来能让人崩溃。后来折腾了一圈发现最稳的办法就是拿两台支持802.1Q的网管交换机通过打Trunk的方式做单线复用让一根普通网线同时承载“上网”和“IPTV”两路业务互不干扰。这篇文章就把这套方案的原理、拓扑、华为交换机配置命令和踩坑经验完整写出来。适合家里装修只留了一根网线、但又要同时用IPTV和宽带的情况也适合想把弱电箱到客厅的单线扩展成多路业务的场景。1. 为什么我要折腾单线复用1.1 一根网线引发的家庭网络困境很多户型在规划弱电时都有一个通病弱电箱在入户门口电视墙在客厅另一侧中间只预留了一根网线。运营商的IPTV机顶盒必须插光猫的IPTV口而无线路由器为了覆盖客厅电视最好也放在电视柜附近。一根线给谁用都不合适两头都是刚需。有人会想用一根网线分四芯出来两头各接两个水晶头做成两根百兆线。这个方案看起来省事但百兆速率的瓶颈太明显而且电视和路由器同时跑大流量时会互相挤占通道延迟和丢包都会冒出来。更关键的是现在很多光猫的IPTV口和上网口业务本来就隔离靠物理分线没法把同一个物理端口拆出多路业务来。另外还有个隐藏问题不少傻瓜交换机和无线路由器会把IPTV的组播流量“广播”到所有端口结果就是电视开机时整个家庭网络的流量都被拖慢严重的甚至会把路由器LAN口打爆。折腾这个项目的直接动机就是要把这两路业务在二层就彻底隔离开。1.2 单线复用的本质用VLAN把一根线变成多根线所谓“单线复用”就是只靠物理链路里的一根网线让多路不同业务的数据同时走。要做到这一点不能靠传统的物理分流而是要在数据链路层给不同业务打上不同的“标签”传输到了目的地之后再按标签拆开。这个标签就是VLAN Tag。一台支持802.1Q的网管交换机可以把一个端口划分到若干个虚拟局域网里。每个VLAN在逻辑上是独立的广播域。光猫LAN1口输出的宽带流量我分到VLAN 10光猫LAN2口输出的IPTV流量我分到VLAN 20。两台交换机之间的那条线配置成Trunk口既允许VLAN 10走也允许VLAN 20走。数据到了客厅副交换机再把对应的端口分别划归VLAN 10和VLAN 20这样无线路由器和IPTV机顶盒就各自拿到了自己的数据互不“串味”。可以这样理解一根网线相当于一条高速公路VLAN就是车道划分线。宽带流量走快车道IPTV流量走慢车道到了出口再各自进匝道。谁也不会干扰谁。这也是为什么这个方案能同时解决“有线不够用”和“组播风暴”两个问题。1.3 哪些场景适合用这个方案我自己的场景是客厅IPTV加无线路由器但同类方案还能用在不少地方弱电箱到某个房间只有一根网线既要接台式机、NAS又要接IP摄像头。想把运营商IPTV业务延伸到另一个房间但那个房间没拉IPTV专线。全屋只有一根到书房的网线想同时跑办公网和视频会议专线。用一台网管交换机做“单臂复用”在光猫只有一个业务口的情况下把上网和IPTV分离开。这个项目的核心思路其实不局限于某一个品牌或某一种设备。只要交换机支持标准802.1Q VLAN就能按同样的逻辑配置。2. 动手前必须弄懂的事VLAN、Trunk和PVID2.1 VLAN不等于“防火墙”但能隔离广播域很多人一听到VLAN就以为是把两个网络彻底隔离实际上VLAN解决的是二层广播域的划分。默认情况下交换机收到一个广播帧会向所有端口转发。当IPTV机顶盒上线时会产生大量组播和广播报文如果所有设备都泡在同一个二层网络里这些报文会随随便便占满带宽。划分VLAN之后同一台交换机上的端口被分到不同的VLAN广播帧只会在自己所属的那个VLAN内部传播。宽带和IPTV各自有各自的广播域互不干扰。这一点对于单线复用来说至关重要因为一根Trunk链路上如果跑着多个VLAN任何一个VLAN的广播风暴都不会影响另一个VLAN的正常通信。VLAN本身不加密也不能完全替代防火墙但在这个场景里它就是最合适的隔离手段。PD.2.2 Trunk是什么一条链路上跑多个VLAN的关键普通Access端口只能属于一个VLAN数据进去时打上这个VLAN的标签出去时把标签剥掉。如果两个交换机的VLAN 10想互通就用一根线连接两边VLAN 10的Access口。但这样接几条线才能互通几个VLAN太浪费物理端口了。Trunk端口就不一样。它允许一个物理端口同时转发多个VLAN的数据。数据帧进入交换机时如果本来没有VLAN标签交换机会根据端口的缺省VLAN打上一个标签如果已经有标签就按照标签里的VLAN ID走。数据从Trunk端口出来时不属于缺省VLAN的那些帧都会带着802.1Q标签发送出去这样对端的交换机就能识别这是哪个VLAN的数据。所以两台网管交换机之间只连一根线配置成TrunkVLAN 10和VLAN 20的数据就能同时在这个Trunk上跑。这就是“打Trunk实现单线复用”这句话的来源。2.3 Access、Trunk、Hybrid和dot1q-tunnel四种模式到底怎么选华为交换机上的端口模式有四种Access、Trunk、Hybrid、dot1q-tunnel。很多新手被这四种模式绕晕我这里直接对照着说清楚模式典型用途特点Access连接终端设备如电脑、机顶盒、路由器端口只属于一个VLAN进出都剥标签或加标签终端感知不到VLANTrunk连接交换机之间多VLAN通过一条链路转发除缺省VLAN外都带标签Hybrid灵活接终端或交换机可以手动指定哪些VLAN在端口打标、哪些不打标同时当Access和Trunk用dot1q-tunnel运营商QinQ透传给用户报文再套一层外层VLAN用于私网穿越公网家用基本用不到家用单线复用的标准做法是用户设备接Access口交换机之间接Trunk口。如果遇到某些设备不支持802.1Q的桥接模式可以用Hybrid口做补充我后面实操部分会提到一个具体场景。2.4 PVID到底干了什么活为什么动不动要设它PVID就是端口缺省Vlan ID。一个端口收到不带VLAN标签的数据帧时交换机会把这个帧划入PVID对应的那个VLAN。Access口的PVID就等于它所属的VLAN没什么好讨论的。Trunk口的PVID很关键华为交换机的Trunk口默认PVID是VLAN 1而且VLAN 1在默认情况下是允许通过Trunk的。这带来一个经典问题如果某台设备发的数据帧没有打标签而你对端的交换机又把它当作VLAN 1处理那流量就会走错路。比如光猫LAN1口出来的是普通的无标签上网流量你想让它进VLAN 10结果Trunk口的PVID还停留在VLAN 1那上网流量就被划到VLAN 1里了。这时候就要手动执行一条命令port trunk pvid vlan 10把这根Trunk口上的无标签帧统统划进VLAN 10。很多人配置单线复用失败问题就出在只写了allow-pass vlan没管PVID。3. 设备选型与拓扑规划两台网管交换机是标准答案3.1 网管交换机怎么挑多少钱合适做单线复用必须用支持802.1Q VLAN的网管交换机。傻瓜交换机非网管虽然便宜也能实现物理层面的数据交换但它不支持VLAN隔离会把IPTV组播广播到所有口反而制造问题。选择时主要看几点支持802.1Q VLAN、至少有一两个端口能配置Trunk、最好带Web管理界面或者命令行配置界面。家用场景下千兆口是底线虽然IPTV和宽带本身可能都不到千兆但单线复用后两个VLAN共用一条链路如果是百兆交换机两台设备同时大流量时瓶颈很明显。我用的是一对华为S1720千兆交换机二手价格不高配置命令就是常见的VRP语法。如果没有华为水星SG105 Pro、TP-Link的TL-SG2008、H3C的S1208等网管型号都可以用。唯一要注意的是所有交换机必须支持标准802.1Q封装不能买只支持端口VLAN的“伪网管”设备。3.2 一份可以直接抄的VLAN规划表配置之前先把VLAN规划好避免到现场一边敲命令一边想。我建议把VLAN ID定义成固定规则比如10代表宽带业务20代表IPTV业务万一以后扩展到监控或NAS也按这个规律排下去。业务VLAN ID主交换机端口副交换机端口端口模式宽带InternetVLAN 10G0/0/1G0/0/2AccessIPTV业务VLAN 20G0/0/2G0/0/3Access交换机互联TrunkVLAN 10 20G0/0/3G0/0/1Trunk这张表是假设光猫LAN1口给宽带LAN2口给IPTV且两个口出来的都是无标签数据。后面我会讲如果光猫出来的本身就是带标签的数据该怎么处理。3.3 拓扑结构描述与关键链路整个方案在物理上就是一个串联结构弱电箱一侧放一台主交换机接光猫的两个LAN口LAN1接主交换机G0/0/1LAN2接主交换机G0/0/2。客厅电视墙一侧放一台副交换机副交换机的G0/0/1作为上行口和弱电箱主交换机的G0/0/3通过墙里那根网线相连。副交换机的G0/0/2接无线路由器或者有线设备负责上网。副交换机的G0/0/3接IPTV机顶盒负责看电视。要注意如果无线路由器的WAN口接在副交换机上那副交换机上的“上网”口本质上是给路由器提供一条二层接入链路路由器自己在WAN口做PPPoE拨号或者DHCP获取IP。不用担心VLAN标签因为Access口会把VLAN 10的标签剥掉路由器拿到的就是一个标准以太网帧。4. 实操在华为交换机上把Trunk打起来4.1 配置前的准备工作华为交换机第一次使用通常会有一个默认管理IP比如192.168.0.1或192.168.1.1。先用网线把电脑接到交换机的某个口改电脑IP为同网段然后通过Console线或者Telnet/SSH方式进入命令行界面。如果是从Console配置用SecureCRT或Xshell连接串口波特率9600。进入系统后第一步就是清空旧配置确保两台交换机都在干净的初始状态reset saved-configuration reboot重启完成后系统会进入初始模式。接下来就可以开始正式配置了。分级命令行配置时建议每台交换机都设置主机名避免后续两边端口搞混。4.2 创建VLAN并给端口划分子集进入系统视图先批量创建VLANsystem-view [Huawei] sysname Main-Switch [Main-Switch] vlan batch 10 20这里顺便把主机名改成Main-Switch对应弱电箱主交换机。接着把主交换机的G0/0/1划入VLAN 10G0/0/2划入VLAN 20[Main-Switch] interface GigabitEthernet0/0/1 [Main-Switch-GigabitEthernet0/0/1] port link-type access [Main-Switch-GigabitEthernet0/0/1] port default vlan 10 [Main-Switch-GigabitEthernet0/0/1] quit [Main-Switch] interface GigabitEthernet0/0/2 [Main-Switch-GigabitEthernet0/0/2] port link-type access [Main-Switch-GigabitEthernet0/0/2] port default vlan 20 [Main-Switch-GigabitEthernet0/0/2] quitport default vlan这条命令在华为交换机上等同于设置Access口的缺省VLAN也等于设置PVID。数据从这个口进来时加上对应VLAN标签出去时剥掉标签终端设备不用感知VLAN。4.3 配置交换机互联Trunk口主交换机的G0/0/3设为Trunk口并允许VLAN 10和VLAN 20通过[Main-Switch] interface GigabitEthernet0/0/3 [Main-Switch-GigabitEthernet0/0/3] port link-type trunk [Main-Switch-GigabitEthernet0/0/3] port trunk allow-pass vlan 10 20 [Main-Switch-GigabitEthernet0/0/3] quit注意华为的Trunk口默认不允许任何VLAN通过。如果你只配置了port link-type trunk却没有配置allow-pass vlan那这条Trunk就是“死”的什么VLAN都过不去。这一点和思科交换机有区别思科默认允许所有VLAN华为需要手动放行。接着回到副交换机Remote-Switch上做镜像配置。物理上副交换机的G0/0/1是上行口和墙里那根网线相连所以它应该被配置成Trunk口允许VLAN 10和VLAN 20通过system-view [Huawei] sysname Remote-Switch [Remote-Switch] vlan batch 10 20 [Remote-Switch] interface GigabitEthernet0/0/1 [Remote-Switch-GigabitEthernet0/0/1] port link-type trunk [Remote-Switch-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20 [Remote-Switch-GigabitEthernet0/0/1] quit副交换机剩下的两个口G0/0/2划到VLAN 10接路由器或上网设备G0/0/3划到VLAN 20接IPTV机顶盒[Remote-Switch] interface GigabitEthernet0/0/2 [Remote-Switch-GigabitEthernet0/0/2] port link-type access [Remote-Switch-GigabitEthernet0/0/2] port default vlan 10 [Remote-Switch-GigabitEthernet0/0/2] quit [Remote-Switch] interface GigabitEthernet0/0/3 [Remote-Switch-GigabitEthernet0/0/3] port link-type access [Remote-Switch-GigabitEthernet0/0/3] port default vlan 20 [Remote-Switch-GigabitEthernet0/0/3] quit到这里整个链路已经通了。宽带从光猫LAN1进主交换机VLAN 10经过Trunk到副交换机再从副交换机G0/0/2出来接路由器。IPTV从光猫LAN2进主交换机VLAN 20经过Trunk到副交换机再从副交换机G0/0/3出来接机顶盒。4.4 什么时候要设置trunk pvid vlan 10上面这个配置只用了标准的Access加Trunk看起来一切正常。但实际工程里会碰到另一种情况光猫或者上级路由器出来的那根线本身既有带标签的IPTV数据又有不带标签的上网数据而你只想用一根线进交换机的一个口。比如运营商的光猫可能在LAN1口同时送“上网”和“IPTV”两路业务上网流量是无标签的IPTV流量是带VLAN标签的。这时候你就可以把光猫到这个交换机之间的一个端口直接配成Trunk同时想办法把无标签的上网流量放到VLAN 10里。华为交换机里Trunk口默认PVID是VLAN 1。如果无标签帧进入Trunk口会被划到VLAN 1里而上网流量显然不该属于VLAN 1。所以要把这个Trunk口的PVID改成VLAN 10[Main-Switch] interface GigabitEthernet0/0/1 [Main-Switch-GigabitEthernet0/0/1] port link-type trunk [Main-Switch-GigabitEthernet0/0/1] port trunk pvid vlan 10 [Main-Switch-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20这样配置之后无标签的上网帧进入G0/0/1时会被打上VLAN 10的标签IPTV的标签帧则继续按它自己的VLAN 20走。一个物理口就能把两路业务都送进交换机再通过Trunk链路传到远端。这就是为什么在很多教程里你都能看到port trunk pvid vlan 10这行命令。如果在配置过程中遇到“上网通但IPTV不通”或者反过来“IPTV通但上网不通”的情况先检查的就是Trunk口允许的VLAN列表和PVID设置。4.5 Web网管交换机怎么对应这套逻辑如果不是华为命令行而是家里常见的Web网管交换机比如水星SG105 Pro这类配置思路完全一样只是操作入口不同。一般在“VLAN配置”或“802.1Q VLAN”菜单里新建VLAN 10和VLAN 20。把宽带口、IPTV业务口分别设置为VLAN 10和VLAN 20的“无标签”成员。把交换机互联的上行口设置为VLAN 10和VLAN 20的“带标签”成员。在端口设置里把对应端口的PVID分别改成10和20。“带标签”就是Trunk允许的VLAN“无标签”就是Access口剥离VLAN标签。理解了这两个概念哪个品牌都一样。4.6 保存配置防止重启丢配置华为交换机配置完成后一定要保存。如果只敲了命令不保存断电重启后会回到空配置前面全部白干return save Y回到家用的Web交换机同样要在配置页面找“保存配置”或“保存并重启”按钮别改完后直接关浏览器。5. 联调验证和踩坑记录5.1 怎么判断VLAN是不是真的通了配置完成后不要急着插机顶盒先做一轮检查。在交换机上输入display vlan输出会列出VLAN 10、VLAN 20的成员端口。确认主交换机上VLAN 10成员包括G0/0/1和G0/0/3VLAN 20成员包括G0/0/2和G0/0/3。副交换机上VLAN 10成员包括G0/0/1和G0/0/2VLAN 20成员包括G0/0/1和G0/0/3。如果哪个VLAN里少了Trunk口数据根本过不去。再查Trunk口的实际状态display interface GigabitEthernet0/0/3看输出里的“PVID”和“Allowed VLAN”两行。PVID应该是10或者20相关的值Allowed VLAN里必须同时包含10和20。这个命令是排查“配置看起来没问题但就是不通”的第一利器。5.2 上网和IPTV的验证方法先从最简单的开始验证在副交换机的G0/0/2口接一台电脑插上网线后看能不能正常获取IP地址。如果能拿到IP也能上网说明VLAN 10链路是通的。再看IPTV机顶盒。把机顶盒插到副交换机的G0/0/3口正常等待机顶盒认证。如果机顶盒能进入直播画面说明VLAN 20链路也是通的。这时候把路由器也接上同时打开电视直播和一条大流量下载观察互相有没有明显影响。只要VLAN隔离正常两者应该各走各的通道。如果机顶盒一直卡在认证阶段先查光猫LAN2口的指示灯状态再确认主交换机G0/0/2是不是把光猫LAN2接到了VLAN 20。很多时候问题不是出在Trunk而是光猫LAN口和交换机端口接错位置。5.3 我踩过的几个经典坑第一是Trunk口没放行VLAN。早期我为了省事只写了port link-type trunk没有写port trunk allow-pass vlan 10 20结果VLAN 20在下一条交换机上死活不通。华为Trunk口默认不放行任何VLAN这一点和很多人习惯的“默认全放行”完全不同。第二是PVID没改无标签帧跑错VLAN。我又一次把光猫LAN1同时作为“上网IPTV”业务的入口接到交换机上但光猫只在上网业务上做了无标签输出IPTV业务打了VLAN 851的标签。结果无标签的上网帧被交换机的Trunk口划到了VLAN 1另一个交换机根本找不到VLAN 1的成员口自然上不了网。改成port trunk pvid vlan 10之后问题立刻消失。第三是网线质量差导致Trunk协商不稳定。有一段时间我这边VLAN 20频繁掉线最后一查发现墙里那根网线只有四芯连通虽然能跑百兆但Trunk链路不稳定标签帧很容易被丢弃。换了一根超五类全通线之后问题彻底解决。单线复用对线缆要求更高四芯线这种“省钱做法”在这种场景下根本扛不住。5.4 如果手头没有华为H3C和家用品牌的对应命令H3C和华为的命令高度相似主要区别在Trunk口放行命令interface GigabitEthernet1/0/3 port link-type trunk port trunk permit vlan 10 20注意H3C用的是permit vlan不是allow-pass vlan一开始从华为转过来容易写错。TP-Link和锐捷这些Web网管交换机则直接在网页里把上行口“Tagged VLAN”勾上10和20把业务口“Untagged VLAN”分别填10和20同时把PVID也改成对应值。6. 把方案扩展出去从客厅到全屋6.1 一根线到书房同时跑NAS和办公网如果你的书房也只有一根网线又想同时跑NAS和办公电脑可以按完全相同的逻辑来。书房里的副交换机把NAS划到VLAN 30办公电脑划到VLAN 10主交换机端在弱电箱里给对应的物理口也分配好VLAN再打一条Trunk到书房。这样一根网线承载两个业务扩展性和客厅方案一脉相承。关键是VLAN规划表要在最开始就定好规则尽量避免不同业务混用同一个VLAN ID。以后加设备、加房间沿用同一套ID规则整张网络就不会乱。6.2 Hybrid端口在什么情况下能派上用场华为的Hybrid端口可以同时以“带标签”和“无标签”的方式放行多个VLAN所以它能解决一类特殊问题当某个交换机端口既要连接一个下接普通终端的设备又要透传某个带标签的VLAN时用Access或Trunk都不够灵活。Hybrid口通过手动指定哪个VLAN不打标签、哪个VLAN打标签做到一个口同时当Access和Trunk用。比如某些光猫需要在同一个端口上接收无标签的上网流量和带标签的IPTV流量普通Access口搞不定Trunk口又会让无标签流量落错VLAN。这时候用Hybrid口把上网VLAN设为无标签并设为PVID把IPTV VLAN设为带标签这样一个口就把两路业务都收进来了。这个用法比较高级但理解了原理之后会发现它其实就是Pro版Trunk。6.3 单线复用方案的局限性和应对这个方案并不是万能的。首先它只能解决二层VLAN的隔离和复用三层路由、DHCP、组播源这些还是得靠上级路由器或光猫去处理。其次虽然Trunk链路能承载多个VLAN但物理带宽是共享的如果宽带和IPTV同时在跑大流量而你的内网压力已经接近千兆线速还是有拥塞风险。针对带宽瓶颈可以考虑把交换机之间的链路升级到2.5G或万兆前提是两个交换机都支持相应速率。家用的千兆方案其实已经覆盖99%的场景IPTV直播码率通常也就二三十兆bps宽带日常使用也很难把整个千兆口占满。6.4 最终配置清单直接照抄为了方便你落地我把这套方案的完整配置清单整理成一张表位置端口接入设备VLAN端口模式弱电箱主交换机G0/0/1光猫LAN1上网10Access弱电箱主交换机G0/0/2光猫LAN2IPTV20Access弱电箱主交换机G0/0/3客厅副交换机10、20Trunk客厅副交换机G0/0/1弱电箱主交换机10、20Trunk客厅副交换机G0/0/2无线路由器10Access客厅副交换机G0/0/3IPTV机顶盒20Access按这张表敲完命令之后记得在两边都执行保存操作。如果遇到光猫LAN1同时带无标签上网流量和带标签IPTV流量的情况把主交换机对应口的PVID改成10把这根口放行VLAN 10和20就变成了单口接入版本的单线复用。6.5 我的几点体会我从第一次踩坑到现在配置这台设备前前后后花了不下三天。回头来看最耗时间的不是敲命令而是想清楚“无标签帧该进哪个VLAN”这个问题。在实际网络里光猫和路由器经常不在同一个机房链路中间的交换机又不止一台任何一层设备的PVID设置错了整条链路的流量就会走歪。最后分享一个小技巧每次改完配置我习惯在电脑上开一个持续ping的窗口边改命令边看。比如接在副交换机VLAN 10口的电脑一直ping光猫的网关IP改完命令如果通了那说明整条链路的VLAN路径没问题。这种“边改边看、通了再走”的方式比闷头敲完一堆命令再集中测试要高效得多也更容易定位是哪条命令造成了断路。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进