一種用軟件實(shí)現(xiàn)1:NVLAN替換的方法技術(shù)領(lǐng)域本發(fā)明涉及數(shù)據(jù)通信技術(shù),尤其涉及一種用軟件實(shí)現(xiàn)1:N虛擬局域網(wǎng)(VLAN)替換的方法。
背景技術(shù):VLANMapping也稱為VLAN映射,其主要功能是將用戶報文中的私網(wǎng)VLAN標(biāo)簽(Tag)替換為公網(wǎng)的VLANTag,使其按照公網(wǎng)的網(wǎng)絡(luò)規(guī)劃進(jìn)行傳輸。在報文被發(fā)送到對端用戶私網(wǎng)時,再按照同樣的規(guī)則將VLANTag恢復(fù)為原有的用戶私網(wǎng)VLANTag,使報文正確到達(dá)目的地。該功能通常采用芯片來實(shí)現(xiàn),由芯片自動將用戶報文VLANTag替換。然而,有些芯片由于功能的限制,僅支持N:1VLAN替換,卻不支持反向替換。對于這種芯片,需要通過軟件來實(shí)現(xiàn),以彌補(bǔ)硬件功能不足的缺陷。目前軟件1:NVLAN替換的方法,通常采用所有包送CPU的方式實(shí)現(xiàn)。由CPU的收包處理函數(shù)判斷是否需要替換,若需要則設(shè)置硬件,在進(jìn)入轉(zhuǎn)發(fā)表之前將包的原始VID改為新的VID,同時在回行方向轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)之后將新的VID改為原始VID,且該MAC的數(shù)據(jù)包不再送CPU。但上述方法需要由CPU處理數(shù)據(jù)報文,會加重CPU的負(fù)荷。為了不干擾CPU的正常運(yùn)行,必須對網(wǎng)絡(luò)進(jìn)行限速,但限速又會造成丟包。同時,對于無須替換的MAC表項,也需要設(shè)置硬件不再送CPU。這樣將導(dǎo)致占用過多的硬件表項,不適合MAC較多的情況下的網(wǎng)絡(luò)應(yīng)用。
技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明的主要目的在于提供一種用軟件實(shí)現(xiàn)1:NVLAN替換的方法,以彌補(bǔ)硬件芯片不支持1:NVLAN替換的不足,又不會導(dǎo)致CPU負(fù)荷的增加,從而實(shí)現(xiàn)在不改變硬件的條件下,提高設(shè)備適應(yīng)網(wǎng)絡(luò)的能力。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:一種用軟件實(shí)現(xiàn)1:N虛擬局域網(wǎng)(VLAN)替換的方法,該方法包括:A、將N:1VLAN替換條目綁定到端口;B、若綁定條目為N:1或1:1操作,則將綁定條目信息記錄到第一表中,同時增加替換后虛擬局域網(wǎng)號VID的計數(shù)值;C、當(dāng)軟件接收媒體訪問控制(MAC)添加消息,若VID值與綁定條目匹配則進(jìn)行訪問控制列表ACL設(shè)置,使得MAC+VID的數(shù)據(jù)流的外層標(biāo)簽Tag替換成新的VID進(jìn)行轉(zhuǎn)發(fā);回行方向根據(jù)MAC+新VID將數(shù)據(jù)包的外層Tag替換成原始VID,同時軟件表項記錄上述設(shè)置;D、軟件接收MAC刪除消息,刪除步驟C所述的ACL設(shè)置及軟件表項。其中:所述軟件接收的MAC添加和MAC刪除消息,由設(shè)備硬件發(fā)出;每當(dāng)轉(zhuǎn)發(fā)表增加一條表項,該硬件向所述軟件發(fā)送一條MAC添加消息;每當(dāng)轉(zhuǎn)發(fā)表刪除一條表項,該硬件向所述軟件發(fā)送一條MAC刪除消息。所述硬件向所述軟件發(fā)送的MAC添加和MAC刪除消息,其參數(shù)包括端口號、MAC地址和原始VID。所述轉(zhuǎn)發(fā)表以MAC+VID作為索引。本發(fā)明所提供的用軟件實(shí)現(xiàn)1:NVLAN替換的方法,具有以下優(yōu)點(diǎn):1)減少了下發(fā)訪問控制列表(ACL)的條數(shù),節(jié)省了軟件表的空間和硬件ACL表項數(shù):需要翻譯的包下兩條ACL,分別到VFP和IFP表項,無需翻譯的包不下發(fā)ACL。原先不僅需要翻譯的包下兩條ACL,無需翻譯的包也要下一條ACL表明不再送CPU。2)無需CPU限速也無需戶在每個端口單獨(dú)使能/禁用(enable/disable)基于ACL的VLAN翻譯,減輕了CPU的負(fù)擔(dān)。3)使用方便。用戶無需關(guān)心芯片是否支持1:N。附圖說明圖1為數(shù)據(jù)包在交換芯片中的流向示意圖;圖2為VLAN翻譯條目綁定到端口的處理流程圖;圖3為VLAN翻譯條目從端口解綁定的處理流程圖;圖4為網(wǎng)絡(luò)拓?fù)涫疽鈭D;圖5為本發(fā)明的數(shù)據(jù)包轉(zhuǎn)發(fā)過程示意圖。具體實(shí)施方式下面結(jié)合附圖及本發(fā)明的實(shí)施例對本發(fā)明的方法作進(jìn)一步詳細(xì)的說明。圖1為數(shù)據(jù)包在交換芯片中的流向示意圖。如圖1所示,其中VFP、VLAN翻譯、轉(zhuǎn)發(fā)表及IFP均為所有端口共用,VFP表項操作與VLAN翻譯操作均在轉(zhuǎn)發(fā)表之前執(zhí)行,可依次執(zhí)行,該步操作完畢后,進(jìn)行轉(zhuǎn)發(fā)表學(xué)習(xí),同時確定需要轉(zhuǎn)發(fā)的端口,隨后進(jìn)行IFP表項操作。圖2為VLAN翻譯條目綁定到端口的處理流程圖。如圖2所示,當(dāng)端口綁定VLAN替換條目時,若芯片支持1:N或不是入方向替換操作則直接調(diào)用硬件接口綁定,否則將端口號、起始和結(jié)束虛擬局域網(wǎng)號(VID)及mapVID保存到軟件表1,同時mapVID計數(shù)表累加新增VLAN數(shù)目。MapVID計數(shù)值變化情況及處理如下:1)0->1,表明為1:1替換操作,需要下硬件表項(即下載到硬件的表項)由芯片VLAN翻譯實(shí)現(xiàn),軟件同時記錄計數(shù)值1;2)0->n,軟件記錄計數(shù)值n;3)1->1,需要下硬件表項(即下載到硬件的表項)由芯片VLAN翻譯實(shí)現(xiàn);4)1->n,表明由1:1變成了1:N替換操作,刪除硬件表項,軟件記錄計數(shù)值n;5)m->n,軟件記錄計數(shù)值n。不同端口原始VID相同只計算一次;多個端口下1:1VLAN替換,結(jié)果為同一個VID的視為N:1。圖3為VLAN翻譯條目從端口解綁定的處理流程圖。如圖3所示,用戶將VLAN替換條目從端口解綁定時,若芯片支持1:N或不是入方向替換操作,則調(diào)用硬件接口解綁定,否則從軟件表1刪除相關(guān)條目,同時mapVID計數(shù)表減去刪除的VLAN數(shù),mapVID計數(shù)表變化及處理如下:1)1->0,刪除硬件VLAN翻譯表項;2)1->1,刪除硬件VLAN翻譯表項;3)n->0,刪除所有相關(guān)VFP,IFP表項;4)n->1,刪除所有相關(guān)VFP,IFP表項,下VLAN翻譯表項(1:1用芯片實(shí)現(xiàn));5)n->m,刪除減掉的VID對應(yīng)的VFP,IFP表項。圖4為網(wǎng)絡(luò)拓?fù)涫疽鈭D。如圖4所示,搭建拓?fù)洳LAN替換條目綁定在端口1、端口2的入方向,當(dāng)收到轉(zhuǎn)發(fā)表表項添加消息時,模塊接收到端口號,數(shù)據(jù)包原始VID和MAC值后,將根據(jù)該VID查軟件表1,判斷是否在該端口綁定的VLAN翻譯條目的替換范圍內(nèi),是則查找mapVID計數(shù)表,若計數(shù)值大于1則寫一條VFP表項,將源MAC為上述值,外層為VID的數(shù)據(jù)包的VID改為mapVID;同時寫一條IFP表項,將mapVID對應(yīng)VLAN中目的MAC為上述值,外層為mapVID的數(shù)據(jù)包的mapVID改為VID,然后將該表項記錄到軟件表2。當(dāng)收到轉(zhuǎn)發(fā)表表項刪除消息時,模塊根據(jù)MAC查詢軟件表2,刪除VFP表和IFP表中相應(yīng)條目。圖5為本發(fā)明的數(shù)據(jù)包轉(zhuǎn)發(fā)過程示意圖。如圖5所示,所述數(shù)據(jù)包轉(zhuǎn)發(fā)過程包括如下步驟:步驟51:用戶將N:1VLAN替換條目綁定到端口。步驟52:軟件將綁定條目信息記錄到表1,同時將替換后虛擬局域網(wǎng)號VID的計數(shù)值增加N。這里,軟件判斷綁定條目是否為N:1或1:1替換操作,若是則記錄端口號、原始VID、替換后的VID到表1,同時將替換后虛擬局域網(wǎng)號VID的計數(shù)值增加N。步驟53:軟件接收MAC添加消息,設(shè)置ACL表項實(shí)現(xiàn)N:1及1:NVLAN替換。這里,軟件接收MAC添加消息,若VID值與綁定條目匹配則進(jìn)行ACL設(shè)置,使得MAC+VID的數(shù)據(jù)流的外層Tag替換成新的VID進(jìn)行轉(zhuǎn)發(fā);回行方向根據(jù)MAC+新的VID將數(shù)據(jù)包的外層Tag替換成原始VID,軟件同時記錄端口號、MAC、新舊VID到表2。步驟54:軟件接收MAC刪除消息,刪除步驟53所述的ACL設(shè)置及軟件表項。軟件接收MAC刪除消息,以轉(zhuǎn)發(fā)表項的端口號+VID為索引在表2中查找,若找到匹配項則刪除相應(yīng)的ACL表項,同時從表2中刪除相應(yīng)表項。具體實(shí)施過程如下:當(dāng)端口1發(fā)往上聯(lián)口3的帶VLAN11Tag的數(shù)據(jù)包進(jìn)入交換芯片時,轉(zhuǎn)發(fā)表學(xué)到如下表項:MACVIDportMAC1111硬件將該新增表項發(fā)送到軟件模塊。由于找不到出端口,數(shù)據(jù)包將不能從端口3發(fā)送,但軟件模塊通過查找軟件表1,發(fā)現(xiàn)該VID在端口1所綁定的VLAN翻譯條目的替換范圍內(nèi)(11-20),會寫一條VFP表項,將源端口為端口1,源MAC為MAC1的外層VID從11改為30,同時寫一條IFP表項,將VLAN30中目的MAC為MAC1,外層VID為30的數(shù)據(jù)包外層VID改為11。當(dāng)滿足VFP上述表項替換條件的下一個數(shù)據(jù)包進(jìn)入交換芯片時,首先進(jìn)行VFP操作,將VID改為30,然后進(jìn)行轉(zhuǎn)發(fā)表學(xué)習(xí),此時轉(zhuǎn)發(fā)表表項變成如下形式:MACVIDportMAC1111MAC1301硬件同樣將該表項作為新增表項發(fā)送到軟件模塊。此時VID30不在端口1的替換范圍內(nèi),將不作操作。該數(shù)據(jù)包在VLAN30中洪泛,從端口3發(fā)送出去。當(dāng)端口3目的MAC為MAC1,VID為30的數(shù)據(jù)包進(jìn)入交換芯片時,通過轉(zhuǎn)發(fā)表查找,確定出端口為端口1,隨后進(jìn)行IFP操作,將VID改為11,然后從端口1發(fā)送出去。這樣就實(shí)現(xiàn)了上聯(lián)口回行方向的1:N替換操作。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。