
1. 为什么要做VLAN聚合4094个VLAN不够用的真实场景先说个我经常在项目里碰到的场景一栋写字楼每层一个公司每个公司内部还要按部门隔离广播域。楼层少还好楼层一多你会突然发现VLAN号不够分了。传统的VLAN间路由方案里每个VLAN都要占用一个独立的网段和网关地址三层交换机上每配一个VLANIF就等于烧掉一段IP地址。稍微大点的园区网络VLAN数量轻松过百IP地址和VLAN号这两个资源同时告急。VLAN聚合VLAN Aggregation华为叫Super VLAN解决的就是这个双重痛点。它的核心思路用一个不太严谨但特别好记的类比来讲就是一个“房东”VLAN管着好几个“租户”VLAN对外只亮房东自己的门牌号网关IP租户们共用这一个门牌进出但彼此之间用隔断分开二层隔离。这个技术不是华为凭空发明的IEEE 802.1ad里就有类似思想但华为在园区交换机上落地得最彻底eNSP里从S5700到S12700全系支持。对于备考HCIP、做园区网设计、或者被VLAN数量和IP规划折磨过的人这绝对是值得花一个下午吃透的知识点。我最早接触它是在一个校园网改造项目里宿舍区每栋楼一个VLAN管理VLAN和业务VLAN叠在一起配到第800多个VLAN的时候整个人都麻了。后来用Super VLAN把宿舍区收敛成10个Super VLAN一下子清爽了。下面我把这个实验从原理到验证完整拆开全程用eNSP实操每一步都对应说明“为什么要这么配”顺便把我在真实设备上踩过的坑一并倒出来。2. 核心原理拆解Super VLAN和Sub VLAN到底是怎么协作的2.1 传统VLAN间路由的困局常规做法是每个业务VLAN创建一个VLANIF接口作为网关比如VLAN 10配10.1.1.254/24VLAN 20配10.1.2.254/24。这样做有两个毛病VLAN ID资源有限。标准VLAN范围是1到4094虽然实际部署中多数网络用不到4000多个但碰上扁平化大二层网络尤其是接入层设备需要按端口、按用户、按业务分别打标时VLAN ID很快就捉襟见肘。IP地址浪费严重。每个网段都要留网络号、广播号和网关地址还要考虑未来扩容预留。100个VLAN就是100个网段的额外开销。哪怕每个网段只有几十个终端地址利用率也高不到哪儿去。很多工程师为了省事儿直接划大网段比如整个写字楼用10.0.0.0/16一个大段然后用ACL做隔离。这种方案广播域巨大性能和安全都存在隐患并不是正路。2.2 Super VLAN的三层转发模型Super VLAN的思路是反过来的不建Sub VLAN的VLANIF只建一个Super VLAN的VLANIF。Sub VLAN的成员端口照常划分但它们的网关统一指向Super VLAN的VLANIF地址。所有Sub VLAN共享一个网关网段IP地址规划瞬间变得非常紧凑。但这里有个关键问题不同Sub VLAN之间默认二层隔离那它们之间的流量怎么走答案是通过Super VLAN的三层转发。Sub VLAN内的主机要把流量发到别的网段时ARP请求发到广播域里普通交换机只能在自己的广播域里回应。可是Sub VLAN之间广播域是隔离的怎么办华为的解法是开启Super VLAN与Sub VLAN之间的ARP代理功能命令是arp-proxy inter-sub-vlan-proxy enable。开启后Super VLAN的VLANIF接口会代替目标主机回应ARP请求用自己的MAC地址作为下一跳然后把数据包在三层转发到目标Sub VLAN。这就是这个实验最关键的技术点——理解了ARP代理你就理解了VLAN聚合。2.3 为什么说它“省”了IP却“没省”广播域这里有个很容易误解的地方。很多人以为Super VLAN把所有Sub VLAN放在一个网段里广播域就变大了。其实是两回事二层广播域仍然被Sub VLAN隔离。Sub VLAN 10里的ARP广播不会传到Sub VLAN 20隔离效果还在。三层网段是共享的。因为所有Sub VLAN上的主机都在同一个IP网段比如10.1.1.0/24所以跨Sub VLAN通信不能靠普通路由必须靠ARP代理。换句话说这个方案牺牲了一点点“纯粹性”换来的是VLAN号和网段数量的大幅缩减。在商业楼宇、校园宿舍、酒店客房这些IP和VLAN规划压力大的场景收益远大于代价。3. eNSP实验环境准备与拓扑设计3.1 设备选型与组网结构eNSP里我推荐用三台设备做这个实验一台S5700做三层汇聚交换机两台S5700或S3700做接入交换机再加4台PC。S5700在eNSP里完美支持aggregate-vlan命令S3700有些版本不支持选型时注意一下。拓扑结构是一个经典的汇聚接入两层架构汇聚交换机LSW1启用Super VLAN功能创建Super VLAN 100和两个Sub VLAN 10、20。接入交换机LSW2下挂VLAN 10的PC两个终端LSW3下挂VLAN 20的PC两个终端。LSW2和LSW3分别通过Trunk口上联到LSW1。IP规划表如下设备所属VLANIP地址网关PC1VLAN 1010.1.1.10/2410.1.1.254PC2VLAN 1010.1.1.11/2410.1.1.254PC3VLAN 2010.1.1.20/2410.1.1.254PC4VLAN 2010.1.1.21/2410.1.1.254注意看四台PC全在同一个网段10.1.1.0/24网关也都是10.1.1.254这就是Super VLAN的典型特征。放在传统方案里VLAN 20至少要单独用一个网段现在全部收敛成一个网段IP利用率直接翻倍。3.2 端口规划与VLAN编号的讲究Super VLAN的编号不是随便选的。华为规定Super VLAN的VLANIF接口直接使用Super VLAN的编号而且Super VLAN里不能直接加入物理端口——物理端口只会划到Sub VLAN里。编号规划上建议Super VLAN用一个独立的大段比如100、200、300Sub VLAN用10、20、30这样的小段看到数字就能立刻分辨角色习惯一定要养成。连接关系再细化一下LSW1的GE0/0/1连接LSW2的GE0/0/1配置为Trunk放行VLAN 10Sub VLAN。LSW1的GE0/0/2连接LSW3的GE0/0/1配置为Trunk放行VLAN 20Sub VLAN。LSW2的GE0/0/2和GE0/0/3连接PC1、PC2配置为AccessPVID为10。LSW3的GE0/0/2和GE0/0/3连接PC3、PC4配置为AccessPVID为20。4. 核心配置实操一步步对照原理做实验4.1 汇聚交换机LSW1的完整配置华为eNSP的CLI和真机几乎一致下面这组配置可以直接搬到真机上用只需要相应调整接口编号。我习惯先创建VLAN再配置VLANIF最后处理端口按层递进不容易乱。sysname LSW1 # 创建Super VLAN和Sub VLAN vlan batch 10 20 100 # 指定VLAN 100为Super VLAN并关联两个Sub VLAN vlan 100 aggregate-vlan access-vlan 10 20 quit # 创建Super VLAN对应的VLANIF接口配置网关地址 interface Vlanif100 ip address 10.1.1.254 255.255.255.0 arp-proxy inter-sub-vlan-proxy enable quit # 上联接入交换机LSW2的Trunk口 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 quit # 上联接入交换机LSW3的Trunk口 interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 20 quitaggregate-vlan这条命令把VLAN 100标记为Super VLAN。配置之后VLAN 100下不能加物理端口如果强行port default vlan 100设备会直接报错。access-vlan 10 20把VLAN 10和VLAN 20指定为Sub VLAN。这个关联关系决定了Super VLAN负责哪些Sub VLAN的三层转发。特别注意不要给VLAN 10和VLAN 20创建VLANIF接口。很多人第一次做实验的时候习惯性给每个VLAN配网关配完发现Sub VLAN的VLANIF接口虽然能创建但没实际意义甚至会让人困惑。Super VLAN的方案里所有Sub VLAN的网关统一走Vlanif100谁单独建VLANIF谁就不符合设计意图。4.2 接入交换机LSW2和LSW3的配置LSW2负责VLAN 10的终端接入sysname LSW2 vlan batch 10 # 上联口配置为Trunk interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 quit # 接PC1 interface GigabitEthernet0/0/2 port link-type access port default vlan 10 quit # 接PC2 interface GigabitEthernet0/0/3 port link-type access port default vlan 10 quitLSW3配置同理把VLAN换成20即可sysname LSW3 vlan batch 20 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 20 quit interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit interface GigabitEthernet0/0/3 port link-type access port default vlan 20 quit4.3 端口PVID和允许VLAN的细节接入交换机的上联口配置Trunk后PVID默认是1额外放行了10或20。这里有个很多人忽略的坑如果PC和交换机之间的Access口配好VLAN后Trunk口忘了放行相应VLAN终端就会不通。排查的时候第一件事永远是display port vlan看端口实际放行情况。PVID的另一个微妙之处在于——Trunk口的PVID如果没改那么收到不带Tag的帧时会按VLAN 1处理。在这个实验里PC经过Access口已经打了Tag所以不受影响。但如果你把PC直连到Trunk口就麻烦了。我的习惯是把所有接入终端的口都设置成Access这是最省心的做法。5. 验证与排障抓包确认ARP代理的真实行为5.1 基础连通性验证配置完成后先做最基础的测试。在PC1上ping PC3跨Sub VLAN、同网段通信ping 10.1.1.20按理论推演PC1发出ARP请求问“10.1.1.20是谁的IP”。这个广播帧在VLAN 10的广播域里转了一圈到不了VLAN 20。但Super VLAN的ARP代理代答了PC1收到响应后把数据帧发往网关MAC后续由交换机三层转发到PC3。在eNSP里测试时注意要先把所有PC的防火墙关掉或允许ping否则实验结果会被系统自带防护干扰。命令行窗口显示Reply from 10.1.1.20: bytes32 time1ms TTL127这类输出就说明通了。5.2 用display命令核对关键状态在LSW1上执行display vlan summary输出里能看到VLAN 100带着Super VLAN的标志VLAN 10和VLAN 20是Sub VLAN状态。注意看描述字段是否出现Super或Sub的标记这是判断配置是否生效的最直接证据。再执行display arp可以看到网关10.1.1.254的MAC地址对应Vlanif100并且会看到PC1、PC3的IP和MAC记录都挂在Vlanif100下面。这说明跨Sub VLAN的终端确实通过Super VLAN的三层接口完成了ARP学习。如果想要更细致的转发行为用display arp-proxy interface vlanif 100查看代理ARP统计。如果PC间互访过这里会有对应的代理应答记录。5.3 抓包见证ARP代答的完整过程eNSP的抓包功能是这个实验的宝藏。在LSW1与LSW2之间的Trunk链路上抓包然后让PC1 ping PC3观察抓包结果。你会看到两个关键现象PC1发出的ARP请求帧里源IP是10.1.1.10目标IP是10.1.1.20以太网帧头的目标MAC是广播地址。紧接着交换机返回了一个ARP应答帧但这个应答帧的源MAC不是PC3的MAC而是Vlanif100的MAC也就是网关MAC。这就是ARP代理的工作痕迹。如果是传统VLAN间路由PC1会先以自己的网关为下一跳再把流量路由出去不会看到交换机代答对端主机ARP的行为。看到这个抓包就说明Super VLAN的三层转发完全生效了。5.4 验证VLAN间隔离是否仍有效Super VLAN节省了IP资源但二层隔离不能丢。在PC1上ping PC3通了这是三层通可是如果PC1直接发二层广播PC3不该收到。测试方法是在eNSP里用PC1 ping PC4也属于VLAN 20结果同样应该是通的因为三层网关转发了。再用display mac-address看VLAN 10的MAC表里面不会出现VLAN 20那两台PC的MAC——因为二层广播域确实隔开了这印证了Super VLAN“二层隔离、三层互通”的设计目标。为了加深理解可以做一个对比实验临时把LSW1上arp-proxy inter-sub-vlan-proxy enable注释掉用undo删除再ping就发现PC1和PC3之间不通了。这个对比能让人瞬间记住ARP代理的作用。6. 实战中高频踩坑与排查速查表6.1 疑难现象与根因定位我在教学和项目里见过最多的问题集中在下面几个方向直接整理成表方便对照排查现象可疑配置点根因分析解决方式PC1 ping不通网关Vlanif100的ARP代理arp-proxy inter-sub-vlan-proxy enable没开或配置被覆盖检查VLANIF配置并重新开启PC1能通网关、通不了PC3Trunk放行VLAN不全上联口只放行了自己的Sub VLAN另一个Sub VLAN链路有问题检查LSW1到LSW2/3的Trunk放行列表终端能互访但网关不通交换机到网关的路径VLAN不匹配接入交换机PVID或Trunk放行与实际端口VLAN不一致用display port vlan逐端口核对配置了VLANIF但状态是Down物理链路或Trunk未通上联链路down导致Vlanif100没有可用端口检查物理端口状态和Trunk配置Sub VLAN的VLANIF被误建配置习惯没改过来给Sub VLAN单独配了网关造成路由冲突或逻辑混乱删除Sub VLAN的VLANIF统一走Super VLAN网关6.2 一个容易忽略的细节不同Super VLAN之间怎么通信很多园区网不止一个Super VLAN比如行政楼一个Super VLAN教学楼一个Super VLAN。这两个Super VLAN之间的通信需要普通的三层路由也就是在各自的VLANIF上配置不同网段地址然后由交换机路由转发。注意Super VLAN只解决同一网段内VLAN数量不够的问题不是万能的路由替代品。如果想省网段又想实现不同业务大区隔离那是另一套体系比如QinQ或VXLAN别混淆概念。6.3 关于全局ARP代理与Sub VLAN代理的区别配置时注意区分两个命令arp-proxy inter-sub-vlan-proxy enable专门用于Super VLAN和Sub VLAN之间的代理。这是本实验必须的。arp-proxy enable全局或接口下的普通ARP代理它处理的是不通网段间的ARP请求。有些版本或设备如果只开了普通ARP代理没开Sub VLAN代理实验结果就会表现为跨VLAN通同VLAN反而不通之类的诡异现象。做实验前确认命令敲的是哪个这个坑我亲眼见过同事掉进去过。6.4 真机上比eNSP更容易出现的坑eNSP毕竟是模拟器一些真机上的细节它不会暴露。我在真实S5700上做过同样配置有两点特别提醒部分设备要在Super VLAN的VLANIF下额外开启local-proxy-arp enable用于处理Sub VLAN内主机之间通过网关转发的ARP请求如果业务需要。eNSP的版本通常不强制但真机上如果遇到同Sub VLAN内通信依赖网关的场景就得把这条也补上。如果接入交换机启用了STPTrunk口可能会经历Listening和Learning状态PC刚接入时ping会丢几个包这是正常的。等STP收敛完成再测就稳了。7. 一些实际使用体会我在实际做园区网改造时Super VLAN用得最多的场景是酒店和宿舍。一栋宿舍楼几千个房间每层或每房间一个VLAN再加上管理VLAN、IPTV VLAN、无线VLANVLAN号消耗得飞快。用Super VLAN把同一区域的Sub VLAN收敛成一个Super VLAN之后网关地址从原来的大几十个收敛到几个DHCP地址池的规划也简单很多。还有一个小技巧DHCP场景下如果终端通过Super VLAN上网需要在VLANIF下配置dhcp select global或dhcp select interface并确保地址池范围与Super VLAN的网段一致。很多人在模拟器里把DHCP服务器放在单独的VLAN里结果Sub VLAN的PC拿不到地址就是因为DHCP Relay没有指向正确的服务器地址。Super VLAN和DHCP Relay协同工作的时候特别要注意dhcp relay server-ip指向的是DHCP服务器的真实IP而不是Super VLAN网关。命令敲得多不如敲得明白。做这个实验的时候我强烈建议每次都开抓包看一眼ARP交互过程因为只有亲眼看到交换机代答ARP才能真正理解arp-proxy inter-sub-vlan-proxy对Super VLAN意味着什么。纸上谈兵三小时不如抓包看三分钟。