交(jiāo)換機中網絡環(huán)路(lù)常(cháng)見問題詳解(jiě)
以太網(wǎng)中的交換機之間(jiān)存在(zài)不恰當的端口(kǒu)相連(lián)會造(zào)成網絡環路,如果(guǒ)相關的交換機沒有打開STP功能(néng),這(zhè)種環(huán)路會引(yǐn)發數據包的無休止重複(fù)轉發,形成(chéng)廣(guǎng)播(bō)風暴,從而造成網絡故障。
一(yī)天(tiān),我們在校園網的網絡運行性能(néng)監控平台上發現某(mǒu)棟摟(lǒu)的(de)VLAN有問題(tí)——其接入(rù)交換機與校園網的(de)連接中(zhōng)斷。檢查放(fàng)置在網絡(luò)中心的匯聚交換機,測得與之相(xiàng)連的100BASE-FX端口(kǒu)有大量的入流(liú)量,而出流量卻非(fēi)常少,顯得很不正常(cháng)。然(rán)而這台匯聚交換機的性能似(sì)乎還(hái)行(háng),感(gǎn)覺不到有什麽(me)問題。於是,我們在這(zhè)台(tái)匯聚交換機上鏡(jìng)像這個異常端(duān)口,用協議分(fèn)析(xī)工具Sniffer來抓包,最多時每秒鍾居然能抓到10萬(wàn)多個。對這些數據包(bāo)進行(háng)簡單分析,我們發現其中一(yī)些共同特征。
當時(shí),我們急於盡快搶修網絡,沒去深(shēn)究這(zhè)些數據包的特征,隻(zhī)看到第(dì)1點就以為網絡(luò)受到(dào)不明(míng)來曆的Syn Flood攻擊,估計(jì)是由一種新網絡病毒引(yǐn)起,馬上把這(zhè)台匯聚交換機上該端口(kǒu)禁用(yòng)掉(diào),以免造(zào)成網絡性能的(de)下降。
故障排除(chú)
為了能在現場測(cè)試網絡的連(lián)通性(xìng),在網絡(luò)中(zhōng)心,我(wǒ)們把(bǎ)連接那棟大樓(lóu)接入交(jiāo)換機的多模(mó)尾(wěi)纖經光(guāng)電轉(zhuǎn)換器用雙絞線連到一(yī)台PC上(shàng),並將其模擬成那個問題 VLAN的(de)網(wǎng)關。然後,到現場找來大樓網管員,想讓他協助我們盡快把感染了(le)未知(zhī)病毒的主機查到(dào)並(bìng)隔離。據(jù)大樓網管員反映,昨天網絡還算正常(cháng),不過,當時本大樓某部門正在做網絡調整(zhěng),今天上班就發現網(wǎng)絡不行了,不知跟他們有沒有(yǒu)關係。我們認為調整網絡應該跟感(gǎn)染病毒關(guān)係(xì)不大。在大樓主配線間,我們(men)把(bǎ)該(gāi)接入交(jiāo)換(huàn)機上的網線都(dōu)拔掉,接上手提電(diàn)腦,能連通(tōng)網絡中心的測試主(zhǔ)機。我(wǒ)們確認鏈路沒問題(tí)後,每(měi)次將剩餘網線數量的一半插回該交換(huàn)機,經測(cè)試(shì)沒(méi)問題則如是繼續下去(qù),否則換插另一半,逐漸縮小懷疑有問題(tí)網線的數量。我們最(zuì)終找(zhǎo)到一條會引起問題的網(wǎng)線,隻要插上這(zhè)根網線,該大樓網絡就會(huì)與模擬網關中斷(duàn)連接。經大樓網管員辨認,這條網線(xiàn)是連(lián)接昨(zuó)天在做網絡調整的那個部門的。他還說(shuō)以前該部們拉了(le)一(yī)主(zhǔ)一備兩條網線(xiàn),應該(gāi)還(hái)有(yǒu)一條,並親自在那台交換機上把另一條找了出來。隨意插上這兩條網(wǎng)線中(zhōng)的一條,網絡沒問題,但(dàn)隻(zhī)要同時(shí)插上,就有問題(tí),哪有在一(yī)台(tái)交(jiāo)換機(jī)上同(tóng)時插上兩條網
線才(cái)會激活網絡病毒(dú)的SYN Flood攻擊(jī)的?這時我們倒是覺(jiào)得這種現象更像(xiàng)是網絡(luò)中有環路。我們到了那(nà)個部門發(fā)現有三台非管理型交換機(jī),都是串在一起的,然而其中兩台又分別通(tōng)過那兩條網(wǎng)線與接(jiē)入(rù)交換機相連,從(cóng)而導致了網絡環(huán)路(lù)。顯然是(shì)施工人員對網絡拓(tuò)撲不(bú)清楚,當時大樓網管(guǎn)員有事外出,就自以為是地把(bǎ)線(xiàn)接錯了,從而造(zào)成了這起網絡事故。原因找到就好辦了,隻需拔掉其(qí)中一條上聯網線即可恢(huī)複網(wǎng)絡連通。 經過一番周折(shé),網絡恢複了正常,但我們還一直在(zài)想(xiǎng),是什麽(me)幹擾(rǎo)了我(wǒ)們的判斷呢?
故障(zhàng)分析
一起典型的(de)網(wǎng)絡環路(lù)故障(zhàng),用協議分析工具Sniffer抓了(le)這麽(me)多的數據包,經過一番分(fèn)析卻沒看出問題來。顯(xiǎn)然,第(dì)一眼看到大(dà)量的SYN包讓我們產生了(le)錯覺,想當然地(dì)就以為是SYN Flood攻擊。事後,我們就(jiù)這(zhè)起網絡環路故障(zhàng)排除過程做了檢討,重(chóng)新仔細地分析(xī)抓回來的這些數據包,據(jù)此解釋一下前麵提到這些數據包所(suǒ)具(jù)有的5個共同特(tè)征,以(yǐ)便今後遇到同類問題時能及時作出正(zhèng)確的反應。先(xiān)看前4個特征(zhēng):匯(huì)聚交換機(jī)是網絡層設備,該大樓所屬VLAN的網絡層接(jiē)口就設置(zhì)在這台(tái)匯聚交換(huàn)機上,出(chū)於實施網絡管理策略的需要,對已注冊或沒(méi)注冊的 IP地址都進行了MAC地址的綁定(dìng)。TCP連接要經過3次握手才能建立起來,在這裏發起連(lián)接的SYN包長度為28個字(zì)節,加(jiā)上14個字節(jiē)的以太(tài)幀頭(tóu)部和 20個(gè)字(zì)節的IP報(bào)頭,由Sniffer捕獲(huò)到的幀長(zhǎng)度共為62個字節(不(bú)包含4字(zì)節的(de)差錯檢測FCS域)。恰巧當時訪(fǎng)問(wèn)該VLAN的單播幀是(shì)來自外(wài)網的 TCP請求包,根據以太網橋(qiáo)的轉發機(jī)製,通過CRC正確(què)性檢(jiǎn)測後,因已做(zuò)靜態ARP配置,這台匯聚(jù)交換機會將該單播幀的源(yuán)MAC地(dì)址轉換成本(běn)機的MAC地址,其(qí)目的(de)MAC地址依據(jù)綁定參數來更換,並重新計(jì)算CRC值,更新FCS域(yù),經過這樣重新封裝後,再(zài)轉發到那棟樓的接入交換機。
再看最後1個特征:網橋是一種存(cún)儲轉發設(shè)備,用來(lái)連(lián)接(jiē)相似(sì)的局(jú)域(yù)網(wǎng)。這(zhè)些網橋在所有端(duān)口上監(jiān)聽著傳(chuán)送過來的每一個數據(jù)幀,利用橋接(jiē)表作(zuò)為該(gāi)數據幀的轉發依據(jù)。橋(qiáo)接表是MAC地址(zhǐ)和用於到(dào)達該地址的端口號的一個“MAC地址-端(duān)口號”列表,它利用數據(jù)幀的源MAC地址和接收該(gāi)幀的端口號(hào)來(lái)刷新。網(wǎng)橋(qiáo)是這樣來使用橋接表的(de):當網橋從一個端口接(jiē)收(shōu)到一個數據幀時,會(huì)先刷(shuā)新橋接表,再在(zài)其橋接表中查(chá)找該幀的目的MAC地址。如果找(zhǎo)到,就會從對應這個MAC地址的端口(kǒu)轉(zhuǎn)發該幀(如果這個轉發端口與接收端口(kǒu)是相同(tóng),就會丟棄(qì)該幀)。
如果找不到(dào),就(jiù)會(huì)向除了接收端口以(yǐ)外的(de)其他端口轉發該幀,即廣播該幀。這裏假定(dìng)在整個轉發過程中(zhōng),網橋A、B、C和D都在其橋(qiáo)接表中查(chá)找不到該數據幀的目的MAC地址,即這些(xiē)網橋都不知(zhī)道(dào)應該從哪個端口轉發(fā)該(gāi)幀。當(dāng)網橋(qiáo)A從上聯(lián)端口(kǒu)接收到一個來自上遊網絡的單播幀時,會廣播該幀(zhēn),網橋B、C收到後也會廣(guǎng)播該(gāi)幀,網橋(qiáo)D收到分別來自網橋B、C的這個單播(bō)幀,並分別經網橋C、B傳送(sòng)回(huí)網橋 A,到此網橋A收到(dào)了該(gāi)單播幀(zhēn)的兩(liǎng)個副本。在這樣(yàng)的循環轉(zhuǎn)發過程中(zhōng),網(wǎng)橋A不停地在不同端口(這時已經不涉(shè)及(jí)上聯(lián)端口了)接收到相同的幀,由(yóu)於接收端(duān)口(kǒu)在改變,橋接表也在改變(biàn)“源MAC-端口(kǒu)號”的(de)列表內容。前麵已經假(jiǎ)定網橋的(de)橋接表中沒有(yǒu)該(gāi)幀的目的MAC地(dì)址,網橋(qiáo)A在分別(bié)收到這(zhè)兩個單播幀(zhēn)後,都(dōu)隻能再(zài)次向除了(le)接收端口以外的其他端口廣(guǎng)播該幀,故該幀也會(huì)向(xiàng)上聯端口(kǒu)轉(zhuǎn)發。
就每(měi)個單播幀而言(yán),網橋(qiáo)A重複前麵提到的過程,理(lǐ)論上,廣播(bō)一次(cì)會收到21個幀,廣播兩次就(jiù)會收到22個幀,…,廣播到第n次就會收到2n個幀(zhēn)。總之,網橋A照這樣轉發下去,很(hěn)快就會形成廣播風暴,這個(gè)單播(bō)幀的副本最終會消(xiāo)耗完100BASE-X端口(kǒu)帶寬(kuān)。盡管在這期間上聯端口會(huì)有許多數據幀(zhēn)在相互碰(pèng)撞而變的(de)不完整,令Sniffer捕獲不到,但可以想象得到這個單播幀的重複(fù)出(chū)現(xiàn)次數仍然會非常多。我們再次檢查那些抓回來的數(shù)據包,幾乎都發現有當時沒有注意到的(de)重複標誌。按(àn)64字節包(bāo)長來計算,以太網交換機的100BASE-FX端口轉發線速可(kě)達144000pps。在這(zhè)種網絡(luò)環(huán)路狀態下, Sniffer完全(quán)有可能每秒抓到(dào)10萬多個(gè)包長為66字節(jiē)的數據包。
基於上述理(lǐ)由,由於當時那(nà)4台交換機的橋接(jiē)表中都沒(méi)有(yǒu)該包的目的MAC地址,處(chù)於上遊網絡的(de)這台匯(huì)聚交換機向該大樓發送了(le)一個TCP請求包後(hòu),就會不斷地收到由該(gāi)大樓接入交(jiāo)換機轉發回(huí)來的該TCP包的副本,而且(qiě)數量非常地多(形成大流量),然而,它並不會把接(jiē)收到(dào)的這些(xiē)包重發回去(qù);Internet 的網絡應用是基於請求/應答模式的,隻有發送/接收兩條信道都暢(chàng)通,才能進行端到端的通信(xìn)。一(yī)旦本次網(wǎng)絡應用中有一條信道被堵塞了(le),就會使得(dé)該應用因(yīn)無法(fǎ)進行而結束。網(wǎng)絡應用結束後(hòu),一般來說,發起請求一方不(bú)會就本次應用再次(cì)自動發(fā)出請求包。於是,在網絡環(huán)路狀態中普(pǔ)遍會有一條信道(dào)有大流量,另一條信(xìn)道幾乎沒(méi)有流量的現(xiàn)象。因為VLAN有(yǒu)隔離廣播域的功能,這些(xiē)大流(liú)量不會(huì)穿越網(wǎng)絡(luò)層,所以不會對匯聚交換機造(zào)成很大壓力。事實(shí)上,由(yóu)於這種網絡環路是數據鏈路(lù)層上(shàng)的故障,隻涉及到源MAC地址和目的MAC地址,不管(guǎn)高層封裝的(de)是什麽類型的包都有可能引起廣播風暴(bào)。也就是說,當時(shí)用Sniffer抓到各種各樣的數據(jù)包都是有可能的。
故障(zhàng)預(yù)防
校園網(wǎng)的接(jiē)入(rù)層是麵向用戶(hù)的網絡界麵(miàn),有許多不可控(kòng)的成分,情況很複雜,應(yīng)由專(zhuān)人(rén)管理,也應在設備上(shàng)給予(yǔ)可靠性保(bǎo)證(zhèng)。本(běn)摟接入交(jiāo)換機(jī)是(shì)可管理型(xíng)的(de),有(yǒu)STP功能,其他(tā)交(jiāo)換機都是非(fēi)管(guǎn)理型交換機,沒有STP功能(néng)。本來事先在該接入交換(huàn)機上配置了STP功能,這起網絡事故(gù)是(shì)完全(quán)可以避免的,但不知何故沒有這(zhè)樣做,事後再做隻能權(quán)當“亡(wáng)羊補(bǔ)牢”了。由此(cǐ)可見,即使接入交換機打開了STP功能,下遊(yóu)網(wǎng)絡(luò)也會因(yīn)某種原因(yīn)構成環路,產生廣播風暴(bào),造成對上遊網絡本VLAN的(de)衝擊,故該接入交換機還應有廣播包抑(yì)製功能,以便能將影響(xiǎng)限製在局部範圍(wéi)內。對於下(xià)遊網絡的交換機同樣有(yǒu)這些需(xū)求,隻是成(chéng)本問(wèn)題而已。一句話,在(zài)網絡故(gù)障排除時(shí),技(jì)術和經驗固然重要,但在平時就要注(zhù)意維護網(wǎng)絡的規範連接(jiē)、落實基本的(de)防範措(cuò)施(shī)更(gèng)為重要。
關鍵詞:交(jiāo)換機,網絡(luò)環路,網絡環路常見問題詳(xiáng)解(jiě)
閱讀本(běn)文後您(nín)有什麽感想? 已有(yǒu) 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0