專利名稱:循環(huán)檢測(cè)方法及應(yīng)用其的網(wǎng)絡(luò)裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于一種循環(huán)(loop)檢測(cè)方法及應(yīng)用其的網(wǎng)絡(luò)裝置,其判斷是否發(fā)生來(lái)源地址(source address)變動(dòng)(moving)事件而判斷循環(huán)是否存在。
背景技術(shù):
以太網(wǎng)絡(luò)(Ethernet network)是目前最廣為使用的局域網(wǎng)絡(luò)(Local AreaNetwork)技術(shù),用以連接個(gè)人計(jì)算機(jī)以及局域網(wǎng)絡(luò)。在以太網(wǎng)絡(luò)中,數(shù)據(jù)傳輸?shù)幕締挝皇欠獍?packet)。Switch(交換器)是目前在局域網(wǎng)絡(luò)中被廣泛使用的橋接器(bridge), 其它橋接器比如為router (路由器)等。交換器會(huì)包括多個(gè)端口(port),這些端口會(huì)連接至個(gè)人計(jì)算機(jī)、筆記本型計(jì)算機(jī)或其它橋接器。當(dāng)交換器的某一端口收到封包后,交換器會(huì)根據(jù)此封包中的目的地址 (destination address)來(lái)選擇適當(dāng)?shù)哪康亩丝?,將封包轉(zhuǎn)送到此目的端口。不具網(wǎng)絡(luò)管理功能的低階交換器不一定配有負(fù)責(zé)程序運(yùn)算的中央運(yùn)算單元 (CPU)。當(dāng)?shù)碗A交換器不具備CPU時(shí),由無(wú)程序運(yùn)算能力的特殊應(yīng)用電路(Application Specified Integrated Circuit,ASIC)來(lái)處理封包。因此,此類低階交換器不適合于過(guò)于復(fù)雜的通訊協(xié)議,但其價(jià)格較低廉。廣播(broadcast)是以太網(wǎng)絡(luò)傳輸方式的一種。當(dāng)封包帶有特別的目的地址時(shí), 此封包會(huì)被視為是廣播封包。當(dāng)交換器收到廣播封包時(shí),其會(huì)將此廣播封包傳送到各個(gè)端口去。在較大型的局域網(wǎng)絡(luò)里,兩個(gè)或以上的橋接器之間可能會(huì)形成循環(huán)(loop),他們之間有可能存在兩條以上的路徑。廣播封包可能會(huì)在循環(huán)上不斷地被重復(fù)地轉(zhuǎn)發(fā),占據(jù)網(wǎng)絡(luò)頻寬和網(wǎng)絡(luò)裝置的資源,造成網(wǎng)絡(luò)的效能下降。詳細(xì)地說(shuō),當(dāng)網(wǎng)絡(luò)中存在循環(huán)時(shí),會(huì)造成封包無(wú)限制地在此循環(huán)傳輸,大大地低降了傳輸效率。封包在交換器中會(huì)占據(jù)固定存儲(chǔ)器空間。在正常情況下,當(dāng)封包被送出后,交換器就可以釋放出這個(gè)封包所占的存儲(chǔ)器空間。但在循環(huán)存在的情況下,在送出一個(gè)封包后,交換器可能馬上會(huì)收到剛剛送出的封包并將之存放于存儲(chǔ)器內(nèi),造成存儲(chǔ)器空間的浪費(fèi)。當(dāng)回路中存在封包數(shù)量不少時(shí),甚至可能會(huì)耗盡交換器中所有可用的存儲(chǔ)器,造成封包流失以及網(wǎng)絡(luò)停擺。請(qǐng)參閱圖IA與圖1B,其顯示形成于局域網(wǎng)絡(luò)中的兩種循環(huán)的示意圖。在圖IA中, 個(gè)人計(jì)算機(jī)105與115通過(guò)交換器110與120而彼此傳送封包。由圖IA可看出,由交換器 110送出的封包可能會(huì)再被交換器130送回至交換器110,造成循環(huán)。在圖IB中,個(gè)人計(jì)算機(jī)105與115通過(guò)交換器110、120與130而彼此傳送封包。 由圖IB可看出,由交換器110送出的封包可能會(huì)再被交換器130及140送回至交換器110, 造成循環(huán)。圖IB所顯示的循環(huán)亦可稱為自循環(huán)(self-loop)。目前已有數(shù)種技術(shù)試著解決循環(huán)所造成問(wèn)題。第一種技術(shù)乃是符合IEEE802. 1的 Spanning Tree Protocol (擴(kuò)張樹(shù)協(xié)議)。依此協(xié)議,當(dāng)有循環(huán)存在時(shí),循環(huán)上的某些連接 (link)會(huì)被切斷(比如,將交換器的端口失能,以切斷連接),以切斷循環(huán)。然而,若以硬件來(lái)支持?jǐn)U張樹(shù)協(xié)議,成本較高。若以軟件來(lái)支持?jǐn)U張樹(shù)協(xié)議,則交換器需要CPU。但是低階交換器不一定有CPU,因此擴(kuò)張樹(shù)協(xié)議并不完全適合低階交換器。第二種技術(shù)則是將擴(kuò)張樹(shù)協(xié)議簡(jiǎn)化,硬件電路成本較低。其也是將交換器的端口失能,以移除循環(huán)。但是,當(dāng)循環(huán)被切斷后,第二種技術(shù)無(wú)法將原先被失能的端口恢復(fù)。這將造成局域網(wǎng)絡(luò)被切斷而無(wú)法讓局域網(wǎng)絡(luò)的裝置順利傳輸。本發(fā)明實(shí)施例提出一個(gè)低成本循環(huán)檢測(cè)方法,其能應(yīng)用于低階或中高階的網(wǎng)絡(luò)裝置。
發(fā)明內(nèi)容
本發(fā)明是有關(guān)于一種低成本循環(huán)檢測(cè)方法與應(yīng)用其的網(wǎng)絡(luò)裝置。當(dāng)來(lái)源地址 (source address)變動(dòng)(move)時(shí),其會(huì)檢查是否收到本身所發(fā)出的循環(huán)檢測(cè)封包,以判斷循環(huán)是否存在。本發(fā)明是有關(guān)于一種低成本循環(huán)檢測(cè)方法與應(yīng)用其的網(wǎng)絡(luò)裝置,在檢查循環(huán)檢測(cè)封包時(shí),其會(huì)隨機(jī)產(chǎn)生識(shí)別碼。因此使用者不一定要手動(dòng)指定識(shí)別碼,降低制造商或網(wǎng)絡(luò)管理者的不便。本發(fā)明是有關(guān)于一種低成本循環(huán)檢測(cè)方法與應(yīng)用其的網(wǎng)絡(luò)裝置。當(dāng)出現(xiàn)循環(huán)時(shí), 網(wǎng)絡(luò)裝置可通過(guò)特殊警示方式來(lái)警告使用者。當(dāng)循環(huán)消失時(shí),網(wǎng)絡(luò)裝置能解除循環(huán)警示狀態(tài)。根據(jù)本發(fā)明的一例,提出一種網(wǎng)絡(luò)裝置,包括一地址變動(dòng)檢測(cè)單元,檢測(cè)該網(wǎng)絡(luò)裝置所接收的一第一封包中的一地址字段是否發(fā)生變動(dòng);一循環(huán)檢測(cè)封包產(chǎn)生單元,當(dāng)該地址變動(dòng)檢測(cè)單元檢測(cè)到該地址字段變動(dòng)時(shí),產(chǎn)生一循環(huán)檢測(cè)封包;一封包分析單元,分析該網(wǎng)絡(luò)裝置所接收的一第二封包,以擷取出一信息;以及一循環(huán)決定單元,耦接至該封包分析單元,依據(jù)該信息判斷該第二封包是否為該循環(huán)檢測(cè)封包,以決定該網(wǎng)絡(luò)裝置是否有循環(huán)。根據(jù)本發(fā)明的另一例,提出一種網(wǎng)絡(luò)裝置的循環(huán)檢測(cè)方法,包括檢測(cè)該網(wǎng)絡(luò)裝置所接收的一第一封包中的一地址字段是否發(fā)生變動(dòng);當(dāng)檢測(cè)到該地址字段變動(dòng)時(shí),產(chǎn)生一循環(huán)檢測(cè)封包;分析該網(wǎng)絡(luò)裝置所接收的一第二封包,以擷取出一信息;以及依據(jù)該信息判斷該第二封包是否為該循環(huán)檢測(cè)封包,以決定該網(wǎng)絡(luò)裝置是否有循環(huán)。為讓本發(fā)明的上述內(nèi)容能更明顯易懂,下文特舉實(shí)施例,并配合所附圖式,作詳細(xì)說(shuō)明如下。
圖IA與圖IB顯示形成于局域網(wǎng)絡(luò)中的兩種循環(huán)的示意圖。圖2顯示根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)裝置的功能方塊圖。圖3顯示根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)裝置中的操作狀態(tài)單元的狀態(tài)圖。圖4顯示根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)裝置如何確認(rèn)是否有循環(huán)存在的流程圖。[主要元件標(biāo)號(hào)說(shuō)明]105 與 115 個(gè)人計(jì)算機(jī)110、120、130、140 交換器200:網(wǎng)絡(luò)裝置210:循環(huán)檢測(cè)模塊
211 來(lái)源地址變動(dòng)檢測(cè)單元
2 IlA 對(duì)應(yīng)表 215 循環(huán)決定單元 219 循環(huán)檢測(cè)封包產(chǎn)生單元 223 指示單元 227_1 227_N 封包傳送單元 410 480 步驟213 操作狀態(tài)單元217 封包分析單元221 隨機(jī)碼產(chǎn)生單元225_1 225_N 封包接收單元250 警示單元
具體實(shí)施例方式圖2顯示根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)裝置的功能方塊圖。網(wǎng)絡(luò)裝置比如為有線/無(wú)線的交換器、路由器、存取點(diǎn)(access point)等橋接器(bridge)。如圖2所示,網(wǎng)絡(luò)裝置 200至少包括循環(huán)檢測(cè)模塊210、警示單元250。循環(huán)檢測(cè)模塊210至少包括來(lái)源地址變動(dòng)檢測(cè)單元211、對(duì)應(yīng)表(LUT,LookUpTable) 211A、操作狀態(tài)單元213、循環(huán)決定單元215、封包分析單元(packetparser unit) 217、循環(huán)檢測(cè)封包產(chǎn)生單元219、隨機(jī)碼產(chǎn)生單元221、 指示單元223、封包接收單元225_1 225_N與封包傳送單元227_1 227_N。當(dāng)循環(huán)檢測(cè)模塊210以硬件方式實(shí)施時(shí),其可位于MAC層(Medium AccessControl Layer,媒體存取控制層)。此外,如果網(wǎng)絡(luò)裝置配備具有運(yùn)算能力的CPU時(shí),則來(lái)源地址變動(dòng)檢測(cè)單元211、操作狀態(tài)單元213、循環(huán)決定單元215、封包分析單元217、循環(huán)檢測(cè)封包產(chǎn)生單元219與隨機(jī)碼產(chǎn)生單元221的功能可以軟件方式實(shí)施,亦這些單元213、215、217與 221可由CPU來(lái)執(zhí)行。網(wǎng)絡(luò)封包至少包括來(lái)源地址(source address, SA)及目的地址(destination address,DA)。對(duì)應(yīng)表21IA記錄來(lái)源地址與來(lái)源端口(sourc印ort)間的對(duì)應(yīng)關(guān)系,來(lái)源端口是指網(wǎng)絡(luò)裝置的封包接收端口。以圖IA為例,假設(shè)由個(gè)人計(jì)算機(jī)105傳送給交換器110 的封包中的來(lái)源地址為SAl ;而個(gè)人計(jì)算機(jī)105連接至交換器110的端口 1,則對(duì)應(yīng)表211A 會(huì)記錄SAl與端口 1間的關(guān)系。亦即,在正常情況下(無(wú)循環(huán)存在時(shí)),來(lái)源地址SAl的封包(其應(yīng)該是由個(gè)人計(jì)算機(jī)UO所發(fā)出)應(yīng)當(dāng)是經(jīng)由端口 1接收到。然而,至少有兩種情況會(huì)使得SA與來(lái)源端口間的對(duì)應(yīng)關(guān)系發(fā)生變動(dòng)(亦即此對(duì)應(yīng)關(guān)系不同于對(duì)應(yīng)表211A)。第一種情況乃是,使用者將個(gè)人計(jì)算機(jī)105連接至網(wǎng)絡(luò)裝置的另一端口(但并無(wú)循環(huán)存在);第二種情況則是,循環(huán)存在。當(dāng)SA與來(lái)源端口間的對(duì)應(yīng)關(guān)系發(fā)生變動(dòng)時(shí),本發(fā)明實(shí)施例的網(wǎng)絡(luò)裝置可通過(guò)后續(xù)流程來(lái)確認(rèn)到底是第一種情況還是第二種情況發(fā)生。如果是第一種情況發(fā)生,則網(wǎng)絡(luò)裝置并不會(huì)通知使用者有異常情況。但如果是第二種情況發(fā)生,則網(wǎng)絡(luò)裝置會(huì)通知使用者有異常情況,讓使用者排除循環(huán);而且當(dāng)循環(huán)已排除時(shí),網(wǎng)絡(luò)裝置的警示狀態(tài)會(huì)自動(dòng)消失,不須使用者手動(dòng)。來(lái)源地址變動(dòng)檢測(cè)單元211持續(xù)地檢測(cè)所接收到的封包中的SA與來(lái)源端口間的對(duì)應(yīng)關(guān)系,并將之比對(duì)于對(duì)應(yīng)表211A,以檢測(cè)網(wǎng)絡(luò)裝置所接收的封包中的SA是否發(fā)生變動(dòng)。如果封包的SA與來(lái)源端口間的對(duì)應(yīng)關(guān)系不同于對(duì)應(yīng)表211A,則視為已產(chǎn)生來(lái)源地址變動(dòng)事件,來(lái)源地址變動(dòng)檢測(cè)單元211須通知操作狀態(tài)單元213,以確認(rèn)是否有循環(huán)存在。操作狀態(tài)單元213乃是狀態(tài)機(jī)(state machine)。操作狀態(tài)單元213會(huì)記錄網(wǎng)絡(luò)裝置的目前操作狀態(tài),此操作狀態(tài)包括至少一正常狀態(tài)、一檢查狀態(tài)與一循環(huán)狀態(tài)。圖3顯示根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)裝置中的操作狀態(tài)單元213的狀態(tài)圖。如圖3所示,在初始情況下,操作狀態(tài)單元213為正常狀態(tài),這表示沒(méi)有SA變動(dòng)及循環(huán)存在。由于使用者可能會(huì)將個(gè)人計(jì)算機(jī)連接至網(wǎng)絡(luò)裝置的另一端口計(jì)算機(jī)而造成SA變動(dòng)(但是,并無(wú)循環(huán)存在)。故而,當(dāng)來(lái)源地址變動(dòng)檢測(cè)單元211告知有SA變動(dòng)事件時(shí),操作狀態(tài)單元213會(huì)進(jìn)入到檢查狀態(tài)。在檢查狀態(tài)下,本發(fā)明實(shí)施例的網(wǎng)絡(luò)裝置會(huì)檢查各端口是否真正有循環(huán)存在,如何檢查是否真正有循環(huán)存在將于底下說(shuō)明之。如果至少有一端口有循環(huán)存在,則操作狀態(tài)單元213會(huì)進(jìn)入循環(huán)狀態(tài)。如果各端口皆無(wú)循環(huán)存在,則回到正常狀態(tài)。在循環(huán)狀態(tài)下,網(wǎng)絡(luò)裝置200會(huì)持續(xù)確認(rèn)循環(huán)是否存在;如果循環(huán)存在,則網(wǎng)絡(luò)裝置200會(huì)通知使用者。當(dāng)各端口皆回報(bào)無(wú)循環(huán)存在時(shí),則操作狀態(tài)單元213從循環(huán)狀態(tài)回到正常狀態(tài);如果至少有一端口仍持續(xù)回報(bào)有循環(huán)存在,則操作狀態(tài)單元213維持于循環(huán)狀態(tài)。請(qǐng)參考圖4,其顯示根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)裝置如何確認(rèn)是否有循環(huán)存在的流程圖。當(dāng)操作狀態(tài)單元213處于檢查狀態(tài)或循環(huán)狀態(tài)時(shí),其會(huì)執(zhí)行圖4的步驟。如步驟410所示,先設(shè)定參數(shù)i的初始值。參數(shù)i代表所發(fā)出的循環(huán)檢測(cè)封包的次數(shù)。接著,網(wǎng)絡(luò)裝置200會(huì)發(fā)送出循環(huán)檢測(cè)封包給局域網(wǎng)絡(luò)中的其它網(wǎng)絡(luò)裝置,如步驟420 所示。接著,網(wǎng)絡(luò)裝置200會(huì)判斷是否收到由其本身所發(fā)出的循環(huán)檢測(cè)封包,如步驟430 所示。如何判斷此循環(huán)檢測(cè)封包是否由本身所發(fā)出將于底下描述之。如果收到由其本身所發(fā)出的循環(huán)檢測(cè)封包,假設(shè)是端口 a收到,則回報(bào)在端口 a有循環(huán)(there is a loop on port a),如步驟470所示;而且操作狀態(tài)單元213要從檢查狀態(tài)進(jìn)入到循環(huán)狀態(tài),或者操作狀態(tài)單元213要維持于循環(huán)狀態(tài)。在本實(shí)施例中,可以等時(shí)間間隔過(guò)了之后,才發(fā)出下一個(gè)循環(huán)檢測(cè)封包。所以,在步驟440中,判斷此時(shí)間間隔是否已過(guò)。如果已過(guò),則將參數(shù)i加1,如步驟450所示;如果時(shí)間間隔尚未過(guò),則流程回至步驟430,判斷是否接收到本身所發(fā)出的循環(huán)檢測(cè)封包。在步驟450之后,判斷參數(shù)i是否達(dá)最大值,如步驟460所示。如果參數(shù)i已達(dá)最大值,代表在發(fā)出特定次數(shù)的循環(huán)檢測(cè)封包后,網(wǎng)絡(luò)裝置都沒(méi)有接收到本身所發(fā)出的循環(huán)檢測(cè)封包,此時(shí)可視為網(wǎng)絡(luò)裝置并無(wú)循環(huán)存在(也就是說(shuō),來(lái)源地址變動(dòng)事件可能是因?yàn)槭褂谜邔€(gè)人計(jì)算機(jī)105連接至網(wǎng)絡(luò)裝置的另一端口所導(dǎo)致),所以,在步驟480中,回報(bào)并無(wú)循環(huán)存在。另一方面,如果參數(shù)i尚未達(dá)最大值,則流程回至步驟420,以繼續(xù)判斷是否收到本身所發(fā)出的循環(huán)檢測(cè)封包。在檢查狀態(tài)或循環(huán)狀態(tài)下,如果在送完特定次數(shù)的循環(huán)檢測(cè)封包后若都沒(méi)有收到任何一個(gè)本地端發(fā)出的循環(huán)檢測(cè)封包,表示循環(huán)并不存在,操作狀態(tài)單元213會(huì)回到正常狀態(tài)。若收到本地端所發(fā)出的循環(huán)檢測(cè)封包,表示存在循環(huán),操作狀態(tài)單元213會(huì)從檢查狀態(tài)進(jìn)入至循環(huán)狀態(tài)或持續(xù)維持于循環(huán)狀態(tài)。在循環(huán)狀態(tài)下,于指示單元223的控制下,網(wǎng)絡(luò)裝置200的警示單元250會(huì)發(fā)出警示信號(hào)(如蜂鳴器的聲音或LED的特殊閃爍方式),來(lái)告知使用者目前存在循環(huán);或者,指示單元223會(huì)發(fā)出中斷信號(hào)給CPU,來(lái)告知CPU目前存在循環(huán)。在循環(huán)狀態(tài)下,網(wǎng)絡(luò)裝置執(zhí)行圖4的步驟,以確認(rèn)循環(huán)是否已解除。如果循環(huán)已解除,則操作狀態(tài)單元213會(huì)回到正常狀態(tài);如果循環(huán)尚未解除,則操作狀態(tài)單元213會(huì)維持于循環(huán)狀態(tài)。在圖4中,時(shí)間間隔與i的最大值(發(fā)送封包的最大次數(shù))都是可以由使用
者改變/設(shè)定。在檢查狀態(tài)或循環(huán)狀態(tài)下,網(wǎng)絡(luò)裝置200會(huì)發(fā)出循環(huán)檢測(cè)封包(loopdetection packet) 0循環(huán)決定單元215會(huì)決定是否有循環(huán)存在。細(xì)言之,循環(huán)決定單元215會(huì)辨認(rèn)所接收到循環(huán)檢測(cè)封包是否為本地端(網(wǎng)絡(luò)裝置200)所發(fā)出,以決定是否有循環(huán)存在。如果發(fā)生這種情況,則視為有循環(huán)存在,則必須回報(bào)此情況(并記錄收到此循環(huán)檢測(cè)封包的端口與發(fā)出此循環(huán)檢測(cè)封包的端口)。另一方面,如果所接收到的循環(huán)檢測(cè)封包不是本地端所發(fā)出,則循環(huán)決定單元215將所接收到的此循環(huán)檢測(cè)封包傳送至由使用者所決定的端口屏蔽(port mask)。當(dāng)操作狀態(tài)單元213收到SA變動(dòng)事件時(shí),操作狀態(tài)單元213會(huì)通知循環(huán)檢測(cè)封包產(chǎn)生單元219,以產(chǎn)生循環(huán)檢測(cè)封包。在本實(shí)施例中,循環(huán)檢測(cè)封包會(huì)包括下列字段(a)目的地址字段、(b)來(lái)源地址字段、(c)類型字段、(d)協(xié)議ID字段(Protocol ID field)、(e) 隨機(jī)ID字段(random ID field)、(f)使用者設(shè)定ID字段、(g)端口碼字段(Port Number field)、(h)保留碼字段與(i)錯(cuò)誤檢查字段。(a)目的地址字段記錄封包的目的地址,其長(zhǎng)度為6個(gè)地址組(byte)。如果每個(gè) byte的值為OxFF時(shí),則代表此循環(huán)檢測(cè)封包是廣播封包(broadcastpacket)。另一方面, 使用者也可以自行設(shè)定目的地址字段的值,以決定要將循環(huán)檢測(cè)封包送至哪些端口。(b)來(lái)源地址字段記錄循環(huán)檢測(cè)封包的來(lái)源地址,其長(zhǎng)度為6個(gè)地址組,其格式為MAC地址。(c)類型字段表示封包的類型,其長(zhǎng)度為2個(gè)地址組,其值由網(wǎng)絡(luò)裝置200的制造商所設(shè)定。(d)協(xié)定ID字段其長(zhǎng)度1個(gè)字節(jié)。其預(yù)定值為0x23。這個(gè)字段是識(shí)別封包是否為是循環(huán)檢測(cè)封包的依據(jù)。也就是,當(dāng)此字段不是此預(yù)定值時(shí),則此封包并非循環(huán)檢測(cè)封包;反之亦然。(e)隨機(jī)ID字段其長(zhǎng)度為6個(gè)組元組,其代表隨機(jī)產(chǎn)生的網(wǎng)絡(luò)裝置識(shí)別碼。在每次操作狀態(tài)單元213進(jìn)入檢查狀態(tài)時(shí),此字段的值由隨機(jī)碼產(chǎn)生單元221所產(chǎn)生。當(dāng)處于檢查狀態(tài)及循環(huán)狀態(tài)下,此隨機(jī)識(shí)別碼保持不變。根據(jù)這個(gè)字段,網(wǎng)絡(luò)裝置200的循環(huán)決定單元215能識(shí)別循環(huán)檢測(cè)封包是否為自己發(fā)出。由于隨機(jī)ID字段是隨機(jī)碼(由隨機(jī)碼產(chǎn)生單元221所產(chǎn)生),所以各網(wǎng)絡(luò)裝置所產(chǎn)生的循環(huán)檢測(cè)封包中的隨機(jī)ID字段應(yīng)該是不同的(或者說(shuō),相同的機(jī)率極低)。如果所接收到的循環(huán)檢測(cè)封包中的隨機(jī)ID字段符合于本身的隨機(jī)碼,則可以判斷這個(gè)循環(huán)檢測(cè)封包是自己發(fā)出(亦即有循環(huán)存在)。(f)使用者設(shè)定ID字段其長(zhǎng)度為6個(gè)字節(jié),其代表由使用者所設(shè)定的網(wǎng)絡(luò)裝置識(shí)別碼。不同網(wǎng)絡(luò)裝置所隨機(jī)產(chǎn)生的隨機(jī)ID字段仍有可能會(huì)相同(雖然其機(jī)率甚低),故而,為避免此情況且更進(jìn)一步確定判斷循環(huán)檢測(cè)封包是否自己所發(fā)出,在本實(shí)施例,比對(duì)所接收到的循環(huán)檢測(cè)封包中的使用者設(shè)定ID字段是否相同于使用者所設(shè)定的值。如果相同, 則可以確認(rèn)判斷循環(huán)檢測(cè)封包是自己所發(fā)出。(g)端口碼字段表示發(fā)出循環(huán)檢測(cè)封包的端口碼。以圖IA為例,假設(shè)交換器110 的端口 1連接至交換器120 ;而交換器110的端口 3連接至交換器130。如果交換器110判斷由交換器130所傳來(lái)的循環(huán)檢測(cè)封包為其本身所發(fā)出(且循環(huán)檢測(cè)封包的端口碼字段為1),則代表交換器110的端口 1與端口 3之間形成循環(huán)。以圖IB為例,假設(shè)交換器110 的端口 1連接至交換器120。如果交換器110的端口 1判斷由交換器120所傳來(lái)的循環(huán)檢測(cè)封包為其本身所發(fā)出(且其端口碼字段為1),則代表交換器110的端口 1已形成自循環(huán) (self-loop)ο(h)保留碼字段長(zhǎng)度為32字節(jié),其值可全為0。(i)錯(cuò)誤檢查字段用于封包的錯(cuò)誤檢查(error check)。響應(yīng)于操作狀態(tài)單元213每次進(jìn)入檢查狀態(tài),隨機(jī)碼產(chǎn)生單元221會(huì)產(chǎn)生隨機(jī)碼 (其長(zhǎng)度也為6字節(jié))。此隨機(jī)碼會(huì)被加入至于循環(huán)檢測(cè)封包中,以令網(wǎng)絡(luò)裝置識(shí)別所接到的循環(huán)檢測(cè)封包是否是由自己發(fā)出。這個(gè)隨機(jī)碼在檢查狀態(tài)與循環(huán)狀態(tài)中不會(huì)改變。在網(wǎng)絡(luò)裝置收到封包后,封包分析單元217根據(jù)協(xié)議ID字段的值而判斷這個(gè)封包是否是為循環(huán)檢測(cè)封包。如果是的話,則封包分析單元217會(huì)將所需內(nèi)容由循環(huán)檢測(cè)封包中擷取出來(lái),并傳送給循環(huán)決定單元215。循環(huán)決定單元215會(huì)將網(wǎng)絡(luò)裝置200的隨機(jī)ID 碼(由隨機(jī)碼產(chǎn)生單元221所產(chǎn)生并暫存)與使用者設(shè)定ID(由使用者所設(shè)定)比較于封包分析單元217從循環(huán)檢測(cè)封包所擷取出的隨機(jī)ID字段與使用者設(shè)定ID字段,以判斷所接收到的循環(huán)檢測(cè)封包是否是自己發(fā)出的。然而,在判斷所接收到的循環(huán)檢測(cè)封包是否是自己發(fā)出時(shí),循環(huán)決定單元215亦可只將網(wǎng)絡(luò)裝置200的使用者設(shè)定ID比較從循環(huán)檢測(cè)封包所擷取出的使用者設(shè)定ID字段;或者,循環(huán)決定單元215亦可只將網(wǎng)絡(luò)裝置200的隨機(jī) ID比較從循環(huán)檢測(cè)封包所擷取出的隨機(jī)ID字段。當(dāng)比對(duì)符合(代表有循環(huán)存在)時(shí),循環(huán)決定單元215會(huì)通知操作狀態(tài)單元213。當(dāng)操作狀態(tài)單元213處于循環(huán)狀態(tài),指示單元223會(huì)根據(jù)循環(huán)檢測(cè)封包中的端口碼字段,以及收到這個(gè)循環(huán)檢測(cè)封包的端口碼而進(jìn)行以下操作(a)控制網(wǎng)絡(luò)裝置上的發(fā)光二極管(LED)以特殊方式閃爍,以告知使用者哪些端口有循環(huán)存在;或者,(b)觸發(fā)蜂鳴器(buzzer),以告知使用者哪些端口有循環(huán)存在;或者(c)發(fā)出中斷信號(hào)給CPU (未顯示于圖2中),由于已經(jīng)存在循環(huán)的端口已經(jīng)記錄于暫存器中(未顯示于圖2中),CPU可以對(duì)存在循環(huán)的那些端口進(jìn)行相對(duì)應(yīng)處理。指示單元223與蜂鳴器或LED間的信號(hào)為通用輸入 / 輸出號(hào)(General Purpose 1/0,GPIO)。封包接收單元225_1 225_N與封包傳送單元227_1 227_N乃是耦接至網(wǎng)絡(luò)裝置的物理層(physical layer)。由循環(huán)檢測(cè)封包產(chǎn)生單元219所產(chǎn)生的循環(huán)檢測(cè)封包會(huì)通過(guò)封包傳送單元227_1 227_N而送至物理層,以送至其它網(wǎng)絡(luò)裝置。另一方面,由物理層所收到的封包(來(lái)自其它網(wǎng)絡(luò)裝置)則通過(guò)封包接收單元225_1 225_N而送至封包分析單元217。封包接收單元225_1 225_N與封包分析單元217之間的總線可為高速總線,以高速傳輸封包。循環(huán)檢測(cè)封包產(chǎn)生單元219與封包傳送單元227_1 227_N之間的總線可為高速總線,以高速傳輸封包?,F(xiàn)將說(shuō)明本實(shí)施例如何檢測(cè)循環(huán)的存在。首先,當(dāng)來(lái)源地址變動(dòng)檢測(cè)單元211檢測(cè)到來(lái)源地址變動(dòng)事件時(shí),其會(huì)通知操作狀態(tài)單元213,響應(yīng)于此,操作狀態(tài)單元213會(huì)由正常狀態(tài)進(jìn)入檢查狀態(tài)。當(dāng)操作狀態(tài)單元213進(jìn)入檢查狀態(tài)后,操作狀態(tài)單元213會(huì)通知循環(huán)檢測(cè)封包產(chǎn)生單元219以產(chǎn)生循環(huán)檢測(cè)封包;而且,操作狀態(tài)單元213會(huì)通知隨機(jī)碼產(chǎn)生單元221以產(chǎn)生隨機(jī)碼,此隨機(jī)碼會(huì)加入于循環(huán)檢測(cè)封包中。所產(chǎn)生的循環(huán)檢測(cè)封包會(huì)經(jīng)由封包傳送單元227_1 227_N而傳送至同一局域網(wǎng)絡(luò)內(nèi)的其它網(wǎng)絡(luò)裝置。接著,當(dāng)網(wǎng)絡(luò)裝置200接收到同一局域網(wǎng)絡(luò)內(nèi)的其它網(wǎng)絡(luò)裝置所傳來(lái)的封包時(shí),此封包會(huì)經(jīng)由封包接收單元225_1 225_N而傳送至封包分析單元217。當(dāng)封包分析單元217分析接收到的封包的格式符合循環(huán)檢測(cè)封包格式時(shí),其會(huì)將從接收到的封包內(nèi)擷取出隨機(jī)ID字段與使用者設(shè)定ID字段,并傳送給循環(huán)檢測(cè)封包產(chǎn)生單元219。據(jù)此,循環(huán)檢測(cè)封包產(chǎn)生單元219會(huì)判斷所接收到的封包是否為網(wǎng)絡(luò)裝置200本身所發(fā)出。如果是的話,則循環(huán)檢測(cè)封包產(chǎn)生單元219會(huì)告知操作狀態(tài)單元213,而操作狀態(tài)單元213會(huì)由檢查狀態(tài)進(jìn)入到循環(huán)狀態(tài)。然而,如果在網(wǎng)絡(luò)裝置200發(fā)出既定次數(shù)的循環(huán)檢測(cè)封包后,網(wǎng)絡(luò)裝置200的各端口都沒(méi)有接收到本身所發(fā)出的循環(huán)檢測(cè)封包,則操作狀態(tài)單元213會(huì)由檢查狀態(tài)回到正常狀態(tài)(這代表,先前來(lái)源地址變動(dòng)檢測(cè)單元211所檢測(cè)到的來(lái)源地址變動(dòng)事件可能是起因于使用者將個(gè)人計(jì)算機(jī)連接至網(wǎng)絡(luò)裝置200的另一端口)。在循環(huán)狀態(tài)下,操作狀態(tài)單元213會(huì)執(zhí)行圖4的流程(此時(shí),網(wǎng)絡(luò)裝置200仍要發(fā)送循環(huán)檢測(cè)封包給其它網(wǎng)絡(luò)裝置)。直到操作狀態(tài)單元213確認(rèn)各端口都沒(méi)有循環(huán)存在 (在網(wǎng)絡(luò)裝置200發(fā)出既定次數(shù)的循環(huán)檢測(cè)封包后,網(wǎng)絡(luò)裝置200的各端口都沒(méi)有接收到本身所發(fā)出的循環(huán)檢測(cè)封包),操作狀態(tài)單元213會(huì)由循環(huán)狀態(tài)回到正常狀態(tài)。綜上所述,本發(fā)明上述實(shí)施例所揭露的網(wǎng)絡(luò)裝置及其循環(huán)檢測(cè)方法,具有多項(xiàng)優(yōu)點(diǎn),以下僅列舉部分優(yōu)點(diǎn)說(shuō)明如下(1)本實(shí)施例的電路復(fù)雜度并不高,適用于所有網(wǎng)絡(luò)裝置,不論其是否具有CPU。(2)本實(shí)施例在檢查循環(huán)檢測(cè)封包時(shí),會(huì)隨機(jī)產(chǎn)生識(shí)別碼。因此使用者不一定要手動(dòng)指定識(shí)別碼,降低制造商或網(wǎng)絡(luò)管理者的不便。(3)當(dāng)來(lái)源地址變動(dòng)時(shí),本實(shí)施例會(huì)檢查是否收到本身所發(fā)出的循環(huán)檢測(cè)封包,以判斷循環(huán)是否存在。如此,降低誤操作的發(fā)生機(jī)率,避免影響網(wǎng)絡(luò)效能。綜上所述,雖然本發(fā)明已以實(shí)施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所屬技術(shù)領(lǐng)域中具有通常知識(shí)者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動(dòng)與潤(rùn)飾。因此,本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。
權(quán)利要求
1.一種網(wǎng)絡(luò)裝置,包括一地址變動(dòng)檢測(cè)單元,檢測(cè)該網(wǎng)絡(luò)裝置所接收的一第一封包中的一地址字段是否發(fā)生變動(dòng);一循環(huán)檢測(cè)封包產(chǎn)生單元,當(dāng)該地址變動(dòng)檢測(cè)單元檢測(cè)到該地址字段變動(dòng)時(shí),產(chǎn)生一循環(huán)檢測(cè)封包;一封包分析單元,分析該網(wǎng)絡(luò)裝置所接收的一第二封包,以擷取出一信息;以及一循環(huán)決定單元,耦接至該封包分析單元,依據(jù)該信息判斷該第二封包是否為該循環(huán)檢測(cè)封包,以決定該網(wǎng)絡(luò)裝置是否有循環(huán)。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)裝置,其中,該地址字段為一來(lái)源地址字段。
3.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)裝置,其中,該地址變動(dòng)檢測(cè)單元依據(jù)一對(duì)應(yīng)表,判斷該地址字段是否發(fā)生變動(dòng)。
4.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)裝置,還包含一操作狀態(tài)單元,耦接至該地址變動(dòng)檢測(cè)單元,用于記錄該網(wǎng)絡(luò)裝置目前的一操作狀態(tài),該操作狀態(tài)包含至少一正常狀態(tài)、一檢查狀態(tài)與一循環(huán)狀態(tài)。
5.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)裝置,其中,當(dāng)該地址變動(dòng)檢測(cè)單元檢測(cè)到該地址字段變動(dòng)時(shí),該操作狀態(tài)單元被設(shè)定為檢查狀態(tài),且該循環(huán)檢測(cè)封包產(chǎn)生單元產(chǎn)生該循環(huán)檢測(cè)封包。
6.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)裝置,其中,當(dāng)該操作狀態(tài)為該檢查狀態(tài)時(shí),該封包分析單元與該循環(huán)決定單元檢查該網(wǎng)絡(luò)裝置的各端口是否有循環(huán)存在;以及如果至少有一端口有循環(huán)存在,則該操作狀態(tài)單元由該檢查狀態(tài)進(jìn)入該循環(huán)狀態(tài)。
7.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)裝置,其中,當(dāng)該操作狀態(tài)為該循環(huán)狀態(tài)時(shí),該循環(huán)決定單元持續(xù)確認(rèn)循環(huán)是否仍存在;以及如果循環(huán)存在,則該網(wǎng)絡(luò)裝置發(fā)出一警示信號(hào)。
8.根據(jù)權(quán)利要求7所述的網(wǎng)絡(luò)裝置,其中,當(dāng)該操作狀態(tài)為該循環(huán)狀態(tài)時(shí),如果該網(wǎng)絡(luò)裝置未接收到本身所發(fā)出的該循環(huán)檢測(cè)封包,則該操作狀態(tài)單元由該循環(huán)狀態(tài)回到該正常狀態(tài)。
9.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)裝置,其中,當(dāng)該操作狀態(tài)為該檢查狀態(tài)時(shí),在該循環(huán)檢測(cè)封包產(chǎn)生單元送出一預(yù)定次數(shù)的該循環(huán)檢測(cè)封包后,如果該網(wǎng)絡(luò)裝置未接收到本身所發(fā)出的該循環(huán)檢測(cè)封包,則該操作狀態(tài)單元由該檢查狀態(tài)回到該正常狀態(tài)。
10.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)裝置,還包括一隨機(jī)碼產(chǎn)生單元,用以產(chǎn)生一隨機(jī)識(shí)別碼。
11.根據(jù)權(quán)利要求10所述的網(wǎng)絡(luò)裝置,其中,該信息為該第二封包中的一協(xié)議識(shí)別碼字段,以決定該第二封包的格式是否符合于一循環(huán)檢測(cè)封包格式;以及當(dāng)該第二封包的格式符合于該循環(huán)檢測(cè)封包格式時(shí),該循環(huán)決定單元比對(duì)該隨機(jī)識(shí)別碼與該第二封包中的一第一識(shí)別字段,以判斷是否發(fā)生循環(huán)。
12.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)裝置,其中,該循環(huán)決定單元還比對(duì)一使用者設(shè)定識(shí)別碼與該第二封包中的一第二識(shí)別字段,以判斷是否發(fā)生循環(huán)。
13.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)裝置,其中,當(dāng)循環(huán)發(fā)生時(shí),該網(wǎng)絡(luò)裝置發(fā)出一警示信號(hào)。
14.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)裝置,其中,當(dāng)循環(huán)發(fā)生時(shí),該網(wǎng)絡(luò)裝置中的一指示單元發(fā)出一中斷信號(hào)。
15.一種網(wǎng)絡(luò)裝置的循環(huán)檢測(cè)方法,包括檢測(cè)該網(wǎng)絡(luò)裝置所接收的一第一封包中的一地址字段是否發(fā)生變動(dòng); 當(dāng)檢測(cè)到該地址字段變動(dòng)時(shí),產(chǎn)生一循環(huán)檢測(cè)封包; 分析該網(wǎng)絡(luò)裝置所接收的一第二封包,以擷取出一信息;以及依據(jù)該信息判斷該第二封包是否為該循環(huán)檢測(cè)封包,以決定該網(wǎng)絡(luò)裝置是否有循環(huán)。
16.根據(jù)權(quán)利要求15所述的方法,其中,該地址字段為一來(lái)源地址字段。
17.根據(jù)權(quán)利要求15所述的方法,還包含 依據(jù)一對(duì)應(yīng)表,判斷該地址字段是否發(fā)生變動(dòng)。
18.根據(jù)權(quán)利要求15所述的方法,還包含記錄該網(wǎng)絡(luò)裝置目前的一操作狀態(tài),該操作狀態(tài)包含至少一正常狀態(tài)、一檢查狀態(tài)與一循環(huán)狀態(tài)。
19.根據(jù)權(quán)利要求18所述的方法,其中,當(dāng)檢測(cè)到該地址字段變動(dòng)時(shí),該操作狀態(tài)被設(shè)定為檢查狀態(tài),且產(chǎn)生該循環(huán)檢測(cè)封包。
20.根據(jù)權(quán)利要求18所述的方法,其中,當(dāng)該操作狀態(tài)為該檢查狀態(tài)時(shí),檢查該網(wǎng)絡(luò)裝置的各端口是否有循環(huán)存在;以及如果至少有一端口有循環(huán)存在,則該操作狀態(tài)由該檢查狀態(tài)進(jìn)入該循環(huán)狀態(tài)。
21.根據(jù)權(quán)利要求20所述的方法,其中,當(dāng)該操作狀態(tài)為該循環(huán)狀態(tài)時(shí),持續(xù)確認(rèn)循環(huán)是否仍存在;以及如果循環(huán)存在,則發(fā)出一警示信號(hào)。
全文摘要
一種網(wǎng)絡(luò)裝置包括一地址變動(dòng)檢測(cè)單元,檢測(cè)該網(wǎng)絡(luò)裝置所接收的一第一封包中的一地址字段是否發(fā)生變動(dòng);一循環(huán)檢測(cè)封包產(chǎn)生單元,當(dāng)該地址變動(dòng)檢測(cè)單元檢測(cè)到該地址字段變動(dòng)時(shí),產(chǎn)生一循環(huán)檢測(cè)封包;一封包分析單元,分析該網(wǎng)絡(luò)裝置所接收的一第二封包,以擷取出一信息;以及一循環(huán)決定單元,耦接至該封包分析單元,依據(jù)該信息判斷該第二封包是否為該循環(huán)檢測(cè)封包,以決定該網(wǎng)絡(luò)裝置是否有循環(huán)。
文檔編號(hào)H04L1/00GK102195746SQ20101014390
公開(kāi)日2011年9月21日 申請(qǐng)日期2010年3月17日 優(yōu)先權(quán)日2010年3月17日
發(fā)明者馮榮佑, 許木榮, 謝燿宇 申請(qǐng)人:瑞昱半導(dǎo)體股份有限公司