一種快速同步介質(zhì)訪問控制地址表的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及以太網(wǎng)數(shù)據(jù)通信領(lǐng)域中的數(shù)據(jù)同步技術(shù),尤其涉及一種快速同步介質(zhì)訪問控制(Medium Access Control, MAC)地址表的方法和裝置。
【背景技術(shù)】
[0002]傳統(tǒng)以太網(wǎng)交換機一般由專業(yè)的轉(zhuǎn)發(fā)控制專用集成電路(Applicat1n SpecificIntegrated Circuits, ASIC)芯片和中央處理器(Center Process Unit, CPU)控制系統(tǒng)組成,分別稱為轉(zhuǎn)發(fā)平面和控制平面。
[0003]在轉(zhuǎn)發(fā)平面中,ASIC芯片可以自行學(xué)習以太網(wǎng)包的源MAC地址,并將源MAC地址同收包端口關(guān)聯(lián)在一起,這種關(guān)聯(lián)關(guān)系可以生成MAC地址表。當上述MAC地址作為數(shù)據(jù)包目的MAC地址時,ASIC芯片可以依據(jù)之前學(xué)習到的MAC地址表項將數(shù)據(jù)包轉(zhuǎn)發(fā)到上述關(guān)聯(lián)端口,達到精確轉(zhuǎn)發(fā)的目的。
[0004]在控制平面中,CPU需要運行大量二層、三層協(xié)議,控制轉(zhuǎn)發(fā)平面的轉(zhuǎn)發(fā)路徑,滿足特定業(yè)務(wù)需求。在協(xié)議運行過程中,基于安全及效率等方面的考慮,需頻繁查找指定MAC地址的關(guān)聯(lián)端口 ;查找指定MAC地址的關(guān)聯(lián)端口時,雖然可以通過特定硬件接口查詢ASIC芯片中已經(jīng)學(xué)習到的MAC地址表,但是,這種方式不僅查詢效率低,而且會與配置通道搶占物理接口資源,因此,在內(nèi)存中建立MAC地址軟件表是一種常用的解決辦法。
[0005]目前,可以通過以下兩種方式在內(nèi)存中建立MAC地址軟件表:
[0006]第一種方式,轉(zhuǎn)發(fā)平面學(xué)習到MAC地址表項后,以消息的形式通過硬件接口發(fā)送給控制平面處理,控制平面接收到消息后,在內(nèi)存中建立MAC地址軟件表項。
[0007]第二種方式,控制平面在操作系統(tǒng)中創(chuàng)建獨立的任務(wù),定時周期性查詢轉(zhuǎn)發(fā)平面中的MAC地址表項,發(fā)現(xiàn)變化時,在內(nèi)存中更新MAC地址軟件表項。
[0008]上面兩種方式中,基于消息的方式及時性稍好,但是,當有大量MAC地址表項需要在短時間內(nèi)通知給控制平面時,有丟消息的隱患,會導(dǎo)致MAC地址軟件表與轉(zhuǎn)發(fā)平面中MAC地址表不同步,進而引發(fā)一系列問題;周期性查詢的方式安全性稍好,但及時性較差,且長期占用一定控制平面處理器資源,只能作為消息方式的補充方法使用。
【發(fā)明內(nèi)容】
[0009]有鑒于此,本發(fā)明實施例期望提供一種快速同步MAC地址表的方法和裝置,能夠解決短時間內(nèi)大量MAC地址表項軟硬件同步的問題。
[0010]為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0011]本發(fā)明實施例提供了一種快速同步介質(zhì)訪問控制MAC地址表的方法,所述方法包括:
[0012]初始化轉(zhuǎn)發(fā)平面和控制平面,在確定轉(zhuǎn)發(fā)平面和控制平面初始化成功時,啟動轉(zhuǎn)發(fā)平面定時器;
[0013]確定滿足MAC地址表同步條件時,轉(zhuǎn)發(fā)平面獲取內(nèi)存操作權(quán)限;
[0014]獲取待同步的MAC地址表項,依據(jù)所述待同步的MAC地址表項變化的內(nèi)容將待同步MAC地址表項同步到內(nèi)存區(qū)域中指定位置。
[0015]上述方案中,所述初始化轉(zhuǎn)發(fā)平面和控制平面包括:控制平面發(fā)送MAC地址軟件表配置信息給轉(zhuǎn)發(fā)平面;轉(zhuǎn)發(fā)平面依據(jù)所述配置信息,創(chuàng)建高優(yōu)先級隊列和低優(yōu)先級隊列,并初始化轉(zhuǎn)發(fā)平面定時器、高優(yōu)先級隊列、低優(yōu)先級隊列及直接內(nèi)存訪問控制器DMAC ;或者,
[0016]轉(zhuǎn)發(fā)平面定義MAC地址軟件表配置信息,根據(jù)所述配置信息,創(chuàng)建高優(yōu)先級隊列和低優(yōu)先級隊列,并初始化轉(zhuǎn)發(fā)平面定時器、高優(yōu)先級隊列、低優(yōu)先級隊列及直接內(nèi)存訪問控制器DMAC,控制平面讀取所述MAC地址軟件表配置信息。
[0017]上述方案中,所述MAC地址軟件表配置信息包括:
[0018]規(guī)定大小的內(nèi)存區(qū)域M的地址、內(nèi)存區(qū)域M的大小N、定時參數(shù)T、每個緩存隊列長度En、每個MAC地址表項大小L及系統(tǒng)MAC地址表容量En’ ;
[0019]或者,規(guī)定大小的內(nèi)存區(qū)域M的地址、內(nèi)存區(qū)域M的大小N、定時參數(shù)T、每個緩存隊列的緩存門限值Th、每個緩存隊列長度En、每個MAC地址表項大小L及系統(tǒng)MAC地址表容量En’ ;
[0020]其中,所述N = L*En,所述 En = En’。
[0021]上述方案中,所述MAC地址表同步條件包括:確定轉(zhuǎn)發(fā)平面定時器超時且高優(yōu)先級隊列被鎖定;或確定高優(yōu)先級隊列中緩存的MAC地址表項數(shù)量不低于緩存門限值。
[0022]上述方案中,所述確定滿足MAC地址表同步條件之前,所述方法還包括:
[0023]MAC地址表項發(fā)生變化,判斷高優(yōu)先級隊列是否被鎖定,確定鎖定時,將變化的MAC地址表項加入低優(yōu)先級隊列;確定未被鎖定時,將變化的MAC地址表項加入高優(yōu)先級隊列。
[0024]上述方案中,所述確定轉(zhuǎn)發(fā)平面定時器超時且高優(yōu)先級隊列被鎖定包括:
[0025]確定轉(zhuǎn)發(fā)平面定時器超時,判斷高優(yōu)先級隊列中是否存在待同步MAC地址表項,確定存在待同步MAC地址表項時,鎖定高優(yōu)先級隊列。
[0026]上述方案中,所述獲取待同步的MAC地址表項,依據(jù)所述待同步MAC地址表項變化的內(nèi)容將待同步MAC地址表項同步到內(nèi)存區(qū)域中指定位置,包括:
[0027]從高優(yōu)先級隊列中依次取出待處理MAC地址表項,判斷是否為新增MAC地址表項,如果是新增表項,則將所述新增MAC地址表項寫入內(nèi)存區(qū)域中指定區(qū)域,并設(shè)置所述新增MAC地址表項為有效Valid ;如果不是新增表項,則判斷是否為待更新MAC地址表項,如果是待更新表項,則更新所述MAC地址表項對應(yīng)的內(nèi)存中MAC地址表項,并設(shè)置更新的MAC地址表項為有效Valid ;如果不是待更新表項,則設(shè)置所述待處理MAC地址表項為無效Invalid ;。
[0028]上述方案中,所述依據(jù)所述待同步MAC地址表項變化的內(nèi)容將待同步MAC地址表項同步到內(nèi)存區(qū)域中指定位置之后,所述方法還包括:
[0029]轉(zhuǎn)發(fā)平面釋放對內(nèi)存的控制權(quán)限,高優(yōu)先級隊列和低優(yōu)先級隊列的優(yōu)先級反轉(zhuǎn),并重啟轉(zhuǎn)發(fā)平面定時器。
[0030]上述方案中,所述高優(yōu)先級隊列包括:高優(yōu)先級新增隊列、高優(yōu)先級更新隊列和高優(yōu)先級刪除隊列;
[0031]所述低優(yōu)先級隊列包括:低優(yōu)先級新增隊列、低優(yōu)先級更新隊列和低優(yōu)先級刪除隊列。
[0032]上述方案中,所述確定高優(yōu)先級隊列中緩存的MAC地址表項數(shù)量不低于緩存門限值包括:
[0033]獲取高優(yōu)先級新增隊列中緩存的MAC地址表項數(shù)量Na、高優(yōu)先級更新隊列中緩存的MAC地址表項數(shù)量Nb、以及高優(yōu)先級刪除隊列中緩存的MAC地址表項數(shù)量Ne之和Cn,并判斷Cn與預(yù)設(shè)門限值Th的大小,當Cn < Th時,未達到門限值;否則,已達到門限值。
[0034]上述方案中,所述判斷高優(yōu)先級隊列是否被鎖定,確定鎖定時,將變化的MAC地址表項加入低優(yōu)先級隊列;確定未被鎖定時,將變化的MAC地址表項加入高優(yōu)先級隊列包括:
[0035]判斷高優(yōu)先級隊列是否被鎖定,確定高優(yōu)先級隊列鎖定時,判斷所述變化的MAC地址表項是否為新增MAC地址表項,如果是新增表項,則將所述新增的MAC地址表項加入低優(yōu)先級新增隊列;如果不是新增表項,則判斷所述變化的MAC地址表項是否為待更新MAC地址表項,如果是待更新表項,則將所述待更新MAC地址表項加入低優(yōu)先級更新隊列;如果不是待更新表項,則將所述變化的MAC地址表項加入低優(yōu)先級刪除隊列;
[0036]確定高優(yōu)先級隊列未被鎖定時,判斷所述變化的MAC地址表項是否為新增MAC地址表項,如果是新增表項,則將所述新增的MAC地址表項加入高優(yōu)先級新增隊列;如果不是新增表項,則判斷所述變化的MAC地址表項是否為待更新MAC地址表項,如果是待更新表項,則將所述待更新MAC地址表項加入高優(yōu)先級更新隊列,如果不是待更新表項,則將所述變化的MAC地址表項加入高優(yōu)先級刪除隊列。
[0037]上述方案中,所述獲取待同步的MAC地址表項,并依據(jù)待同步的MAC地址表項變化的內(nèi)容將待同步MAC地址表項同步到內(nèi)存區(qū)域中指定位置,包括:
[0038]判斷高優(yōu)先級新增隊列中緩存的MAC地址表項數(shù)量Na的值是否為0,如果Na的值不為0,則將高優(yōu)先級新增隊列中緩存的Na個MAC地址表項批量存入內(nèi)存區(qū)域中指定位置;如果Na的值為0,則判斷高優(yōu)先級更新隊列中緩存的MAC地址表項數(shù)量Nb的值是否為0,如果Nb的值不為0,則將高優(yōu)先級更新隊列中待更新的Nb個MAC地址表項批量存入內(nèi)存區(qū)域中指定位置;如果Nb的值為0,則判斷高優(yōu)先級刪除隊列中緩存的MAC地址表項數(shù)量Ne的值是否為0,如果Ne的值不是0,則將高優(yōu)先級隊列中緩存的Ne個MAC地址表項設(shè)置為無效Invalid。
[0039]本發(fā)明實施例還提供了一種快速同步MAC地址表的裝置,所述裝置包括:轉(zhuǎn)發(fā)平面和控制平面,所述轉(zhuǎn)發(fā)平面包括轉(zhuǎn)發(fā)平面定時器;其中,
[0040]所述轉(zhuǎn)發(fā)平面,用于初始化轉(zhuǎn)發(fā)平面和控制平面,在確定轉(zhuǎn)發(fā)平面和控制平面初始化成功時,啟動轉(zhuǎn)發(fā)平面定時器;在確定滿足MAC地址表同步條件時,轉(zhuǎn)發(fā)平面獲取內(nèi)存操作權(quán)限;獲取待同步的MAC地址表項,依據(jù)所述待同步MAC地址表項變化的內(nèi)容將待同步MAC地址表項同步到內(nèi)存區(qū)域中指定位置;
[0041]所述轉(zhuǎn)發(fā)平面定時器,用于計時,并在超時時觸發(fā)超時后的操作;
[0042]所述控制平面,用于初始化轉(zhuǎn)發(fā)平面和控制平面,并在確定滿足MAC地址表同步條件時,將內(nèi)存操作權(quán)限交給轉(zhuǎn)發(fā)平面。
[0043]上述方案中,所述轉(zhuǎn)發(fā)平面和控制平面初始化包括:控制平面發(fā)送MAC地址軟件表配置信息給轉(zhuǎn)發(fā)平面;轉(zhuǎn)發(fā)平面依據(jù)所述配置信息,創(chuàng)建高優(yōu)先級隊列和低優(yōu)先級隊列,并初始化轉(zhuǎn)發(fā)平面定時器、高優(yōu)先級隊列、低優(yōu)先級隊列及DMAC ;或者,
[0044]轉(zhuǎn)發(fā)平面定義MAC地址軟件表配置信息,創(chuàng)建高優(yōu)先級隊列和低優(yōu)先級隊列,并初始化轉(zhuǎn)發(fā)平面定時器、高優(yōu)先級隊列、低優(yōu)先級隊列及直接內(nèi)存訪問控制器DMAC,控制平面讀取所述MAC地址軟件表配置信息。
[0045]上述方案中,所述MAC地址表同步條件包括:確定轉(zhuǎn)發(fā)平面定時器超時且高優(yōu)先級隊列被鎖定;或確定高優(yōu)先級隊列中緩存的MAC地址表項數(shù)量不低于緩存門限值。
[0046]上述方案中,所述裝置還包括:第一存儲器和第二存儲器;其中,
[0047]所述第一存儲器,用于存儲高優(yōu)先級隊列;
[0048]所述第二存儲器,用于存儲低優(yōu)先級隊列。
[0049]上述方案中,所述第一存儲器包括:第一子存儲器、第二子存儲器和第三子存儲器;
[0050]所述第二存儲器包括:第四子存儲器、第五子存儲器和第六子存儲器;
[0051]其中,所述第一子存儲器,用于存儲高優(yōu)先級新增隊列;
[0052]所述第二子存儲器,用于存儲高優(yōu)先級更新隊列;
[0053]所述第三子存儲器,用于存儲高優(yōu)先級刪除隊列;
[0054]所述第四子存儲器,用于存儲低優(yōu)先級新增隊列;
[0055]所述第五子存儲器,用于存儲低優(yōu)先級更新隊列;
[0056]所述第六子存儲器,用于存儲低優(yōu)先級刪除隊列。
[0057]上述方案中,所述轉(zhuǎn)發(fā)平面還用于,MAC地址表項發(fā)生變化時,判斷高優(yōu)先級隊列是否被鎖定,確定高優(yōu)先級隊列鎖定時,將變化的MAC地址表項加入低優(yōu)先級隊列;確定高優(yōu)先級隊列未被鎖定時,將變化的MAC地址表項加入高優(yōu)先級隊列;
[0058]以及,釋放對內(nèi)存的控制權(quán)限,控制高優(yōu)先級隊列和低優(yōu)先級隊列的優(yōu)先級反轉(zhuǎn),并重啟轉(zhuǎn)發(fā)平面定時器。
[0059]上述方案中,所述MAC地址軟件表配置信息包括:
[0060]規(guī)定大小的內(nèi)存區(qū)域M的地址、M的大小N、定時參數(shù)T、每個緩存隊列長度En、每個MAC地址表項大小L及系統(tǒng)MAC地址表容量En’ ;
[0061]或者,規(guī)定大小的內(nèi)存區(qū)域M的地址、M的大小N、定時參數(shù)T、每個緩存隊列的緩存門限值Th、每個緩存隊列長度En、每個MAC地址表項大小L及系統(tǒng)MAC地址表容量En’ ;
[0062]其中,所述N = L*En,所述 En = En’。
[0063]上述方案中,所述確定轉(zhuǎn)發(fā)平面定時器超時且高優(yōu)先級隊列被鎖定包括:
[0064]確定轉(zhuǎn)發(fā)平面定時器超時,判斷高優(yōu)先級隊列中是否存在待同步MAC地址表項,確定存在待同步MAC地址表項時,鎖定高優(yōu)先級隊列。
[0065]上述方案中,所述獲取待同步的MAC地址表項,并依據(jù)所述待同步MAC地址表項變化的內(nèi)容將待同步MAC地址表項同步到內(nèi)存區(qū)域中指定位置,包括:
[0066]從高優(yōu)先級隊列中依次取出待處理MAC地址表項,判斷是否為新增MAC地址表項,如果是新增表項,則將所述新增MAC地址表項寫入內(nèi)存區(qū)域中指定區(qū)域,并設(shè)置所述新增MAC地址表項為有效Valid ;如果不是新增表項,則判斷是否為待更新MAC地址表項,如果是待更新表項,則更新所述MAC地址表項對應(yīng)的內(nèi)存中MAC地址表項,并設(shè)置更新的MAC地址表項為有效Valid ;如果不是待更新表項,則設(shè)置所述待處理MAC地址表項為無效Invalid。
[0067]上述方案中,所述確定高優(yōu)先級隊列中緩存的MAC地址表項數(shù)量不低于緩存門限值包括:獲取高優(yōu)先級新增隊列中緩存的MAC地址表項數(shù)量Na、高優(yōu)先級更新隊列中緩存的MAC地址表項數(shù)量Nb、以及高優(yōu)先級刪除隊列中緩存的MAC地址表項數(shù)量Ne之和Cn,并判斷Cn與預(yù)設(shè)門限值Th的大小,當Cn < Th時,未達到門限值;否則,已達到門限值。
[0068]上述方案中,所述判斷高優(yōu)先級隊列是否被鎖定,確定鎖定時,將變化的MAC地址表項加入低優(yōu)先級隊列;確定未被鎖定時,將變化的MAC地址表項加入高優(yōu)先級隊列包括:
[0069]判斷高優(yōu)先級隊列是否被鎖定,確定高優(yōu)先級隊列鎖定時,判斷所述變化的MAC地址表項是否為新增MAC地址表項,如果是新增表項,則將所述新增的MAC地址表項加入低優(yōu)先級新增隊列;如果不是新增表項,則判斷所述變化的MAC地址表項是否為待更新MAC地址表項,如果是待更新表項,則將所述待更新MAC地址表項加入低優(yōu)先級更新隊列;如果不是待更新表項,則將所述變化的MAC地址表項加入低優(yōu)先級刪除隊列;
[0070]確定高優(yōu)先級隊列未被鎖定時,判斷所述變化的MAC地址表項是否為新增MAC地址表項,如果是新增表項,則將所述新增的MAC地址表項加入高優(yōu)先級新增隊列;如果不是新增表項,則判斷所述變化的MAC地址表項是否為待更新MAC地址表項,如果是新增表項,則將所述待更新MAC地址表項加入高優(yōu)先級更新隊列,如果不是新增表項,則將所述變化的MAC地址表項加入高優(yōu)先級刪除隊列。
[0071 ] 上述方案中,所述獲取待同步的MAC地址表項,并依據(jù)所述待同步的MAC地址表項變化的內(nèi)容將待同步MAC地址表項同步到內(nèi)存區(qū)域中指定位置,包括:
[0072]判斷高優(yōu)先級新增隊列中緩存的MAC地址表項數(shù)量Na的值是否為0,如果Na的值不為0,則將高優(yōu)先級新增隊列中緩存的Na個MAC地址表項批量存入內(nèi)存區(qū)域中指定位置;如果Na的值為0,則判斷高優(yōu)先級更新增隊列中緩存的MAC地址表項數(shù)量Nb的值是否為0,如果Nb的值不為0,則將高優(yōu)先級更新隊列中待更新的Nb個MAC地址表項批量存入內(nèi)存區(qū)域中指定位置;如果Nb的值為0,則判斷高優(yōu)先級刪除隊列中緩存的MAC地址表項數(shù)量Ne的值是否為0,如果Ne的值不是0,則將高優(yōu)先級隊列中緩存的Ne個MAC地址表項設(shè)置為無效Invalid。
[0073]本發(fā)明實施例所提供的快速同步MAC地址表的方法和裝置,在確定轉(zhuǎn)發(fā)平面和控制平面初始化成功時,啟動轉(zhuǎn)發(fā)平面定時器;確定滿足MAC地址表同步條件時,轉(zhuǎn)發(fā)平面獲取內(nèi)存操作權(quán)限,從獲取待同步的MAC地址表項,并依據(jù)所述待同步MAC地址表項變化的內(nèi)容,將待同步MAC地址表項同步到內(nèi)存區(qū)域中指定位置。由于本發(fā)明實施例中的同步MAC地址等操作均由轉(zhuǎn)發(fā)平面完成,無需控制平面操作;并且,轉(zhuǎn)發(fā)平面將變化的