本申請(qǐng)涉及計(jì)算機(jī)通信領(lǐng)域,尤其涉及表項(xiàng)清除方法及裝置。
背景技術(shù):
交換機(jī)、路由器等作為重要的轉(zhuǎn)發(fā)設(shè)備,在互聯(lián)網(wǎng)中起著至關(guān)重要的作用。當(dāng)該類轉(zhuǎn)發(fā)設(shè)備的出接口異常時(shí),通常需要清除該出接口的對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng),使轉(zhuǎn)發(fā)設(shè)備學(xué)習(xí)新的轉(zhuǎn)發(fā)表項(xiàng),找到新的出接口,對(duì)接收到的流量進(jìn)行轉(zhuǎn)發(fā)。
然而,清除異常出接口的轉(zhuǎn)發(fā)表項(xiàng),通??赡軙?huì)增加轉(zhuǎn)發(fā)設(shè)備的系統(tǒng)負(fù)荷。因此,如何降低針對(duì)清除異常出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)時(shí)的系統(tǒng)負(fù)荷就成為亟待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N表項(xiàng)清除方法及裝置,用以降低轉(zhuǎn)發(fā)設(shè)備的系統(tǒng)負(fù)荷。
具體地,本申請(qǐng)是通過如下技術(shù)方案實(shí)現(xiàn)的:
根據(jù)本申請(qǐng)實(shí)施例的第一方面,提供一種表項(xiàng)清除方法,所述方法應(yīng)用于轉(zhuǎn)發(fā)設(shè)備,所述轉(zhuǎn)發(fā)設(shè)備包括若干個(gè)出接口,所述若干個(gè)出接口對(duì)應(yīng)的結(jié)構(gòu)體中分別預(yù)配置了對(duì)應(yīng)的接口指示變量;所述轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)表中的出接口相同的轉(zhuǎn)發(fā)表項(xiàng)被分別組織成對(duì)應(yīng)的鏈表;所述鏈表中的轉(zhuǎn)發(fā)表項(xiàng)分別預(yù)配置了對(duì)應(yīng)的表項(xiàng)指示變量;所述方法包括:
當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),將與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值賦值給與所述轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量;
當(dāng)檢測(cè)到所述目標(biāo)出接口異常時(shí),修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值;
將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除。
根據(jù)本申請(qǐng)實(shí)施例的第二方面,提供一種表項(xiàng)清除裝置,所述裝置應(yīng)用于轉(zhuǎn)發(fā)設(shè)備,所述轉(zhuǎn)發(fā)設(shè)備包括若干個(gè)出接口,所述若干個(gè)出接口對(duì)應(yīng)的結(jié)構(gòu)體中分別預(yù)配置了對(duì)應(yīng)的接口指示變量;所述轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)表中的出接口相同的轉(zhuǎn)發(fā)表項(xiàng)被分別組織成對(duì)應(yīng)的鏈表;所述鏈表中的轉(zhuǎn)發(fā)表項(xiàng)分別預(yù)配置了對(duì)應(yīng)的表項(xiàng)指示變量;所述裝置包括:
賦值單元,用于當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),將與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值賦值給與所述轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量;
修改單元,用于當(dāng)檢測(cè)到所述目標(biāo)出接口異常時(shí),修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值;
清除單元,用于將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除。
本申請(qǐng)?zhí)峁┮环N表項(xiàng)清除的方法,當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),轉(zhuǎn)發(fā)設(shè)備可以將與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值賦值給與所述轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量。當(dāng)檢測(cè)到所述目標(biāo)出接口異常時(shí),轉(zhuǎn)發(fā)設(shè)備可以修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值。并可以將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除。
由于轉(zhuǎn)發(fā)設(shè)備不再多次反復(fù)遍歷以哈希表組織的轉(zhuǎn)發(fā)表,查找需要清除的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除;而是可以根據(jù)鏈表,快速查找到轉(zhuǎn)發(fā)表項(xiàng),并基于目標(biāo)出接口的接口結(jié)構(gòu)體中的接口指示變量和轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量,將該目標(biāo)出接口對(duì)應(yīng)的需要清除的轉(zhuǎn)發(fā)表項(xiàng)集體置于無效,并可以將無效的轉(zhuǎn)發(fā)表項(xiàng)刪除,從而可以有效地降低了CPU的負(fù)荷,提高CPU的資源利用率。
附圖說明
圖1是本申請(qǐng)一示例性實(shí)施例示出的一種表項(xiàng)清除方法的流程圖;
圖2是本申請(qǐng)一示例性實(shí)施例示出的一種表項(xiàng)清除裝置所在設(shè)備的硬件結(jié)構(gòu)圖;
圖3是本申請(qǐng)一示例性實(shí)施例示出的一種表項(xiàng)清除裝置的框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請(qǐng)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請(qǐng)的一些方面相一致的裝置和方法的例子。
在本申請(qǐng)使用的術(shù)語是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本申請(qǐng)。在本申請(qǐng)和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本申請(qǐng)可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請(qǐng)范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。
交換機(jī)、路由器等作為重要的轉(zhuǎn)發(fā)設(shè)備,在互聯(lián)網(wǎng)中起著至關(guān)重要的作用。當(dāng)該類轉(zhuǎn)發(fā)設(shè)備的出接口異常時(shí),通常需要清除該出接口的對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)。例如,在三層網(wǎng)絡(luò)中,轉(zhuǎn)發(fā)設(shè)備的出接口Down掉,此時(shí),需要轉(zhuǎn)發(fā)設(shè)備清除ARP/ND表項(xiàng),以使得設(shè)備可以重新學(xué)習(xí)ARP/ND表項(xiàng)。又例如,在使用生成樹協(xié)議搭建的二層網(wǎng)絡(luò)中,如果網(wǎng)絡(luò)拓?fù)浒l(fā)生變化,作為網(wǎng)橋的轉(zhuǎn)發(fā)設(shè)備需要清除出接口上的MAC表項(xiàng),以使轉(zhuǎn)發(fā)設(shè)備重新學(xué)習(xí)新的網(wǎng)絡(luò)拓?fù)涞腗AC表項(xiàng)。
在相關(guān)技術(shù)中,當(dāng)轉(zhuǎn)發(fā)設(shè)備的某個(gè)出接口異常時(shí),需要對(duì)該出接口的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行清除。但是,通常情況下,轉(zhuǎn)發(fā)表項(xiàng)是以哈希表的結(jié)構(gòu)被進(jìn)行組成,形成轉(zhuǎn)發(fā)表。轉(zhuǎn)發(fā)表中包含了轉(zhuǎn)發(fā)設(shè)備上的出接口及出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)。當(dāng)對(duì)上述轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除時(shí),轉(zhuǎn)發(fā)設(shè)備可以以異常出接口的接口ID為索引,遍歷轉(zhuǎn)發(fā)表,查找異常的出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng),然后將該轉(zhuǎn)發(fā)表項(xiàng)刪除。
此外,當(dāng)轉(zhuǎn)發(fā)設(shè)備為框式轉(zhuǎn)發(fā)設(shè)備時(shí),在異常出接口轉(zhuǎn)發(fā)表項(xiàng)的清除過程中,框式轉(zhuǎn)發(fā)設(shè)備的主控板需要將需要清除的轉(zhuǎn)發(fā)表項(xiàng)通過內(nèi)部通道下發(fā)給業(yè)務(wù)板,由業(yè)務(wù)板查找對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行清除。
然而,在相關(guān)技術(shù)中,一方面,當(dāng)轉(zhuǎn)發(fā)設(shè)備有多個(gè)出接口需要清除轉(zhuǎn)發(fā)表項(xiàng)時(shí),在查找該出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)時(shí),需要多次遍歷轉(zhuǎn)發(fā)表。由于轉(zhuǎn)發(fā)表以由哈希表的數(shù)據(jù)結(jié)構(gòu)組織的,多次遍歷轉(zhuǎn)發(fā)表,會(huì)大大增加CPU資源的占用,從而增大CPU的負(fù)荷。
另一方面,當(dāng)有多個(gè)轉(zhuǎn)發(fā)表項(xiàng)需要清除時(shí),由于主控板向業(yè)務(wù)板下發(fā)需要清除的轉(zhuǎn)發(fā)表項(xiàng),會(huì)占用大量的通道資源,可能會(huì)造成內(nèi)部通道擁堵,甚至丟包的發(fā)生。
綜上所述,使用相關(guān)技術(shù)的表項(xiàng)清除的方法,大大增加了轉(zhuǎn)發(fā)設(shè)備的系統(tǒng)負(fù)荷。
有鑒于此,本申請(qǐng)?zhí)峁┮环N表項(xiàng)清除的方法,當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),轉(zhuǎn)發(fā)設(shè)備可以將與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值賦值給與所述轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量。當(dāng)檢測(cè)到所述目標(biāo)出接口異常時(shí),轉(zhuǎn)發(fā)設(shè)備可以修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值。并可以將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除。
此外,當(dāng)轉(zhuǎn)發(fā)設(shè)備為框式轉(zhuǎn)發(fā)設(shè)備時(shí),在表項(xiàng)清除的過程中,框式設(shè)備的主控板不再將需要?jiǎng)h除的表項(xiàng)下發(fā)給業(yè)務(wù)板,而是主控板將異常出接口的接口ID發(fā)送給業(yè)務(wù)板,由業(yè)務(wù)板使用本申請(qǐng)?zhí)峁┑谋眄?xiàng)清除的方法將該異常出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)作為無效的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除。
一方面,由于轉(zhuǎn)發(fā)設(shè)備不再多次反復(fù)遍歷哈希表,查找需要清除的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除;而是可以根據(jù)鏈表,快速查找到轉(zhuǎn)發(fā)表項(xiàng),并基于目標(biāo)出接口的接口結(jié)構(gòu)體中的接口指示變量和轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量,將該目標(biāo)出接口對(duì)應(yīng)的需要清除的轉(zhuǎn)發(fā)表項(xiàng)集體置于無效,并可以將無效的轉(zhuǎn)發(fā)表項(xiàng)刪除,從而可以有效地降低了CPU的負(fù)荷,提高CPU的資源利用率。
另一方面,當(dāng)轉(zhuǎn)發(fā)設(shè)備為框式轉(zhuǎn)發(fā)設(shè)備時(shí),由于框式設(shè)備的主控板不再需要向業(yè)務(wù)板發(fā)送需要?jiǎng)h除的轉(zhuǎn)發(fā)表項(xiàng),而是將異常出接口的接口ID發(fā)送給業(yè)務(wù)板,由業(yè)務(wù)板基于接口ID完成異常出接口表項(xiàng)的清除工作,從而可以有效地節(jié)省內(nèi)部通道的資源。
綜上所述,使用本申請(qǐng)實(shí)施例提供的表項(xiàng)清除的方法,可以有效地降低轉(zhuǎn)發(fā)設(shè)備的系統(tǒng)負(fù)荷。
參見圖1,圖1是本申請(qǐng)一示例性實(shí)施例示出的一種表項(xiàng)清除方法的流程圖,所述方法應(yīng)用于轉(zhuǎn)發(fā)設(shè)備,所述轉(zhuǎn)發(fā)設(shè)備包括若干個(gè)出接口。所述若干個(gè)出接口對(duì)應(yīng)的結(jié)構(gòu)體中分別預(yù)配置了對(duì)應(yīng)的接口指示變量。所述轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)表中出接口相同的轉(zhuǎn)發(fā)表項(xiàng)被分別組織成對(duì)應(yīng)的鏈表。所述鏈表中的轉(zhuǎn)發(fā)表項(xiàng)分別預(yù)配置了對(duì)應(yīng)的表項(xiàng)指示變量。所述方法具體包括如下所述的步驟:
步驟101:當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),將與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值賦值給與所述轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量。
步驟102:當(dāng)檢測(cè)到所述目標(biāo)出接口異常時(shí),修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值。
步驟103:將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除。
上述轉(zhuǎn)發(fā)設(shè)備,是指在互聯(lián)網(wǎng)中具有轉(zhuǎn)發(fā)功能的設(shè)備,通常情況下,該類轉(zhuǎn)發(fā)設(shè)備包括若干出接口,每個(gè)出接口對(duì)應(yīng)有儲(chǔ)存在該轉(zhuǎn)發(fā)設(shè)備中的若干轉(zhuǎn)發(fā)表項(xiàng)。當(dāng)學(xué)習(xí)到新的轉(zhuǎn)發(fā)表項(xiàng)時(shí),轉(zhuǎn)發(fā)設(shè)備可以更新已有的轉(zhuǎn)發(fā)表項(xiàng)。當(dāng)轉(zhuǎn)發(fā)設(shè)備上的出接口異?;蛘呔W(wǎng)絡(luò)拓?fù)浒l(fā)生變化時(shí),轉(zhuǎn)發(fā)設(shè)備可以清除該出接口上的轉(zhuǎn)發(fā)表項(xiàng),以重新學(xué)習(xí)新的轉(zhuǎn)發(fā)表項(xiàng)等。上述轉(zhuǎn)發(fā)設(shè)備可以是三層轉(zhuǎn)發(fā)設(shè)備,如路由器,也可以是二層轉(zhuǎn)發(fā)設(shè)備,如交換機(jī),在這里只對(duì)其進(jìn)行示例性的說明,不對(duì)轉(zhuǎn)發(fā)設(shè)備進(jìn)行特定地限定。
上述轉(zhuǎn)發(fā)表項(xiàng),通常情況下,轉(zhuǎn)發(fā)表項(xiàng)可以以哈希表的形式被組織形成轉(zhuǎn)發(fā)表。在本申請(qǐng)實(shí)施例中,開發(fā)人員還以鏈表的形式對(duì)上述轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行了組成。對(duì)于二層網(wǎng)絡(luò)來說,該轉(zhuǎn)發(fā)表項(xiàng)可以是MAC表項(xiàng),對(duì)于三層網(wǎng)絡(luò)來說,該轉(zhuǎn)發(fā)表項(xiàng)可以是ARP/ND表項(xiàng)。
上述接口指示變量,是開發(fā)人員在轉(zhuǎn)發(fā)設(shè)備的出接口的結(jié)構(gòu)體中設(shè)置的一個(gè)變量,在本申請(qǐng)實(shí)施例中,主要起標(biāo)識(shí)作用,通過與上述表項(xiàng)指示變量的共同作用,標(biāo)識(shí)該出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)是否有效。
上述表項(xiàng)指示變量,是開發(fā)人員在鏈表的轉(zhuǎn)發(fā)表項(xiàng)中添加的變量,在本申請(qǐng)實(shí)施例中,主要起標(biāo)識(shí)作用,通過與上述接口指示變量的共同作用,標(biāo)識(shí)該轉(zhuǎn)發(fā)表項(xiàng)是否有效。通常情況下,當(dāng)新學(xué)習(xí)到針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),可以在轉(zhuǎn)發(fā)表項(xiàng)中添加表項(xiàng)指示變量,并可以將上述接口指示變量的賦值給表項(xiàng)指示變量。
在本申請(qǐng)實(shí)施例中,通過對(duì)表項(xiàng)清除機(jī)制的改進(jìn),即由現(xiàn)有的直接清除表項(xiàng)的機(jī)制改進(jìn)為通過將表項(xiàng)置于無效,再對(duì)無效的表項(xiàng)進(jìn)行清除這兩個(gè)步驟完成表項(xiàng)的清除。轉(zhuǎn)發(fā)設(shè)備不再多次反復(fù)遍歷哈希表,查找需要清除的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除,而是可以根據(jù)鏈表,快速查找到轉(zhuǎn)發(fā)表項(xiàng),并基于目標(biāo)出接口的接口結(jié)構(gòu)體中的接口指示變量和轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量,將該目標(biāo)出接口對(duì)應(yīng)的需要清除的轉(zhuǎn)發(fā)表項(xiàng)集體置于無效,并可以將無效的轉(zhuǎn)發(fā)表項(xiàng)從轉(zhuǎn)發(fā)表中刪除,從而可以有效地降低了CPU的負(fù)荷,提高CPU的資源利用率。
下面對(duì)為完成本申請(qǐng)?zhí)岢龅谋眄?xiàng)清除方法而需進(jìn)行的配置,進(jìn)行詳細(xì)地說明。
對(duì)于針對(duì)轉(zhuǎn)發(fā)表項(xiàng)的配置,在本申請(qǐng)實(shí)施例中,開發(fā)人員可以以鏈表的形式組織上述轉(zhuǎn)發(fā)表項(xiàng)。通過鏈表組織轉(zhuǎn)發(fā)表項(xiàng)的組織方式,可以將同一出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行“鏈接”,使得轉(zhuǎn)發(fā)設(shè)備可以不再多次遍歷以哈希表組織的轉(zhuǎn)發(fā)表,而是可以通過鏈表中保存的指向轉(zhuǎn)發(fā)表項(xiàng)的指針快速地查找到無效轉(zhuǎn)發(fā)表項(xiàng),并將其從內(nèi)存中刪除。
對(duì)于鏈表的組織方式,通常情況下,開發(fā)人員可以在目標(biāo)出接口的接口結(jié)構(gòu)體中配置鏈表結(jié)點(diǎn),該鏈表結(jié)點(diǎn)中儲(chǔ)存有指向該出接口對(duì)應(yīng)的某個(gè)轉(zhuǎn)發(fā)表項(xiàng)的指針,通過該指針,可以快速抵查找到該轉(zhuǎn)發(fā)表項(xiàng)。同時(shí),該查找到的轉(zhuǎn)發(fā)表項(xiàng)中也儲(chǔ)存有向前和向后指針,用以分別指向該轉(zhuǎn)發(fā)表項(xiàng)關(guān)聯(lián)的上一個(gè)和下一個(gè)轉(zhuǎn)發(fā)表項(xiàng),使得轉(zhuǎn)發(fā)設(shè)備可以通過向前和向后的指針,查找到該出接口對(duì)應(yīng)的所有轉(zhuǎn)發(fā)表項(xiàng)。
其中,兩個(gè)轉(zhuǎn)發(fā)表項(xiàng)如果具有關(guān)聯(lián)關(guān)系,則表明這兩個(gè)轉(zhuǎn)發(fā)表項(xiàng)是同一出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)。本申請(qǐng)?zhí)峁┑囊枣湵淼男问綄?duì)轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行組織,其實(shí)是對(duì)同一出接口對(duì)應(yīng)的所有轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行組織。換句話來說,就是每個(gè)出接口都對(duì)應(yīng)有鏈表,該鏈表中包含了該出接口對(duì)應(yīng)的所有轉(zhuǎn)發(fā)表項(xiàng)。
這里只是對(duì)以鏈表形式組織轉(zhuǎn)發(fā)表項(xiàng)的一種示例性說明,在本申請(qǐng)中不對(duì)其進(jìn)行特定地限定。
此外,還需要說明的是,在使用鏈表對(duì)上述轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行組織時(shí),一般容易想到的方法是采用單向鏈表的方法,即鏈表中只儲(chǔ)存有指向下一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的地址的指針。為了可以查找到該出接口對(duì)應(yīng)的全部的轉(zhuǎn)發(fā)表項(xiàng),這就要求接口結(jié)構(gòu)體中儲(chǔ)存的是該出接口對(duì)應(yīng)鏈表的首個(gè)結(jié)點(diǎn),此外,使用單向鏈表,只可以向下訪問轉(zhuǎn)發(fā)表項(xiàng),而不能雙向訪問轉(zhuǎn)發(fā)表項(xiàng),因此為使用鏈表查找轉(zhuǎn)發(fā)表項(xiàng)造成了極大地不便。
而在本申請(qǐng)實(shí)施例中,開發(fā)人員使用雙向鏈表對(duì)上述轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行組織,一方面,使用雙向鏈表,可以使得出接口的結(jié)構(gòu)體中儲(chǔ)存鏈表的任一結(jié)點(diǎn),方便鏈表節(jié)點(diǎn)的原地加入和刪除;另一方面,使用雙向鏈表,可以實(shí)現(xiàn)雙向遍歷轉(zhuǎn)發(fā)表項(xiàng)的指針,加快對(duì)轉(zhuǎn)發(fā)表項(xiàng)地訪問速度。
此外,對(duì)于轉(zhuǎn)發(fā)表項(xiàng)的配置,還包括,在轉(zhuǎn)發(fā)表項(xiàng)中儲(chǔ)存有轉(zhuǎn)發(fā)表項(xiàng)在哈希表中的結(jié)點(diǎn),以及開發(fā)人員在轉(zhuǎn)發(fā)表項(xiàng)中預(yù)配置了表項(xiàng)指示變量。
對(duì)于接口指示變量的配置,開發(fā)人員可以預(yù)先將接口指示變量配置在出接口的結(jié)構(gòu)體中。該指示變量的初始值為該轉(zhuǎn)發(fā)設(shè)備的系統(tǒng)生成的隨機(jī)值。
對(duì)于表項(xiàng)指示變量的配置,開發(fā)人員可以在每個(gè)轉(zhuǎn)發(fā)表項(xiàng)中配置表項(xiàng)指示變量。
在這里,需要說明的是,上述出接口的結(jié)構(gòu)體中的接口指示變量和該出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量,主要起標(biāo)識(shí)作用,用以區(qū)分轉(zhuǎn)發(fā)表項(xiàng)是否有效。換句話來說,如果接口指示變量與表項(xiàng)指示變量相同時(shí),表明該轉(zhuǎn)發(fā)表項(xiàng)有效;如果該接口指示變量與表項(xiàng)指示變量不相同時(shí),則表明該轉(zhuǎn)發(fā)表項(xiàng)無效。
下面對(duì)清除表項(xiàng)的方法,進(jìn)行詳細(xì)地介紹。
在本申請(qǐng)實(shí)施例中,當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),將與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值賦值給與所述轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量。
在實(shí)現(xiàn)時(shí),當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),轉(zhuǎn)發(fā)設(shè)備可以將該目標(biāo)出接口的接口結(jié)構(gòu)體中的接口指示變量的取值賦值給與該轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量,使得該轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量的取值與接口指示變量的取值相同。
需要說明的是,下發(fā)的轉(zhuǎn)發(fā)表項(xiàng),一般為轉(zhuǎn)發(fā)設(shè)備新學(xué)習(xí)到的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng),將與該轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的目標(biāo)出接口中的接口指示變量的取值賦值給與該轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量,主要是標(biāo)識(shí)該新學(xué)習(xí)到的轉(zhuǎn)發(fā)表項(xiàng)是有效的。
此外,還需要說明的是,當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),轉(zhuǎn)發(fā)設(shè)備可以將該目標(biāo)出接口的接口結(jié)構(gòu)體中的接口指示變量的取值賦值給該表項(xiàng)指示變量。這樣做的好處在于,在轉(zhuǎn)發(fā)設(shè)備將目標(biāo)出接口對(duì)應(yīng)的無效的轉(zhuǎn)發(fā)表項(xiàng)清除后,不需要將該出接口中的接口指示變量恢復(fù)成初始值,而是在該目標(biāo)出接口學(xué)習(xí)到新的轉(zhuǎn)發(fā)表項(xiàng)后,將修改后接口指示變量的取值賦值給與新的轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量即可。由于減少了接口指示變量恢復(fù)成初始值的步驟,因此可以有效地提高表項(xiàng)清除的效率。
在本申請(qǐng)實(shí)施例中,當(dāng)檢測(cè)到所述目標(biāo)出接口異常時(shí),修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值。
在實(shí)現(xiàn)時(shí),轉(zhuǎn)發(fā)設(shè)備可以對(duì)目標(biāo)出接口進(jìn)行檢測(cè),如果檢測(cè)到該目標(biāo)出接口異常,轉(zhuǎn)發(fā)設(shè)備可以將該目標(biāo)出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)置為無效。在將該目標(biāo)出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)無效的過程中,轉(zhuǎn)發(fā)設(shè)備可以修改目標(biāo)出接口的接口結(jié)構(gòu)體中預(yù)配置的接口指示變量的取值,使得接口指示變量的取值與該目標(biāo)出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量的取值不同,通過不同的取值,將該目標(biāo)出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)標(biāo)記為無效。對(duì)于修改上述指示變量的取值,可以通過對(duì)將接口指示變量的取值加一等方法來進(jìn)行修改,在這里不對(duì)其進(jìn)行特別地限定。
在這里,需要說明的是,本申請(qǐng)所述的出接口異常,是指該出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)需要清除,則表明該出接口異常。出現(xiàn)出接口異常的情況,可以是,出接口故障或者是網(wǎng)絡(luò)拓?fù)涞劝l(fā)生變化等情況。在這里,只是對(duì)出現(xiàn)出接口異常的情況進(jìn)行示例性的說明,不進(jìn)行特別地限定。
此外,還需要說明的是,對(duì)于轉(zhuǎn)發(fā)表項(xiàng)的無效,一般容易想到的方法是將異常的目標(biāo)出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)一條一條進(jìn)行無效處理。而在本申請(qǐng)實(shí)施例中,轉(zhuǎn)發(fā)設(shè)備可以通過修改異常的目標(biāo)出接口的接口結(jié)構(gòu)體中儲(chǔ)存的接口指示變量的方法,將該異常的目標(biāo)出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)集體標(biāo)記為無效。由于本申請(qǐng)實(shí)施例提供的方法可以對(duì)異常的目標(biāo)出接口對(duì)應(yīng)的所有轉(zhuǎn)發(fā)表項(xiàng)同時(shí)進(jìn)行無效處理,所以可以有效加快表項(xiàng)無效的速度,提高表項(xiàng)清除的效率。
在本申請(qǐng)實(shí)施例中,將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除。
對(duì)于將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除,轉(zhuǎn)發(fā)設(shè)備既可以采用主動(dòng)刪除轉(zhuǎn)發(fā)表項(xiàng)的方法,也可以采用周期遍歷各鏈表,分別對(duì)轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除。
主動(dòng)刪除轉(zhuǎn)發(fā)表項(xiàng)的方法如下:
在本申請(qǐng)實(shí)施例中,當(dāng)接收到報(bào)文時(shí),在轉(zhuǎn)發(fā)表中匹配與所述報(bào)文對(duì)應(yīng)的目標(biāo)轉(zhuǎn)發(fā)表項(xiàng);當(dāng)在轉(zhuǎn)發(fā)表中匹配到與所述報(bào)文對(duì)應(yīng)的目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)時(shí),比較所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口中的接口指示變量的取值是否相同;如果所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口中的接口指示變量的取值不同,將該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)從轉(zhuǎn)發(fā)表中和與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的鏈表中清除。
上述主動(dòng)刪除轉(zhuǎn)發(fā)表項(xiàng)的方法,主要是在轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)報(bào)文的過程中實(shí)現(xiàn)的。在實(shí)現(xiàn)時(shí),當(dāng)接收到報(bào)文時(shí),轉(zhuǎn)發(fā)設(shè)備可以在轉(zhuǎn)發(fā)表中匹配與該接收到的報(bào)文對(duì)應(yīng)的目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)。如果匹配與該報(bào)文對(duì)應(yīng)的目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)時(shí),轉(zhuǎn)發(fā)設(shè)備可以獲取該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量,并可以基于該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中攜帶的出接口信息,獲取該出接口的接口結(jié)構(gòu)體中的接口指示變量。
轉(zhuǎn)發(fā)設(shè)備可以比較該表項(xiàng)指示變量與接口指示變量中的取值。如果述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口中的接口指示變量的取值不同,轉(zhuǎn)發(fā)設(shè)備可以標(biāo)記該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)無效。此時(shí),轉(zhuǎn)發(fā)設(shè)備可以將該標(biāo)記為無效的轉(zhuǎn)發(fā)表項(xiàng)從轉(zhuǎn)發(fā)表中和與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的鏈表中清除。同時(shí),轉(zhuǎn)發(fā)設(shè)備還可以清除該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口的接口結(jié)構(gòu)體中的鏈表結(jié)點(diǎn)。
在本申請(qǐng)實(shí)施例中,如果所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口中的接口指示變量的取值相同,基于所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng),轉(zhuǎn)發(fā)所述報(bào)文。
在實(shí)現(xiàn)時(shí),如果所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口中的接口指示變量的取值相同,轉(zhuǎn)發(fā)設(shè)備可以確定該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)有效,則轉(zhuǎn)發(fā)設(shè)備可以基于該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng),將所述報(bào)文轉(zhuǎn)發(fā)。
采用周期遍歷接口鏈表,對(duì)轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除的方式如下:
在本實(shí)施例中,轉(zhuǎn)發(fā)設(shè)備可以周期性地遍歷各鏈表中的轉(zhuǎn)發(fā)表項(xiàng),分別查詢無效的轉(zhuǎn)發(fā)表項(xiàng)。并可以將查詢到的所述無效的轉(zhuǎn)發(fā)表項(xiàng)從轉(zhuǎn)發(fā)表和與該無效的轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的鏈表中清除。
在實(shí)現(xiàn)時(shí),開發(fā)人員可以在轉(zhuǎn)發(fā)設(shè)備的每個(gè)出接口的接口結(jié)構(gòu)體中預(yù)配置定時(shí)器,通過定時(shí)器設(shè)定遍歷鏈表的周期。
轉(zhuǎn)發(fā)設(shè)備可以基于該出接口的接口結(jié)構(gòu)體中儲(chǔ)存的接口鏈表結(jié)點(diǎn),查找該結(jié)點(diǎn)指向的轉(zhuǎn)發(fā)表項(xiàng),并可以比較該轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量是否與該出接口中的接口指示變量相同,如果該表項(xiàng)指示變量與該接口指示變量不同時(shí),轉(zhuǎn)發(fā)設(shè)備可以確定該轉(zhuǎn)發(fā)表項(xiàng)無效,并可以將該轉(zhuǎn)發(fā)表項(xiàng)刪除。此時(shí),轉(zhuǎn)發(fā)設(shè)備還可以將該鏈表結(jié)點(diǎn)從該接口結(jié)構(gòu)體中刪除。
在刪除上述轉(zhuǎn)發(fā)表項(xiàng)前,轉(zhuǎn)發(fā)設(shè)備可以獲取該轉(zhuǎn)發(fā)表項(xiàng)中儲(chǔ)存的向前和向后的指針,雙向查找該向前和向后的指針指向的轉(zhuǎn)發(fā)表項(xiàng),并繼續(xù)上述判斷無效操作,當(dāng)轉(zhuǎn)發(fā)表項(xiàng)無效時(shí),將轉(zhuǎn)發(fā)表項(xiàng)從轉(zhuǎn)發(fā)表和該鏈表中刪除。
同時(shí)采用主動(dòng)刪除轉(zhuǎn)發(fā)表項(xiàng)的方法和定期遍歷鏈表,對(duì)轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除的這兩種方法,由于可以毫無遺漏地將目標(biāo)出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)全部刪除,因此可以有效地提高轉(zhuǎn)發(fā)表項(xiàng)刪除的速率。
在本申請(qǐng)實(shí)施例中,當(dāng)所述轉(zhuǎn)發(fā)設(shè)備為框式轉(zhuǎn)發(fā)設(shè)備;所述框式設(shè)備包括主控板和業(yè)務(wù)板;所述修改所述目標(biāo)出接口的接口結(jié)構(gòu)體中的指示變量的取值,包括:業(yè)務(wù)板接收主控板發(fā)送的轉(zhuǎn)發(fā)表項(xiàng)清除消息,并獲取所述轉(zhuǎn)發(fā)表項(xiàng)清除消息攜帶的所述目標(biāo)出接口的接口ID;業(yè)務(wù)板基于所述接口ID,查找所述目標(biāo)出接口的接口結(jié)構(gòu)體;修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值。
在實(shí)現(xiàn)時(shí),當(dāng)該轉(zhuǎn)發(fā)設(shè)備為框式轉(zhuǎn)發(fā)設(shè)備時(shí),框式設(shè)備的主控板可以對(duì)出接口進(jìn)行檢測(cè),當(dāng)檢測(cè)到目標(biāo)出接口異常時(shí),主控板可以將清除該目標(biāo)出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的轉(zhuǎn)發(fā)表項(xiàng)清除消息,下發(fā)給業(yè)務(wù)板。
對(duì)于修改所述目標(biāo)出接口的接口結(jié)構(gòu)體中的指示變量的取值,業(yè)務(wù)板可以接收到該表項(xiàng)清除消息后,并可以獲取該消息中攜帶的目標(biāo)出接口的接口ID。業(yè)務(wù)板可以基于該接口ID,查找到目標(biāo)出接口,然后修改目標(biāo)出接口的接口結(jié)構(gòu)體中的接口指示變量的取值。
需要說明的是,在本申請(qǐng)?zhí)岢龅谋眄?xiàng)清除方法中,框式轉(zhuǎn)發(fā)設(shè)備只是對(duì)于修改所述目標(biāo)出接口的接口結(jié)構(gòu)體中的指示變量的取值的步驟上略有不同,其余的步驟與上述的表項(xiàng)清除方法的步驟相同,在這里,不再贅述。
在本申請(qǐng)實(shí)施例中,所述轉(zhuǎn)發(fā)設(shè)備包括二層轉(zhuǎn)發(fā)設(shè)備和三層轉(zhuǎn)發(fā)設(shè)備;所述轉(zhuǎn)發(fā)表項(xiàng)包括MAC表項(xiàng)和ARP/ND表項(xiàng)。
需要說明的是,當(dāng)本申請(qǐng)?zhí)岢龅谋眄?xiàng)清除方法應(yīng)用于二層網(wǎng)絡(luò)中時(shí),本申請(qǐng)的轉(zhuǎn)發(fā)設(shè)備可以包括二層轉(zhuǎn)發(fā)設(shè)備,例如交換機(jī)等,此時(shí),轉(zhuǎn)發(fā)表項(xiàng)可以為MAC表項(xiàng)等。當(dāng)本申請(qǐng)?zhí)岢龅谋眄?xiàng)清除方法應(yīng)用于三層網(wǎng)絡(luò)中時(shí),本申請(qǐng)的轉(zhuǎn)發(fā)設(shè)備可以包括三層轉(zhuǎn)發(fā)設(shè)備,例如路由器等。此時(shí),轉(zhuǎn)發(fā)表項(xiàng)可以為ARP/ND表項(xiàng)等。
此外,需要說明的是,轉(zhuǎn)發(fā)設(shè)備上的所有出接口都可以使用上述表項(xiàng)清除方法對(duì)需要清除的表項(xiàng)進(jìn)行清除。所述目標(biāo)出接口可以代指轉(zhuǎn)發(fā)設(shè)備上任一的出接口。
本申請(qǐng)?zhí)峁┮环N表項(xiàng)清除方法,當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),轉(zhuǎn)發(fā)設(shè)備可以將與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值賦值給與所述轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量。當(dāng)檢測(cè)到所述目標(biāo)出接口異常時(shí),轉(zhuǎn)發(fā)設(shè)備可以修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值。并可以將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除。
此外,當(dāng)轉(zhuǎn)發(fā)設(shè)備為框式轉(zhuǎn)發(fā)設(shè)備時(shí),在表項(xiàng)清除的過程中,框式設(shè)備的主控板不再將需要?jiǎng)h除的表項(xiàng)下發(fā)給業(yè)務(wù)板,而是主控板將異常出接口的接口ID發(fā)送給業(yè)務(wù)板,由業(yè)務(wù)板使用本申請(qǐng)?zhí)峁┑谋眄?xiàng)清除的方法將該異常出接口對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)作為無效的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除。
一方面,由于轉(zhuǎn)發(fā)設(shè)備不再多次反復(fù)遍歷哈希表,查找需要清除的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行刪除;而是可以根據(jù)鏈表,快速查找到轉(zhuǎn)發(fā)表項(xiàng),并基于目標(biāo)出接口的接口結(jié)構(gòu)體中的接口指示變量和轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量,將該目標(biāo)出接口對(duì)應(yīng)的需要清除的轉(zhuǎn)發(fā)表項(xiàng)集體置于無效,并可以將無效的轉(zhuǎn)發(fā)表項(xiàng)刪除,從而可以有效地降低了CPU的負(fù)荷,提高CPU的資源利用率。
另一方面,當(dāng)轉(zhuǎn)發(fā)設(shè)備為框式轉(zhuǎn)發(fā)設(shè)備時(shí),由于框式設(shè)備的主控板不再需要向業(yè)務(wù)板發(fā)送需要?jiǎng)h除的轉(zhuǎn)發(fā)表項(xiàng),而是將異常出接口的接口ID發(fā)送給業(yè)務(wù)板,由業(yè)務(wù)板基于接口ID完成異常出接口表項(xiàng)的清除工作,從而可以有效地節(jié)省內(nèi)部通道的資源。
綜上所述,使用本申請(qǐng)實(shí)施例提供的表項(xiàng)清除方法,可以有效地降低轉(zhuǎn)發(fā)設(shè)備的系統(tǒng)負(fù)荷。
與前述表項(xiàng)清除的方法的實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了表項(xiàng)清除的裝置的實(shí)施例。
本申請(qǐng)表項(xiàng)清除裝置的實(shí)施例可以應(yīng)用在轉(zhuǎn)發(fā)設(shè)備上。裝置實(shí)施例可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過其所在轉(zhuǎn)發(fā)設(shè)備的處理器將非易失性存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖2所示,為本申請(qǐng)表項(xiàng)清除裝置所在轉(zhuǎn)發(fā)設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖2所示的處理器、內(nèi)存、網(wǎng)絡(luò)出接口、以及非易失性存儲(chǔ)器之外,實(shí)施例中裝置所在的轉(zhuǎn)發(fā)設(shè)備通常根據(jù)該表項(xiàng)清除的實(shí)際功能,還可以包括其他硬件,對(duì)此不再贅述。
請(qǐng)參考圖3,圖3是本申請(qǐng)一示例性實(shí)施例示出的一種表項(xiàng)清除裝置的框圖。所述裝置應(yīng)用于轉(zhuǎn)發(fā)設(shè)備,所述轉(zhuǎn)發(fā)設(shè)備包括若干個(gè)出接口,所述若干個(gè)出接口對(duì)應(yīng)的結(jié)構(gòu)體中分別預(yù)配置了對(duì)應(yīng)的接口指示變量;所述轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)表中的出接口相同的轉(zhuǎn)發(fā)表項(xiàng)被分別組織成對(duì)應(yīng)的鏈表;所述鏈表中的轉(zhuǎn)發(fā)表項(xiàng)分別預(yù)配置了對(duì)應(yīng)的表項(xiàng)指示變量;所述裝置包括:賦值單元310,修改單元320和清除單元330。
其中,賦值單元310,用于當(dāng)接收到下發(fā)的針對(duì)目標(biāo)出接口的轉(zhuǎn)發(fā)表項(xiàng)時(shí),將與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值賦值給與所述轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的表項(xiàng)指示變量;
修改單元320,用于當(dāng)檢測(cè)到所述目標(biāo)出接口異常時(shí),修改與所述目標(biāo)出接口對(duì)應(yīng)的接口指示變量的取值;
清除單元330,用于將與所述目標(biāo)出接口對(duì)應(yīng)的鏈表中表項(xiàng)指示變量與所述目標(biāo)出接口的接口指示變量的取值不同的轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)清除。
在另一種可選的實(shí)現(xiàn)方式中,所述清除單元330,具體用于當(dāng)接收到報(bào)文時(shí),在轉(zhuǎn)發(fā)表中匹配與所述報(bào)文對(duì)應(yīng)的目標(biāo)轉(zhuǎn)發(fā)表項(xiàng);當(dāng)在轉(zhuǎn)發(fā)表中匹配到與所述報(bào)文對(duì)應(yīng)的目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)時(shí),比較所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口中的接口指示變量的取值是否相同;如果所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口中的接口指示變量的取值不同,將該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)作為無效表項(xiàng)從轉(zhuǎn)發(fā)表中和與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的鏈表中清除。
在另一種可選的實(shí)現(xiàn)方式中,所述清除單元330,具體用于周期性地遍歷各鏈表中的轉(zhuǎn)發(fā)表項(xiàng),分別查詢無效的轉(zhuǎn)發(fā)表項(xiàng);將查詢到的所述無效的轉(zhuǎn)發(fā)表項(xiàng)從轉(zhuǎn)發(fā)表和與該無效的轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的鏈表中清除。
在另一種可選的實(shí)現(xiàn)方式中,所述裝置還包括:轉(zhuǎn)發(fā)單元340,用于如果所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)中的表項(xiàng)指示變量與該目標(biāo)轉(zhuǎn)發(fā)表項(xiàng)對(duì)應(yīng)的出接口中的接口指示變量的取值相同,基于所述目標(biāo)轉(zhuǎn)發(fā)表項(xiàng),轉(zhuǎn)發(fā)所述報(bào)文。
上述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中對(duì)應(yīng)步驟的實(shí)現(xiàn)過程,在此不再贅述。
對(duì)于裝置實(shí)施例而言,由于其基本對(duì)應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本申請(qǐng)方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。