:從VLAN間路由到局域網(wǎng)組網(wǎng)排障)
1. 三層交換機到底解決了什么問題干網(wǎng)絡(luò)這行的人早晚都會碰到這樣一個經(jīng)典場景公司電腦越加越多財務(wù)、研發(fā)、行政要劃到不同VLAN互相隔離業(yè)務(wù)系統(tǒng)又需要跨VLAN訪問。傳統(tǒng)方案是一臺二層交換機當核心再串一個路由器做VLAN間網(wǎng)關(guān)結(jié)果網(wǎng)絡(luò)一忙路由器CPU直接飆升員工那邊開會投屏卡成幻燈片文件服務(wù)器動不動就斷連。這時候“三層交換機”幾乎就是標準答案。它把交換機和路由器的能力合到了一臺設(shè)備里既保留二層交換的海量端口和線速轉(zhuǎn)發(fā)又具備三層路由能力能在硬件層面處理VLAN間的數(shù)據(jù)轉(zhuǎn)發(fā)。說白了局域網(wǎng)里跨VLAN要互訪用三層交換機來做核心和網(wǎng)關(guān)是目前最主流、性價比最高的組網(wǎng)方式。這篇文章我從原理講到配置再講到我實際踩過的坑盡量把一個三層交換機組網(wǎng)方案完整拆給你看。1.1 二層交換機的瓶頸在哪里二層交換機靠MAC地址表轉(zhuǎn)發(fā)數(shù)據(jù)幀工作范圍只限于同一個廣播域。早期辦公網(wǎng)絡(luò)不劃VLAN所有電腦都擠在一個IP網(wǎng)段幾百臺機器互相發(fā)廣播包全網(wǎng)性能都會受影響更別提某些應(yīng)用出問題后產(chǎn)生的大量廣播風暴。后來大家開始用VLAN隔離廣播域把不同部門、不同業(yè)務(wù)拆到多個網(wǎng)段。VLAN一分二層交換機就“看不見”其他VLAN的設(shè)備了跨VLAN通信必須靠三層轉(zhuǎn)發(fā)。這時候問題就來了如果網(wǎng)關(guān)放在一臺普通路由器上所有跨VLAN流量都要跑到路由器路由器轉(zhuǎn)發(fā)數(shù)據(jù)包通常是CPU處理性能天花板非常低。辦公網(wǎng)里視頻會議、文件共享、服務(wù)器訪問這種“東西向流量”占比很高全部都繞到路由器延遲上去了鏈路也容易擁塞。三層交換機解決的就是這個矛盾接口多、背板帶寬大并且把三層轉(zhuǎn)發(fā)也做進了硬件芯片不是簡單地在二層交換機上疊加一個軟件路由模塊而是從架構(gòu)上重新設(shè)計了轉(zhuǎn)發(fā)通道。1.2 三層交換機和路由器的分工很多人會問路由器不也能做VLAN間路由嗎為什么非要用三層交換機關(guān)鍵差異在于設(shè)計目標和轉(zhuǎn)發(fā)方式。路由器是異構(gòu)網(wǎng)絡(luò)互聯(lián)設(shè)備接口數(shù)量少主要面向廣域網(wǎng)需要處理NAT、防火墻策略、各種WAN協(xié)議轉(zhuǎn)發(fā)性能更多依賴軟件或?qū)S肅PU。三層交換機本質(zhì)上是交換機擁有幾十個甚至幾百個千兆/萬兆口內(nèi)部背板帶寬和硬件轉(zhuǎn)發(fā)芯片決定了它可以同時處理海量VLAN間流量。這里可以打個比方路由器像機場安檢口一個口一次只能過一個人人一多就開始排隊三層交換機像多條ETC車道車的識別和扣費全部自動完成車流再大也基本不堵。所以局域網(wǎng)內(nèi)部核心選用三層交換機出口路由、NAT這些事仍然交給路由器或防火墻去做兩者是分工關(guān)系不是替代關(guān)系。2. 圖解三層交換的核心原理與轉(zhuǎn)發(fā)過程三層交換機最核心的機制可以概括為八個字一次路由多次交換。理解這個機制你就理解了三層交換機為什么比“二層交換機路由器”性能高那么多。2.1 一次路由多次交換拿一個最常見的場景舉例PC1在VLAN 10IP是192.168.10.10PC2在VLAN 20IP是192.168.20.20。PC1要給PC2發(fā)包發(fā)現(xiàn)目標地址不在本網(wǎng)段于是把數(shù)據(jù)幀發(fā)給自己的網(wǎng)關(guān)192.168.10.1。這個網(wǎng)關(guān)地址其實就是三層交換機上VLAN 10的SVI接口地址。傳統(tǒng)路由器接到這個包后會做一次完整的路由查詢?nèi)缓笾匦路庋b二層幀頭交給VLAN 20接口發(fā)出去。每個包都走一遍這個流程CPU壓力非常大。三層交換機不一樣第一個數(shù)據(jù)包到達時控制平面CPU會做路由查詢但查完后不是簡單發(fā)完就算了而是把轉(zhuǎn)發(fā)結(jié)果下發(fā)到硬件表項生成對應(yīng)的FIB轉(zhuǎn)發(fā)表項和鄰接表項。后續(xù)同一流向的數(shù)據(jù)包直接由ASIC芯片查硬件表轉(zhuǎn)發(fā)根本不用再上CPU。我實測過一個三層交換機內(nèi)部的轉(zhuǎn)發(fā)延遲跨VLAN ping延遲基本穩(wěn)定在微秒級而普通路由器做VLAN間轉(zhuǎn)發(fā)延遲在幾十甚至上百微秒。辦公網(wǎng)里業(yè)務(wù)流量連續(xù)不斷這種差距會真實地反映在用戶體感上。2.2 VLAN間路由的數(shù)據(jù)流向拆解把上面那個場景細化一下完整的數(shù)據(jù)包走向大概是這樣的過程PC1構(gòu)造數(shù)據(jù)包目標IP是192.168.20.20源IP是192.168.10.10但目標MAC地址填的是網(wǎng)關(guān)192.168.10.1的MAC。二層幀被送到三層交換機交換機根據(jù)目的MAC判斷這是發(fā)給本機SVI接口的報文于是剝離二層幀頭進入三層路由處理流程。三層交換機查詢FIB表發(fā)現(xiàn)192.168.20.0/24這個網(wǎng)段通過VLAN 20直接可達出接口是VLAN 20的SVI。三層交換機在VLAN 20里發(fā)送ARP請求獲取PC2的MAC地址或者直接查ARP表找到PC2的MAC如果之前已經(jīng)學(xué)習(xí)了。交換機重新封裝目的MAC為PC2的MAC、源MAC為VLAN 20接口MAC的以太網(wǎng)幀頭把數(shù)據(jù)包從VLAN 20對應(yīng)端口轉(zhuǎn)發(fā)出去。這個過程中最關(guān)鍵的一點是MAC地址每經(jīng)過一個三層設(shè)備就要被重寫一次而IP地址始終不變。這也是“路由”和“交換”最本質(zhì)的區(qū)別——交換不改幀內(nèi)容路由要重新封裝幀頭。2.3 硬件轉(zhuǎn)發(fā)表項是怎么形成的三層交換機的控制平面和轉(zhuǎn)發(fā)平面是分離的。路由協(xié)議、ARP協(xié)議、DHCP這些協(xié)議報文由CPU處理CPU把計算結(jié)果編成一張張硬件表下發(fā)到ASIC芯片。FIB表來自路由表把目標網(wǎng)段和下一跳、出接口對應(yīng)起來鄰接表來自ARP表把下一跳IP和MAC地址對應(yīng)起來。數(shù)據(jù)包實際轉(zhuǎn)發(fā)時芯片先查FIB得到下一跳和出接口再查鄰接表拿到下一跳的MAC然后直接封裝發(fā)送。注意一個容易被忽略的點三層交換機并不是每個VLAN都需要配置一個物理端口。VLAN 10和VLAN 20的SVI接口都是虛擬接口可以共享同一個物理口或同一個Trunk口。Trunk口允許哪些VLAN通過SVI路由出來的報文就能從哪個口出去這就是為什么一個上聯(lián)Trunk口可以承載多個VLAN的跨VLAN流量。3. 局域網(wǎng)組網(wǎng)實戰(zhàn)從拓撲設(shè)計到配置落地原理講完了下面進入實操。這里以一個典型的中小型園區(qū)網(wǎng)絡(luò)為例從拓撲結(jié)構(gòu)、VLAN規(guī)劃到命令行配置完整走一遍。3.1 中小型園區(qū)網(wǎng)絡(luò)拓撲怎么搭標準做法是三層架構(gòu)核心層、匯聚層、接入層。核心層放兩臺三層交換機做冗余負責全網(wǎng)路由和網(wǎng)關(guān)匯聚層做VLAN網(wǎng)關(guān)收斂和策略控制通常也是三層交換機接入層用二層交換機負責終端接入。規(guī)模比較小比如一棟樓、一兩百終端的時候可以簡化直接用一臺三層交換機同時承擔核心和匯聚功能下面掛幾臺二層接入交換機。等規(guī)模大到幾百上千個終端再拆成三層架構(gòu)。下面是一個簡化示意基于我在某園區(qū)項目中的拓撲已做脫敏處理[互聯(lián)網(wǎng)出口路由器/防火墻] | [核心交換機A] ----堆疊/虛擬化---- [核心交換機B] | | | | [匯聚交換機] [匯聚交換機] [匯聚交換機] [匯聚交換機] | | | [接入交換機] [接入交換機] [接入交換機] | PC / IP電話 / 攝像頭核心和匯聚之間用萬兆或千兆光纖互聯(lián)接口配置為Trunk放行所有業(yè)務(wù)VLAN。接入交換機到終端之間用Access口劃分VLAN到匯聚用Trunk上聯(lián)。3.2 VLAN與IP地址規(guī)劃方案VLAN劃分沒有絕對標準但有幾個原則我一直在用按部門或業(yè)務(wù)角色分按IP網(wǎng)段分給網(wǎng)絡(luò)設(shè)備單獨留VLAN給將來擴展留地址段。一個比較通用的小型辦公網(wǎng)規(guī)劃如下VLAN用途網(wǎng)段網(wǎng)關(guān)備注10辦公終端192.168.10.0/24192.168.10.1電腦、打印機20研發(fā)/測試192.168.20.0/24192.168.20.1可限制外網(wǎng)訪問30監(jiān)控192.168.30.0/24192.168.30.1獨立網(wǎng)段禁止訪問辦公網(wǎng)40服務(wù)器192.168.40.0/24192.168.40.1數(shù)據(jù)庫、文件服務(wù)器99網(wǎng)絡(luò)管理192.168.99.0/24192.168.99.1設(shè)備管理口選擇/24網(wǎng)段有一個原因254個可用地址滿足大多數(shù)部門需求廣播域規(guī)模可控路由表也清晰。如果部門人數(shù)超過250不要硬擴到/23建議拆成多個/24然后在匯聚層匯總這樣排障和路由管理都比一個大段清晰得多。網(wǎng)關(guān)全部放在三層交換機上終端只需填I(lǐng)P、掩碼、網(wǎng)關(guān)不用關(guān)心對端在哪個VLAN。DHCP地址池分配完成后新接入的電腦插上網(wǎng)線就能上網(wǎng)這也是三層交換機做網(wǎng)關(guān)的最大優(yōu)勢——集中管理。3.3 核心配置與DHCP部署實例下面以某主流廠商的CLI風格為例展示核心交換機上的關(guān)鍵配置命令本身是通用邏輯換到其他廠商只是關(guān)鍵字略有差異。第一步創(chuàng)建VLANvlan 10 name OFFICE vlan 20 name RND vlan 30 name CAMERA vlan 40 name SERVER第二步配置與接入交換機互聯(lián)的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接口的網(wǎng)關(guān)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之間已經(jīng)可以路由互通了前提是終端得配置上正確的IP和網(wǎng)關(guān)。第四步配置DHCP服務(wù)DHCP可以在核心交換機上直接啟用也可以指向獨立DHCP服務(wù)器。如果地址池不大直接在交換機上做最簡單。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網(wǎng)段的地址說明DHCP鏈路基本通了。4. VLAN間連通性驗證與進階配置配置寫完不等于網(wǎng)絡(luò)通了。實際項目中最常見的情況是配置看著沒問題但VLAN間就是互訪不了。從驗證方法和進階配置兩方面說說。4.1 連通性驗證從ping到逐跳排查配置完成后第一步是在終端上ping網(wǎng)關(guān)。如果ping得通網(wǎng)關(guān)說明二層鏈路和SVI沒問題然后ping對端VLAN的終端IP測試跨VLAN路由。如果ping不通不要馬上懷疑路由協(xié)議先按下面順序排查在核心交換機上執(zhí)行display ip routing-table確認目標網(wǎng)段路由存在。執(zhí)行display arp看對端終端的ARP表項有沒有學(xué)到。執(zhí)行display mac-address看終端的MAC地址是否在正確的VLAN和端口下。檢查接入交換機端口VLAN劃分是否準確Trunk口是否放行了對應(yīng)VLAN。我碰到過很多次“SVI配置了、路由也有、但就是ping不通”的案例最后查出來是接入交換機某個端口還在舊的VLAN里。二層劃分錯三層再對也沒有用。4.2 三層鏈路與動態(tài)路由選擇當網(wǎng)絡(luò)規(guī)模變大核心和匯聚之間不一定只做二層Trunk也會直接跑三層路由。比如匯聚交換機連接終端的SVI做網(wǎng)關(guān)核心交換機之間跑OSPF這樣某個匯聚設(shè)備掛了不會影響全局轉(zhuǎn)發(fā)。小規(guī)模網(wǎng)絡(luò)用靜態(tài)路由足夠核心和匯聚之間配置幾條靜態(tài)路由就能打通。中大規(guī)模網(wǎng)絡(luò)建議啟用OSPF原因在于網(wǎng)絡(luò)拓撲變化時動態(tài)路由能自動收斂不用人工維護一堆靜態(tài)路由。OSPF配置本身不復(fù)雜核心區(qū)域area 0匯聚接入area 0或非0區(qū)域注意router-id全局唯一避免環(huán)路。三層交換機之間的互聯(lián)口如果跑OSPF一般配置為三層接口并啟用OSPF不再設(shè)置為Trunk口。這里強調(diào)一句不要把三層接口和二層Trunk混在一個物理鏈路上否則路由協(xié)議和VLAN報文交織在一起調(diào)試時極易出問題。4.3 高可用與鏈路冗余怎么玩核心設(shè)備最怕單點故障所以稍正規(guī)點的機房都會放兩臺核心交換機。兩臺設(shè)備之間的冗余方案有幾種常見做法堆疊把兩臺設(shè)備虛擬成一臺管理IP統(tǒng)一端口資源翻倍。缺點是升級風險集中一旦堆疊分裂影響面大。網(wǎng)關(guān)虛擬化在兩臺三層交換機上配置相同的虛擬IP和虛擬MAC終端網(wǎng)關(guān)只有一個主備設(shè)備自動切換服務(wù)器一般用這種方式保證網(wǎng)關(guān)不中斷。鏈路聚合核心和匯聚之間用兩條物理鏈路綁成一個Eth-Trunk帶寬翻倍單條鏈路斷掉不影響通信。鏈路聚合配置時要注意兩端聚合模式必須一致成員端口取消原有VLAN配置統(tǒng)一加入聚合口后再配置Trunk屬性。不要一條一條改成員口順序不對會導(dǎo)致配置不一致。5. 實戰(zhàn)排障那些年我踩過的坑下面列幾個我在三層交換機組網(wǎng)項目里反復(fù)遇到的問題有些問題甚至排查了好幾天才定位到根因希望你能少走彎路。5.1 VLAN間互訪不通這是一個排查優(yōu)先級極高的問題。下面整理一個速查表現(xiàn)象常見原因排查方式終端ping不通網(wǎng)關(guān)端口VLAN劃錯檢查接入端口PVID和Access / Trunk屬性網(wǎng)關(guān)能通跨VLAN不通SVI未啟用或路由缺失display ip routing-table檢查直連路由路由存在但ARP學(xué)不到對端設(shè)備防火墻/終端防火墻攔截在終端上臨時關(guān)閉防火墻ping一下一到忙時就不通廣播域過大、ARP表項被刷掉合理縮小VLAN規(guī)模硬化接入端口部分VLAN不通Trunk未放行對應(yīng)VLAN檢查上聯(lián)口port trunk allow-pass vlan排查時記得看MAC地址表和ARP表這兩個表能幫你快速定位是二層問題還是三層問題。5.2 DHCP獲取不到IP地址新接入設(shè)備拿不到IP常見原因有核心交換機上DHCP服務(wù)沒開或者地址池和SVI網(wǎng)段不匹配。VLAN接口下沒啟用DHCP或者設(shè)備配置了DHCP中繼但指向的服務(wù)器IP不對。接入交換機開了DHCP Snooping端口信任狀態(tài)不對合法DHCP報文被丟棄。地址池滿了特別是終端數(shù)量超過255的/24網(wǎng)段很容易踩這個坑。如果啟用了DHCP Snooping一定要仔細設(shè)置上聯(lián)口為信任口下聯(lián)口不信任。信任口配置錯了核心交換機下發(fā)的DHCP Offer會被接入交換機當成非法報文丟掉。5.3 廣播風暴與環(huán)路的預(yù)防三層交換機組網(wǎng)環(huán)境里一旦出現(xiàn)環(huán)路廣播幀會在交換機之間打轉(zhuǎn)CPU使用率直接拉滿全網(wǎng)癱瘓?,F(xiàn)在STP普遍啟用但仍建議從接入層就開始控制。我自己的習(xí)慣是Trunk口只放行必要VLAN接入終端口開啟邊緣端口并啟用BPDU保護。邊緣端口直接接終端不會收到BPDU一旦收到就說明有人私接交換機形成環(huán)路設(shè)備會自動把端口置為錯誤狀態(tài)從而保住整網(wǎng)。還有一點容易被忽略三層交換機之間的互聯(lián)如果用了Trunk口并放行多個VLAN鏈路兩端又同時跑三層路由容易造成數(shù)據(jù)面環(huán)路和路由環(huán)路疊加。所以設(shè)計時三層互聯(lián)鏈路就老老實實做三層路由口二層VLAN只走專門的接入側(cè)鏈路別把什么流量都塞到一個邏輯口上。最后說一個我自己的習(xí)慣每次配置完三層交換機我一定會保存配置并且把ARP表、路由表、接口狀態(tài)全部截圖存檔。然后模擬一次核心設(shè)備重啟確認重啟后路由協(xié)議能正常收斂、DHCP能正常分配地址。這套動作看起來多花十分鐘但很多時候能提前暴露配置文件寫錯、地址池引用錯誤等問題比上線后深夜被電話叫醒再排查要劃算太多。