ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

三层交换机原理与实战:从VLAN间路由到局域网组网排障

三层交换机原理与实战:从VLAN间路由到局域网组网排障 1. 三层交换机到底解决了什么问题干网络这行的人早晚都会碰到这样一个经典场景公司电脑越加越多财务、研发、行政要划到不同VLAN互相隔离业务系统又需要跨VLAN访问。传统方案是一台二层交换机当核心再串一个路由器做VLAN间网关结果网络一忙路由器CPU直接飙升员工那边开会投屏卡成幻灯片文件服务器动不动就断连。这时候“三层交换机”几乎就是标准答案。它把交换机和路由器的能力合到了一台设备里既保留二层交换的海量端口和线速转发又具备三层路由能力能在硬件层面处理VLAN间的数据转发。说白了局域网里跨VLAN要互访用三层交换机来做核心和网关是目前最主流、性价比最高的组网方式。这篇文章我从原理讲到配置再讲到我实际踩过的坑尽量把一个三层交换机组网方案完整拆给你看。1.1 二层交换机的瓶颈在哪里二层交换机靠MAC地址表转发数据帧工作范围只限于同一个广播域。早期办公网络不划VLAN所有电脑都挤在一个IP网段几百台机器互相发广播包全网性能都会受影响更别提某些应用出问题后产生的大量广播风暴。后来大家开始用VLAN隔离广播域把不同部门、不同业务拆到多个网段。VLAN一分二层交换机就“看不见”其他VLAN的设备了跨VLAN通信必须靠三层转发。这时候问题就来了如果网关放在一台普通路由器上所有跨VLAN流量都要跑到路由器路由器转发数据包通常是CPU处理性能天花板非常低。办公网里视频会议、文件共享、服务器访问这种“东西向流量”占比很高全部都绕到路由器延迟上去了链路也容易拥塞。三层交换机解决的就是这个矛盾接口多、背板带宽大并且把三层转发也做进了硬件芯片不是简单地在二层交换机上叠加一个软件路由模块而是从架构上重新设计了转发通道。1.2 三层交换机和路由器的分工很多人会问路由器不也能做VLAN间路由吗为什么非要用三层交换机关键差异在于设计目标和转发方式。路由器是异构网络互联设备接口数量少主要面向广域网需要处理NAT、防火墙策略、各种WAN协议转发性能更多依赖软件或专用CPU。三层交换机本质上是交换机拥有几十个甚至几百个千兆/万兆口内部背板带宽和硬件转发芯片决定了它可以同时处理海量VLAN间流量。这里可以打个比方路由器像机场安检口一个口一次只能过一个人人一多就开始排队三层交换机像多条ETC车道车的识别和扣费全部自动完成车流再大也基本不堵。所以局域网内部核心选用三层交换机出口路由、NAT这些事仍然交给路由器或防火墙去做两者是分工关系不是替代关系。2. 图解三层交换的核心原理与转发过程三层交换机最核心的机制可以概括为八个字一次路由多次交换。理解这个机制你就理解了三层交换机为什么比“二层交换机路由器”性能高那么多。2.1 一次路由多次交换拿一个最常见的场景举例PC1在VLAN 10IP是192.168.10.10PC2在VLAN 20IP是192.168.20.20。PC1要给PC2发包发现目标地址不在本网段于是把数据帧发给自己的网关192.168.10.1。这个网关地址其实就是三层交换机上VLAN 10的SVI接口地址。传统路由器接到这个包后会做一次完整的路由查询然后重新封装二层帧头交给VLAN 20接口发出去。每个包都走一遍这个流程CPU压力非常大。三层交换机不一样第一个数据包到达时控制平面CPU会做路由查询但查完后不是简单发完就算了而是把转发结果下发到硬件表项生成对应的FIB转发表项和邻接表项。后续同一流向的数据包直接由ASIC芯片查硬件表转发根本不用再上CPU。我实测过一个三层交换机内部的转发延迟跨VLAN ping延迟基本稳定在微秒级而普通路由器做VLAN间转发延迟在几十甚至上百微秒。办公网里业务流量连续不断这种差距会真实地反映在用户体感上。2.2 VLAN间路由的数据流向拆解把上面那个场景细化一下完整的数据包走向大概是这样的过程PC1构造数据包目标IP是192.168.20.20源IP是192.168.10.10但目标MAC地址填的是网关192.168.10.1的MAC。二层帧被送到三层交换机交换机根据目的MAC判断这是发给本机SVI接口的报文于是剥离二层帧头进入三层路由处理流程。三层交换机查询FIB表发现192.168.20.0/24这个网段通过VLAN 20直接可达出接口是VLAN 20的SVI。三层交换机在VLAN 20里发送ARP请求获取PC2的MAC地址或者直接查ARP表找到PC2的MAC如果之前已经学习了。交换机重新封装目的MAC为PC2的MAC、源MAC为VLAN 20接口MAC的以太网帧头把数据包从VLAN 20对应端口转发出去。这个过程中最关键的一点是MAC地址每经过一个三层设备就要被重写一次而IP地址始终不变。这也是“路由”和“交换”最本质的区别——交换不改帧内容路由要重新封装帧头。2.3 硬件转发表项是怎么形成的三层交换机的控制平面和转发平面是分离的。路由协议、ARP协议、DHCP这些协议报文由CPU处理CPU把计算结果编成一张张硬件表下发到ASIC芯片。FIB表来自路由表把目标网段和下一跳、出接口对应起来邻接表来自ARP表把下一跳IP和MAC地址对应起来。数据包实际转发时芯片先查FIB得到下一跳和出接口再查邻接表拿到下一跳的MAC然后直接封装发送。注意一个容易被忽略的点三层交换机并不是每个VLAN都需要配置一个物理端口。VLAN 10和VLAN 20的SVI接口都是虚拟接口可以共享同一个物理口或同一个Trunk口。Trunk口允许哪些VLAN通过SVI路由出来的报文就能从哪个口出去这就是为什么一个上联Trunk口可以承载多个VLAN的跨VLAN流量。3. 局域网组网实战从拓扑设计到配置落地原理讲完了下面进入实操。这里以一个典型的中小型园区网络为例从拓扑结构、VLAN规划到命令行配置完整走一遍。3.1 中小型园区网络拓扑怎么搭标准做法是三层架构核心层、汇聚层、接入层。核心层放两台三层交换机做冗余负责全网路由和网关汇聚层做VLAN网关收敛和策略控制通常也是三层交换机接入层用二层交换机负责终端接入。规模比较小比如一栋楼、一两百终端的时候可以简化直接用一台三层交换机同时承担核心和汇聚功能下面挂几台二层接入交换机。等规模大到几百上千个终端再拆成三层架构。下面是一个简化示意基于我在某园区项目中的拓扑已做脱敏处理[互联网出口路由器/防火墙] | [核心交换机A] ----堆叠/虚拟化---- [核心交换机B] | | | | [汇聚交换机] [汇聚交换机] [汇聚交换机] [汇聚交换机] | | | [接入交换机] [接入交换机] [接入交换机] | PC / IP电话 / 摄像头核心和汇聚之间用万兆或千兆光纤互联接口配置为Trunk放行所有业务VLAN。接入交换机到终端之间用Access口划分VLAN到汇聚用Trunk上联。3.2 VLAN与IP地址规划方案VLAN划分没有绝对标准但有几个原则我一直在用按部门或业务角色分按IP网段分给网络设备单独留VLAN给将来扩展留地址段。一个比较通用的小型办公网规划如下VLAN用途网段网关备注10办公终端192.168.10.0/24192.168.10.1电脑、打印机20研发/测试192.168.20.0/24192.168.20.1可限制外网访问30监控192.168.30.0/24192.168.30.1独立网段禁止访问办公网40服务器192.168.40.0/24192.168.40.1数据库、文件服务器99网络管理192.168.99.0/24192.168.99.1设备管理口选择/24网段有一个原因254个可用地址满足大多数部门需求广播域规模可控路由表也清晰。如果部门人数超过250不要硬扩到/23建议拆成多个/24然后在汇聚层汇总这样排障和路由管理都比一个大段清晰得多。网关全部放在三层交换机上终端只需填IP、掩码、网关不用关心对端在哪个VLAN。DHCP地址池分配完成后新接入的电脑插上网线就能上网这也是三层交换机做网关的最大优势——集中管理。3.3 核心配置与DHCP部署实例下面以某主流厂商的CLI风格为例展示核心交换机上的关键配置命令本身是通用逻辑换到其他厂商只是关键字略有差异。第一步创建VLANvlan 10 name OFFICE vlan 20 name RND vlan 30 name CAMERA vlan 40 name SERVER第二步配置与接入交换机互联的Trunk口interface GigabitEthernet0/0/1 description TO-ACCESS-SW01 port link-type trunk port trunk allow-pass vlan 10 20 30 40 99Trunk放行的VLAN越少越好不要图省事直接放行所有VLAN。这样做的原因是防止某个接入交换机下的广播意外扩散到其他VLAN也减少生成树拓扑变化的影响半径。第三步配置VLAN接口的网关IPinterface Vlanif10 ip address 192.168.10.1 255.255.255.0 interface Vlanif20 ip address 192.168.20.1 255.255.255.0 interface Vlanif30 ip address 192.168.30.1 255.255.255.0 interface Vlanif40 ip address 192.168.40.1 255.255.255.0配置完SVI之后三层交换机路由表里会自动生成192.168.10.0/24直连路由。此时VLAN之间已经可以路由互通了前提是终端得配置上正确的IP和网关。第四步配置DHCP服务DHCP可以在核心交换机上直接启用也可以指向独立DHCP服务器。如果地址池不大直接在交换机上做最简单。dhcp enable ip pool vlan10 network 192.168.10.0 mask 255.255.255.0 gateway-list 192.168.10.1 dns-list 114.114.114.114 lease day 7 interface Vlanif10 dhcp select global其他VLAN同理。配置完成后在接入交换机上接一台电脑自动获取地址如果拿到了192.168.10.x网段的地址说明DHCP链路基本通了。4. VLAN间连通性验证与进阶配置配置写完不等于网络通了。实际项目中最常见的情况是配置看着没问题但VLAN间就是互访不了。从验证方法和进阶配置两方面说说。4.1 连通性验证从ping到逐跳排查配置完成后第一步是在终端上ping网关。如果ping得通网关说明二层链路和SVI没问题然后ping对端VLAN的终端IP测试跨VLAN路由。如果ping不通不要马上怀疑路由协议先按下面顺序排查在核心交换机上执行display ip routing-table确认目标网段路由存在。执行display arp看对端终端的ARP表项有没有学到。执行display mac-address看终端的MAC地址是否在正确的VLAN和端口下。检查接入交换机端口VLAN划分是否准确Trunk口是否放行了对应VLAN。我碰到过很多次“SVI配置了、路由也有、但就是ping不通”的案例最后查出来是接入交换机某个端口还在旧的VLAN里。二层划分错三层再对也没有用。4.2 三层链路与动态路由选择当网络规模变大核心和汇聚之间不一定只做二层Trunk也会直接跑三层路由。比如汇聚交换机连接终端的SVI做网关核心交换机之间跑OSPF这样某个汇聚设备挂了不会影响全局转发。小规模网络用静态路由足够核心和汇聚之间配置几条静态路由就能打通。中大规模网络建议启用OSPF原因在于网络拓扑变化时动态路由能自动收敛不用人工维护一堆静态路由。OSPF配置本身不复杂核心区域area 0汇聚接入area 0或非0区域注意router-id全局唯一避免环路。三层交换机之间的互联口如果跑OSPF一般配置为三层接口并启用OSPF不再设置为Trunk口。这里强调一句不要把三层接口和二层Trunk混在一个物理链路上否则路由协议和VLAN报文交织在一起调试时极易出问题。4.3 高可用与链路冗余怎么玩核心设备最怕单点故障所以稍正规点的机房都会放两台核心交换机。两台设备之间的冗余方案有几种常见做法堆叠把两台设备虚拟成一台管理IP统一端口资源翻倍。缺点是升级风险集中一旦堆叠分裂影响面大。网关虚拟化在两台三层交换机上配置相同的虚拟IP和虚拟MAC终端网关只有一个主备设备自动切换服务器一般用这种方式保证网关不中断。链路聚合核心和汇聚之间用两条物理链路绑成一个Eth-Trunk带宽翻倍单条链路断掉不影响通信。链路聚合配置时要注意两端聚合模式必须一致成员端口取消原有VLAN配置统一加入聚合口后再配置Trunk属性。不要一条一条改成员口顺序不对会导致配置不一致。5. 实战排障那些年我踩过的坑下面列几个我在三层交换机组网项目里反复遇到的问题有些问题甚至排查了好几天才定位到根因希望你能少走弯路。5.1 VLAN间互访不通这是一个排查优先级极高的问题。下面整理一个速查表现象常见原因排查方式终端ping不通网关端口VLAN划错检查接入端口PVID和Access / Trunk属性网关能通跨VLAN不通SVI未启用或路由缺失display ip routing-table检查直连路由路由存在但ARP学不到对端设备防火墙/终端防火墙拦截在终端上临时关闭防火墙ping一下一到忙时就不通广播域过大、ARP表项被刷掉合理缩小VLAN规模硬化接入端口部分VLAN不通Trunk未放行对应VLAN检查上联口port trunk allow-pass vlan排查时记得看MAC地址表和ARP表这两个表能帮你快速定位是二层问题还是三层问题。5.2 DHCP获取不到IP地址新接入设备拿不到IP常见原因有核心交换机上DHCP服务没开或者地址池和SVI网段不匹配。VLAN接口下没启用DHCP或者设备配置了DHCP中继但指向的服务器IP不对。接入交换机开了DHCP Snooping端口信任状态不对合法DHCP报文被丢弃。地址池满了特别是终端数量超过255的/24网段很容易踩这个坑。如果启用了DHCP Snooping一定要仔细设置上联口为信任口下联口不信任。信任口配置错了核心交换机下发的DHCP Offer会被接入交换机当成非法报文丢掉。5.3 广播风暴与环路的预防三层交换机组网环境里一旦出现环路广播帧会在交换机之间打转CPU使用率直接拉满全网瘫痪。现在STP普遍启用但仍建议从接入层就开始控制。我自己的习惯是Trunk口只放行必要VLAN接入终端口开启边缘端口并启用BPDU保护。边缘端口直接接终端不会收到BPDU一旦收到就说明有人私接交换机形成环路设备会自动把端口置为错误状态从而保住整网。还有一点容易被忽略三层交换机之间的互联如果用了Trunk口并放行多个VLAN链路两端又同时跑三层路由容易造成数据面环路和路由环路叠加。所以设计时三层互联链路就老老实实做三层路由口二层VLAN只走专门的接入侧链路别把什么流量都塞到一个逻辑口上。最后说一个我自己的习惯每次配置完三层交换机我一定会保存配置并且把ARP表、路由表、接口状态全部截图存档。然后模拟一次核心设备重启确认重启后路由协议能正常收敛、DHCP能正常分配地址。这套动作看起来多花十分钟但很多时候能提前暴露配置文件写错、地址池引用错误等问题比上线后深夜被电话叫醒再排查要划算太多。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表