專利名稱:一種媒體訪問控制mac地址表項(xiàng)學(xué)習(xí)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種媒體訪問控制地址表項(xiàng)學(xué)習(xí)方法 和裝置。
背景技術(shù):
目前,主流網(wǎng)絡(luò)設(shè)備的架構(gòu)一般為交換網(wǎng)框式架構(gòu),如圖1所示,該網(wǎng) 絡(luò)設(shè)備包含多個(gè)轉(zhuǎn)發(fā)芯片,每個(gè)轉(zhuǎn)發(fā)芯片上攜帶32K-1M的MAC (Media Access Control,媒體訪問控制)地址表項(xiàng)。由于網(wǎng)絡(luò)設(shè)備中的MAC地址表 項(xiàng)容量非常大,對(duì)MAC地址學(xué)習(xí)和同步速度提出了更高的要求,如果MAC 地址學(xué)習(xí)和同步速度太慢,則MAC地址廣播的時(shí)間會(huì)比較長,甚至?xí)霈F(xiàn)長 時(shí)間轉(zhuǎn)發(fā)出錯(cuò)的現(xiàn)象。另外,為了轉(zhuǎn)發(fā)報(bào)文的方便,會(huì)在每個(gè)轉(zhuǎn)發(fā)芯片上保 存全局的VLAN ( Virtual Local Area Network,虛擬局域網(wǎng))下的MAC地址 信息,而很多MAC地址的硬件表項(xiàng)根本起不到作用,卻浪費(fèi)了硬件資源。
現(xiàn)有技術(shù)中,MAC地址學(xué)習(xí)技術(shù)分為兩種方式,即轉(zhuǎn)發(fā)芯片內(nèi)自動(dòng)學(xué)習(xí)、 轉(zhuǎn)發(fā)芯片間CPU ( Central Processing Unit,中央處理單元)干預(yù)同步,以及轉(zhuǎn) 發(fā)芯片內(nèi)和芯片間都由CPU千預(yù)學(xué)習(xí)。其中,在轉(zhuǎn)發(fā)芯片內(nèi)自動(dòng)學(xué)習(xí)、芯片 間CPU干預(yù)同步的學(xué)習(xí)方式中,單個(gè)轉(zhuǎn)發(fā)芯片內(nèi)自動(dòng)學(xué)習(xí)后,產(chǎn)生一個(gè)新地 址消息,并將該地址信息發(fā)送給CPU, CPU通過控制通道將該地址消息傳輸 到同一網(wǎng)絡(luò)設(shè)備上的所有其他物理槽位的CPU,其他物理槽位上的CPU解析 該地址消息,然后將該地址信息中的MAC地址表項(xiàng)寫入本槽位上的所有轉(zhuǎn)發(fā) 芯片的FDB ( Forward Database,轉(zhuǎn)發(fā)數(shù)據(jù)庫)表。
在轉(zhuǎn)發(fā)芯片內(nèi)和芯片間都由CPU干預(yù)的學(xué)習(xí)方式中,轉(zhuǎn)發(fā)芯片上發(fā)現(xiàn)有 新MAC地址產(chǎn)生,則產(chǎn)生一個(gè)新地址消息,并將該地址消息發(fā)送給CPU, CPU先將該地址消息中的MAC地址表項(xiàng)寫入本槽位上所有轉(zhuǎn)發(fā)芯片的FDB 表,再通過控制通道將該地址消息傳輸?shù)酵痪W(wǎng)絡(luò)設(shè)備上的所有其他物理槽
5位的CPU,其他物理槽位上的CPU解析該地址消息,然后將該地址信息中的 MAC地址表項(xiàng)寫入本槽位上的所有轉(zhuǎn)發(fā)芯片的FDB表。所有轉(zhuǎn)發(fā)芯片的 MAC地址表項(xiàng)都是通過CPU維護(hù)更新的,在CPU無法知道流量的情況下, 為了芯片上的流量的廣播,可以在存在VLAN的轉(zhuǎn)發(fā)芯片上都保存有整框的 所有VLAN的Mac地址, 一旦有單播流量進(jìn)入轉(zhuǎn)發(fā)芯片,直接對(duì)該單播流量 進(jìn)行轉(zhuǎn)發(fā),減少交換網(wǎng)的負(fù)擔(dān)。
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺陷 對(duì)于轉(zhuǎn)發(fā)芯片內(nèi)自動(dòng)學(xué)習(xí)、芯片間CPU干預(yù)同步的學(xué)習(xí)方式,由于同步 需要軟件干預(yù),所以同步速度比較慢,導(dǎo)致廣播時(shí)間長,且在端口切換過程 中丟包時(shí)間長;同步時(shí)占用控制通道帶寬,容易引起控制通道問題;軟件設(shè) 計(jì)比較復(fù)雜,在框式設(shè)備上應(yīng)用會(huì)出現(xiàn)很多MAC地址學(xué)習(xí)的時(shí)序問題,包括 存在不該有的MAC地址,即在每個(gè)轉(zhuǎn)發(fā)芯片內(nèi)存中存在大量的MAC地址垃 圾表項(xiàng),以及應(yīng)該有的MAC地址卻不存在。
慢,廣播時(shí)間長,且本芯片學(xué)習(xí)速度慢。
發(fā)明內(nèi)容
本發(fā)明提供了一種MAC地址表項(xiàng)學(xué)習(xí)方法和裝置,用于自動(dòng)、高效地維 護(hù)轉(zhuǎn)發(fā)芯片中的FDB表。
本發(fā)明提供了一種媒體訪問控制MAC地址表項(xiàng)學(xué)習(xí)方法,應(yīng)用于包括轉(zhuǎn) 發(fā)芯片和中央處理單元CPU的網(wǎng)絡(luò)設(shè)備中,所述方法包括以下步驟
所述轉(zhuǎn)發(fā)芯片接收單播報(bào)文,記錄所述單播報(bào)文的源MAC地址和入端口信
息;
所述轉(zhuǎn)發(fā)芯片查找轉(zhuǎn)發(fā)數(shù)據(jù)庫FDB表中是否存在所述單播報(bào)文的源MAC 地址,如果所述FDB表中不存在所述單播報(bào)文的源MAC地址,則將所述單播 報(bào)文的源MAC地址和入端口信息添加到所述FDB表中,所迷單播報(bào)文包括來 自業(yè)務(wù)端口的上行單播報(bào)文和來自交換網(wǎng)的下行單播報(bào)文。
優(yōu)選地,所述轉(zhuǎn)發(fā)芯片查找FDB表中是否存在單播報(bào)文的源MAC地址之后,還包括
如果所述FDB表中存在所述單播報(bào)文的源MAC地址,所述轉(zhuǎn)發(fā)芯片判斷 所述FDB表中所述源MAC地址對(duì)應(yīng)的出端口信息和所述單播報(bào)文的出端口信 息是否一致,如果判斷結(jié)果為不一致,所述轉(zhuǎn)發(fā)芯片將所述單4番才艮文的源MAC 地址和出端口信息更新到所述FDB表中。
優(yōu)選地,所述的方法,還包括
所述轉(zhuǎn)發(fā)芯片查找所述FDB表中是否存在所述單播報(bào)文的目的MAC地址, 如果所述FDB表中不存在所述單播報(bào)文的目的MAC地址,則將所述單播報(bào)文 發(fā)送到虛擬局域網(wǎng)VLAN的所有出端口。
優(yōu)選地,所述單播報(bào)文為上行單播沖良文時(shí),所述轉(zhuǎn)發(fā)芯片查找到所述FDB 表中不存在所述單播報(bào)文的目的MAC地址之后,還包括
所述轉(zhuǎn)發(fā)芯片向所述CPU發(fā)送目的地址DA消息,所述CPU分析接收到的 DA消息,查找所述網(wǎng)絡(luò)設(shè)備的其他轉(zhuǎn)發(fā)芯片中是否存在所述上行單播報(bào)文的目 的MAC地址對(duì)應(yīng)的出端口信息;
如果存在,所述CPU將所述上行單播報(bào)文的目的MAC地址和出端口信息 添加到所述轉(zhuǎn)發(fā)芯片的FDB表中,使所述轉(zhuǎn)發(fā)芯片停止向所述CPU發(fā)送DA消 息,并根據(jù)所述CPU添加的目的MAC地址和出端口信息,將對(duì)應(yīng)的上行單播 報(bào)文進(jìn)行單播發(fā)送;
如果不存在,所述CPU向所述轉(zhuǎn)發(fā)芯片下發(fā)偽MAC地址表項(xiàng),使所述轉(zhuǎn) 發(fā)芯片停止向所述CPU發(fā)送DA消息,并根據(jù)所述CPU下發(fā)的偽MAC地址表 項(xiàng),將對(duì)應(yīng)的上行單播報(bào)文進(jìn)行單播發(fā)送。
優(yōu)選地,所述的方法,還包括
所述轉(zhuǎn)發(fā)芯片對(duì)自身保存的MAC地址表項(xiàng)進(jìn)行老化,并向所述CPU發(fā)送 老化地址消息。
本發(fā)明提供了一種網(wǎng)絡(luò)設(shè)備,包括轉(zhuǎn)發(fā)芯片和CPU,所述轉(zhuǎn)發(fā)芯片包括 ^J^模塊,用于接收單播報(bào)文;
記錄模塊,與所述收發(fā)模塊連接,用于記錄所述收發(fā)模塊接收到的單播報(bào) 文的源MAC地址和入端口信息;
7存儲(chǔ)模塊,用于存儲(chǔ)FDB表;
查找;漠塊,與所述記錄模塊和所述存儲(chǔ)模塊連接,用于查找所述存儲(chǔ)模塊
存儲(chǔ)的FDB表中是否存在所述記錄模塊記錄的單播4艮文的源MAC地址;
添加模塊,與所述查找模塊和所述存儲(chǔ)模塊連接,用于在所述查找才莫塊查 找到所述FDB表中不存在所述單播報(bào)文的源MAC地址時(shí),將所述單播報(bào)文的 源MAC地址和入端口信息添加到所述存儲(chǔ)模塊存儲(chǔ)的FDB表中,所述單播報(bào) 文包括來自業(yè)務(wù)端口的上行單播報(bào)文和來自交換網(wǎng)的下行單纟番才艮文。 優(yōu)選地,所述轉(zhuǎn)發(fā)芯片還包括
判斷模塊,與查找模塊連接,用于在所述查找沖莫塊查找到所述FDB表中存 在所述單播報(bào)文的源MAC地址時(shí),判斷所述FDB表中所述源MAC地址對(duì)應(yīng) 的出端口信息和所述單播"t良文的出端口信息是否一致;
所述添加模塊,與所述判斷模塊連接,還用于在所述判斷模塊的判斷結(jié)果 為不一致時(shí),將所述單播報(bào)文的源MAC地址和出端口信息更新到所述FDB表 中。
優(yōu)選地,所述查找模塊,還用于查找所述FDB表中是否存在所述單播報(bào)文 的目的MAC i也址;
所述收發(fā)模塊,與所述查找模塊連接,還用于在所述查找模塊查找到所述 FDB表中不存在所述單播報(bào)文的目的MAC地址時(shí),將所述單播報(bào)文發(fā)送到 VLAN的所有出端口。
優(yōu)選地,所述單播報(bào)文為上行單播報(bào)文時(shí),
所述收發(fā)模塊,還用于在所述查找模塊查找到所述FDB表中不存在所述單 播報(bào)文的目的MAC地址時(shí),向所述CPU發(fā)送DA消息,并接收來自所述CPU 的出端口信息或偽MAC地址表項(xiàng),根據(jù)所述出端口信息或偽MAC地址表項(xiàng)發(fā) 送所述上行單播報(bào)文,并停止向所述CPU發(fā)送DA消息;
所述CPU,還用于接收并分析來自所述轉(zhuǎn)發(fā)芯片的DA消息,查找所述網(wǎng) 絡(luò)設(shè)備的其他轉(zhuǎn)發(fā)芯片中是否存在所述上行單播報(bào)文的目的MAC地址對(duì)應(yīng)的 出端口信息;如果存在,將所述上行單播報(bào)文的目的MAC地址和出端口信息添 加到所述轉(zhuǎn)發(fā)芯片的FDB表中;如果不存在,向所述轉(zhuǎn)發(fā)芯片下發(fā)偽MAC地
8址表項(xiàng)。
優(yōu)選地,所述轉(zhuǎn)發(fā)芯片,還包括
老化模塊,與所述存儲(chǔ)模塊連接,用于對(duì)所述存儲(chǔ)模塊存儲(chǔ)的MAC地址表 項(xiàng)進(jìn)行老化;
所述收發(fā)模塊,與所述老化模塊連接,還用于向所述CPU發(fā)送老化地址消
白
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明通過單播報(bào)文的廣播, 能夠自動(dòng)、高效地維護(hù)FDB表,包括多個(gè)轉(zhuǎn)發(fā)芯片之間的自動(dòng)學(xué)習(xí)和老化, 而不需要借助CPU的干預(yù),能夠最大化地利用硬件資源。
為了更清楚地說明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)本發(fā)明或 現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中 的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付 出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為網(wǎng)絡(luò)設(shè)備的架構(gòu)示意圖2為本發(fā)明中的一種MAC地址表項(xiàng)學(xué)習(xí)方法流程圖3為本發(fā)明應(yīng)用場景中的MAC地址表項(xiàng)學(xué)習(xí)系統(tǒng)結(jié)構(gòu)示意圖4為本發(fā)明應(yīng)用場景中通過上行單播^J:學(xué)習(xí)MAC地址表項(xiàng)的流程
圖5為本發(fā)明應(yīng)用場景中通過下行單播"^良文學(xué)習(xí)MAC地址表項(xiàng)的流程
圖6為本發(fā)明應(yīng)用場景中的一種網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明提供的技術(shù)方案中,其核心思想為在不影響交換網(wǎng)的前提下,利 用交換網(wǎng)的未知單播報(bào)文進(jìn)行廣播的特點(diǎn),實(shí)現(xiàn)MAC地址表項(xiàng)的跨芯片、高 效率自動(dòng)學(xué)習(xí)。下面將結(jié)合本發(fā)明中的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描 述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。 基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下 所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖2所示,為本發(fā)明中的一種MAC地址表項(xiàng)學(xué)習(xí)方法流程圖,應(yīng)用于 包括轉(zhuǎn)發(fā)芯片和CPU的網(wǎng)絡(luò)設(shè)備中,該方法包括以下步驟
步驟201,轉(zhuǎn)發(fā)芯片接收單播報(bào)文,記錄單播報(bào)文的源MAC地址和入端口々息。
其中,單播報(bào)文包括來自業(yè)務(wù)端口的上行單播報(bào)文和來自交換網(wǎng)的下行單 播報(bào)文。本發(fā)明中的轉(zhuǎn)發(fā)芯片可以為FPGA (Field-ProgrammableGateArray,現(xiàn) 場可編程門陣列),可以通過編程對(duì)2層的未知單播可以做到上行、下行的MAC 地址學(xué)習(xí);而現(xiàn)有的轉(zhuǎn)發(fā)芯片對(duì)于下行的MAC地址學(xué)習(xí)功能比較欠缺。
步驟202,轉(zhuǎn)發(fā)芯片查找FDB表中是否存在單播報(bào)文的源MAC地址,如 果FDB表中不存在所述單播報(bào)文的源MAC地址,則執(zhí)行步驟203;如果存在 則結(jié)束流程。
具體地,如果FDB表中存在單播報(bào)文的源MAC地址,轉(zhuǎn)發(fā)芯片判斷FDB 表中源MAC地址對(duì)應(yīng)的出端口信息和單播報(bào)文的出端口信息是否一致,如果判 斷結(jié)果為不一致,即轉(zhuǎn)發(fā)芯片的端口出現(xiàn)遷移現(xiàn)象,轉(zhuǎn)發(fā)芯片將單播報(bào)文的源 MAC地址和出端口信息更新到FDB表中。
步驟203,轉(zhuǎn)發(fā)芯片將單播報(bào)文的源MAC地址和入端口信息添加到FDB 表中。
其中,轉(zhuǎn)發(fā)芯片中還保存一份硬件計(jì)數(shù)表和VLAN、 PORT (端口 )限制表, 上it4項(xiàng)用于控制和統(tǒng)計(jì)轉(zhuǎn)發(fā)芯片對(duì)MAC地址表項(xiàng)的學(xué)習(xí),便于CPU的查詢 使用。
轉(zhuǎn)發(fā)芯片還可以查找FDB表中是否存在單4番報(bào)文的目的MAC地址,如果 FDB表中不存在該單播報(bào)文的目的MAC地址,則將該單播報(bào)文發(fā)送到VLAN 的所有出端口。
當(dāng)單播報(bào)文為上行單播報(bào)文時(shí),轉(zhuǎn)發(fā)芯片查找到FDB表中不存在單播報(bào)文的目的MAC地址后,還可以向CPU發(fā)送DA (Destination Address,目的地址) 消息;隨后,接收來自CPU的出端口信息或偽MAC地址表項(xiàng),根據(jù)出端口信 息或偽MAC地址表項(xiàng)發(fā)送上述上行單4番凈良文,并停止向CPU發(fā)送DA消息。
(AgedAddress,老化地址)消息,以便于后續(xù)管理。具體地,各個(gè)芯片內(nèi)存自 身記錄并管理所有MAC地址表項(xiàng),包括自身端口學(xué)習(xí)的MAC地址和通過其他 芯片學(xué)習(xí)的MAC地址,將MAC地址表項(xiàng)統(tǒng)一配置成可老化的MAC地址,老 化時(shí)間可配置,且整框轉(zhuǎn)發(fā)芯片的老化時(shí)間一致。而在現(xiàn)有技術(shù)中,對(duì)于跨芯 片的MAC地址不做老化,需要接收來自最先學(xué)習(xí)該MAC地址的轉(zhuǎn)發(fā)芯片的老 化消息。
本發(fā)明中的轉(zhuǎn)發(fā)芯片能夠自動(dòng)、高效地維護(hù)FDB表,包括多個(gè)轉(zhuǎn)發(fā)芯片 之間的自動(dòng)學(xué)習(xí)和老化,而不需要借助CPU的干預(yù),能夠最大化地利用硬件 資源。
如圖3所示,為本發(fā)明應(yīng)用場景中的MAC地址表項(xiàng)學(xué)習(xí)系統(tǒng)結(jié)構(gòu)示意圖, 包括交換網(wǎng)以及與交換網(wǎng)連接的轉(zhuǎn)發(fā)芯片0、轉(zhuǎn)發(fā)芯片l和轉(zhuǎn)發(fā)芯片2,上述轉(zhuǎn) 發(fā)芯片均與各自的CPU連接。各轉(zhuǎn)發(fā)芯片既可以接收來自業(yè)務(wù)端口的上行單播 報(bào)文,也可以接收來自交換網(wǎng)的下行單播報(bào)文。
以下結(jié)合上述應(yīng)用場景,對(duì)本發(fā)明中的MAC地址表項(xiàng)學(xué)習(xí)方法進(jìn)行詳 細(xì)、具體的描述。
如圖4所示,為本發(fā)明應(yīng)用場景中通過上行單播才艮文學(xué)習(xí)MAC地址表項(xiàng) 的流程圖,具體包括以下步驟
步驟401,轉(zhuǎn)發(fā)芯片O接收來自業(yè)務(wù)端口的上行單播報(bào)文,記錄該上行單 播報(bào)文的源MAC地址和入端口信息。
步驟402,轉(zhuǎn)發(fā)芯片0查找FDB表中是否存在上行單播報(bào)文的源MAC地 址,如果FDB表中不存在該上行單播報(bào)文的源MAC地址,則執(zhí)行步驟403; 如果存在,則執(zhí)行步驟404。
步驟403,轉(zhuǎn)發(fā)芯片0將上行單播報(bào)文的源MAC地址和入端口信息添加到FDB表中,向CPU發(fā)送AU (AddressUpdate,地址更新)消息,并向交換網(wǎng)廣 播包含上行單播報(bào)文的源MAC地址的報(bào)文。
其中,轉(zhuǎn)發(fā)芯片0需要執(zhí)行以下保護(hù)功能,對(duì)于同一份的流量,在一定時(shí) 間內(nèi)只送一份AU消息給CPU,防止向CPU的上送量過大。
步驟404,轉(zhuǎn)發(fā)芯片0查找FDB表中是否存在上行單播報(bào)文的目的MAC 地址,如果FDB表中不存在該上行單播報(bào)文的目的MAC地址,則執(zhí)行步驟406; 如果存在,則執(zhí)行步驟405。
步驟405,轉(zhuǎn)發(fā)芯片O根據(jù)FDB表,將上行單播報(bào)文發(fā)送到出端口。
步驟406,轉(zhuǎn)發(fā)芯片O將上行單播報(bào)文發(fā)送到VLAN的所有出端口,并 向CPU發(fā)送DA消息。
具體地,由于轉(zhuǎn)發(fā)芯片0沒有上行單播報(bào)文的目的MAC地址,會(huì)一直處 于廣播狀態(tài),網(wǎng)絡(luò)設(shè)備中的其他轉(zhuǎn)發(fā)芯片均會(huì)接收到來自交換網(wǎng)的單播報(bào)文, 而只有保存有該單播報(bào)文的目的MAC地址的轉(zhuǎn)發(fā)芯片才能將該單播報(bào)文以 單播方式發(fā)送出去。因此,當(dāng)存在上行單播報(bào)文時(shí),為了控制沒有保存該上 行單播報(bào)文的目的MAC地址的轉(zhuǎn)發(fā)芯片對(duì)該上行單播報(bào)文的廣播,需要由接 收到該上行單播報(bào)文的轉(zhuǎn)發(fā)芯片向?qū)?yīng)的CPU發(fā)送DA消息,由CPU根據(jù)該 DA消息指示轉(zhuǎn)發(fā)芯片處理上述上行單播報(bào)文。
另外,轉(zhuǎn)發(fā)芯片0還需要執(zhí)行以下保護(hù)功能,對(duì)于同一份的流量,在一 定時(shí)間內(nèi)只送一份DA消息給CPU,防止向CPU的上送量過大。
步驟407, CPU分析接收到的DA消息,查找網(wǎng)絡(luò)設(shè)備的其他轉(zhuǎn)發(fā)芯片中 是否存在上行單播報(bào)文的目的MAC地址對(duì)應(yīng)的出端口信息,如果存在,則執(zhí) 行步驟408;如果不存在,則執(zhí)行步驟410。
具體地,CPU中可以保存一份軟件FDB表,該軟件FDB表用于查找MAC 地址表項(xiàng),并根據(jù)查找結(jié)果判斷上行單播報(bào)文是否為單向流量;如果CPU查 找硬件FDB表方便且速率很快,也可以不保存軟件FDB表。
步驟408, CPU將上行單播報(bào)文的目的MAC地址和出端口信息添加到轉(zhuǎn) 發(fā)芯片0的FDB表中,并記錄上述信息。
另外,如果CPU發(fā)現(xiàn)其他芯片存在上述上行單播報(bào)文的目的MAC地址對(duì)應(yīng)的AU消息,則表示該上行單播報(bào)文的出端口信息發(fā)生了遷移,相應(yīng)地,
CPU修改轉(zhuǎn)發(fā)芯片0的FDB表項(xiàng)中的出端口信息。
步驟409,轉(zhuǎn)發(fā)芯片0停止向CPU發(fā)送DA消息,并根據(jù)CPU添加的目 的MAC地址和出端口信息,將對(duì)應(yīng)的上行單播報(bào)文進(jìn)行單播發(fā)送。
步驟410, CPU向轉(zhuǎn)發(fā)芯片O下發(fā)偽MAC地址表項(xiàng),并記錄該偽MAC :地址表項(xiàng)。
步驟411,轉(zhuǎn)發(fā)芯片0接收來自CPU的偽MAC地址表項(xiàng),停止向CPU 發(fā)送DA消息,并根據(jù)CPU下發(fā)的偽MAC地址表項(xiàng),將對(duì)應(yīng)的上行單播報(bào) 文進(jìn)行單播發(fā)送。
其中,偽MAC地址表項(xiàng)為網(wǎng)絡(luò)設(shè)備中不存在的MAC地址表項(xiàng),用于使
處于廣播狀態(tài)的轉(zhuǎn)發(fā)芯片停止廣播報(bào)文和發(fā)送DA消息。
需要說明的是,本發(fā)明方法可以根據(jù)實(shí)際需要對(duì)各個(gè)步驟順序進(jìn)行調(diào)整。 本發(fā)明中的轉(zhuǎn)發(fā)芯片能夠自動(dòng)、高效地維護(hù)FDB表,包括多個(gè)轉(zhuǎn)發(fā)芯片
之間的自動(dòng)學(xué)習(xí)和老化,能夠最大化地利用硬件資源。
如圖5所示,為本發(fā)明應(yīng)用場景中通過下行單播報(bào)文學(xué)習(xí)MAC地址表項(xiàng) 的流程圖,具體包括以下步驟
步驟501,轉(zhuǎn)發(fā)芯片O接收來自交換網(wǎng)的下行單播"R文,記錄該下行單播 報(bào)文的源MAC地址和入端口信息。
步驟502,轉(zhuǎn)發(fā)芯片0查找FDB表中是否存在下行單播報(bào)文的源MAC 地址,如果FDB表中不存在該下行單播報(bào)文的源MAC地址,則執(zhí)行步驟503; 如果存在,則執(zhí)行步驟504。
步驟503,轉(zhuǎn)發(fā)芯片0將下行單播報(bào)文的源MAC地址和入端口信息添加 到FDB表中,向CPU發(fā)送AU消息。
步驟504,轉(zhuǎn)發(fā)芯片0查找FDB表中是否存在下行單播報(bào)文的目的MAC 地址,如果FDB表中不存在該下行單播報(bào)文的目的MAC地址,則執(zhí)行步驟 506;如果存在,則執(zhí)行步驟505。
步驟505,轉(zhuǎn)發(fā)芯片O根據(jù)FDB表,將下行單播報(bào)文發(fā)送到出端口。
13步驟506,轉(zhuǎn)發(fā)芯片0將下行單播報(bào)文發(fā)送到VLAN的所有出端口 。 需要說明的是,本發(fā)明方法可以根據(jù)實(shí)際需要對(duì)各個(gè)步驟順序進(jìn)行調(diào)整。 本發(fā)明中的轉(zhuǎn)發(fā)芯片能夠自動(dòng)、高效地維護(hù)FDB表,包括多個(gè)轉(zhuǎn)發(fā)芯片
之間的自動(dòng)學(xué)習(xí)和老化,而不需要借助CPU的干預(yù),能夠最大化地利用硬件資源。
本發(fā)明在上述實(shí)施方式中提供了 MAC地址表項(xiàng)學(xué)習(xí)方法和多種應(yīng)用場
如圖6所示,如本發(fā)明應(yīng)用場景中的一種網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖,包括轉(zhuǎn) 發(fā)芯片610和CPU620,該轉(zhuǎn)發(fā)芯片610包括收發(fā)模塊611、記錄模塊612、 存儲(chǔ)模塊613、查找模塊614、判斷模塊615、添加模塊616和老化模塊617, 其中,
收發(fā)模塊611 ,用于接收單播報(bào)文。
上述收發(fā)模塊611,與查找模塊614連接,還用于在查找模塊614查找到 FDB表中不存在單播報(bào)文的目的MAC地址時(shí),將該單播報(bào)文發(fā)送到VLAN 的所有出端口。
上述單播報(bào)文為上行單播報(bào)文時(shí),上述收發(fā)模塊611,還用于在查找模塊 614查找到FDB表中不存在單播報(bào)文的目的MAC地址時(shí),向CPU 620發(fā)送 DA消息,并接收來自CPU620的出端口信息或偽MAC地址表項(xiàng),根據(jù)該出 端口信息或偽MAC地址表項(xiàng)發(fā)送上行單播報(bào)文,并停止向CPU 620發(fā)送DA 消息。
具體地,當(dāng)轉(zhuǎn)發(fā)芯片610沒有上行單播報(bào)文的目的MAC地址時(shí),會(huì)一直 處于廣播狀態(tài),網(wǎng)絡(luò)設(shè)備中的其他轉(zhuǎn)發(fā)芯片均會(huì)接收到來自交換網(wǎng)的單播報(bào) 文,而只有保存有該單播報(bào)文的目的MAC地址的轉(zhuǎn)發(fā)芯片才能將該單播報(bào)文 以單播方式發(fā)送出去。因此,當(dāng)存在上行單播報(bào)文時(shí),為了控制沒有保存該 上行單播報(bào)文的目的MAC地址的轉(zhuǎn)發(fā)芯片對(duì)該上行單播報(bào)文的廣播,需要由 接收到該上行單播報(bào)文的轉(zhuǎn)發(fā)芯片610向?qū)?yīng)的CPU 620發(fā)送DA消息,由 CPU 620根據(jù)該DA消息指示轉(zhuǎn)發(fā)芯片610處理上述上行單播報(bào)文。
14另外,轉(zhuǎn)發(fā)芯片610還需要執(zhí)行以下保護(hù)功能,對(duì)于同一份的流量,在一定時(shí)間內(nèi)只送一份DA消息給CPU620,防止向CPU 620的上送量過大。
所述CPU 620,還用于接收并分析來自轉(zhuǎn)發(fā)芯片610的DA消息,查找所述網(wǎng)絡(luò)設(shè)備的其他轉(zhuǎn)發(fā)芯片中是否存在所述上行單播報(bào)文的目的MAC地址對(duì)應(yīng)的出端口信息;如果存在,將所述上行單播報(bào)文的目的MAC地址和出端口信息添加到轉(zhuǎn)發(fā)芯片610的FDB表中;如果不存在,向轉(zhuǎn)發(fā)芯片610下發(fā)偽MAC ;也址表項(xiàng)。
具體地,CPU 620中可以保存一份軟件FDB表,該軟件FDB表用于查找MAC地址表項(xiàng),并根據(jù)查找結(jié)果判斷上行單播報(bào)文是否為單向流量;如果CPU 620查找硬件FDB表方便且速率很快,也可以不保存軟件FDB表。
處于廣播狀態(tài)的轉(zhuǎn)發(fā)芯片停止廣播4艮文和發(fā)送DA消息。
上述收發(fā)模塊611,與老化模塊617連接,還用于向CPU發(fā)送老化地址消息。
記錄模塊612,與收發(fā)模塊611連接,用于記錄收發(fā)模塊611接收到的單播報(bào)文的源MAC地址和入端口信息。存儲(chǔ)模塊613,用于存儲(chǔ)FDB表。
查找模塊614,與記錄模塊612和存儲(chǔ)模塊613連接,用于查找存儲(chǔ)模塊613存儲(chǔ)的FDB表中是否存在記錄模塊612記錄的單播l艮文的源MAC地址。
上述查找模塊614,還用于查找FDB表中是否存在單播報(bào)文的目的MAC地址。
判斷模塊615,與查找模塊614連接,用于在查找模塊614查找到FDB表中存在單播報(bào)文的源MAC地址時(shí),判斷FDB表中源MAC地址對(duì)應(yīng)的出端口信息和單播報(bào)文的出端口信息是否一致。
添加模塊616,與查找模塊614和存儲(chǔ)模塊613連接,用于在查找模塊614查找到FDB表中不存在單播報(bào)文的源MAC地址時(shí),將該單播報(bào)文的源MAC地址和入端口信息添加到存儲(chǔ)模塊613存儲(chǔ)的FDB表中,該單播報(bào)文包括來自業(yè)務(wù)端口的上行單播報(bào)文和來自交換網(wǎng)的下行單播報(bào)文。上述添加模塊616,與判斷模塊615連接,還用于在判斷模塊615的判斷結(jié)果為不一致時(shí),將單播報(bào)文的源MAC地址和出端口信息更新到FDB表中。
老化模塊617,與存儲(chǔ)模塊613連接,用于對(duì)存儲(chǔ)模塊613存儲(chǔ)的MAC地址表項(xiàng)進(jìn)行老化。
本發(fā)明中的轉(zhuǎn)發(fā)芯片能夠自動(dòng)、高效地維護(hù)FDB表,包括多個(gè)轉(zhuǎn)發(fā)芯片之間的自動(dòng)學(xué)習(xí)和老化,而不需要借助CPU的干預(yù),能夠最大化地利用硬件資源。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視本發(fā)明的保護(hù)范圍。
本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以集成于一體,也可以分離部署;可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種媒體訪問控制MAC地址表項(xiàng)學(xué)習(xí)方法,應(yīng)用于包括轉(zhuǎn)發(fā)芯片和中央處理單元CPU的網(wǎng)絡(luò)設(shè)備中,其特征在于,所述方法包括以下步驟所述轉(zhuǎn)發(fā)芯片接收單播報(bào)文,記錄所述單播報(bào)文的源MAC地址和入端口信息;所述轉(zhuǎn)發(fā)芯片查找轉(zhuǎn)發(fā)數(shù)據(jù)庫FDB表中是否存在所述單播報(bào)文的源MAC地址,如果所述FDB表中不存在所述單播報(bào)文的源MAC地址,則將所述單播報(bào)文的源MAC地址和入端口信息添加到所述FDB表中,所述單播報(bào)文包括來自業(yè)務(wù)端口的上行單播報(bào)文和來自交換網(wǎng)的下行單播報(bào)文。
2、 如權(quán)利要求1所述的方法,其特征在于,所述轉(zhuǎn)發(fā)芯片查找FDB表中 是否存在單播報(bào)文的源MAC地址之后,還包括如果所述FDB表中存在所述單播報(bào)文的源MAC地址,所述轉(zhuǎn)發(fā)芯片判斷 所述FDB表中所述源MAC地址對(duì)應(yīng)的出端口信息和所述單播報(bào)文的出端口信 息是否一致,如果判斷結(jié)果為不一致,所述轉(zhuǎn)發(fā)芯片將所述單4番報(bào)文的源MAC 地址和出端口信息更新到所述FDB表中。
3、 如權(quán)利要求l所述的方法,其特征在于,還包括所述轉(zhuǎn)發(fā)芯片查找所述FDB表中是否存在所述單播才艮文的目的MAC地址, 如果所述FDB表中不存在所迷單播報(bào)文的目的MAC地址,則將所述單播報(bào)文 發(fā)送到虛擬局域網(wǎng)VLAN的所有出端口 。
4、 如權(quán)利要求1或3所述的方法,其特征在于,所述單播報(bào)文為上行單播 報(bào)文時(shí),所述轉(zhuǎn)發(fā)芯片查找到所述FDB表中不存在所述單播報(bào)文的目的MAC 地址之后,還包括所述轉(zhuǎn)發(fā)芯片向所述CPU發(fā)送目的地址DA消息,所述CPU分析接收到的 DA消息,查找所述網(wǎng)絡(luò)設(shè)備的其他轉(zhuǎn)發(fā)芯片中是否存在所述上行單播報(bào)文的目 的MAC地址對(duì)應(yīng)的出端口信息;如果存在,所述CPU將所述上行單播才艮文的目的MAC地址和出端口信息 添加到所述轉(zhuǎn)發(fā)芯片的FDB表中,使所述轉(zhuǎn)發(fā)芯片停止向所述CPU發(fā)送DA消 息,并根據(jù)所述CPU添加的目的MAC地址和出端口信息,將對(duì)應(yīng)的上行單播報(bào)文進(jìn)行單播發(fā)送;如果不存在,所述CPU向所述轉(zhuǎn)發(fā)芯片下發(fā)偽MAC地址表項(xiàng),使所述轉(zhuǎn) 發(fā)芯片停止向所述CPU發(fā)送DA消息,并根據(jù)所述CPU下發(fā)的偽MAC地址表 項(xiàng),將對(duì)應(yīng)的上行單播報(bào)文進(jìn)行單播發(fā)送。
5、 如權(quán)利要求l所述的方法,其特征在于,還包括 所述轉(zhuǎn)發(fā)芯片對(duì)自身保存的MAC地址表項(xiàng)進(jìn)行老化,并向所述CPU發(fā)送老化地址消息。
6、 一種網(wǎng)絡(luò)設(shè)備,包括轉(zhuǎn)發(fā)芯片和CPU,其特征在于,所述轉(zhuǎn)發(fā)芯片包括 4嫂模塊,用于接收單播報(bào)文;記錄模塊,與所述收發(fā)模塊連接,用于記錄所述收發(fā)模塊接收到的單播報(bào) 文的源MAC地址和入端口信息; 存儲(chǔ)模塊,用于存儲(chǔ)FDB表;查找模塊,與所述記錄模塊和所述存儲(chǔ)模塊連接,用于查找所述存儲(chǔ)模塊 存儲(chǔ)的FDB表中是否存在所述記錄模塊記錄的單播報(bào)文的源MAC地址;添加模塊,與所述查找模塊和所述存儲(chǔ)模塊連接,用于在所述查找模塊查 找到所述FDB表中不存在所述單播報(bào)文的源MAC地址時(shí),將所述單播才艮文的 源MAC地址和入端口信息添加到所述存儲(chǔ)模塊存儲(chǔ)的FDB表中,所述單播報(bào) 文包括來自業(yè)務(wù)端口的上行單播報(bào)文和來自交換網(wǎng)的下行單播報(bào)文。
7、 如權(quán)利要求6所述網(wǎng)絡(luò)設(shè)備,其特征在于,所述轉(zhuǎn)發(fā)芯片還包括 判斷模塊,與查找模塊連接,用于在所述查找模塊查找到所述FDB表中存在所述單播報(bào)文的源MAC地址時(shí),判斷所述FDB表中所述源MAC地址對(duì)應(yīng) 的出端口信息和所述單播報(bào)文的出端口信息是否一致;所述添加模塊,與所述判斷模塊連接,還用于在所述判斷模塊的判斷結(jié)果 為不一致時(shí),將所述單播報(bào)文的源MAC地址和出端口信息更新到所述FDB表 中。
8、 如權(quán)利要求6所述網(wǎng)絡(luò)設(shè)備,其特征在于,所述查找模塊,還用于查找所述FDB表中是否存在所述單播報(bào)文的目的MAC地址;所述收發(fā)模塊,與所述查找模塊連接,還用于在所述查找模塊查找到所述FDB表中不存在所述單4番才艮文的目的MAC地址時(shí),將所述單播^^艮文發(fā)送到 VLAN的所有出端口。
9、 如權(quán)利要求8所述網(wǎng)絡(luò)設(shè)備,其特征在于,所述單播才艮文為上行單播報(bào) 文時(shí),所述收發(fā)模塊,還用于在所述查找模塊查找到所述FDB表中不存在所述單 播報(bào)文的目的MAC地址時(shí),向所述CPU發(fā)送DA消息,并接收來自所述CPU 的出端口信息或偽MAC地址表項(xiàng),根據(jù)所述出端口信息或偽MAC地址表項(xiàng)發(fā) 送所述上行單播報(bào)文,并停止向所述CPU發(fā)送DA消息;所述CPU,還用于接收并分析來自所述轉(zhuǎn)發(fā)芯片的DA消息,查找所述網(wǎng) 絡(luò)設(shè)備的其他轉(zhuǎn)發(fā)芯片中是否存在所述上行單播報(bào)文的目的MAC地址對(duì)應(yīng)的 出端口信息;如果存在,將所述上行單播報(bào)文的目的MAC地址和出端口信息添 加到所述轉(zhuǎn)發(fā)芯片的FDB表中;如果不存在,向所述轉(zhuǎn)發(fā)芯片下發(fā)偽MAC地 址表項(xiàng)。
10、 如權(quán)利要求6所述網(wǎng)絡(luò)設(shè)備,其特征在于,所述轉(zhuǎn)發(fā)芯片還包括 老化模塊,與所述存儲(chǔ)模塊連接,用于對(duì)所述存儲(chǔ)模塊存儲(chǔ)的MAC地址表項(xiàng)進(jìn)行老化;所述4嫂;漢塊,與所述老化模塊連接,還用于向所述CPU發(fā)送老化地址消白
全文摘要
本發(fā)明公開了一種MAC地址表項(xiàng)學(xué)習(xí)方法,應(yīng)用于包括轉(zhuǎn)發(fā)芯片和CPU的網(wǎng)絡(luò)設(shè)備中,所述方法包括以下步驟所述轉(zhuǎn)發(fā)芯片接收單播報(bào)文,記錄所述單播報(bào)文的源MAC地址和入端口信息;所述轉(zhuǎn)發(fā)芯片查找轉(zhuǎn)發(fā)數(shù)據(jù)庫FDB表中是否存在所述單播報(bào)文的源MAC地址,如果所述FDB表中不存在所述單播報(bào)文的源MAC地址,則將所述單播報(bào)文的源MAC地址和入端口信息添加到所述FDB表中,所述單播報(bào)文包括來自業(yè)務(wù)端口的上行單播報(bào)文和來自交換網(wǎng)的下行單播報(bào)文。本發(fā)明能夠自動(dòng)、高效地維護(hù)轉(zhuǎn)發(fā)芯片中的FDB表。本發(fā)明同樣公開了一種應(yīng)用上述方法的裝置。
文檔編號(hào)H04L12/56GK101651627SQ20091017422
公開日2010年2月17日 申請日期2009年9月23日 優(yōu)先權(quán)日2009年9月23日
發(fā)明者帆 方 申請人:杭州華三通信技術(shù)有限公司