本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種MAC地址同步方法,本發(fā)明還同時涉及一種MAC地址同步設(shè)備。
背景技術(shù):交換機(jī)是一種通過ASIC(ApplicationSpecificIntegratedCircuit,特定用途集成電路)芯片控制和轉(zhuǎn)發(fā)報文的設(shè)備,基于鏈路報文特征進(jìn)行特定端口的轉(zhuǎn)發(fā)。交換機(jī)在識別數(shù)據(jù)包中的MAC(MediaAccessControl,介質(zhì)訪問控制)地址信息后,根據(jù)MAC地址進(jìn)行轉(zhuǎn)發(fā),并將這些MAC地址與對應(yīng)的端口記錄在自己內(nèi)部的一個地址表中。為了避免出現(xiàn)因在地址表中找不到相應(yīng)的端口而把數(shù)據(jù)包廣播到所有端口上的情況,現(xiàn)有技術(shù)使用軟件方法進(jìn)行MAC地址全局同步,即通過軟件方式對所有單板的MAC地址表項進(jìn)行遍歷查找。當(dāng)發(fā)現(xiàn)有新學(xué)習(xí)的MAC地址或端口遷移的MAC地址時,通過板間通訊消息將該MAC地址信息發(fā)送到其他單板上,接收到MAC地址同步板間消息的CPU(CentralProcessingUnit,中央處理器)軟件將該消息中包含的MAC地址下發(fā)到單板的MAC地址轉(zhuǎn)發(fā)表中,實現(xiàn)所有單板MAC地址轉(zhuǎn)發(fā)表項的一致。上述方法通過定期讀取各單板的MAC信息,并向其他單板進(jìn)行同步,從而使得整臺設(shè)備內(nèi)的MAC地址達(dá)到統(tǒng)一。然而,在應(yīng)用該方法時,交換機(jī)系統(tǒng)中所有單板的CPU均處于同步工作-讀取和刷新MAC表的狀態(tài)中,不僅實現(xiàn)復(fù)雜,還增加了CPU的負(fù)擔(dān),無法實現(xiàn)MAC地址的實時同步更新。
技術(shù)實現(xiàn)要素:本發(fā)明公開了一種MAC地址同步方法,用于實時性地對MAC地址進(jìn)行高效率同步,應(yīng)用于包括單板和交換網(wǎng)板的交換機(jī)系統(tǒng)中,包括:所述單板從用戶端口接收報文,并在判斷所述報文的源MAC地址不存在于自身的MAC地址表項或所述源MAC地址發(fā)生端口遷移時復(fù)制所述報文;所述單板將復(fù)制后的報文的出端口即目的端口設(shè)置為物理上不存在的系統(tǒng)保留端口即黑洞端口;所述單板將所述復(fù)制后的報文通過內(nèi)部互連端口發(fā)送至交換網(wǎng)板,以使所述交換網(wǎng)板將所述復(fù)制后的報文通過除接收所述復(fù)制后的報文的內(nèi)部互連端口之外的其它內(nèi)部互連端口發(fā)送至其他單板。另一方面,本發(fā)明還提出了一種MAC地址同步設(shè)備,作為單板應(yīng)用于包括單板和交換網(wǎng)板的交換機(jī)系統(tǒng)中,包括:接口模塊,用于從用戶端口接收報文;復(fù)制模塊,用于在判斷所述接口模塊接收的報文的源MAC地址不存在于自身的MAC地址表項或所述源MAC地址發(fā)生端口遷移時復(fù)制所述報文;端口設(shè)置模塊,用于將復(fù)制后的報文的出端口即目的端口設(shè)置為物理上不存在的系統(tǒng)保留端口即黑洞端口;所述接口模塊,還用于將所述復(fù)制后的報文通過內(nèi)部互連端口發(fā)送至交換網(wǎng)板,以使所述交換網(wǎng)板將所述復(fù)制后的報文通過除接收所述復(fù)制后的報文的內(nèi)部互連端口之外的其它內(nèi)部互連端口發(fā)送至其他單板。通過應(yīng)用以上技術(shù)方案,對單板接收到的報文的源MAC地址進(jìn)行查詢,如果沒有在單板的MAC地址轉(zhuǎn)發(fā)表項中查找到報文的源MAC地址,或者該源MAC地址存在端口遷移的情況,則將該報文進(jìn)行復(fù)制,并將復(fù)制后的報文的出端口即目的端口設(shè)置為物理上不存在的系統(tǒng)保留端口即黑洞端口,由交換網(wǎng)板將復(fù)制后的報文通過內(nèi)部互連端口發(fā)送至其他單板。從而在保證報文收發(fā)秩序正常的情況下,實時高效地實現(xiàn)了MAC地址的同步,減少了系統(tǒng)的負(fù)擔(dān)。附圖說明圖1為本發(fā)明提出的一種同步MAC地址的方法的流程示意圖;圖2為本發(fā)明具體實施例提出的一種同步MAC地址的方法的單板報文入方向處理流程示意圖;圖3為本發(fā)明所提出一種同步MAC地址的方法的具體應(yīng)用場景圖4為本發(fā)明具體實施例提出的一種同步MAC地址的方法的單板報文出方向處理流程示意圖;圖5為本發(fā)明具體實施例提出的一種周期性同步MAC地址的方法的流程示意圖;圖6為本發(fā)明提出的一種MAC地址同步設(shè)備的結(jié)構(gòu)示意圖。具體實施方式針對背景技術(shù)中的問題,本發(fā)明的核心思想是:在單板根據(jù)報文的目的MAC地址進(jìn)行轉(zhuǎn)發(fā)之前,對單板接收到的報文的源MAC地址進(jìn)行查詢,如果沒有在單板的MAC地址轉(zhuǎn)發(fā)表項中查找到報文的源MAC地址,或者該源MAC地址存在端口遷移的情況,則將該報文進(jìn)行復(fù)制,并將復(fù)制后的報文的出端口即目的端口設(shè)置為物理上不存在的系統(tǒng)保留端口即黑洞端口,由交換網(wǎng)板將復(fù)制后的報文通過內(nèi)部互連端口發(fā)送至其他單板。從而在保證報文收發(fā)秩序正常的情況下,實時高效地實現(xiàn)了MAC地址的同步,減少了系統(tǒng)的負(fù)擔(dān)。相應(yīng)地,本發(fā)明實施例提供了一種MAC地址同步方法,應(yīng)用于包括單板和交換網(wǎng)板的交換機(jī)系統(tǒng)中,如圖1所示,具體包括以下步驟:S101,所述單板從用戶端口接收報文,并在判斷所述報文的源MAC地址不存在于自身的MAC地址表項或所述源MAC地址發(fā)生端口遷移時復(fù)制所述報文。S102,所述單板將復(fù)制后的報文的出端口即目的端口設(shè)置為物理上不存在的系統(tǒng)保留端口即黑洞端口;上述兩個步驟可以通過在所有單板的用戶端口(即用戶可見的面板端口)上下發(fā)ACL(AccessControlList,訪問控制列表)實現(xiàn),該ACL實現(xiàn)的功能為:如果報文的源MAC地址在單板的MAC地址轉(zhuǎn)發(fā)表項中沒有查到或者存在端口遷移的情況則將該報文鏡像至當(dāng)前系統(tǒng)保留的一個物理上不存在的端口即黑洞端口。需要指出的是,雖然以上步驟中為復(fù)制的報文設(shè)定的出端口實際上并不是一個物理存在的端口,但該端口的端口標(biāo)識是系統(tǒng)保留的端口標(biāo)識,因此在后續(xù)的報文轉(zhuǎn)發(fā)流程中,單板在轉(zhuǎn)發(fā)出端口為此類端口的報文時,由于沒有物理端口與此類報文的出端口對應(yīng),單板即丟棄此類報文。所以上述端口稱之為黑洞端口。S103,所述單板將所述復(fù)制后的報文通過內(nèi)部互連端口發(fā)送至交換網(wǎng)板,以使所述交換網(wǎng)板將所述復(fù)制后的報文通過除接收所述復(fù)制后的報文的內(nèi)部互連端口之外的其它內(nèi)部互連端口發(fā)送至其他單板。具體地,本步驟通過在各單板面板口的入方向設(shè)置單播轉(zhuǎn)發(fā)表項,將出端口號即目的端口號為黑洞端口的報文指向單板的內(nèi)部互連端口(單板與交換網(wǎng)板之間的互連端口),將該報文轉(zhuǎn)發(fā)至交換網(wǎng)板。相應(yīng)地,在交換網(wǎng)板上設(shè)置特定的廣播表項,通過該廣播表項,將目的端口為黑洞端口的報文轉(zhuǎn)發(fā)到除該報文在交換網(wǎng)板上的入端口以外的其它所有單板的內(nèi)部互連端口上,即從源單板發(fā)送到交換網(wǎng)板的報文擴(kuò)散到其它單板,且源單板發(fā)送的目的端口為黑洞端口的報文不能再回到源單板。通過以上方案,源MAC地址在單板MAC地址表項中查找不到的報文會在設(shè)備內(nèi)部進(jìn)行擴(kuò)散,保證了每個單板都可以學(xué)習(xí)到該報文的源MAC地址。由于鏡像后的報文的出端口均被設(shè)為黑洞端口,因此后續(xù)的報文轉(zhuǎn)發(fā)不會受到任何影響。在源MAC地址已被ASIC芯片學(xué)習(xí)到的情況下,后續(xù)的相同流量報文的源MAC地址在單板的MAC地址表項中可以查找到,不會再匹配到ACL規(guī)則而被采樣。其中單板學(xué)習(xí)MAC地址的流程可參考現(xiàn)有的技術(shù),在此不再贅述。為了進(jìn)一步闡述本發(fā)明的技術(shù)思想,現(xiàn)結(jié)合具體的應(yīng)用場景,對本發(fā)明的技術(shù)方案進(jìn)行說明。由于該方法應(yīng)用于交換機(jī)上所有的單板,因此本具體實施例以某一單板為例進(jìn)行說明,本領(lǐng)域技術(shù)人員可參照該實施例對交換機(jī)中其他單板進(jìn)行相同的處理。如圖2所示,為本發(fā)明具體實施例提出的一種同步MAC地址的方法的單板報文入方向處理流程示意圖。由于本發(fā)明的改進(jìn)在于單板對報文源MAC學(xué)習(xí)的方面,在此主要對其能實現(xiàn)MAC地址同步學(xué)習(xí)的部分進(jìn)行闡述,后續(xù)的報文轉(zhuǎn)發(fā)流程不做詳細(xì)說明。如圖3所示,標(biāo)號0-6的LPU(LocalProcessorUnit)為本地處理器單元,SRPU(Switch&RouteProcessUnit)為交換路由處理單元。具體地,該實施例詳細(xì)步驟如下:S201,單板從自己的用戶端口接收到報文。以圖3為例,PC-A訪問PC-B,報文進(jìn)入LPU1單板的用戶端口。S202,該單板查詢報文的源MAC地址是否存在于自身的MAC地址轉(zhuǎn)發(fā)表中,若存在,則轉(zhuǎn)至S203,若不存在,則轉(zhuǎn)至S205;S203,該單板判斷該源MAC地址是否發(fā)生端口遷移;若是則轉(zhuǎn)至S205,若否則轉(zhuǎn)至S204;S204,該單板正常轉(zhuǎn)發(fā)該報文;S205,該單板將接收的報文鏡像至黑洞端口;由于LPU1在自身的MAC地址轉(zhuǎn)發(fā)表項中沒有查詢到PC-A的MAC地址MAC-A,因此本地單板首先學(xué)習(xí)該報文中的源MAC地址,并同時將該報文進(jìn)行復(fù)制,將復(fù)制后的報文的目的端口設(shè)為黑洞端口。S206,單板將鏡像報文轉(zhuǎn)發(fā)至交換網(wǎng)板。基于預(yù)先設(shè)置的單播轉(zhuǎn)發(fā)表,鏡像報文被指向單板的內(nèi)部互連端口,進(jìn)而被轉(zhuǎn)發(fā)至交換網(wǎng)板。以上為入方向的單板在接收到新源MAC地址報文的處理流程,以下為本發(fā)明具體實施例提出的一種同步MAC地址的方法的單板報文出方向處理流程,該流程示例了上一實施例中鏡像報文在由交換網(wǎng)板通過互連端口發(fā)送至其他單板后的相應(yīng)流程,如圖4所示,本具體實施例同樣以單個單板為例進(jìn)行說明。S401,單板通過內(nèi)部互連端口接收到交換網(wǎng)板轉(zhuǎn)發(fā)的鏡像報文;S402,該單板查詢該報文的源MAC地址是否存在于自身的MAC地址轉(zhuǎn)發(fā)表項中,若否則轉(zhuǎn)至S404,若是則轉(zhuǎn)至步驟S403;S403,該單板判斷該源MAC地址是否發(fā)生端口遷移;若是則轉(zhuǎn)至S404,若否則轉(zhuǎn)至S405;在上一步驟單板在自身的MAC地址轉(zhuǎn)發(fā)表項中查詢到報文的源MAC地址后,還可進(jìn)一步地對報文的MAC地址端口是否遷移進(jìn)行判斷。S404,該單板對該報文進(jìn)行源MAC地址學(xué)習(xí);其他單板在互連端口收到鏡像報文后,會同樣對該報文的源MAC地址(MAC-A)進(jìn)行學(xué)習(xí)。S405,該單板根據(jù)該報文的目的端口在單播轉(zhuǎn)發(fā)表中查找出端口;S406,該單板判斷報文的出端口是否為黑洞端口,若是則轉(zhuǎn)至S407,否則轉(zhuǎn)至S408。S407,該單板丟棄該報文。S408,該單板轉(zhuǎn)發(fā)該報文。以上為通過交換機(jī)中的單板對源MAC地址未知或端口發(fā)送遷移的報文進(jìn)行MAC地址的采樣及學(xué)習(xí)的方案,實現(xiàn)了硬件對報文MAC地址的實時同步學(xué)習(xí)。此外,為了釋放離線用戶的MAC地址,以及學(xué)習(xí)新用戶的MAC地址,設(shè)備的MAC地址表均設(shè)置有MAC地址老化機(jī)制。具體地,該機(jī)制在一個周期內(nèi)(例如300秒)進(jìn)行MAC地址流量命中統(tǒng)計,如果一個MAC地址表項在這段時間內(nèi)沒有被流量命中更新的話,則認(rèn)為滿足老化條件,該MAC地址將被從單板的MAC地址表中刪除。而在本申請的上述技術(shù)方案中,由于單板僅對源未知或端口發(fā)生遷移的報文進(jìn)行采樣并擴(kuò)散至其他單板,當(dāng)發(fā)送至單板的某個源流量的持續(xù)時間超過老化周期時,之前通過鏡像擴(kuò)散方式令其他單板學(xué)習(xí)到的MAC地址將因老化機(jī)制而被刪除掉。因此,在上述實施例中所提出的MAC地址同步方法的基礎(chǔ)上,本發(fā)明同時還提出了一種對各個單板之間的MAC地址進(jìn)行周期性同步的方法,使得各個單板上的MAC地址能夠及時被刷新。具體地,該方法包括以下步驟:S501,所述單板的中央處理器CPU根據(jù)硬件MAC地址表生成并維護(hù)軟件MAC地址表。在該步驟中,各個單板的CPU生成軟件MAC地址表,并周期性根據(jù)ASIC芯片的硬件MAC地址表的變化更新軟件MAC地址表中的信息(包括MAC地址、VLAN、出端口等信息等),當(dāng)某個MAC地址在單板上的ASIC芯片老化后,該MAC地址表項即被從單板的硬件MAC地址表中刪除。S502,所述單板的CPU根據(jù)預(yù)先設(shè)置的老化時間周期,向所述交換機(jī)系統(tǒng)中的其他單板發(fā)送MAC地址同步報文。單板在初次接收到源未知或者端口發(fā)生遷移的流量時,會進(jìn)行源MAC地址的學(xué)習(xí)并同時進(jìn)行鏡像擴(kuò)散,其他單板因此也可學(xué)習(xí)到該源MAC地址。假如該流量僅持續(xù)發(fā)送至該單板,且時間超過MAC地址老化時間時,其他單板會在MAC地址老化時間到達(dá)時將自身硬件MAC地址表中的該源MAC地址刪除。因此,該單板在系統(tǒng)設(shè)定的MAC地址老化時間到達(dá)時向其他的單板發(fā)送MAC地址同步報文。在該MAC地址同步報文中,源MAC地址為該單板CPU所維護(hù)的軟件MAC地址表中的各軟件MAC地址表項,源端口則為軟件MAC地址表中的對應(yīng)值,而目的MAC可以采用指定MAC或廣播MAC,目的端口可設(shè)為黑洞端口,目的MAC和目的端口的不同并不影響本發(fā)明的保護(hù)范圍。需要指出的是,為了避免MAC由于始終有源命中標(biāo)記而永遠(yuǎn)無法老化,在后續(xù)的處理步驟中,交換網(wǎng)板在將鏡像報文發(fā)送至所有單板之前,還需要將該鏡像報文的入端口去除,才能將復(fù)制后的報文通過除接收復(fù)制后的報文的內(nèi)部互連端口之外的其它內(nèi)部互連端口發(fā)送至其他單板。需要說明的是,在上述S502中,可以周期性地將軟件MAC地址表中的每個軟件MAC地址表項生成MAC地址同步報文并一同發(fā)送,這樣實現(xiàn)雖然簡單,但是可能造成系統(tǒng)定期產(chǎn)生較大同步流量。而在實際情況下,軟件MAC地址表中的MAC地址學(xué)習(xí)時間其實是離散的。因此,在本發(fā)明同時提出的另外一種對各個單板之間的MAC地址進(jìn)行周期性同步的具體實施例中,采取對軟件MAC地址表中的各軟件MAC地址表項進(jìn)行計時的方式,預(yù)先設(shè)置與老化時間周期相同的計時周期,將到達(dá)計時周期的軟件MAC地址表項作為源MAC地址生成MAC地址同步報文,發(fā)送該MAC地址同步報文并復(fù)位所述計時。該實施例通過對每個軟件MAC地址表中的各軟件MAC地址表項進(jìn)行計時,當(dāng)計時到期時才發(fā)送以該軟件MAC地址表項為源MAC地址的MAC地址同步報文,并同時復(fù)位計時,這樣可以有效地減少需要同時發(fā)送的MAC地址同步報文的數(shù)量,從而進(jìn)一步地減輕系統(tǒng)的負(fù)荷。為了實現(xiàn)上述的技術(shù)方案,如圖6所述,本發(fā)明還提出了一種單板,應(yīng)用于包括單板和交換網(wǎng)板的交換機(jī)系統(tǒng)中,包括:接口模塊611,用于從用戶端口接收報文;復(fù)制模塊612,用于在判斷所述接口模塊接收的報文的源MAC地址不存在于自身的MAC地址表項或所述源MAC地址發(fā)生端口遷移時復(fù)制所述報文;端口設(shè)置模塊613,用于將復(fù)制后的報文的出端口即目的端口設(shè)置為物理上不存在的系統(tǒng)保留端口即黑洞端口;所述接口模塊611,還用于將所述復(fù)制后的報文通過內(nèi)部互連端口發(fā)送至交換網(wǎng)板620,以使所述交換網(wǎng)板620將所述復(fù)制后的報文通過除接收所述復(fù)制后的報文的內(nèi)部互連端口之外的其它內(nèi)部互連端口發(fā)送至其他單板。進(jìn)一步地,在具體的應(yīng)用場景中,所述單板面板口的入方向設(shè)有單播轉(zhuǎn)發(fā)表項,所述交換網(wǎng)板設(shè)有廣播表項,還包括:表項設(shè)置模塊614,用于設(shè)置所述單板面板口入方向的單播轉(zhuǎn)發(fā)表項,將目的端口為黑洞端口的報文指向所述單板內(nèi)部互連端口;所述表項設(shè)置模塊614,還用于設(shè)置所述交換網(wǎng)板的廣播表項,將目的端口為黑洞端口的報文轉(zhuǎn)發(fā)至除該報文在交換網(wǎng)板上620的入端口以外的其他所有單板的內(nèi)部互連端口。進(jìn)一步地,在具體的應(yīng)用場景中,還包括:判斷模塊615,用于在所述接口模塊611通過所述內(nèi)部互聯(lián)端口接收到報文時,判斷所述報文的源MAC地址是否存在于自身的MAC地址表項中,并在判斷結(jié)果為是時進(jìn)一步判斷所述報文的出端口是否為黑洞端口;若所述出端口不是黑洞端口,所述判斷模塊615根據(jù)所述報文的出端口轉(zhuǎn)發(fā)所述報文;若所述出端口為黑洞端口,所述判斷模塊615丟棄所述報文。進(jìn)一步地,在具體的應(yīng)用場景中,,還包括:中央處理器CPU616,用于根據(jù)硬件MAC地址表生成并維護(hù)軟件MAC地址表;所述CPU616,還用于根據(jù)預(yù)先設(shè)置的老化時間周期,通過所述接口模塊611向所述交換機(jī)系統(tǒng)中的其他單板發(fā)送MAC地址同步報文;其中,所述MAC地址同步報文的源MAC地址為所述軟件MAC地址表中的各軟件MAC地址表項。進(jìn)一步地,在具體的應(yīng)用場景中,所述CPU616具體用于:對所述軟件MAC地址表中的各軟件MAC地址表項進(jìn)行計時,將到達(dá)計時周期的軟件MAC地址表項作為源MAC地址生成MAC地址同步報文,通過所述接口模塊611發(fā)送所述MAC地址同步報文并復(fù)位所述計時;其中,所述計時周期與所述老化時間周期相同。由此可見,通過應(yīng)用以上技術(shù)方案,對單板接收到的報文的源MAC地址進(jìn)行查詢,如果沒有在單板的MAC地址轉(zhuǎn)發(fā)表項中查找到報文的源MAC地址,或者該源MAC地址存在端口遷移的情況,則將該報文進(jìn)行復(fù)制,并將復(fù)制后的報文的出端口即目的端口設(shè)置為物理上不存在的系統(tǒng)保留端口即黑洞端口,由交換網(wǎng)板將復(fù)制后的報文通過內(nèi)部互連端口發(fā)送至其他單板。從而在保證報文收發(fā)秩序正常的情況下,實時高效地實現(xiàn)了MAC地址的同步,減少了系統(tǒng)的負(fù)擔(dān)。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通過硬件實現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM,U盤,移動硬盤等)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施場景所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個優(yōu)選實施場景的示意圖,附圖中的模塊或流程并不一定是實施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實施場景中的裝置中的模塊可以按照實施場景描述進(jìn)行分布于實施場景的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實施場景的一個或多個裝置中。上述實施場景的模塊可以合并為一個模塊,也可以進(jìn)一步拆分成多個子模塊。上述本發(fā)明序號僅僅為了描述,不代表實施場景的優(yōu)劣。以上公開的僅為本發(fā)明的幾個具體實施場景,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。