首页 / 资讯中心 / 文章详情

交换机二层转发:原理、配置与故障排查实战指南

交换机二层转发:原理、配置与故障排查实战指南 ★ FEATURED ARTICLE
做了十几年网络运维从接入层到数据中心核心摸过的交换机没有一百台也有八十台。如果让我选一个最基础、最不起眼但一出问题就能让整个网络瘫痪的技术点我会毫不犹豫选交换机二层转发。很多刚入行的朋友觉得二层转发不就是查MAC表、转发帧嘛简单得很。但实际上绝大多数网络故障——广播风暴、MAC漂移、环路死机、ACL单向不通——根源都在二层转发这个环节。这篇文章我把自己这些年积累的二层转发原理、实操配置、故障排查经验完整梳理一遍希望能帮你在脑子里把这块拼图补齐。1. 二层转发网络中最不起眼却最要命的技术1.1 二层转发到底解决什么问题先明确一个概念二层转发全称是数据链路层的帧转发。它的核心任务是让同一个广播域内的设备能够基于MAC地址完成数据帧的交换。以太网帧在交换机之间传输时依靠的是目的MAC地址来决定从哪个端口送出去而不是IP地址。这是二层转发和三层路由最本质的区别三层看IP二层看MAC。日常工作里我们遇到的交换机、路由器、无线AP、IPC摄像头凡是接入网络第一步必须过二层这一关。哪怕你用的是三层交换机做网关数据包在到达网关之前仍然要先完成二层帧的交换。所以二层转发是网络通信的地基这个地基一旦出问题上层路由、应用统统白搭。1.2 交换机和HUB的本质差别很多教材喜欢拿HUB和交换机对比。HUB是物理层设备一个端口收到信号所有端口都原样复制发送所有设备共享带宽冲突域巨大效率极低。而交换机是二层设备它内部维护一张MAC地址表知道每个MAC地址从哪个端口学习到的所以帧只从目的端口转发出去其他端口不受干扰。这就是交换二字的核心价值按需送达而非广播复制。我面试新人时经常问一个问题交换机的三个基本转发动作是什么答案是泛洪、转发、丢弃。目的MAC未知时泛洪目的MAC已知且端口不同则转发目的MAC对应的接收端口和源端口相同则丢弃。这三个动作看似简单但其中蕴含了二层转发最核心的逻辑后面我们会逐一拆解。1.3 为什么二层故障这么难排查二层转发的问题难排查主要有两个原因。第一二层是看不见摸不着的它不像三层可以ping、可以traceroute很多二层问题不会直接报错而是表现为网络慢、不稳定、一会儿通一会儿不通。第二二层故障的影响范围往往是整个广播域一台设备的异常行为可能拖垮整个VLAN里的所有终端。比如前阵子一个客户现场办公网突然大面积卡顿ping网关时延波动巨大交换机CPU飙到90%以上。我登录核心交换机发现某个VLAN的广播报文数量异常暴涨最后定位是一个接入交换机下挂了一个小交换机形成环路触发了广播风暴。这个案例就是典型的二层转发故障后面我会在故障排查部分详细展开。2. 转发决策全流程拆解MAC表、泛洪与老化2.1 MAC地址表的建立过程MAC地址表是二层转发的地图。它的建立完全依赖交换机的自主学习功能不需要人工干预。当一台设备发送数据帧时交换机会读取帧的源MAC地址并记录这个MAC从哪个端口进来然后写入MAC地址表。这个过程叫MAC地址学习。举个实际例子PC-A连接在交换机的GigabitEthernet0/0/1口当PC-A发出第一个数据帧时交换机在帧头里看到源MAC是AAAA.AAAA.AAAA于是就在MAC地址表里增加一条记录AAAA.AAAA.AAAA对应G0/0/1并打上VLAN标签。从这一刻起交换机就知道发往这个MAC的帧应该从G0/0/1出去。这个过程不需要配置是交换机的本能动作。2.2 查询目的MAC的三种结果收到一个数据帧后交换机会查询MAC地址表根据目的MAC得到三种不同的处理方式已知单播转发目的MAC在表中交换机会将帧从对应端口转发出去只经过目的端口不打扰其他端口。未知单播泛洪目的MAC不在表中交换机不知道目标设备在哪里于是将这个帧从本VLAN内所有端口除接收端口外发送出去让目标设备自己认领。当目标设备收到帧并回包后交换机就学到它的MAC后续帧就不再泛洪。目的端口与源端口相同丢弃如果帧的目的MAC对应的端口就是接收该帧的端口说明目标设备在同一端口下比如通过HUB挂接的多个设备交换机直接丢弃该帧因为没必要把一个端口的帧再塞回同一个端口。这个流程就是我们常说的二层转发的三种动作。很多网工干了几年遇到网络时通时不通的问题第一反应是查IP、查路由其实很多时候只是MAC表老化或者泛洪造成的把抓包工具用起来看二层帧头一抓一个准。2.3 MAC地址表老化机制与参数调优MAC地址表不是永久保存的交换机通过老化机制定期清理不活跃的表项目的是适应网络拓扑变化。比如一台笔记本换了网口交换机老化掉旧表项后就能重新学到新位置的信息避免把帧发往错误的端口。华为设备上查看MAC表老化时间的命令是display mac-address aging-time默认值是300秒。老化时间可以调整范围一般在30到600秒之间。调整的依据是网络规模和终端移动频率终端频繁移动的办公场景可以把老化时间适当调短比如120秒让MAC表更快跟上拓扑变化。服务器区域可以调长比如600秒减少不必要的泛洪降低广播报文占比。但要注意老化时间也不宜过短。如果老化时间太短一台长期不通信的设备比如打印机的MAC表项频繁被清除等它突然发数据时又触发泛洪反而增加广播流量。我在实际项目中一般建议接入交换机保持300秒默认值汇聚和核心交换机保持默认或适当调长。2.4 MAC表容量与转发性能的关系MAC地址表的容量是衡量交换机性能的一个重要指标。接入层交换机一般是8K或16K条表项核心交换机可达128K甚至更多。当MAC表项数量超过硬件容量时交换机会出现MAC表溢出表现为部分MAC无法学习转发效率大幅下降甚至出现大量泛洪。这里有个实战中的坑我曾经处理过一个视频监控项目某品牌接入交换机下挂了几十个摄像头和若干PCMAC表容量只有8K平时够用。后来客户在同一台交换机底下又串了一台傻瓜交换机挂了几十台IoT设备MAC表直接爆了导致整个接入交换机下的终端互相访问经常超时。最后方案是把设备分散到多个接入交换机控制单台设备的MAC表负载。所以选型时不要只看端口数量还要关注MAC表容量尤其是监控和物联网场景终端数量远超想象。3. VLAN与转发边界如何划清广播域3.1 VLAN为什么能影响二层转发默认情况下交换机的所有端口都在VLAN 1里整个交换机是一个广播域。二层转发在这个广播域内对所有设备可见某一个设备的广播帧会泛洪给所有端口。设备一多广播流量就会拖垮网络。VLAN的引入就是在二层交换机上划分出多个逻辑隔离的广播域不同的VLAN之间默认是不能进行二层通信的。这一点直接影响二层转发的行为MAC地址表是分VLAN的。同一台交换机上VLAN 10和VLAN 20各有一张独立的MAC地址表。假设PC-A在VLAN 10MAC地址AAAAPC-B也在VLAN 10交换机会在VLAN 10的MAC表里学习AAAA如果PC-B换到VLAN 20那么交换机就在VLAN 20的MAC表里重新学习它的MACVLAN 10里对应的表项如果无人使用就会老化掉。所以VLAN的本质是二层转发的隔离边界。划分VLAN之后广播域从整台交换机变成每个VLAN内部的端口集合广播帧只在同一个VLAN内泛洪。这也是为什么我们要把不同业务办公、监控、服务器划分到不同VLAN的核心原因——不是为了好看而是为了限制二层转发的广播范围。3.2 Access端口与Trunk端口的转发逻辑交换机端口根据能否携带多个VLAN的帧分为Access口和Trunk口。Access口一般连接终端设备PC、打印机、摄像头它只属于一个VLAN。当PC发数据到Access口时交换机会给帧打上该VLAN的标签802.1Q Tag然后在交换机内部基于MAC表和VLAN信息转发。当帧从Access口发出时交换机剥离VLAN标签还原成普通以太网帧。Trunk口一般连接交换机与交换机之间或交换机与路由器之间它可以承载多个VLAN的帧。Trunk口在转发时保留VLAN标签让帧能跨交换机在同一个VLAN内传输。配置Trunk时要注意允许的VLAN列表port trunk allow-pass vlan如果忘记放行某个VLAN那个VLAN的流量在Trunk口就会被丢弃。这里我踩过一个很经典的坑两台交换机的Trunk口配置了没有放行VLAN 30但两端各有一批VLAN 30的终端。结果是终端自己ping网关都不通因为二层帧在Trunk口被丢弃了。排查了大半天最后用display port vlan一看才发现Trunk允许列表里压根没有VLAN 30。所以我现在的习惯是每配置完一段Trunk立刻在两端执行display port vlan互相对照确认VLAN放行范围一致。3.3 单臂路由与VLAN间转发的关系不同VLAN之间不能直接二层转发它们之间的通信必须经过三层接口。单臂路由是早期很常见的方案用路由器的一个物理口连接交换机Trunk口路由器上为该物理口创建多个子接口每个子接口对应一个VLAN网关。看起来路由器只有一个物理口但子接口通过封装802.1Q标签来区分不同VLAN的流量。单臂路由的性能瓶颈很明显所有VLAN间流量都要挤在同一个物理链路上带宽通常只有百兆或千兆流量一大就卡。所以现在更常用的做法是用三层交换机在交换机上配置VLANIF三层接口利用硬件转发完成VLAN间路由速度和稳定性都远优于单臂路由。我身边的项目基本已经见不到单臂路由了但对于学习阶段理解单臂路由的原理非常有帮助——它帮你把二层帧带VLAN标签穿越Trunk以及三层子接口终结VLAN这两件事彻底想清楚。3.4 DHCP与二层转发的关系很多刚入行的人困惑DHCP服务器和客户端不一定在同一个VLAN里DHCP广播报文怎么跨网段这里的关键其实是DHCP中继。DHCP的发现报文是广播帧无法跨VLAN广播域转发。如果客户端和DHCP服务器不在同一个网段就需要在网关设备交换机VLANIF或路由器上配置dhcp relay把客户端的DHCP广播报文转换成单播报文转发给DHCP服务器。你注意看热搜词里有内网有物理DHCP服务器交换机如何配置、华为交换机查看DHCP配置这类问题在日常运维中出现频率极高。核心要点是如果DHCP服务器和客户端同VLAN交换机只需开启DHCP Snooping防止私搭DHCP服务器保证客户端获取到正确的地址。如果跨VLAN交换机三层上必须配置DHCP中继指向DHCP服务器IP同时保证客户端VLAN的网关接口已启用中继。还有个业务场景值得注意即便DHCP服务器就在同一VLAN我依然会在接入交换机上开启dhcp snooping并配置信任端口把连接合法DHCP服务器的端口设为trust口其他端口设为untrust口。这能防止有人私接一个小路由器当DHCP服务器给整网发错网关地址直接导致大片终端断网。4. STP与环路防护二层的保命机制4.1 环路为什么是二层的天敌二层转发的最大威胁是环路。当网络拓扑中出现物理环路时广播帧会在环路里无限循环不断复制扩散最终形成广播风暴占满所有链路带宽交换机CPU被大量中断打断甚至死机。这就是交换机死机热搜词背后最常见的元凶之一。环路之所以可怕是因为二层帧没有TTL生存时间概念。三层IP包有TTL每经过一个路由器减1减到0就丢弃而二层帧本身没有这个机制它会在环路里永远转发下去。每台交换机都会不断收到同一个帧然后又泛洪出去帧的数量成指数级增长短时间内就能耗尽链路带宽和交换机处理能力。我之前有个客户一台接入交换机的一个端口被工人误插了跳线和另一台交换机形成了环形拓扑结果整个园区网在几分钟内彻底瘫痪。手机、电脑全部连不上连核心交换机都访问不进去。后来是物理分段一台台交换机拔线最后拔到那条环路跳线时网络瞬间恢复。这就是二层环路最真实的写照。4.2 STP/RSTP的阻断逻辑STP生成树协议就是用来解决环路问题的。它的核心思路是通过算法在存在环路的物理拓扑中选择一个根桥Root Bridge然后从根桥出发计算到每个交换机的最短路径把冗余链路设置成阻塞状态Blocking。这样一来物理上存在环路的拓扑逻辑上被裁剪成一棵无环的树环路问题迎刃而解同时保留了冗余链路的备份能力——当主链路故障时阻塞端口可以切换到转发状态实现故障恢复。RSTP快速生成树协议是STP的改进版最大的变化是收敛时间大幅缩短。STP的收敛时间通常要30到50秒RSTP可以缩短到1到3秒。现在的交换机默认基本都是RSTP或MSTP在配置时我不建议使用老旧的STP模式除非网络里真的有老古董设备需要兼容。4.3 光纤口是做链路聚合还是主备这个问题很多同行问过我我来展开说一下。单条链路的可靠性不足以支撑关键业务时我们需要在两条物理链路之间做选择链路聚合Link Aggregation和主备冗余。链路聚合是把两条或多条物理链路捆绑成一条逻辑链路带宽叠加同时提供链路冗余。比如两条千兆光纤聚合后变成一条2G的逻辑链路其中一条断了流量自动切换到剩下的链路业务感知不到中断。链路聚合是二层转发中一种特殊配置聚合口在MAC表里作为一个逻辑端口参与转发负载分担由HASH算法决定。主备模式比如VRRP、接口备份则是同一时间只有一条链路转发流量另一条链路处于待命状态主链路故障后切换。这种方式不增加带宽只提供冗余。交换机光纤口到底做聚合还是主备取决于业务需求如果两条链路都是千兆但实际流量已经接近1Gbps必须做链路聚合否则单链路会成为瓶颈。如果流量远低于单条链路容量但业务要求高可用可以选择主备配置更简单排查也直观。如果是两台核心交换机之间建议做跨设备链路聚合比如华为的M-LAG、H3C的IRF聚合既能扩展带宽又能实现设备级冗余。需要注意的是链路聚合和STP是配合工作的。启用了聚合后STP会把聚合口当做一个逻辑端口处理不会再因为两条物理链路的存在而在聚合口内部阻塞端口。因此合理使用链路聚合也能减少环路风险。4.4 环路防护的实操手段除了STP/RSTP现代交换机还有一系列环路防护机制比如环路检测Loop Detection华为设备上是loopback-detectH3C设备上是loopback-detection。交换机会周期性地从端口发送检测报文如果收到自己发出的检测报文说明端口下存在环路会上报告警并可以配置为自动关闭该端口。这个功能在接入层非常实用尤其当终端私自串接小交换机时能第一时间阻断环路。BPDU保护BPDU Guard连接终端设备的Access口如果收到BPDU报文说明有设备私接交换机试图参与STP计算配置了BPDU保护后交换机会直接关闭该端口防止非法设备影响生成树拓扑。TC保护当网络中频繁出现拓扑变更TC报文时交换机会不断清空MAC表导致转发性能下降。TC保护可以设置阈值和抑制时间避免设备被TC报文冲击。我在实际项目中几乎每个接入交换机的终端端口都会开启BPDU保护加环路检测这样即使下面有人乱插线最多也就是那个端口被自动关闭不至于祸害全网。但要注意端口被自动关闭后需要手动或通过errdisable自动恢复机制重启端口否则终端会一直处于断网状态。5. 实操配置与调试华为/H3C设备上的转发相关命令5.1 查看MAC地址表的常用命令二层转发排障第一件事永远是看MAC地址表。华为设备的命令格式是display mac-address这个命令不带参数时会显示全部MAC表项。实际排障中我更常用过滤参数display mac-address vlan 10 display mac-address | include aaaa.bbbb.cccc第一条是查看指定VLAN下的所有MAC表项第二条是从全部表项中过滤某个具体的MAC地址。H3C的命令基本一致只是参数写法略有不同。通过查看MAC地址表我能快速判断一台终端是否在预期端口上线如果PC-A的MAC地址出现在错误的端口下就说明可能存在私接小交换机或者有人换端口没通知。另外要养成一个习惯排障时把MAC地址和IP的对应关系搞到手。在华为交换机上可以用display arp | include 192.168.1.100看到对应的MAC后再到display mac-address里反查端口就能确定这台设备到底连在哪台交换机的哪个端口。这个方法比满机房找线快得多是我日常排障用得最频繁的组合拳。5.2 配置Trunk与VLAN放行的要点配置Trunk口放行多个VLAN在华为设备上一般是这样interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 30要注意几点。第一华为交换机的Trunk口默认只放行VLAN 1如果没有执行allow-pass命令其他VLAN的帧在这个口直接丢弃。第二PVID的配置也不要忽略。当Trunk口收到不带VLAN标签的帧时交换机会打上端口的PVID所对应的VLAN标签。默认PVID是VLAN 1如果对端发送的是不带标签的帧会被归入VLAN 1容易踩坑。在H3C设备上的配置思路相同命令稍有差异interface GigabitEthernet1/0/24 port link-type trunk port trunk permit vlan 10 20 30配置完之后我建议立即用display port vlan查看端口类型和允许通过的VLAN列表确认和预期完全一致再离开现场。这点我在前面已经强调过但确实是最容易被忽视的细节。5.3 配置端口隔离与转发限制端口隔离是一种基于端口的二层转发限制功能。同一个VLAN内的端口默认是可以互相通信的但某些场景比如楼道宽带接入、酒店客房网络要求同一VLAN内终端彼此隔离不能互访。华为交换机上的配置是interface GigabitEthernet0/0/1 port-isolate enable配置后所有配置了端口隔离的接口之间不能进行二层转发但终端仍然可以访问上联网关。这个功能可以显著降低广播域内的安全风险防止一台感染设备在VLAN内横向传播。但要注意端口隔离有方向性如果只配置了单向隔离可能会影响某些业务。华为的端口隔离分为入方向和出方向默认的双向隔离会阻断同VLAN互访。如果你的业务有特殊需求比如监控系统要求前端摄像头之间不互通但都要上传到服务器可以合理组合隔离方向。我在做酒店、园区接入网时端口隔离几乎是必配项务必理解清楚再动手。5.4 QoS与二层转发的优先级处理二层帧头中的802.1p优先级字段3个bit0-7优先级直接参与转发的调度。配置QoS后交换机会根据帧的优先级进行队列调度保证关键业务优先转发。华为设备上比较常见的做法是interface GigabitEthernet0/0/1 trust 802.1p这条命令表示信任帧自带的802.1p优先级。当不同优先级的帧同时到达交换机时高优先级帧被放入高优先级队列最先被转发低优先级帧放入低优先级队列在网络拥塞时可能被丢弃。实际操作中建议把语音、视频会议等实时业务标记为高优先级把下载、备份等大流量业务标记为低优先级。例如语音设备发出的帧自带802.1p优先级5数据业务为0。不过要提醒一句QoS的作用是解决拥塞时的排队调度如果链路带宽本身已经满负荷QoS能保证关键业务优先但也需要配合带宽规划不能指望QoS把一个千兆流量塞进百兆链路。5.5 分布式交换机架构下的二层转发现在很多数据中心使用分布式交换机比如华为CloudEngine系列、H3C的IRF堆叠把多台物理交换机虚拟成一台逻辑交换机。此时二层转发的行为有重要变化MAC地址表是全局同步的一台交换机学习到的MAC表项会通过堆叠协议同步到所有成员设备。这样不论流量从哪个成员端口进来交换机都能在本地转发表中找到目的端口实现跨设备的线速转发。在配置分布式交换机时要注意堆叠链路的带宽和可靠性。堆叠链路承担了所有跨成员设备的转发流量同时也承担了MAC表项的同步如果堆叠链路质量差或者配置错误会导致MAC表项不同步出现流量泛洪或者丢包。建议堆叠成员之间的互联链路至少使用两条物理链路做Eth-Trunk捆绑保障堆叠链路本身的高可用。5.6 端口镜像调试二层转发的最佳工具排查复杂二层问题光靠看MAC表往往不够我们需要抓包看实际的帧内容。端口镜像Port Mirroring就是把某一端口的进出流量复制一份到指定端口然后在指定端口接一台笔记本或抓包工具。华为交换机配置端口镜像示例observe-port 1 interface GigabitEthernet0/0/24 interface GigabitEthernet0/0/1 port-mirroring to observe-port 1 both如果配置了both端口1的收发双向流量都会复制到G0/0/24口。抓包时在G0/0/24口上接笔记本用Wireshark抓包就能看到从PC-A发出的广播帧、ARP请求、STP BPDU等。端口镜像是我认为排查二层转发问题最锋利的一把刀。比如两个PC在同一个交换机上ping不通你先查VLAN、查MAC表如果都正常还通不了就镜像两个端口抓包看看ARP请求有没有发出去、有没有回应帧有没有被打上错误的VLAN标签二层的问题瞬间水落石出。6. 典型二层转发故障与排查实录6.1 故障一同一交换机下PC相互ping不通这是一个高频问题现象是同一台交换机下两台PC的IP在同一网段但互相ping不通。排查路径我一般这样走先确认两台PC的VLAN是否一致。如果端口配置了不同的VLAN二层广播域被隔离ARP请求根本无法到达对方。用display port vlan确认端口所属VLAN。再确认两台PC的IP地址是否真的在同一网段。有时候终端上配了不同掩码导致自认为不同网段直接发ARP请求找网关而不是找对方。然后看MAC地址表和ARP表。在交换机上执行display mac-address vlan 10确认两台PC的MAC都学习到了预期端口。最后用端口镜像抓包。看看PC-A发出的ARP请求是否到达PC-B的端口以及PC-B是否返回了ARP回应。如果ARP请求到了但没回应问题就出在PC-B的协议栈或防火墙配置上。6.2 故障二广播风暴导致全网瘫痪广播风暴的典型现象是全网时延暴涨、交换机CPU利用率高、网络几乎不可用。这类故障九成以上是物理环路引起的。我的处置步骤是这样的先登录核心交换机执行display cpu-usage查看CPU利用率如果接近100%基本可以确定是广播风暴。执行display interface brief循环查看各端口的收发包统计端口入方向广播包数量每秒都在暴涨那个端口多半就是下连环路的端口。也可以用一个比较快速的方法在核心交换机上把疑似有环的下联端口逐个shutdown每关一个端口就观察CPU下降情况。一旦CPU掉下来说明该端口下挂的网络存在环路。定位到环路端口后去现场顺着端口找设备拔掉环路线缆。如果是私接小交换机导致建议直接把该端口改成环路检测自动关闭模式下次再出现环路时端口自动关闭网络不至于全挂。另外要检查STP状态display stp brief查看有没有端口长时间处于Learning或Blocking状态以及是否存在TC报文频繁增加的情况。RSTP部署得当的话正常的物理环路会被STP阻塞掉广播风暴一般不会发生所以反复出现风暴的环境大概率是STP没有正常工作或者优先级配置不合理导致阻塞端口选错。6.3 故障三华为交换机ACL单向访问配置失败先说一个大家都遇到过的场景要求A能访问B但B不能访问A。这类ACL需求在华为交换机的VLANIF接口或物理接口上经常配置但不少朋友反馈配置了不管用我排查过很多次最常见的原因有三个。第一ACL只写了单向的入方向规则忽略了回程流量。A访问B时A发出的报文方向是从A到BB回应的报文方向是从B到A。如果你只在A所在网段的入方向配置了禁止B访问A的ACL但在B所在网段或A访问B的方向上没有同时放行就会出现A访问B成功B访问A也成功或者A访问B失败等各种意想不到的结果。ACL的匹配是逐包进行的必须正反两个方向的规则都考虑完整。第二ACL应用位置不对。华为交换机上ACL可以应用在接口的入方向inbound或出方向outbound。假设需求是禁止B访问A你应该在连接A的接口入方向过滤来自B的流量或者更标准地在三层接口VLANIF入方向配置。很多朋友把ACL挂在B一侧接口的outbound方向方向反了ACL永远匹配不到报文。第三ACL规则本身的掩码、反掩码写错。在华为ACL里rule 5 deny ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255注意这里的0.0.0.255是反掩码表示匹配前24位。如果写成255.255.255.0规则就完全失效了因为反掩码的含义完全相反。这类低级错误在现网中出现频率极高排查时第一眼就应该检查反掩码是否写反。我给出一个经过验证的配置思路假设业务网段A是192.168.10.0/24B是192.168.20.0/24需求是A可以访问BB不能访问Aacl number 3001 rule 5 deny ip source 192.168.20.0 0.0.0.255 destination 192.168.10.0 0.0.0.255 rule 10 permit ip # interface Vlanif10 traffic-filter inbound acl 3001关键点ACL挂在VLAN 10A所在的网关接口的入方向这样B访问A的报文在进入VLAN 10三层接口时就被丢弃而A访问B的报文走rule 10 permit ip正常放行。回程方向A发给B的响应不受影响。这套配置我在现网上验证过多次稳定可靠。如果你配置完还是不通用display acl 3001查看规则命中计数如果命中次数一直为0说明流量没走到这条ACL继续查接口应用方向和应用位置。6.4 故障四华为交换机连接思科三层交换机无法转发包华为交换机连接思科三层交换机无法转发包这个问题在热搜词里也有本质上是跨厂商交换机互操作最常见的坑VLAN封装、Trunk协商、以及STP的兼容性。首先要确认的是两端Trunk口的VLAN封装类型是不是都配成了802.1Q。思科的交换机端口默认可能是Dynamic Auto或Dynamic Desirable模式通过DTP协议协商Trunk而华为交换机不识别DTP因此如果思科端口还停留在Dynamic模式华为这端无论怎么强制Trunk对端可能都收不到带标签的帧。解决办法是在思科交换机上执行switchport mode trunk强制指定Trunk模式并确保switchport trunk encapsulation dot1q已配置。其次检查两端Trunk允许的VLAN列表是否一致。思科默认switchport trunk allowed vlan all但有些工程师会手动设置allowed vlan列表漏掉某个VLAN就会导致该VLAN无法跨交换机通信。最后STP兼容性也会引起此类问题。华为默认运行STP或RSTP/MSTP思科运行PVST/PVST。两种生成树模式的处理方式不同可能出现思科端口阻塞了华为交换机发来的BPDU或反向阻塞造成物理链路Up但转发不通。最简单的处理方式是在非核心的冗余链路上关闭STP或者在两端统一运行MSTP且配置相同的域配置。不过关闭STP要谨慎仅建议在物理无环的链路上操作。6.5 故障五交换机死机与CPU异常交换机死机这个关键词背后不只是环路问题还可能是以下原因广播风暴前面已详述是最常见的原因。MAC表震荡MAC Flapping同一个MAC地址在短时间内从不同端口反复学习交换机会不停更新MAC表CPU消耗巨大。典型场景是两台交换机之间有环路或者终端设备通过两条路径同时接入网络。华为交换机上执行display mac-address flapping或display trapbuffer能看到详细的MAC漂移记录。异常组播/广播报文冲击某些应用如视频组播如果未合理配置IGMP Snooping组播报文会在二层广播大量消耗CPU和带宽。可以通过配置IGMP Snooping让交换机组播转发更精准。硬件故障光模块劣化、端口频繁UP/DOWN导致交换芯片不断处理链路事件也会增加CPU负载。排查交换机死机时我一般先看display cpu-usage、display memory-usage确认是否资源耗尽再看display logbuffer检查有没有大量端口Up/Down日志或MAC漂移告警最后用display interface查看端口计数。如果是光模块问题导致频繁Up/Down直接更换光模块通常问题立刻消失。6.6 故障六光口光衰参数怎么看搜华为交换机查看收发光、H3C交换机查光口光衰命令的朋友多半是遇到了光链路丢包或信号变差。二层转发依赖物理链路光口收发光不正常时会出现时延增大、丢包、甚至端口频繁闪断。华为交换机查看光模块收发光功率的命令是display transceiver interface GigabitEthernet0/0/1 verbose输出里会包含Current Tx Power当前发送光功率和Current Rx Power当前接收光功率同时会给出一组阈值范围min/max。光纤的正常工作范围是当前收发光功率在阈值范围内。如果接收光功率过低比如低于-25dBm说明光链路衰减过大常见原因是光纤弯曲过度、接头污染、光模块劣化或者法兰盘对接不紧密。H3C交换机对应的命令是display transceiver diagnosis interface GigabitEthernet1/0/1同样可以查看当前收发光功率和温度、电压、偏置电流等诊断信息。需要注意的是光功率不能只看绝对值必须结合阈值判断。比如同一个光模块收光功率-20dBm对某些模块来说还在正常范围对另一些则已经低于阈值。所以排查时先看状态列是Normal还是Abnormal出现Abnormal再深入处理。7. 二层转发优化与设计建议7.1 根据业务场景设计VLAN与转发边界二层转发的性能和安全很大程度上取决于VLAN规划是否合理。我倾向于遵守几个原则不同业务类型划分到不同VLAN如办公、监控、门禁、无线分别用独立的VLAN互不相通通过三层防火墙统一管控。单个VLAN的终端数量控制在200个以内减少广播域规模。流量大的区域如视频监控尽量单独VLAN避免影响办公网络。接入交换机上采用端口隔离或PVLAN做到同一VLAN内也能隔离敏感业务。7.2 二层转发的收敛与冗余平衡在做网络设计时架构师需要在二层的环路收敛和链路冗余之间做平衡。二层要么用STP去掉环路、牺牲部分冗余要么用链路聚合和堆叠技术实现无环冗余。我个人的偏好是接入和汇聚之间使用链路聚合保持无环同时获得带宽叠加。核心层和汇聚层使用堆叠或M-LAG实现设备级冗余逻辑上仍然是一台设备二层转发不会受环路影响。尽量避免过大的二层域二层的故障域边界要清晰能用三层分割就果断上三层。毕竟广播风暴和MAC漂移在二层域里传播而三层路由天然隔离这些故障。7.3 预防二层转发故障的例行检查项最后列几个我日常巡检交换机时的必做项目可以说这些习惯帮我提前发现了不少隐患定期执行display mac-address检查MAC表数量是否接近设备上限尤其是接入交换机。定期查看display stp brief确认生成树状态正常没有端口长期处于Learning状态。查看display logbuffer关注MAC漂移、环路检测、端口错误告警。检查光模块收发光功率特别是长距离链路预防光模块劣化。每月抽查几个接入端口的端口统计看是否有CRC错误、碰撞冲突等异常计数。8. 写在最后关于二层转发我的一些个人体会做了这么多年网络我越来越觉得二层转发就像空气平时感受不到它的存在一旦出问题整个网络都无法呼吸。很多同事觉得二层转发简单不值得深入研究但实际上真正能把一个复杂的二层环路问题、跨厂商互通问题、ACL转发异常问题干净利落解决掉的工程师对二层转发的理解一定远超查MAC表这个层面。我个人在实际操作中的体会是排查二层转发问题最重要的一是耐心二是方法论。耐心指的是不要一上来就重启设备、改配置而是要一层层剥开现象看本质方法论指的是脑子里要有一条清晰的排查路径——从物理层链路状态到二层MAC表、VLAN、STP再到三层IP路由一步步排除而不是东一榔头西一棒子。最后再分享一个小技巧如果你现场没有抓包工具也没有管理口可以试试在交换机上配置一个临时镜像口把Wireshark装在笔记本上这个方法救过我无数次急。另外遇到配置了却不通的情况多看看设备的告警日志和计数器它们通常比配置文本更能反映出真实的问题所在。希望这篇文章能帮你把二层转发这块地基打得更扎实。
阅读完成 · 觉得有帮助?
咨询建站