华为GVRP配置实战:三种注册模式与动态VLAN传播详解
简介华为GVRP实验配置文本是一份面向网络工程师及华为设备初学者的实验学习材料适合备考华为数通认证或正在练习VLAN动态管理的人群。文档以S1至S4四台交换机组成的互联环境为背景从GVRP作为GARP应用的协议定位讲起先梳理手工配置的静态VLAN与协议自动生成的动态VLAN的区别再对比Normal、Fixed、Forbidden三种注册模式的行为差异最后落到Trunk接口允许所有VLAN通过并开启GVRP的完整配置命令。资源共1个docx文档压缩包约306KB内容包含S1至S4逐台设备的配置过程、VLAN100/200动态注册现象、由左至右与从右至左传播不一致造成的单向注册问题分析以及S3上配置Fixed模式后的对照验证读者可直接复制命令复现实验也可以借助其中的排错思路排查同类动态VLAN故障。目前已有266人学习下载适合需要系统理解GVRP注册机制、动手完成华为交换机动态VLAN实验的读者。1. 华为GVRP配置四台交换机串联三种注册模式一次讲透华为GVRP配置这个题目初看就是几条命令的事真正在eNSP里复现一遍才发现VLAN能不能从S1自动传到S4取决于全局开关、接口开关、端口模式和注册模式四个条件同时成立。这份实验配置文本把四台交换机S1到S4串行互联Trunk口全部打通在端口上开启GVRP分别验证Normal、Fixed、Forbidden三种注册模式下动态VLAN的传播差异。适合正在备华为ICT大赛网络赛道、用华为eNSP做三层交换机实验以及在生产环境里想用GVRP做动态VLAN下发的运维人员。文章按实验顺序拆解每一段命令重点说清楚单向注册和动态VLAN不能直接下发端口这两个最容易被忽略的坑。2. GVRP协议机制与三种注册模式Normal、Fixed、Forbidden各自锁住了什么2.1 GARP通用属性注册协议动态VLAN是怎么“长”出来的GVRP全称是GARP VLAN Registration Protocol它是GARPGeneric Attribute Registration Protocol通用属性注册协议在VLAN属性上的一种具体应用。可以先这么理解GARP是一套通用的“属性注册与注销”规则而GVRP只是把待注册的属性从“某个通用值”换成了“VLAN编号”。交换机与交换机之间就是靠这套规则互相通告“我这里有VLAN 100你需要的话可以学过去”。动态VLAN的产生过程并不复杂。当S1上手工创建了静态VLAN 100之后S1上开启了GVRP的Trunk接口会周期性发送注册消息对端交换机收到这条消息就在本地创建出VLAN 100这个被动创建的VLAN就是动态VLAN。动态VLAN会继续沿着开启GVRP的链路往下传从而实现“配置一台全网皆知”的效果。注销方向也是对称的静态VLAN被删除或者收到对端的注销消息后动态VLAN会在超时周期过后自动消失。这里有一个容易误解的点GVRP并不是通过广播报文把整个VLAN配置“复制”过去它只传VLAN编号和注册状态。也就是说对端交换机知道的是“VLAN 100存在”但VLAN 100的名字、关联的接口、网关这些配置全都不会同步。动VLAN创建出来后只是一张“空壳”得由本机继续配置端口和业务它才能承载流量。这一点直接关系到第5章要讲的动态VLAN不能直接下发端口的问题。2.2 Normal模式既能学也能传是GVRP的默认状态Normal模式是GVRP最完整的注册模式接口在Normal模式下允许动态注册VLAN也允许动态注销VLAN同时还会把动态VLAN和静态VLAN的信息都传播出去。换句话说一个接口处于Normal模式时它是“全双工”的从对端学到的VLAN会继续往其他端口传自己静态创建的VLAN也会主动通告出去。大多数实验场景接口保持默认的Normal模式就可以跑通。需要注意的一点是Normal模式不仅传播VLAN也会传播“注销”信息。比如本端删除了某个静态VLANNormal接口会把这条注销消息传给对端对端的动态VLAN也会跟着注销。在实验里这没什么问题但在生产环境里一个误操作删除VLAN可能导致下游交换机全部跟着注销这是Normal模式最需要警惕的行为。2.3 Fixed与Forbidden模式一个只传静态一个连静态都不传Fixed模式的规则是禁止接口动态注册VLAN也禁止动态注销VLAN只传播静态VLAN信息。写成白话就是这个接口“不学习”对端动态发来的VLAN但它会把自己这台设备上手工创建的静态VLAN继续通告出去。原文里有一句很到位的描述被设置成Fixed模式的Trunk接口就算配置了port trunk allow-pass vlan all实际能通过的VLAN也只是本端手动配置的那部分。Forbidden模式比Fixed更彻底接口不仅禁止动态注册、注销而且不传播除VLAN 1之外的任何VLAN信息。一个Trunk接口被设置为Forbidden之后即使port trunk allow-pass vlan all还挂在配置里实际能通过的也只有VLAN 1。这个模式通常用来做接入隔离或者在某些端口上彻底关闭除管理VLAN以外的所有业务VLAN。2.4 三种注册模式对照模式动态注册VLAN动态注销VLAN传播动态VLAN传播静态VLANTrunk实际放行范围Normal允许允许允许允许动态静态VLAN全部Fixed禁止禁止禁止允许仅本端静态VLANForbidden禁止禁止禁止禁止仅VLAN 1这张表建议截图保存。实际排障时90%的“VLAN传到一半断了”的现场最后都落在这张表里某一行的某个属性上。3. Trunk链路与GVRP基础配置S1到S4的完整开局命令行3.1 为什么端口必须是Trunk且必须允许所有VLAN通过GVRP要在一个物理接口上同时承载多个VLAN的注册信息和数据帧access口天然不适合。access口只能属于一个VLAN收到带其他VLAN标签的帧直接丢弃动态注册进来的VLAN 100、200根本没有安放位置。Trunk口则不同它能同时承载多个VLAN的帧配合port trunk allow-pass vlan all任何一个VLAN的数据帧都能穿过这条链路。在搭配GVRP时我一般会在一个接口上按三步顺序操作先改链路类型为Trunk再放行全部VLAN最后开启GVRP。顺序上建议先配Trunk再开GVRP华为设备上端口开启GVRP要求端口类型为Trunk或Hybrid如果端口还是默认的access就去敲gvrp命令系统会直接拒绝提示链路类型不对。先配链路类型再继续能省掉一次报错后返工的麻烦。3.2 全局gvrp与接口gvrp两级开关少一级都不通GVRP在华为交换机上有两个开关一个是系统视图下的全局开关用命令gvrp开启一个是接口视图下的端口开关也是用命令gvrp开启。全局开关负责让整台设备具备GVRP处理能力端口开关负责让这个具体接口参与VLAN注册消息的收发。只开全局关端口VLAN学不进来只开端口关全局接口下敲命令时就会收到报错。很多第一次配GVRP的人会在这里翻车全局开了却漏掉某一个Trunk口的接口开关然后去查VLAN为什么传播不过去查半天查不出原因。配置完所有端口后逐接口确认gvrp命令在dis this里真实存在这一步省不得。3.3 S1到S4的完整配置文本先说拓扑S1的GE0/0/23连S2的GE0/0/23S2的GE0/0/24连S3的GE0/0/23S3的GE0/0/24连S4的GE0/0/23。所以S2和S3需要配置两个口S1和S4各配置一个口。S1的配置S1sys [S1]int g0/0/23 [S1-GigabitEthernet0/0/23]port link-type trunk [S1-GigabitEthernet0/0/23]port trunk allow-pass vlan all [S1-GigabitEthernet0/0/23]q [S1]gvrp [S1]int g0/0/23 [S1-GigabitEthernet0/0/23]gvrp [S1-GigabitEthernet0/0/23]dis th这一段是整份实验的起点。port link-type trunk把GE0/0/23从默认的access改为Trunkport trunk allow-pass vlan all放行全部VLAN保证后续动态学习到的VLAN数据能走过这条链路退出到系统视图后用gvrp开启全局开关再回到接口用gvrp开启端口开关。dis th是接口下的查看命令用来确认当前接口的完整配置看到gvrp出现在输出里才算配置生效。S2的配置S2sys [S2]int g0/0/23 [S2-GigabitEthernet0/0/23]port link-type trunk [S2-GigabitEthernet0/0/23]port trunk allow-pass vlan all [S2-GigabitEthernet0/0/23]int g0/0/24 [S2-GigabitEthernet0/0/24]port link-type trunk [S2-GigabitEthernet0/0/24]port trunk allow-pass vlan all [S2-GigabitEthernet0/0/24]q [S2]gvrp [S2]int g0/0/23 [S2-GigabitEthernet0/0/23]gvrp [S2-GigabitEthernet0/0/23]int g0/0/24 [S2-GigabitEthernet0/0/24]gvrp [S2-GigabitEthernet0/0/24]q [S2]dis cuS2处在链路中间GE0/0/23朝S1方向GE0/0/24朝S3方向。两个Trunk口都要放行全部VLAN全局gvrp开启后两个接口各自再开端口级GVRP。这个“中间节点”的配置最容易漏第二口漏了之后S1那边学过来的VLAN到S2就断了S3、S4完全感知不到。S3的配置S3sys [S3]int g0/0/23 [S3-GigabitEthernet0/0/23]port link-type trunk [S3-GigabitEthernet0/0/23]port trunk allow-pass vlan all [S3-GigabitEthernet0/0/23]int g0/0/24 [S3-GigabitEthernet0/0/24]port link-type trunk [S3-GigabitEthernet0/0/24]port trunk allow-pass vlan all [S3-GigabitEthernet0/0/24]q [S3]gvrp [S3]int g0/0/23 [S3-GigabitEthernet0/0/23]gvrp [S3-GigabitEthernet0/0/23]int g0/0/24 [S3-GigabitEthernet0/0/24]gvrp [S3-GigabitEthernet0/0/24]q [S3]dis cuS3的拓扑位置与S2对称命令结构完全一致。这里额外提一句原文里S2和S3配置文本中把gvrp误写成了grvp命令行敲入后系统无法识别配置不会生效。实际手工配置时不要照抄这个错别字具体排错在第5章展开。S4的配置S4sys [S4]int g0/0/23 [S4-GigabitEthernet0/0/23]port link-type trunk [S4-GigabitEthernet0/0/23]port trunk allow-pass vlan all [S4-GigabitEthernet0/0/23]q [S4]gvrp [S4]int g0/0/23 [S4-GigabitEthernet0/0/23]gvrp [S4-GigabitEthernet0/0/23]dis thS4是链路末端只需要一个Trunk口朝向S3方向全局与端口GVRP开启即可。这个配置完成之后整条链路已经具备GVRP传播能力但还没有任何VLAN可传。下一步就是在S1上创建静态VLAN看看注册消息能沿着链路走多远。3.4 配置后的第一眼检查dis gvrp和dis vlan怎么读配置完成后先别急着建VLAN用两条查看命令确认GVRP状态已经生效。系统视图下执行dis gvrp输出会分全局和接口两部分全局部分显示GVRP使能状态接口部分按端口列出每个口的GVRP开关和注册模式。看到GE0/0/23、GE0/0/24的注册模式是Normal、状态是Enabled才说明两级开关都到位了。再用dis vlan看一下当前VLAN表链路两端都只有VLAN 1动态VLAN还没有出现。这个“空白基线”是有用的后面排查单向注册问题时能清楚地区分VLAN是从来没传过来还是传过来又被Fixed模式挡住了。4. 单向注册问题复盘为什么S1建VLAN之后S2的24口收不到注册信息4.1 现场现象注册消息只往一个方向走按照实验文本的步骤在S1上静态创建VLAN 100和VLAN 200然后把GE0/0/1设为access加入VLAN 100GE0/0/2设为access加入VLAN 200。配置本身没有任何报错但观察S2的VLAN表时发现一个诡异的现象S2的GE0/0/23口收到了注册消息动态创建了VLAN 100和200而GE0/0/24口没有收到任何注册信息。也就是说S2学会了VLAN但没往S3方向继续传。实验文本对这种现象的结论是“单向注册”并且强调即使所有接口都是Trunk、允许所有VLAN通过VLAN间通信依然无法建立。这个现象第一次遇到很让人摸不着头脑因为从配置上看每个端口都开了GVRP按理说注册消息应该一跳一跳传下去。4.2 根因GVRP注册消息是“有源才发”的不是全网广播GVRP的消息流方向本质上由“谁创建了静态VLAN”决定。S1手工创建了VLAN 100S1就是唯一的信息源它会从开启了GVRP的GE0/0/23口持续发出注册消息。S2的GE0/0/23口作为接收端学到VLAN后确实会继续向GE0/0/24口传播——前提是GE0/0/24口也处于Normal模式且已开启GVRP。但S2的GE0/0/24口面对的是S3S3此时并没有静态创建任何VLAN整个链路只有S1这一个信息源那么注册消息就只能从S1向S4方向单向流动。GVRP不是一种“全网洪泛”协议它不会凭空生成注册消息。消息的来源必须是有静态VLAN的设备每一跳的转发需要接口处于Normal模式而反向接口收不到注册消息是因为反向根本没有VLAN可以通告。实验文本里“S2的24口未接收到信息”的原因与其说是配置问题不如说是消息源的天然方向性S1建VLAN消息只从S1往右走S4没建VLAN左边就永远等不到S4发来的注册。4.3 逐跳排查用dis vlan和dis gvrp找出注册断点遇到这种“VLAN传了一半消失”的情况排查思路是沿着链路逐台看VLAN表和GVRP状态。先看S2上有没有动态VLANS2dis vlan S2dis gvrp如果S2的VLAN表里已有VLAN 100和200说明S1到S2这一跳正常。接着看S2的GE0/0/24口GVRP是否开启、注册模式是否是NormalS2dis gvrpdis gvrp输出的接口状态表里GE0/0/24显示为Normal且Enabled基本可以排除接口开关问题。再登录S3执行dis vlan如果S3的VLAN表里没有VLAN 100和200那么问题就出在S2到S3这一跳。此时优先检查S3的GE0/0/23口有没有开GVRP以及S2的GE0/0/24口有没有被误配成Fixed或Forbidden模式。华为交换机的dis gvrp能看到每个接口的注册模式这一步比反复猜测命令有没有生效要可靠得多。4.4 让注册变成双向两端都静态创建VLAN实验文本在S1建完VLAN之后又在S4上同样新建了VLAN 100和200这一步的实际作用就是构造两个注册源。S1向右发注册消息S4向左发注册消息中间交换机两边的接口都能收到动态注册链路两端的VLAN信息也就对等了。从排障角度看当你在链路上只看到单方向注册时不要急着怀疑协议出了问题先确认另一端是否有静态VLAN作为消息源。想让GVRP“双向注册”就得两端都创建静态VLAN这是这个协议的工作机制决定的配置上补不了这个缺。5. 动态VLAN的边界与避坑指南静态创建、端口下发与常见翻车5.1 动态VLAN是“影子VLAN”不能直接绑定业务端口在S4上动态学习到VLAN 100和200之后下一步自然是想把下连PC的接口放进这两个VLAN。直接尝试配置时会发现动态VLAN在华为设备里不允许被直接关联到业务端口命令port default vlan 100在这种状态下要么报错要么不生效。原因在于动态VLAN的生命周期归GVRP管理它随时可能因为超时或被注销而消失设备不放心把业务端口绑在一个“随时会没”的VLAN上。解决办法就是实验文本里括号注明的那句话需要自己静态创建VLAN。用vlan batch 100 200把VLAN静态化动态VLAN本质上被同号的静态VLAN“接管”之后才能配置access端口。S4的完整配置如下S4sys [S4]vlan batch 100 200 [S4]int g0/0/1 [S4-GigabitEthernet0/0/1]port link-type access [S4-GigabitEthernet0/0/1]port default vlan 100 [S4-GigabitEthernet0/0/1]int g0/0/2 [S4-GigabitEthernet0/0/2]port link-type access [S4-GigabitEthernet0/0/2]port default vlan 200 [S4-GigabitEthernet0/0/2]dis th这一段和前文的Trunk配置不同它操作的是下连PC的接口链路类型是access。port default vlan 100把GE0/0/1的默认VLAN设为100这个接口收到的无标签帧就会被划分到VLAN 100里。切记操作前先确认VLAN已经静态创建否则端口配置会失败。动态VLAN的“静态化”只影响本机不影响GVRP的继续传播这一点可以放心。5.2 坑一grvp错别字命令行直接不认账现象照着文档在系统视图下敲grvp按回车后系统提示命令不存在或者在dis cu里根本看不到全局GVRP配置。原因gvrp被误写成了grvp两个字母位置颠倒华为命令行解析器不识别这条命令。这份实验文本里S2和S3的配置段落就存在这个笔误。解决手工敲命令时输入gvrp不要复制文本里的grvp敲完后用dis gvrp验证全局状态。错别字问题看起来低级实际在连续配置多台设备时很容易顺手打错尤其在敲命令比较快的时候。5.3 坑二复制粘贴的设备名不对配置落到了错误的交换机上现象本应在S4上执行的VLAN创建命令提示符却显示S2配置被敲到了S2上。原因实验文本的S4段落命令里混进了S2sys这段是从S2配置复制过来后忘记改成S4了。解决操作前先看提示符确认当前登录的设备名与配置目标一致。当你在多台交换机之间来回切换时养成看提示符的习惯能避免很多低级事故。这个坑在真实网络运维里比想象中更常见我见过有人因为复制配置没改设备名把一个校验VLAN建到了核心交换机上。5.4 坑三Fixed模式切换后动态VLAN没有立刻消失现象把S3的GE0/0/23口从Normal改为Fixed模式后dis vlan里依然能看到动态学习来的VLAN 100和200。原因切换注册模式时GVRP协议需要一个处理周期来注销已经注册的VLAN注销消息的发送和接受都有延迟动态VLAN不会在命令回车的那一瞬间消失。解决稍等一个GVRP消息周期一般几十秒后再执行dis vlan动态VLAN会被清除。这里要区分静态VLAN和动态VLAN静态创建的VLAN在Fixed模式下不受影响仍然保留在VLAN表里。5.5 坑四物理链路断开后动态VLAN还赖在表里不走现象拔掉S1与S2之间的网线后S2的VLAN表里依然存在VLAN 100和200。原因GVRP依赖周期性的注册消息维持动态VLAN链路断开后对端的注册消息不再到达但本端还没到超时判定时间动态VLAN暂时残留。解决等待GVRP超时周期过后VLAN会自动注销。在实验环境里等不及的话可以重启相关接口或关闭再开启端口上的gvrp强制触发重协商。生产环境不建议手动去删动态VLAN让协议自动收敛更安全。6. Fixed模式实测从实验到上线的验证技巧6.1 复现Fixed模式的完整过程在S3的GE0/0/23口上把注册模式改为FixedS3sys [S3]int g0/0/23 [S3-GigabitEthernet0/0/23]gvrp registration fixed [S3-GigabitEthernet0/0/23]dis th回车之后接口下再执行dis th输出里会多出一行gvrp registration fixed表示模式切换成功。然后回到系统视图执行dis vlan重点观察动态VLAN是否消失。在实验文本的结论图里Normal模式下VLAN能动态传递Fixed模式下动态VLAN被切断只保留S3静态创建的VLAN。做完这一步再把这接口改回Normal[S3-GigabitEthernet0/0/23]undo gvrp registration fixed [S3-GigabitEthernet0/0/23]dis thundo gvrp registration fixed把注册模式恢复为默认的Normal这是一个常用的后悔药实验做完后务必记得还原否则后续链路验证会一直带着“半隔离”状态。6.2 三种模式在真实环境里的选型思路场景推荐模式理由核心交换机之间互联Normal需要双向学习全网VLAN注册注销信息完整交换接入交换机向上连接Normal或Fixed接入侧新建VLAN需要上送则Normal只希望核心静态VLAN下发的用Fixed与第三方或外部设备互联Fixed避免对端动态VLAN影响本端VLAN表管理口或隔离口Forbidden除VLAN 1外一律不放行物理隔离业务VLAN6.3 我保留的检查习惯三层验证法GVRP实验做完完整的验证不只是两台PC能ping通。我的习惯是固定跑一遍三层检查dis gvrp确认开关和注册模式dis vlan确认VLAN表里静态与动态VLAN的状态最后才是PC间ping测试。从那以后每次做GVRP配置或排查动态VLAN问题我都强制自己走完这三步再下结论少一步就可能把方向性误判成配置故障。希望这份实验文本的拆解和踩坑记录帮到你尤其是在遇到“VLAN传到一半就断了”的时候先看信息源再看每一跳的模式最后再动配置。本文还有配套的精品资源点击获取