專(zhuān)利名稱(chēng):一種mac地址表項(xiàng)的管理方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種MAC( Media Access Control,媒 體接入控制)地址表項(xiàng)的管理方法和設(shè)備。
背景技術(shù):
隨著數(shù)據(jù)通信技術(shù)的發(fā)展,在路由設(shè)備上實(shí)現(xiàn)路由交換一體化的組網(wǎng)需 求越來(lái)越明顯,此類(lèi)組網(wǎng)方式可以簡(jiǎn)化網(wǎng)絡(luò)層次,減少組網(wǎng)復(fù)雜度和維護(hù)成 本。
目前經(jīng)常采用的技術(shù)方案是在路由設(shè)備上固定交換口或者集成交換模 塊。隨著設(shè)備組網(wǎng)越來(lái)越復(fù)雜,維護(hù)人員提出需要按照字典序查詢(xún)顯示路由 設(shè)備某個(gè)交換口或者交換模塊的以太網(wǎng)地址,該以太網(wǎng)地址的數(shù)量一般在2K 以上,以便及時(shí)了解設(shè)備的組網(wǎng)情況,排查和解決相關(guān)問(wèn)題。
交換芯片的MAC地址表項(xiàng)中,除了靜態(tài)地址和認(rèn)證地址等是預(yù)先添加的 之夕卜,對(duì)于一般動(dòng)態(tài)MAC地址的學(xué)習(xí)添加和老化刪除是由交換芯片自動(dòng)完成 的,而一般情況下不同廠(chǎng)家生產(chǎn)的交換芯片所定義的MAC地址表格式不盡相 同,完全不同于用戶(hù)所期望的字典序格式。這就要求基于集中式管理的路由 交換一體化設(shè)備在不降低設(shè)備業(yè)務(wù)性能的前提下,由設(shè)備自身生成和維護(hù)一 張與所有交換芯片同步的地址表,考慮到設(shè)備上的交換芯片可能屬于不同廠(chǎng) 家的不同型號(hào),因此需要一種高效和可靠的方法來(lái)解決MAC地址表項(xiàng)的獲取 與維護(hù)問(wèn)題。
現(xiàn)有技術(shù)提供一種維護(hù)管理設(shè)備MAC地址表項(xiàng)的方案,其原理如圖1所 示,設(shè)備的處理器通過(guò)與交換芯片接口總線(xiàn)如PCI (Peripheral Component Interconnect,周邊元件擴(kuò)展接口 )或SMI ( Serial Management Interface,串行 管理接口 )等發(fā)起對(duì)MAC地址表的讀取操作。如果是PCI高速并行總線(xiàn),交 換芯片內(nèi)部的DMA (Direct Memory Access,直接內(nèi)存訪(fǎng)問(wèn))單元將內(nèi)部的
MAC地址表項(xiàng)傳送到處理器的內(nèi)存緩沖區(qū)中,處理器軟件通過(guò)CLI( Command Line Interface,命令行界面)或者WEB網(wǎng)管接口直接顯示給用戶(hù)。如果是SMI 低速串行總線(xiàn),處理器通過(guò)芯片內(nèi)部寄存器按照查詢(xún)應(yīng)答的方式一條一條的 逐個(gè)讀取整個(gè)MAC i也址表項(xiàng)。
現(xiàn)有技術(shù)雖然能實(shí)現(xiàn)MAC地址表項(xiàng)的讀取,但也存在如下問(wèn)題由于芯 片硬件設(shè)計(jì)的原因,不同廠(chǎng)家提供的交換芯片對(duì)于地址表讀取處理方式差別 很大,并沒(méi)有統(tǒng)一的規(guī)則。無(wú)法按照網(wǎng)管一般所期望的VLAN+MAC格式的 字典序來(lái)顯示MAC地址表項(xiàng)。另外,路由設(shè)備等設(shè)備的槽位眾多,槽位上可 能有多種芯片廠(chǎng)商的交換芯片存在,這樣造成讀取表項(xiàng)效率有高有低不一致, 例如對(duì)于通過(guò)SMI低速串行總線(xiàn)獲取MAC地址表項(xiàng)的方法,效率很低而且 極大占用處理器資源,因此頻繁讀取大量的地址表項(xiàng)將會(huì)極大影響設(shè)備的性 能。
發(fā)明內(nèi)容
本發(fā)明提供一種MAC地址表項(xiàng)的管理方法和設(shè)備,用于生成并維護(hù)基于 預(yù)設(shè)格式的MAC地址表項(xiàng),例如常用的(VLAN+MAC)格式,便于用戶(hù)的 管理和維護(hù)。
為達(dá)到此目的,本發(fā)明提供一種MAC地址表項(xiàng)的管理方法,包括以下步
驟
獲取交換芯片存儲(chǔ)的MAC地址表項(xiàng);
獲取所述MAC地址表項(xiàng)與上一次獲取的MAC地址表項(xiàng)的差異表項(xiàng); 才艮據(jù)所述差異表項(xiàng)更新本地維護(hù)的MAC地址表項(xiàng)。 其中,所述獲取交換芯片存儲(chǔ)的MAC地址表項(xiàng)前還包括步驟 創(chuàng)建數(shù)據(jù)結(jié)構(gòu)用于存儲(chǔ)在本地維護(hù)的MAC地址表項(xiàng)。 其中,所述獲取交換芯片存儲(chǔ)的MAC地址表項(xiàng)的步驟具體為 交換芯片內(nèi)的靜態(tài)MAC表項(xiàng)、認(rèn)證MAC表項(xiàng)或黑洞MAC表項(xiàng)中的任 意一種發(fā)生變化時(shí),立即從所述交換芯片獲取變化后的所述MAC地址表項(xiàng)。 其中,所述獲取交換芯片存儲(chǔ)的MAC地址表項(xiàng)的步驟具體為
周期獲取交換芯片內(nèi)的動(dòng)態(tài)配置的MAC地址表項(xiàng),不同芯片的獲取周期 相同或不同。
其中,所述周期獲取具體為
每一次獲取MAC地址表項(xiàng)完成后,采用定時(shí)器進(jìn)行計(jì)時(shí),在間隔一定的 時(shí)間后,進(jìn)行下一次MAC地址表項(xiàng)的獲取。
其中,所述獲取MAC地址表項(xiàng)的方法具體為
采用中斷處理方式從交換芯片獲取MAC地址表項(xiàng)。
其中,所述獲取MAC地址表項(xiàng)與上一次獲取的MAC地址表項(xiàng)的差異表 項(xiàng)的步驟具體為
將所述獲取的MAC地址表項(xiàng)存儲(chǔ)在第一緩沖區(qū)中,上一次獲取的MAC 地址表項(xiàng)存儲(chǔ)在第二緩沖區(qū)中;
將所述第 一緩沖區(qū)與所述第二緩沖區(qū)的對(duì)應(yīng)位置進(jìn)行比較,獲取最新獲 取的MAC地址表項(xiàng)與上一次獲取的MAC地址表項(xiàng)的差異表項(xiàng)。
其中,所述根據(jù)差異表項(xiàng)更新本地維護(hù)的MAC地址表項(xiàng)的步驟具體包
括
對(duì)于所述差異表項(xiàng)中需要?jiǎng)h除的MAC地址表項(xiàng),從本地的MAC地址表 項(xiàng)中進(jìn)行刪除;
對(duì)于所述差異表項(xiàng)中需要新添加的MAC地址表項(xiàng),判斷本地的MAC地 址表項(xiàng)中是否已經(jīng)有相同的MAC地址表項(xiàng)存在,若沒(méi)有則將所述MAC地址 表項(xiàng)添加到本地維護(hù)的MAC地址表項(xiàng)中;否則不在本地添加所述MAC地址 表項(xiàng)。
其中,所述根據(jù)差異表項(xiàng)更新本地維護(hù)的MAC地址表項(xiàng)后,還包括步驟 將所述第一緩沖區(qū)中的內(nèi)容復(fù)制到所述第二緩沖區(qū)中的對(duì)應(yīng)位置。 其中,所述本地維護(hù)的MAC地址表項(xiàng)中,MAC地址表項(xiàng)以預(yù)先設(shè)置的 格式存儲(chǔ)。
其中,所述本地維護(hù)的MAC地址表項(xiàng)中,不同的MAC地址表項(xiàng)以平衡 二叉樹(shù)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),并按照字典序排列。
本發(fā)明還提供一種MAC地址表項(xiàng)的管理設(shè)備,包括
至少一個(gè)交換芯片,用于獲^^其內(nèi)部存儲(chǔ)的MAC地址表項(xiàng),并將獲取到 的MAC地址提供給緩沖區(qū)單元;
緩沖區(qū)單元,用于為每個(gè)所述交換芯片建立對(duì)應(yīng)的緩沖區(qū),對(duì)從所述各 交換芯片獲取到緩沖區(qū)中的MAC地址表項(xiàng)與上一次獲取到緩沖區(qū)中的MAC 地址表項(xiàng)進(jìn)行比較,將比較得到的差異表項(xiàng)發(fā)送到管理單元;
管理單元,用于根據(jù)所述緩沖區(qū)單元發(fā)送的差異表項(xiàng),更新本地維護(hù)的 MAC地址表項(xiàng)。
其中所述交換芯片進(jìn)一步包括
地址獲取子單元,用于按照預(yù)先設(shè)置的格式獲取本交換芯片中的MAC地 址表項(xiàng);
定時(shí)器子單元,用于設(shè)置所述地址獲取子單元在完成一次MAC地址表項(xiàng) 的獲取后、到開(kāi)始下一次MAC地址表項(xiàng)的獲取的時(shí)間間隔。 其中,所述緩沖區(qū)單元進(jìn)一步包括
交換芯片地址獲取子單元,用于分別獲取所述交換芯片存儲(chǔ)的MAC地址 表項(xiàng)并發(fā)送到第 一緩沖區(qū)子單元;
第一緩沖區(qū)子單元,用于存儲(chǔ)所述交換芯片地址獲取子單元最新獲取的 MAC地址表項(xiàng),并將所述MAC地址表項(xiàng)提供給比較子單元;
第二緩沖區(qū)子單元,用于存儲(chǔ)所述交換芯片地址獲取子單元上一次獲取 的MAC地址表項(xiàng),并將所述MAC地址表項(xiàng)提供給比較子單元;
比較子單元,用于對(duì)獲取到的所述第 一緩沖區(qū)子單元與第二緩沖區(qū)子單 元的內(nèi)容進(jìn)行比較,獲取差異表項(xiàng)并向所述管理單元發(fā)送。
其中,所述管理單元進(jìn)一步包括
排序子單元,用于根據(jù)所述緩沖區(qū)單元獲取的差異表項(xiàng),對(duì)本地存儲(chǔ)的 MAC地址表項(xiàng)進(jìn)行排序;
存儲(chǔ)子單元,用于存儲(chǔ)所述排序子單元排序后的MAC地址表項(xiàng)。 其中,還包括判斷單元,用于判斷所述緩沖區(qū)單元獲取到的差異表項(xiàng)中 需要添加的MAC地址表項(xiàng)是否已經(jīng)存在于所述管理單元中的MAC地址表項(xiàng) 中,如果不存在相同內(nèi)容的表項(xiàng),將所述MAC地址表項(xiàng)發(fā)送到所述管理單元
進(jìn)行正常的排序處理;否則不添加。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
通過(guò)使用本發(fā)明,可以在路由設(shè)備上自動(dòng)生成并維護(hù)基于字典序的MAC 地址表項(xiàng),克服了不同廠(chǎng)商的交換芯片上MAC地址表項(xiàng)的差異,為路由設(shè)備 的維護(hù)和擴(kuò)展提供了較好的開(kāi)放框架。
圖1是現(xiàn)有技術(shù)中維護(hù)管理設(shè)備MAC地址表項(xiàng)的方案示意圖2是本發(fā)明中MAC地址表項(xiàng)的管理方法流程圖3是本發(fā)明中對(duì)動(dòng)態(tài)配置的MAC地址表項(xiàng)進(jìn)行管理的方法流程圖4是本發(fā)明中交換芯片及緩沖區(qū)的關(guān)系示意圖5是本發(fā)明中新舊緩沖區(qū)的存儲(chǔ)格式示意圖6是本發(fā)明中MAC地址更新時(shí)的AVL樹(shù)結(jié)構(gòu)變化示意圖7是本發(fā)明中MAC地址在槽位間遷移的處理方法流程圖8是本發(fā)明中MAC地址表項(xiàng)的管理設(shè)備示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述 本發(fā)明中, 一種MAC地址表項(xiàng)的管理方法的流程如圖2所示,包括如下步
驟
步驟s201、創(chuàng)建數(shù)據(jù)結(jié)構(gòu)用于存儲(chǔ)所管理的MAC地址表項(xiàng)。
該數(shù)據(jù)結(jié)構(gòu)的種類(lèi)可以根據(jù)需要進(jìn)行選擇,如采用基于A(yíng)VL (Adelson-VelskyLandis)平衡二叉樹(shù)的數(shù)據(jù)結(jié)構(gòu),該平衡二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)用 于存儲(chǔ)路由設(shè)備內(nèi)所有交換芯片上存在的MAC地址表項(xiàng),不同的MAC地址表 項(xiàng)在此數(shù)據(jù)結(jié)構(gòu)中按照字典序進(jìn)行排列。
步驟s202、獲取交換芯片內(nèi)部存儲(chǔ)的MAC地址表項(xiàng)。
步驟s203、根據(jù)獲取到的交換芯片的MAC地址表項(xiàng),更新本地的MAC地 址表項(xiàng)。
通過(guò)該步驟,路由設(shè)備內(nèi)存儲(chǔ)的MAC地址表不是單純的從交換芯片讀取 出來(lái)的緩沖區(qū)內(nèi)容,而是根據(jù)路由設(shè)備上所有交換芯片統(tǒng)一組織的按照字典 序排列的地址表,是設(shè)備所有的交換芯片MAC地址表項(xiàng)的全集,該地址表的 格式可以根據(jù)需要進(jìn)行預(yù)先設(shè)定。
步驟s204、在需要時(shí),將存儲(chǔ)的MAC地址表項(xiàng)進(jìn)行顯示。
上述流程中,對(duì)于交換芯片內(nèi)的靜態(tài)表項(xiàng)、認(rèn)證表項(xiàng)和黑洞表項(xiàng)(指若 一個(gè)MAC地址位于黑洞表項(xiàng),則所有目的地址為該MAC地址的數(shù)據(jù)包都會(huì) 被直接丟棄)均采用立即同步的方式在添加上述地址到交換芯片后,立刻 將上述地址通過(guò)交換芯片更新到本地存儲(chǔ)所有MAC地址表項(xiàng)的數(shù)據(jù)結(jié)構(gòu)中。
對(duì)于類(lèi)型為動(dòng)態(tài)配置的MAC地址表項(xiàng),本發(fā)明的實(shí)施例二中, 一種MAC 地址表的管理方法如圖3所示,其中包括如下步驟
步驟s301、對(duì)于每個(gè)交換芯片,周期性的循環(huán)獲取其內(nèi)部存儲(chǔ)的MAC 地址表項(xiàng)。
該讀取操作可以釆取一般的等待方式進(jìn)行,即在讀取MAC地址表的過(guò)程 中,交換芯片上的處理器處于等待狀態(tài),直至所需要的MAC地址收集完成才 繼續(xù)其他任務(wù)的處理工作。但為了提高讀取時(shí)的效率,不影響交換芯片處理
非等待方式。中斷處理方式是指處理器在收集MAC地址的過(guò)程中,仍可以 執(zhí)行其他進(jìn)程,在收集MAC地址完成后進(jìn)行上凈艮。該中斷處理方式雖然查詢(xún) 表項(xiàng)速度較慢,但是不會(huì)影響交換芯片的處理性能,下發(fā)一條查詢(xún)命令后直 到讀取所需表項(xiàng)的過(guò)程中,處理器可以同時(shí)執(zhí)行其他任務(wù),因此大大降低了 獲取MAC地址表項(xiàng)時(shí)的處理器的占用率。
同時(shí),由于每個(gè)交換芯片上的MAC地址表項(xiàng)大小不同、讀取方式也有所 不同,因此對(duì)于不同的交換芯片,獲取MAC地址表項(xiàng)所需的時(shí)間的差別也可 能很大,對(duì)此,可以釆用自循環(huán)定時(shí)器任務(wù),在一次MAC地址表項(xiàng)的獲取完 成后,經(jīng)過(guò)一定間隔時(shí)間(例如3秒)自動(dòng)進(jìn)行下一次獲取,能夠迅速和準(zhǔn) 確地反映每個(gè)交換芯片地址表的變化。對(duì)于不同的交換芯片,該間隔時(shí)間的
設(shè)置可以根據(jù)需要相同或不同。
步驟s302、將獲取到的交換芯片的MAC地址表項(xiàng)存儲(chǔ)到新緩沖區(qū)。 為了比較每一交換芯片上MAC地址表項(xiàng)的變化,為每一交換芯片設(shè)置一 對(duì)應(yīng)的緩沖區(qū),每一緩沖區(qū)又分為第一緩沖區(qū)和第二緩沖區(qū),為了描述方便, 分別稱(chēng)為新緩沖區(qū)和舊緩沖區(qū),其示意圖如圖4所示。對(duì)于每一交換芯片, 獲取其上存儲(chǔ)的MAC地址表項(xiàng)的周期可以設(shè)置為相同或不同,每一次獲取到 新的MAC地址表項(xiàng)后,將新獲取到的MAC地址存儲(chǔ)到交換芯片對(duì)應(yīng)的新緩 沖區(qū)中,而上一次獲取的MAC地址保留在舊緩沖區(qū)中,因此可以方便地對(duì)新 舊緩沖區(qū)中的MAC地址表項(xiàng)進(jìn)行比較以獲得差異。
另夕卜,在第一次獲取到交換芯片的MAC地址表項(xiàng)時(shí),舊緩沖區(qū)中的內(nèi)容 為空,這并不會(huì)對(duì)之后的新舊緩沖區(qū)比較造成影響。
步驟s303、比較新緩沖區(qū)和舊緩沖區(qū)中的內(nèi)容,獲取比較后的差異表項(xiàng)。 其中,該比較后得到的差異表項(xiàng)即交換芯片新增和老化刪除的MAC地址 內(nèi)容。
步驟s304、根據(jù)比較后的差異表項(xiàng),對(duì)本地的MAC地址表項(xiàng)進(jìn)行排列 存儲(chǔ)。
為提高效率和節(jié)省資源,只使用差異表項(xiàng)進(jìn)行排列存儲(chǔ)。如前面所描述 的,該排列具體可以為采用數(shù)據(jù)結(jié)構(gòu)為AVL平衡二叉樹(shù)的字典序排列,也可 采取其他存儲(chǔ)方式。
步驟s305、將新緩沖區(qū)中的內(nèi)容復(fù)制到舊緩沖區(qū)。
將新緩沖區(qū)中的內(nèi)容復(fù)制到舊緩沖區(qū),覆蓋舊緩沖區(qū)中存儲(chǔ)的內(nèi)容,以 便用于下次獲取到MAC地址表項(xiàng)時(shí),繼續(xù)比較操作。
步驟s306、將更新后的本地MAC地址表項(xiàng)進(jìn)行顯示。 在上述步驟s301 s302中,設(shè)備從每一交換芯片讀取MAC地址表項(xiàng)并存 儲(chǔ)到新緩沖區(qū),其中MAC地址表項(xiàng)在新緩沖區(qū)內(nèi)存中的排列是一般M于哈 希存儲(chǔ)(又稱(chēng)散列存儲(chǔ))方式進(jìn)行排列的,對(duì)于每一MAC地址,其在新緩沖 區(qū)中的位置是由其值k經(jīng)i^合希函數(shù)H (k)計(jì)算后所決定的,即存^:方式不 是按照字典式進(jìn)行排列的。
在上述步驟s303中,新舊緩沖區(qū)的存儲(chǔ)格式示意圖如圖5所示,不同的 MAC地址經(jīng)過(guò)哈希函數(shù)H (k)運(yùn)算后存儲(chǔ)在緩沖區(qū)中的對(duì)應(yīng)位置,其中有 些緩沖區(qū)的位置沒(méi)有MAC地址與之對(duì)應(yīng)并存儲(chǔ),因此為空。圖5中,有MAC 地址存力丈的緩沖區(qū)單元為有效(valid)位并標(biāo)記存i文的MAC地址,而沒(méi)有存 放MAC地址的緩沖區(qū)單元標(biāo)記為無(wú)效(Invalid)位,這里以數(shù)字表示不同 MAC地址,纟要照從小到大表示其在字典序中的前后順序。
本實(shí)施例中MAC地址字典序排列采取的數(shù)據(jù)結(jié)構(gòu)是AVL平衡二叉樹(shù), 節(jié)點(diǎn)的平衡值在[-l, l]之間,也就是每一個(gè)節(jié)點(diǎn)的左子樹(shù)深度減去右子樹(shù)的深 度結(jié)果是在[-l, l]之間。若待插入的值位于根結(jié)點(diǎn)值前,則作為左子樹(shù)插入, 否則作為右子樹(shù)插入J艮設(shè)圖5中舊緩沖區(qū)的內(nèi)容為第一次獲取的MAC地址, 其包括地址{1、 3、 6、 2、 4},則根據(jù)該MAC地址生成的AVL平衡二叉樹(shù)結(jié) 構(gòu)如圖6中的(6A)所示,其根結(jié)點(diǎn)為4,由左子樹(shù)到右子樹(shù)的地址依次為1、 2、 3、 4、 6,即為字典序。
在獲取到圖5所示的新的MAC地址之后,從圖5中可知,地址3和2保 持不變,對(duì)其他發(fā)生變化的MAC地址,依次進(jìn)行更新操作。如圖6所示,該 MAC地址的更新步驟如下
步驟s601 、從AVL樹(shù)中刪除地址1,添加地址7到AVL樹(shù),AVL樹(shù)的 狀態(tài)由(6A)變化為(6B)。
步驟s602、從AVL樹(shù)刪除地址6, AVL樹(shù)的狀態(tài)由(6B )變化為(6C )。
步驟s603、添加地址10到AVL樹(shù),AVL樹(shù)的狀態(tài)由(6C )變化為(6D)。
步驟s604、從AVL樹(shù)刪除地址4,添加地址5到AVL樹(shù),AVL樹(shù)的狀 態(tài)由(6D)變化為(6E)。
更新的最后狀態(tài)如(6E)所示,其根結(jié)點(diǎn)為5,由左子樹(shù)到右子樹(shù)的地址 依次為2、 3、 5、 7、 10,仍為字典序。采用AVL樹(shù)的優(yōu)點(diǎn)在于,經(jīng)驗(yàn)證明對(duì) 于A(yíng)VL樹(shù)的結(jié)構(gòu)處理器操作效率很高,能夠滿(mǎn)足快速排序的性能要求。通過(guò)
每個(gè)交換芯片獲取的MAC地址格式可以根據(jù)需要預(yù)先進(jìn)行設(shè)定,如采用 一般 常用的(VLAN + MAC)的形式,從而實(shí)現(xiàn)了對(duì)每一地址以預(yù)設(shè)格式存儲(chǔ)并
以字典序進(jìn)行了排序。
除了采用上述利用比較后的差異表項(xiàng)對(duì)MAC地址表項(xiàng)進(jìn)行排列存儲(chǔ)的
方法外,也可以采取每次直接利用新獲取的表項(xiàng)進(jìn)行排序的方法。仍以圖5 為例,前一次獲取的MAC地址為U、 3、 6、 2、 4},則根據(jù)AVL平衡二叉樹(shù) 的生成規(guī)則,得到的AVL平衡二叉樹(shù)為圖6中的(6A)所示的結(jié)構(gòu)。最新一 次獲取的MAC地址如圖5所示,為{7、 3、 2、 10、 5},則根據(jù)AVL平衡二 叉樹(shù)的生成規(guī)則,得到的AVL平衡二叉樹(shù)仍為圖6中的(6E)所示的結(jié)構(gòu)。 因此采取每次直接利用新獲取的表項(xiàng)進(jìn)行排序的方法,可以得到利用比較后 的差異表項(xiàng)對(duì)MAC地址表項(xiàng)進(jìn)行排序相同的結(jié)果??紤]到MAC地址的數(shù)量 一般很大,且大部分獲取到的MAC不會(huì)發(fā)生變化,因此采用每次直接利用新 獲取的表項(xiàng)進(jìn)行排序的方法會(huì)大量消耗系統(tǒng)資源,為了提高效率和節(jié)省資源, 在實(shí)施時(shí)還是使用上述利用比較后的差異表項(xiàng)對(duì)MAC地址表項(xiàng)進(jìn)行排列存 儲(chǔ)的方法。
在實(shí)際組網(wǎng)中,還可能遇到以太網(wǎng)終端連接設(shè)備所在的槽位發(fā)生變化的 情況,這會(huì)導(dǎo)致MAC地址表項(xiàng)的遷移。本發(fā)明對(duì)于該MAC地址表項(xiàng)的遷移 的實(shí)施方式如下在某個(gè)時(shí)刻Tl,屬于VLAN1的地址MACA在交換芯片1 對(duì)應(yīng)的某個(gè)定時(shí)器周期被讀入到緩沖區(qū)B1,正常添加到本地的字典序數(shù)據(jù)中。 在某個(gè)時(shí)刻T2, T2在Tl后AT時(shí)刻,屬于VLAN1的地址MAC A在交換芯 片2對(duì)應(yīng)的某個(gè)定時(shí)器周期又被讀入到緩沖區(qū)B2,此時(shí),在排序時(shí)發(fā)現(xiàn)本地 有相同的MAC地址表項(xiàng)存在,即該MAC地址表項(xiàng)同時(shí)被多個(gè)槽位上的不同 交換芯片學(xué)習(xí)到,因此可以判定屬于VLAN1的地址MAC A發(fā)生了槽位遷移。
對(duì)于此情況,本發(fā)明還提供一種MAC地址在槽位間遷移的處理方法,如 圖7所示,具體步驟如下
步驟s701、將獲取到的交換芯片的MAC地址表項(xiàng)存儲(chǔ)到新緩沖區(qū)。 步驟s702、根據(jù)新舊緩沖區(qū)的比較結(jié)果向存儲(chǔ)MAC地址表項(xiàng)的存儲(chǔ)實(shí) 體添加MAC地址表項(xiàng)時(shí),首先查找本地已存儲(chǔ)的所有MAC地址表項(xiàng),判斷 對(duì)于需要新添加的表項(xiàng),是否本地已經(jīng)有相同的MAC地址表項(xiàng)存在,如不存 在則進(jìn)行步驟s703,否則進(jìn)行步驟s704。
步驟s703、按照預(yù)定的規(guī)則將該MAC地址表項(xiàng)直接添加到本地存儲(chǔ)的 MAC地址表項(xiàng)數(shù)據(jù)結(jié)構(gòu)中并結(jié)束。
步驟s704、不將該MAC地址添加到本地存儲(chǔ)的MAC地址表項(xiàng)數(shù)據(jù)結(jié)構(gòu) 中,將緩沖區(qū)中與該MAC相對(duì)應(yīng)的位置標(biāo)記為Invalid,等待下次獲取到新的 MAC地址表項(xiàng)后再進(jìn)行判斷處理。
使用該流程的原因在于, 一旦原屬于VLAN1的地址MACA在交換芯片 1中經(jīng)過(guò)一段時(shí)間自動(dòng)老化掉或被用戶(hù)刪除后,存儲(chǔ)MAC地址表項(xiàng)的實(shí)體中 必然也會(huì)同步更新。這樣在交換芯片2的某個(gè)任務(wù)周期中該地址又會(huì)被正確 地添加到存儲(chǔ)MAC地址表項(xiàng)的實(shí)體中。該時(shí)間長(zhǎng)短主要取決于芯片本身配置 參數(shù),老化時(shí)間等。
通過(guò)以上實(shí)施例的描述,可以在路由設(shè)備上高效維護(hù)MAC地址表,解決 了基于字典序的MAC地址表自動(dòng)排序的問(wèn)題,屏蔽了各種廠(chǎng)商的交換芯片地 址表差異,為路由設(shè)備的維護(hù)和擴(kuò)展提供了較好的開(kāi)放框架。
本發(fā)明還提供了一種MAC地址表項(xiàng)的管理設(shè)備,其結(jié)構(gòu)如圖7所示,包
括
至少一個(gè)交換芯片10,與緩沖區(qū)單元20連接,用于獲取其內(nèi)部存儲(chǔ)的 MAC地址表項(xiàng),并將獲取到的MAC地址提供給緩沖區(qū)單元20。
緩沖區(qū)單元20,與管理單元30連接,用于為每個(gè)交換芯片建立對(duì)應(yīng)的緩 沖區(qū),對(duì)從各交換芯片10獲取到各自緩沖區(qū)中的MAC地址表項(xiàng)分別進(jìn)行比 較處理,將每次比較得到的差異表項(xiàng)發(fā)送到管理單元30。
管理單元30,用于根據(jù)緩沖區(qū)單元20上傳的差異表項(xiàng)進(jìn)行排列,生成排 序后的MAC地址表項(xiàng)并進(jìn)行本地存儲(chǔ)。
具體的,交換芯片10,進(jìn)一步包括地址獲取子單元11和定時(shí)器子單元 12。其中,地址獲取子單元11,用于獲取交換芯片中的MAC地址表項(xiàng),可 以采用DMA或者中斷查詢(xún)方式,其中獲取的MAC地址表項(xiàng)的才各式可以預(yù)先 進(jìn)行設(shè)置,如采用常用的(VLAN + MAC)形式。定時(shí)器子單元12,用于設(shè) 置地址獲取子單元11在完成一次MAC地址表項(xiàng)的獲取后、到開(kāi)始下一次 MAC地址表項(xiàng)的獲取的時(shí)間間隔。對(duì)于不同的交換芯片,該時(shí)間間隔的設(shè)定
可能互不相同。
具體的,緩沖區(qū)單元20,進(jìn)一步包括交換芯片地址獲取子單元21、第 一緩沖區(qū)子單元22、第二緩沖區(qū)子單元23和比較子單元24。交換芯片地址 獲取子單元21,用于分別獲取各個(gè)交換芯片IO上地址獲取子單元11獲取到 的MAC地址表項(xiàng),并將獲取到的MAC地址表項(xiàng)存儲(chǔ)到各交換芯片對(duì)應(yīng)的第 一緩沖區(qū)子單元22。第一緩沖區(qū)子單元22,用于存儲(chǔ)交換芯片地址獲取子單 元21最新獲取的MAC地址表項(xiàng),并將該MAC地址表項(xiàng)提供給比較子單元
23。 第二緩沖區(qū)子單元23,用于存儲(chǔ)交換芯片地址獲取子單元21從交換芯片 10上一次獲取的MAC地址表項(xiàng),并將該MAC地址表項(xiàng)提供給比較子單元
24。 比較子單元24,用于對(duì)獲取到的第一緩沖區(qū)子單元22與第二緩沖區(qū)子單 元23的內(nèi)容進(jìn)行比較,獲取差異表項(xiàng)并向管理單元30發(fā)送。
具體的,管理單元30,進(jìn)一步包括排序子單元31和存儲(chǔ)子單元32。 其中,排序子單元31,用于對(duì)緩沖區(qū)單元20獲取的差異表項(xiàng)進(jìn)行排列,如采 用基于A(yíng)VL平衡二叉樹(shù)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行字典序排序。存儲(chǔ)子單元32,用于在 本地存儲(chǔ)排序子單元31排列后的MAC地址表項(xiàng)。
另外,該MAC地址的管理設(shè)備還包括判斷單元40,用于查詢(xún)管理單元 30中的字典序MAC地址表項(xiàng),判斷緩沖區(qū)單元20獲取到的差異表項(xiàng)中需要 添加的MAC地址表項(xiàng)是否已經(jīng)存在于管理單元30中的MAC地址表項(xiàng)中, 如果不存在相同內(nèi)容的表項(xiàng),將該MAC地址表項(xiàng)發(fā)送到管理單元30進(jìn)行正 常的排序處理;如果已經(jīng)存在一條相同內(nèi)容的表項(xiàng),則先不添加,并將緩沖 區(qū)單元20中的相應(yīng)位置標(biāo)記為Invalid,等待下次從交換芯片獲取到新的MAC 地址表項(xiàng)后再進(jìn)行處理。
顯示單元50,用于在需要時(shí)將管理單元30中的字典序MAC地址表項(xiàng)的 內(nèi)容進(jìn)行顯示。
通過(guò)使用上述MAC地址的管理設(shè)備,可以在路由設(shè)備上高效維護(hù)二層 MAC地址表,解決了基于字典序的MAC地址表自動(dòng)排序的問(wèn)題,屏蔽了各 種廠(chǎng)商的交換芯片地址表差異,為路由設(shè)備的維護(hù)和擴(kuò)展提供了較好的開(kāi)放 框架。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件, 但^f艮多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案
該獲取機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)路由 設(shè)備執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上公開(kāi)的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此, 任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種MAC地址表項(xiàng)的管理方法,其特征在于,包括以下步驟獲取交換芯片存儲(chǔ)的MAC地址表項(xiàng);獲取所述MAC地址表項(xiàng)與上一次獲取的MAC地址表項(xiàng)的差異表項(xiàng);根據(jù)所述差異表項(xiàng)更新本地維護(hù)的MAC地址表項(xiàng)。
2、 如權(quán)利要求1所述MAC地址表項(xiàng)的管理方法,其特征在于,所述獲 取交換芯片存儲(chǔ)的MAC地址表項(xiàng)前還包括步驟創(chuàng)建數(shù)據(jù)結(jié)構(gòu)用于存儲(chǔ)在本地維護(hù)的MAC地址表項(xiàng)。
3、 如權(quán)利要求1所述MAC地址表項(xiàng)的管理方法,其特征在于,所述獲 取交換芯片存儲(chǔ)的MAC地址表項(xiàng)的步驟具體為交換芯片內(nèi)的靜態(tài)MAC表項(xiàng)、認(rèn)證MAC表項(xiàng)或黑洞MAC表項(xiàng)中的任 意一種發(fā)生變化時(shí),立即從所述交換芯片獲取變化后的所述MAC地址表項(xiàng)。
4、 如權(quán)利要求1所述MAC地址表項(xiàng)的管理方法,其特征在于,所述獲 取交換芯片存儲(chǔ)的MAC地址表項(xiàng)的步驟具體為周期獲取交換芯片內(nèi)的動(dòng)態(tài)配置的MAC地址表項(xiàng),不同芯片的獲取周期 相同或不同。
5、 如權(quán)利要求4所述MAC地址表項(xiàng)的管理方法,其特征在于,所述周 期獲取具體為每一次獲取MAC地址表項(xiàng)完成后,采用定時(shí)器進(jìn)行計(jì)時(shí),在間隔一定的 時(shí)間后,進(jìn)行下一次MAC地址表項(xiàng)的獲取。
6、 如權(quán)利要求4或5所述MAC地址表項(xiàng)的管理方法,其特征在于,所 述獲取MAC地址表項(xiàng)的方法具體為采用中斷處理方式從交換芯片獲取MAC地址表項(xiàng)。
7、 如權(quán)利要求1所述MAC地址表項(xiàng)的管理方法,其特征在于,所述獲 取MAC地址表項(xiàng)與上一次獲取的MAC地址表項(xiàng)的差異表項(xiàng)的步驟具體為將所述獲取的MAC地址表項(xiàng)存儲(chǔ)在第 一緩沖區(qū)中,上一次獲取的MAC 地址表項(xiàng)存儲(chǔ)在第二緩沖區(qū)中;將所述第一緩沖區(qū)與所述第二緩沖區(qū)的對(duì)應(yīng)位置進(jìn)行比較,獲取最新獲 取的MAC地址表項(xiàng)與上一次獲取的MAC地址表項(xiàng)的差異表項(xiàng)。
8、 如權(quán)利要求7所述MAC地址表項(xiàng)的管理方法,其特征在于,所述才艮 據(jù)差異表項(xiàng)更新本地維護(hù)的MAC地址表項(xiàng)的步驟具體包括對(duì)于所述差異表項(xiàng)中需要?jiǎng)h除的MAC地址表項(xiàng),從本地的MAC地址表 項(xiàng)中進(jìn)行刪除;對(duì)于所述差異表項(xiàng)中需要新添加的MAC地址表項(xiàng),判斷本地的MAC地 址表項(xiàng)中是否已經(jīng)有相同的MAC地址表項(xiàng)存在,若沒(méi)有則將所述MAC地址 表項(xiàng)添加到本地維護(hù)的MAC地址表項(xiàng)中;否則不在本地添加所述MAC地址 表項(xiàng)。
9、 如權(quán)利要求8所述MAC地址表項(xiàng)的管理方法,其特征在于,所述才艮 據(jù)差異表項(xiàng)更新本地維護(hù)的MAC地址表項(xiàng)后,還包括步驟將所述第一緩沖區(qū)中的內(nèi)容復(fù)制到所述第二緩沖區(qū)中的對(duì)應(yīng)位置。
10、 如權(quán)利要求1或2所述MAC地址表項(xiàng)的管理方法,其特征在于, 所述本地維護(hù)的MAC地址表項(xiàng)中,MAC地址表項(xiàng)以預(yù)先設(shè)置的才各式存儲(chǔ)。
11、 如權(quán)利要求1或2所述MAC地址表項(xiàng)的管理方法,其特征在于, 所述本地維護(hù)的MAC地址表項(xiàng)中,不同的MAC地址表項(xiàng)以平衡二叉樹(shù)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),并按照字典序排列。
12、 一種MAC地址表項(xiàng)的管理設(shè)備,其特征在于,包括 至少一個(gè)交換芯片,用于獲取其內(nèi)部存儲(chǔ)的MAC地址表項(xiàng),并將獲取到的MAC地址提供給緩沖區(qū)單元;緩沖區(qū)單元,用于為每個(gè)所述交換芯片建立對(duì)應(yīng)的緩沖區(qū),對(duì)從所述各 交換芯片獲取到緩沖區(qū)中的MAC地址表項(xiàng)與上一次獲取到緩沖區(qū)中的MAC 地址表項(xiàng)進(jìn)行比較,將比較得到的差異表項(xiàng)發(fā)送到管理單元;管理單元,用于根據(jù)所述緩沖區(qū)單元發(fā)送的差異表項(xiàng),更新本地維護(hù)的 MAC地址表項(xiàng)。
13、 如權(quán)利要求12所述MAC地址表項(xiàng)的管理設(shè)備,其特征在于,所述 交換芯片進(jìn)一步包括地址獲取子單元,用于按照預(yù)先設(shè)置的格式獲取本交換芯片中的MAC地 址表項(xiàng);定時(shí)器子單元,用于設(shè)置所述地址獲取子單元在完成一次MAC地址表項(xiàng) 的獲取后、到開(kāi)始下一次MAC地址表項(xiàng)的獲取的時(shí)間間隔。
14、 如權(quán)利要求12所述MAC地址表項(xiàng)的管理設(shè)備,其特征在于,所述 緩沖區(qū)單元進(jìn)一步包括交換芯片地址獲取子單元,用于分別獲取所述交換芯片存儲(chǔ)的MAC地址 表項(xiàng)并發(fā)送到第 一緩沖區(qū)子單元;第一緩沖區(qū)子單元,用于存儲(chǔ)所述交換芯片地址獲取子單元最新獲取的 MAC地址表項(xiàng),并將所述MAC地址表項(xiàng)提供給比較子單元;第二緩沖區(qū)子單元,用于存儲(chǔ)所述交換芯片地址獲取子單元上一次獲取的MAC地址表項(xiàng),并將所述MAC地址表項(xiàng)提供給比較子單元;比較子單元,用于對(duì)獲取到的所述第 一緩沖區(qū)子單元與第二緩沖區(qū)子單 元的內(nèi)容進(jìn)行比較,獲取差異表項(xiàng)并向所述管理單元發(fā)送。
15、 如權(quán)利要求12所述MAC地址表項(xiàng)的管理設(shè)備,其特征在于,所述 管理單元進(jìn)一步包括排序子單元,用于根據(jù)所述緩沖區(qū)單元獲取的差異表項(xiàng),對(duì)本地存儲(chǔ)的 MAC地址表項(xiàng)進(jìn)行排序;存儲(chǔ)子單元,用于存儲(chǔ)所述排序子單元排序后的MAC地址表項(xiàng)。
16、 如權(quán)利要求12所述MAC地址表項(xiàng)的管理設(shè)備,其特征在于,還包 括判斷單元,用于判斷所述緩沖區(qū)單元獲取到的差異表項(xiàng)中需要添加的MAC 地址表項(xiàng)是否已經(jīng)存在于所述管理單元中的MAC地址表項(xiàng)中,如果不存在相 同內(nèi)容的表項(xiàng),將所述MAC地址表項(xiàng)發(fā)送到所述管理單元進(jìn)行正常的排序處 J里;否則不添力口。
全文摘要
本發(fā)明公開(kāi)了一種MAC地址表項(xiàng)的管理方法,包括以下步驟獲取交換芯片存儲(chǔ)的MAC地址表項(xiàng);獲取MAC地址表項(xiàng)與上一次獲取的MAC地址表項(xiàng)的差異表項(xiàng);根據(jù)該差異表項(xiàng)更新本地維護(hù)的MAC地址表項(xiàng)。本發(fā)明還公開(kāi)了一種MAC地址表項(xiàng)的管理設(shè)備。通過(guò)使用本發(fā)明,可以在路由設(shè)備上自動(dòng)生成并維護(hù)基于字典序的MAC地址表項(xiàng),克服了不同廠(chǎng)商的交換芯片上MAC地址表項(xiàng)的差異,為路由設(shè)備的維護(hù)和擴(kuò)展提供了較好的開(kāi)放框架。
文檔編號(hào)H04L12/24GK101110846SQ20071014590
公開(kāi)日2008年1月23日 申請(qǐng)日期2007年8月29日 優(yōu)先權(quán)日2007年8月29日
發(fā)明者劉亭海, 周宏毅, 趙恒卓 申請(qǐng)人:杭州華三通信技術(shù)有限公司