本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試方法及調(diào)試系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)功能需求的增多,設(shè)備廠商漸漸開始關(guān)注網(wǎng)絡(luò)設(shè)備上數(shù)據(jù)處理的過程和細(xì)節(jié),從而包裝和提供出更為高級(jí)的功能特性,以與競(jìng)爭(zhēng)廠商產(chǎn)品形成差異化;另外,系統(tǒng)廠商本身需要基于商用芯片做二次開發(fā),在開發(fā)過程會(huì)因?yàn)閷?duì)芯片理解不夠的問題,從而導(dǎo)致一些系統(tǒng)軟件的bug,但是芯片本身又是近似黑盒的,以往芯片所能提供出的debug功能和手段非常有限,往往一個(gè)問題需要調(diào)試定位很久,極為不便利和友好;如此,針對(duì)指定的數(shù)據(jù)報(bào)文,如何能提供其在芯片中的整個(gè)處理細(xì)節(jié)過程,成為一個(gè)研究熱點(diǎn)。
傳統(tǒng)的交換芯片報(bào)文處理的調(diào)試手段很局限,通過大量物理memory來保存包在芯片處理過程中產(chǎn)生的一些關(guān)鍵信息,供用戶來定位問題,類似于軟件中GDB調(diào)試工具達(dá)到的效果;該種實(shí)現(xiàn)方式因?yàn)榇鎯?chǔ)的處理調(diào)試信息數(shù)據(jù)較大,需要耗費(fèi)大量的物理memory,這對(duì)于ASIC設(shè)計(jì)而言需要付出的額外代價(jià)非常大,直接影響芯片的成本和價(jià)格,最終影響芯片在市場(chǎng)上的競(jìng)爭(zhēng)力。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明的目的在于提供一種基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試方法及調(diào)試系統(tǒng)。
為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提出一種基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試方法所述方法包括:在交換芯片的各個(gè)處理子模塊中分別預(yù)置一個(gè)debug寄存器,用于存儲(chǔ)多播報(bào)文轉(zhuǎn)發(fā)過程中對(duì)應(yīng)各個(gè)子模塊的處理調(diào)試信息;
解析多播報(bào)文,查找轉(zhuǎn)發(fā)表,獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼和配置;
所述復(fù)制類型包包括:copyToCPU復(fù)制包,Log復(fù)制包,以及Forwarding復(fù)制包中的至少一種;
預(yù)配置復(fù)制類型標(biāo)識(shí),所述復(fù)制類型標(biāo)識(shí)包括:copyToCPU標(biāo)識(shí)、Log標(biāo)識(shí)以及Forwarding標(biāo)識(shí);
根據(jù)獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼,匹配過濾復(fù)制類型包的配置,并對(duì)過濾出的復(fù)制類型包修改其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí);
根據(jù)獲取的所述復(fù)制類型標(biāo)識(shí)確定是否觸發(fā)處理調(diào)試信息存儲(chǔ)動(dòng)作。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),“根據(jù)獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼,匹配過濾復(fù)制類型包的配置,并對(duì)過濾出的復(fù)制類型包修改其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí);”具體包括:
若獲取到的復(fù)制類型包的編碼與所述交換芯片當(dāng)前調(diào)試的復(fù)制類型包的編碼相同,
則匹配過濾相應(yīng)的復(fù)制類型包的配置,同時(shí),將所述復(fù)制類型包對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將其它的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),“解析多播報(bào)文,查找轉(zhuǎn)發(fā)表”后,所述方法還包括:
若獲取到的待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼包括Forwarding復(fù)制包;
則同時(shí)匹配過濾所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),預(yù)配置Forwarding寄存器,其用于存儲(chǔ)當(dāng)前狀態(tài)下、交換芯片處理的Forwarding復(fù)制包的目的地和下一跳編輯的索引;
若匹配過濾到的所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引與所述預(yù)配置Forwarding寄存器中的目的地和下一跳編輯的索引全部匹配;
則匹配過濾所述Forwarding復(fù)制包的同時(shí),將匹配到的所述Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將未能匹配的Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),若一次多播報(bào)文解析過程中,獲得多個(gè)復(fù)制類型包的編碼,則在生成相應(yīng)的復(fù)制類型包后,依次對(duì)每一個(gè)復(fù)制類型包進(jìn)行調(diào)試;
并在當(dāng)前復(fù)制類型包調(diào)試結(jié)束后,將其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。
為了實(shí)現(xiàn)上述發(fā)明目的之一,本發(fā)明一實(shí)施方式提供一種基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試系統(tǒng),所述系統(tǒng)包括:存儲(chǔ)模塊,包括多個(gè)分別預(yù)置于交換芯片的各個(gè)處理子模塊中的debug寄存器,所述debug寄存器用于存儲(chǔ)多播報(bào)文轉(zhuǎn)發(fā)過程中對(duì)應(yīng)各個(gè)處理子模塊的處理調(diào)試信息;
解析模塊,用于解析多播報(bào)文,查找轉(zhuǎn)發(fā)表,獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼和配置;
所述復(fù)制類型包包括:copyToCPU復(fù)制包,Log復(fù)制包,以及Forwarding復(fù)制包中的至少一種;
配置模塊,用于預(yù)配置復(fù)制類型標(biāo)識(shí),所述復(fù)制類型標(biāo)識(shí)包括:copyToCPU標(biāo)識(shí)、Log標(biāo)識(shí)以及Forwarding標(biāo)識(shí);
調(diào)試控制模塊,用于根據(jù)獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼,匹配過濾復(fù)制類型包的配置,并對(duì)過濾出的復(fù)制類型包修改其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí);
根據(jù)獲取的所述復(fù)制類型標(biāo)識(shí)確定是否觸發(fā)處理調(diào)試信息存儲(chǔ)動(dòng)作。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述調(diào)試控制模塊還用于:
若獲取到的復(fù)制類型包的編碼與所述交換芯片當(dāng)前調(diào)試的復(fù)制類型包的編碼相同,
則匹配過濾相應(yīng)的復(fù)制類型包的配置,同時(shí),將所述復(fù)制類型包對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將其它的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述調(diào)試控制模塊還用于:
若獲取到的待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼包括Forwarding復(fù)制包;
則同時(shí)匹配過濾所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述配置模塊還用于:預(yù)配置Forwarding寄存器,其用于存儲(chǔ)當(dāng)前狀態(tài)下、交換芯片處理的Forwarding復(fù)制包的目的地和下一跳編輯的索引;
所述調(diào)試控制模塊還用于:若匹配過濾到的所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引與所述預(yù)配置Forwarding寄存器中的目的地和下一跳編輯的索引全部匹配;
則匹配過濾所述Forwarding復(fù)制包的同時(shí),將匹配到的所述Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將未能匹配的Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述調(diào)試控制模塊還用于:
若一次多播報(bào)文解析過程中,獲得多個(gè)復(fù)制類型包的編碼,則在生成相應(yīng)的復(fù)制類型包后,依次對(duì)每一個(gè)復(fù)制類型包進(jìn)行調(diào)試;
并在當(dāng)前復(fù)制類型包調(diào)試結(jié)束后,將其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。
與現(xiàn)有技術(shù)相比,本發(fā)明的基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試方法及調(diào)試系統(tǒng),僅用一組調(diào)試寄存器即可以實(shí)現(xiàn)對(duì)多播報(bào)文復(fù)雜復(fù)制后的報(bào)文進(jìn)行靈活且實(shí)時(shí)調(diào)試的目的,大大減少了交換芯片能耗,提升交換芯片對(duì)多播報(bào)文的在線調(diào)試能力,為調(diào)試定位芯片帶來極大的便利。
附圖說明
圖1是本發(fā)明一實(shí)施方式提供的基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試方法的流程示意圖;
圖2是本發(fā)明一具體實(shí)施方式中多播復(fù)制報(bào)文在線復(fù)制、匹配過濾的流程示意圖;
圖3是本發(fā)明一實(shí)施方式中提供的基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試系統(tǒng)的模塊示意圖;
圖4是本發(fā)明一具體示例中,多播報(bào)文基于本發(fā)明所示方法或系統(tǒng)的傳播路徑示意圖。
具體實(shí)施方式
以下將結(jié)合附圖所示的各實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)描述。但這些實(shí)施方式并不限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員根據(jù)這些實(shí)施方式所做出的結(jié)構(gòu)、方法、或功能上的變換均包含在本發(fā)明的保護(hù)范圍內(nèi)。
本發(fā)明提出的基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試方法和調(diào)試系統(tǒng),在交換芯片的各個(gè)子處理模塊中分別預(yù)置一個(gè)debug寄存器的前提下,從交換機(jī)處理報(bào)文產(chǎn)生各種原因復(fù)制的現(xiàn)狀出發(fā),提出一套有效的、靈活的實(shí)時(shí)調(diào)試多播報(bào)文的芯片處理過程的方法,該方法有效的解決系統(tǒng)用戶對(duì)芯片黑盒處理以及定位問題手段不足的困擾。
如圖1所示,本發(fā)明一實(shí)施方式提供的基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試方法,所述方法包括:
S1、在交換芯片的各個(gè)處理子模塊中分別預(yù)置一個(gè)debug寄存器,所述debug寄存器用于存儲(chǔ)多播報(bào)文轉(zhuǎn)發(fā)過程中對(duì)應(yīng)各個(gè)處理子模塊的處理調(diào)試信息。
多播報(bào)文在所述交換芯片中轉(zhuǎn)發(fā)過程中,在交換芯片的各個(gè)處理子模塊中會(huì)產(chǎn)生相應(yīng)的處理調(diào)試信息,相應(yīng)的處理調(diào)試信息固定存儲(chǔ)于對(duì)應(yīng)的處理子模塊中,本發(fā)明在每一個(gè)處理子模塊中分別預(yù)置一個(gè)debug寄存器,用于存儲(chǔ)相應(yīng)的處理調(diào)試信息,且在當(dāng)前調(diào)試輪次調(diào)試結(jié)束后,將存儲(chǔ)在各個(gè)debug寄存器中的處理調(diào)試信息進(jìn)行保存,以用于后續(xù)的調(diào)用,優(yōu)選的,在當(dāng)前輪次調(diào)試結(jié)束后,將debug寄存器中存儲(chǔ)的數(shù)據(jù)保存后,清空當(dāng)前的debug寄存器,以再次存儲(chǔ)其它報(bào)文攜帶的信息,如此,僅需要較少的一組debug寄存器,即可以滿足用戶需求,節(jié)省功耗、制造及使用成本。
進(jìn)一步的,所述方法還包括:
S2、解析多播報(bào)文,查找轉(zhuǎn)發(fā)表,獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼和配置;
所述復(fù)制類型包包括:copyToCPU復(fù)制包,Log復(fù)制包,以及Forwarding復(fù)制包中的至少一種;
所述copyToCPU復(fù)制包,報(bào)文在交換芯片中轉(zhuǎn)發(fā)的同時(shí),復(fù)制一份給本地CPU,供系統(tǒng)軟件的協(xié)議棧處理,所述copyToCPU復(fù)制包中主要為一些協(xié)議報(bào)文。
所述Log復(fù)制包,報(bào)文在交換芯片中轉(zhuǎn)發(fā)的同時(shí),網(wǎng)絡(luò)中有一些特征需要根據(jù)網(wǎng)管的配置,對(duì)某種特征的報(bào)文或者在交換芯片的某個(gè)接口上,定期采樣或者鏡像input/output包到一個(gè)特定的目的端口上,該目的端口連接一臺(tái)專用偵聽設(shè)備,同步分析被鏡像或采樣過來的Log復(fù)制包,以使網(wǎng)管根據(jù)分析的數(shù)據(jù)對(duì)整個(gè)網(wǎng)絡(luò)當(dāng)前的狀態(tài)有所了解。
所述Forwarding復(fù)制包,組播報(bào)文正常轉(zhuǎn)發(fā)復(fù)制到各成員,成員的加入和退出由組播協(xié)議維護(hù);例如:一個(gè)二層組播報(bào)文會(huì)在該VLAN中廣播,當(dāng)前設(shè)備上所有加入該VLAN的端口都會(huì)收到一個(gè)復(fù)制報(bào)文。
多播報(bào)文在所述交換芯片中轉(zhuǎn)發(fā)過程中,芯片根據(jù)不同的需求,在芯片的處理邏輯中對(duì)所述多播報(bào)文進(jìn)行解析,查找轉(zhuǎn)發(fā)表,其獲得的復(fù)制類型包的編碼類型以及相應(yīng)的配置也會(huì)隨之變換,在此不做詳細(xì)贅述。
結(jié)合圖4所示,交換芯片的入口處,設(shè)置的其中一個(gè)處理子模塊為Ingress PipeLine,該處理子模塊用于解析多播報(bào)文,并查找轉(zhuǎn)發(fā)表,以獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼;
解析報(bào)文過程中,會(huì)獲得報(bào)文轉(zhuǎn)發(fā)過程中所需的全部信息,其中,若獲取到的待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼中包括Forwarding復(fù)制包的編碼時(shí),還需要同時(shí)解析所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引,以供后續(xù)匹配過濾所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引以下將會(huì)詳細(xì)說明。
進(jìn)一步的,所述方法還包括:
S3、預(yù)配置復(fù)制類型標(biāo)識(shí),所述復(fù)制類型標(biāo)識(shí)包括:copyToCPU標(biāo)識(shí)、Log標(biāo)識(shí)以及Forwarding標(biāo)識(shí);
根據(jù)獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼,匹配過濾復(fù)制類型包的配置,并對(duì)過濾出的復(fù)制類型包修改其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí);
可以理解的是,所述預(yù)置的復(fù)制類型標(biāo)識(shí),其可以根據(jù)調(diào)試的需要,自行配置和更改,其為報(bào)文轉(zhuǎn)發(fā)過程中所涉及到的復(fù)制類型包對(duì)應(yīng)的標(biāo)識(shí)信息,其為一種過濾條件,用于過濾所需求的復(fù)制類型包。
接續(xù)圖4所示,交換芯片中的其中一個(gè)處理子模塊為TrafficManager,根據(jù)獲取的復(fù)制類型包的編碼,在該處理子模塊下,復(fù)制生成相應(yīng)的復(fù)制類型包,并匹配過濾相應(yīng)的復(fù)制類型包的配置,同時(shí),對(duì)相應(yīng)的復(fù)制類型標(biāo)識(shí)進(jìn)行修改。
所述Traffic Manager為交換芯片中的QoS模塊,包括packet buffer管理,隊(duì)列的調(diào)度和管理,多播復(fù)制,丟包策略等。
報(bào)文在所述Ingress PipeLine處理子模塊和TrafficManager處理子模塊之間的其它處理子模塊中轉(zhuǎn)發(fā)時(shí),由于其為一個(gè)整體的報(bào)文數(shù)據(jù),因此,其攜帶的相應(yīng)臨時(shí)和關(guān)鍵的處理調(diào)試信息依次保留至相應(yīng)的處理子模塊中的debug寄存器即可以滿足調(diào)試需求。
進(jìn)一步的,報(bào)文到達(dá)TrafficManager處理子模塊時(shí),會(huì)產(chǎn)生多種類型的復(fù)制類型包,相應(yīng)的,報(bào)文在該處理子模塊一直到交換芯片的出端口之間轉(zhuǎn)發(fā)時(shí),也會(huì)涉及到多種類型的復(fù)制類型包中攜帶的處理調(diào)試信息的存儲(chǔ)問題,如此,本發(fā)明結(jié)合復(fù)制類型包對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí),解決該調(diào)試存儲(chǔ)問題。
接續(xù)圖4所示,獲得的復(fù)制類型包的編碼可能有3種,其各自的編碼以二進(jìn)制代碼表示,分別為“b’00”“b’01”“b’10”表示,其中,二進(jìn)制代碼“b’00”表示獲得的復(fù)制類型包為Forwarding復(fù)制包,二進(jìn)制代碼“b’01”表示獲得的復(fù)制類型包為copyToCPU復(fù)制包,二進(jìn)制代碼“b’10”表示獲得的復(fù)制類型包為L(zhǎng)og復(fù)制包;另外,該圖示中,Pkt0表示進(jìn)入交換芯片的多播報(bào)文,Pkt1/ Pkt2/ Pkt3表示Forwarding復(fù)制包,Pkt4表示Log復(fù)制包,Pkt5表示copyToCPU復(fù)制包。
報(bào)文根據(jù)相應(yīng)的復(fù)制類型包的編碼進(jìn)行復(fù)制后,其同時(shí)攜帶所有復(fù)制類型標(biāo)識(shí);相應(yīng)的,根據(jù)過濾出的待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼修改其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí),即標(biāo)示該復(fù)制出的報(bào)文是需要debug的。
通常情況下,可能對(duì)一個(gè)報(bào)文做多種類型的復(fù)制,因此,本發(fā)明一優(yōu)選實(shí)施方式中,若一次多播報(bào)文解析過程中,獲得多個(gè)復(fù)制類型包的編碼,則在生成相應(yīng)的復(fù)制類型包后,依次對(duì)每一個(gè)復(fù)制類型包進(jìn)行調(diào)試;并在當(dāng)前復(fù)制類型包調(diào)試結(jié)束后,將其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。如此,以節(jié)省交換芯片的空間,節(jié)約制造及使用成本,當(dāng)然,在本發(fā)明的其他實(shí)施方式中,還可以設(shè)置多組Debug寄存器,如此,可以同時(shí)處理多個(gè)復(fù)制類型包,其弊端僅在于,犧牲交換芯片的空間,在此不做詳細(xì)贅述。
本發(fā)明下述實(shí)施方式中,以本發(fā)明的優(yōu)選實(shí)施方式為例做進(jìn)一步的詳細(xì)說明。
本發(fā)明一實(shí)施方式中,所述步驟S3具體包括:
若獲取到的復(fù)制類型包的編碼與所述交換芯片當(dāng)前調(diào)試的復(fù)制類型包的編碼相同,則匹配過濾相應(yīng)的復(fù)制類型包的配置,同時(shí),將所述復(fù)制類型包對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將其它的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。
本發(fā)明一具體示例中,當(dāng)需要對(duì)哪一種復(fù)制類型包進(jìn)行在線調(diào)試時(shí),交換芯片會(huì)通過代碼配置控制寄存器;例如:通過代碼“REGISTE.debugReplicatedPktType[1:0]{.}”指定,其中{.}”為當(dāng)前需要調(diào)試的復(fù)制類型包的編碼,以指定當(dāng)前要debug哪種類型的復(fù)制報(bào)文。
本發(fā)明一實(shí)施方式中,分別以“0”“1”表示所述復(fù)制類型標(biāo)識(shí),其中“0”表示非使能標(biāo)識(shí),“1”表示使能標(biāo)識(shí),所述復(fù)制類型標(biāo)識(shí)以代碼“debugFlag”表示。
為了便于理解,下述內(nèi)容中,以應(yīng)用本發(fā)明所示方法的具體示例進(jìn)行詳細(xì)說明。
該示例中,結(jié)合圖2所示,所述方法具體包括:
P1、預(yù)配置Forwarding寄存器,其用于存儲(chǔ)當(dāng)前狀態(tài)下、交換芯片處理的Forwarding復(fù)制包的目的地和下一跳編輯的索引;
P2、獲取復(fù)制類型包的編碼;
P31、若獲取的所述編碼對(duì)應(yīng)為copyToCPU復(fù)制包,則復(fù)制形成copyToCPU復(fù)制包,同時(shí),將copyToCPU復(fù)制包的對(duì)應(yīng)的debugFlag修改為1,將其它類型的debugFlag全部置為0。
P32、若獲取的所述編碼對(duì)應(yīng)為L(zhǎng)og復(fù)制包,則復(fù)制形成Log復(fù)制包,同時(shí),將Log復(fù)制包的對(duì)應(yīng)的debugFlag修改為1,將其它類型的debugFlag全部置為0。
P33、若獲取的所述編碼對(duì)應(yīng)為Forwarding復(fù)制包,則復(fù)制形成Forwarding復(fù)制包,同時(shí),將匹配過濾到的所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引與所述預(yù)配置Forwarding寄存器中的目的地和下一跳編輯的索引進(jìn)行匹配;
將匹配到的所述Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將未能匹配的Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)以及其他復(fù)制類型標(biāo)識(shí)均設(shè)置為非使能標(biāo)識(shí)。
P4、判斷哪一個(gè)debugFlag為1,若為1,則觸發(fā)存儲(chǔ)操作。
其具體實(shí)現(xiàn)過程如下:
假設(shè),指定代碼為“REGISTE.debugReplicatedPktType[1:0] =2’b01”,表示當(dāng)前需要調(diào)試的復(fù)制類型包為copyToCPU復(fù)制包,相應(yīng)的,在Traffic Manager子模塊下,對(duì)報(bào)文進(jìn)行復(fù)制以形成copyToCPU復(fù)制包,同時(shí),將copyToCPU復(fù)制包的對(duì)應(yīng)的debugFlag修改為1,將其它類型的debugFlag全部置為0;修改后的所有復(fù)制類型標(biāo)識(shí)全部跟隨當(dāng)前復(fù)制的copyToCPU復(fù)制包傳遞;進(jìn)一步的,在Traffic Manager子模塊之后的各子模塊所對(duì)應(yīng)的debug寄存器,根據(jù)相應(yīng)的debugFlag是否為1來觸發(fā)存儲(chǔ)操作,如此,保證后續(xù)所有子模塊存儲(chǔ)相同的復(fù)制報(bào)文的處理信息,同時(shí)也是用戶期望debug的那個(gè)復(fù)制報(bào)文的處理信息。
所述Log復(fù)制包的處理過程與copyToCPU復(fù)制包的處理過程相同,在此不再繼續(xù)贅述。
所述Forwarding復(fù)制包的處理過程中,
由于復(fù)制生成的所述Forwarding復(fù)制包有多個(gè),而在報(bào)文轉(zhuǎn)發(fā)過程中,一次僅對(duì)一個(gè)復(fù)制類型包進(jìn)行在線調(diào)試,如此,需要對(duì)多個(gè)Forwarding復(fù)制包做進(jìn)一步的過濾,得到最終需求的某個(gè)復(fù)制類型包;本實(shí)施方式中,通過配置目的地和下一跳編輯索引的信息,芯片邏輯中會(huì)進(jìn)一步匹配各Forwarding復(fù)制包的轉(zhuǎn)發(fā)目的地和下一跳編輯索引是否和預(yù)設(shè)的配置信息相匹配,如果匹配則將匹配到的相應(yīng)Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將其它的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí),如此,進(jìn)一步過濾匹配相應(yīng)的Forwarding復(fù)制包,觸發(fā)后續(xù)的處理調(diào)試信息存儲(chǔ)動(dòng)作。
該具體示例中,假設(shè),指定代碼為“REGISTE.debugReplicatedPktType[1:0] =2’b0”,表示當(dāng)前需要調(diào)試的復(fù)制類型包為Forwarding復(fù)制包,該示例中,F(xiàn)orwarding復(fù)制包的數(shù)量為3個(gè),分別為:Pkt1、Pkt2、 Pkt3;
相應(yīng)的,在Traffic Manager子模塊下,對(duì)報(bào)文進(jìn)行復(fù)制以形成Forwarding復(fù)制包,同時(shí),將Forwarding復(fù)制包的對(duì)應(yīng)的debugFlag修改為1,將其它類型的debugFlag全部置為0;然而,由于Forwarding復(fù)制包的數(shù)量為多個(gè),故,需要進(jìn)一步獲取每個(gè)Forwarding復(fù)制包對(duì)應(yīng)的目的地(稱為destMap)和下一跳編輯的索引,以示區(qū)分各個(gè)Forwarding復(fù)制包;該示例中,所述目的地以代碼“destMap”表示,所述下一跳索引以代碼“nextHop”表示,相應(yīng)的,通過代碼配置“REGISTE.debugReplicatedPktType[1:0] =2’b00, case2’b00://debug forwarding type (destMap,nextHop) ”具體配置每個(gè)Forwarding復(fù)制包對(duì)應(yīng)的debugFlag;同時(shí),將獲取到的所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引與所述預(yù)配置Forwarding寄存器中的目的地和下一跳編輯的索引進(jìn)行匹配;將匹配到的所述Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將未能匹配的Forwarding復(fù)制包的debugFlag設(shè)置為1,其余的Forwarding復(fù)制包的debugFlag以及copyToCPU復(fù)制包和Log復(fù)制包的debugFlag設(shè)置為0;進(jìn)一步的,修改后的所有復(fù)制類型標(biāo)識(shí)全部跟隨當(dāng)前復(fù)制的Forwarding復(fù)制包傳遞;在Traffic Manager子模塊之后的各子模塊所對(duì)應(yīng)的debug寄存器,根據(jù)相應(yīng)的debugFlag是否為1來觸發(fā)存儲(chǔ)操作,如此,保證后續(xù)所有子模塊存儲(chǔ)相同的復(fù)制報(bào)文的處理信息,同時(shí)也是用戶期望debug的那個(gè)復(fù)制報(bào)文的處理信息。
結(jié)合圖3所示,本發(fā)明一實(shí)施方式提供的基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試系統(tǒng),所述系統(tǒng)包括:存儲(chǔ)模塊100、解析模塊200、配置模塊300、調(diào)試控制模塊400。
存儲(chǔ)模塊100,包括多個(gè)分別預(yù)置于交換芯片的各個(gè)處理子模塊中的debug寄存器,所述debug寄存器用于存儲(chǔ)多播報(bào)文轉(zhuǎn)發(fā)過程中對(duì)應(yīng)各個(gè)處理子模塊的處理調(diào)試信息;
多播報(bào)文在所述交換芯片中轉(zhuǎn)發(fā)過程中,在交換芯片的各個(gè)處理子模塊中會(huì)產(chǎn)生對(duì)應(yīng)的處理調(diào)試信息,相應(yīng)的處理調(diào)試信息固定存儲(chǔ)于相應(yīng)的處理子模塊中,本發(fā)明在每一個(gè)處理子模塊中分別預(yù)置一個(gè)debug寄存器,用于存儲(chǔ)相應(yīng)的處理調(diào)試信息,且在當(dāng)前調(diào)試輪次調(diào)試結(jié)束后,將存儲(chǔ)在各個(gè)debug寄存器中的處理調(diào)試信息進(jìn)行保存,以用于后續(xù)的調(diào)用,優(yōu)選的,在當(dāng)前輪次調(diào)試結(jié)束后,將debug寄存器中存儲(chǔ)的數(shù)據(jù)保存后,清空當(dāng)前的debug寄存器,以再次存儲(chǔ)其它報(bào)文攜帶的信息,如此,僅需要較少的一組debug寄存器,即可以滿足用戶需求,節(jié)省功耗、制造及使用成本。
解析模塊200用于:解析多播報(bào)文,查找轉(zhuǎn)發(fā)表,獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼和配置;
所述復(fù)制類型包包括:copyToCPU復(fù)制包,Log復(fù)制包,以及Forwarding復(fù)制包中的至少一種;
所述copyToCPU復(fù)制包,報(bào)文在交換芯片中轉(zhuǎn)發(fā)的同時(shí),復(fù)制一份給本地CPU,供系統(tǒng)軟件的協(xié)議棧處理,所述copyToCPU復(fù)制包中主要為一些協(xié)議報(bào)文。
所述Log復(fù)制包,報(bào)文在交換芯片中轉(zhuǎn)發(fā)的同時(shí),網(wǎng)絡(luò)中有一些特征需要根據(jù)網(wǎng)管的配置,對(duì)某種特征的報(bào)文或者在交換芯片的某個(gè)接口上,定期采樣或者鏡像input/output包到一個(gè)特定的目的端口上,該目的端口連接一臺(tái)專用偵聽設(shè)備,同步分析被鏡像或采樣過來的Log復(fù)制包,以使網(wǎng)管根據(jù)分析的數(shù)據(jù)對(duì)整個(gè)網(wǎng)絡(luò)當(dāng)前的狀態(tài)有所了解。
所述Forwarding復(fù)制包,組播報(bào)文正常轉(zhuǎn)發(fā)復(fù)制到各成員,成員的加入和退出由組播協(xié)議維護(hù);例如:一個(gè)二層組播報(bào)文會(huì)在該VLAN中廣播,當(dāng)前設(shè)備上所有加入該VLAN的端口都會(huì)收到一個(gè)復(fù)制報(bào)文。
多播報(bào)文在所述交換芯片中轉(zhuǎn)發(fā)過程中,芯片根據(jù)不同的需求,在芯片的處理邏輯中對(duì)所述多播報(bào)文進(jìn)行解析,查找轉(zhuǎn)發(fā)表,其獲得的復(fù)制類型包的編碼類型以及相應(yīng)的配置也會(huì)隨之變換,在此不做詳細(xì)贅述。
結(jié)合圖4所示,交換芯片的入口處,設(shè)置的其中一個(gè)處理子模塊為Ingress PipeLine,該具體示例中,Ingress PipeLine即為上述的解析模塊200;該處理子模塊用于解析多播報(bào)文,并查找轉(zhuǎn)發(fā)表,以獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼;
解析模塊200解析報(bào)文過程中,會(huì)獲得報(bào)文轉(zhuǎn)發(fā)過程中所需的全部信息,其中,若獲取到的待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼中包括Forwarding復(fù)制包的編碼時(shí),還需要同時(shí)解析所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引,以供后續(xù)匹配過濾所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引以下將會(huì)詳細(xì)說明。
配置模塊300用于:預(yù)配置復(fù)制類型標(biāo)識(shí),所述復(fù)制類型標(biāo)識(shí)包括:copyToCPU標(biāo)識(shí)、Log標(biāo)識(shí)以及Forwarding標(biāo)識(shí);
調(diào)試控制模塊400用于根據(jù)獲取待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼,匹配過濾復(fù)制類型包的配置,并對(duì)過濾出的復(fù)制類型包修改其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí);
可以理解的是,所述預(yù)置的復(fù)制類型標(biāo)識(shí),其可以根據(jù)調(diào)試的需要,自行配置和更改,其為報(bào)文轉(zhuǎn)發(fā)過程中所涉及到的復(fù)制類型包對(duì)應(yīng)的標(biāo)識(shí)信息,其為一種過濾條件,用于過濾所需求的復(fù)制類型包。
接續(xù)圖4所示,交換芯片中的其中一個(gè)處理子模塊為Traffic Manager,該具體示例中,Traffic Manager即為上述的調(diào)試控制模塊400;其根據(jù)獲取的復(fù)制類型包的編碼,在該處理子模塊下,復(fù)制生成相應(yīng)的復(fù)制類型包,并匹配過濾相應(yīng)的復(fù)制類型包的配置,同時(shí),對(duì)相應(yīng)的復(fù)制類型標(biāo)識(shí)進(jìn)行修改。
所述Traffic Manager為交換芯片中的QoS模塊,包括packet buffer管理,隊(duì)列的調(diào)度和管理,多播復(fù)制,丟包策略等。
報(bào)文在所述Ingress PipeLine處理子模塊和TrafficManager處理子模塊之間的其它處理子模塊中轉(zhuǎn)發(fā)時(shí),由于其為一個(gè)整體的報(bào)文數(shù)據(jù),因此,其攜帶的相應(yīng)臨時(shí)和關(guān)鍵的處理調(diào)試信息依次保留至相應(yīng)的處理子模塊中的debug寄存器即可以滿足調(diào)試需求。
進(jìn)一步的,報(bào)文到達(dá)TrafficManager處理子模塊時(shí),會(huì)產(chǎn)生多種類型的復(fù)制類型包,相應(yīng)的,報(bào)文在該處理子模塊一直到交換芯片的出端口之間轉(zhuǎn)發(fā)時(shí),也會(huì)涉及到多種類型的復(fù)制類型包中攜帶的處理調(diào)試信息的存儲(chǔ)問題,如此,本發(fā)明結(jié)合復(fù)制類型包對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí),解決該調(diào)試存儲(chǔ)問題。
接續(xù)圖4所示,獲得的復(fù)制類型包的編碼可能有3種,其各自的編碼以二進(jìn)制代碼表示,分別為“b’00”“b’01”“b’10”表示,其中,二進(jìn)制代碼“b’00”表示獲得的復(fù)制類型包為Forwarding復(fù)制包,二進(jìn)制代碼“b’01”表示獲得的復(fù)制類型包為copyToCPU復(fù)制包,二進(jìn)制代碼“b’10”表示獲得的復(fù)制類型包為L(zhǎng)og復(fù)制包;另外,該圖示中,Pkt0表示進(jìn)入交換芯片的多播報(bào)文,Pkt1/ Pkt2/ Pkt3表示Forwarding復(fù)制包,Pkt4表示Log復(fù)制包,Pkt5表示copyToCPU復(fù)制包。
報(bào)文根據(jù)相應(yīng)的復(fù)制類型包的編碼進(jìn)行復(fù)制后,其同時(shí)攜帶所有復(fù)制類型標(biāo)識(shí);相應(yīng)的,調(diào)試控制模塊400根據(jù)過濾出的待調(diào)試的多播報(bào)文的復(fù)制類型包的編碼修改其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí),即標(biāo)示該復(fù)制出的報(bào)文是需要debug的。
通常情況下,可能對(duì)一個(gè)報(bào)文做多種類型的復(fù)制,因此,本發(fā)明一優(yōu)選實(shí)施方式中,若一次多播報(bào)文解析過程中,獲得多個(gè)復(fù)制類型包的編碼,則調(diào)試控制模塊400在生成相應(yīng)的復(fù)制類型包后,依次對(duì)每一個(gè)復(fù)制類型包進(jìn)行調(diào)試;并在當(dāng)前復(fù)制類型包調(diào)試結(jié)束后,將其對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。如此,以節(jié)省交換芯片的空間,節(jié)約制造及使用成本,當(dāng)然,在本發(fā)明的其他實(shí)施方式中,還可以設(shè)置多組Debug寄存器,如此,可以同時(shí)處理多個(gè)復(fù)制類型包,其弊端僅在于,增加交換芯片尺寸(dieSize),導(dǎo)致增加芯片的成本,在此不做詳細(xì)贅述。
本發(fā)明下述實(shí)施方式中,以本發(fā)明的優(yōu)選實(shí)施方式為例做進(jìn)一步的詳細(xì)說明。
本發(fā)明一實(shí)施方式中,調(diào)試控制模塊400具體用于:若獲取到的復(fù)制類型包的編碼與所述交換芯片當(dāng)前調(diào)試的復(fù)制類型包的編碼相同,則匹配過濾相應(yīng)的復(fù)制類型包的配置,同時(shí),將所述復(fù)制類型包對(duì)應(yīng)的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將其它的復(fù)制類型標(biāo)識(shí)設(shè)置為非使能標(biāo)識(shí)。
本發(fā)明一具體示例中,當(dāng)需要對(duì)哪一種復(fù)制類型包進(jìn)行在線調(diào)試時(shí),配置模塊300通過代碼配置控制寄存器;例如:通過代碼“REGISTE.debugReplicatedPktType[1:0]{.}”指定,其中{.}”為當(dāng)前需要調(diào)試的復(fù)制類型包的編碼,以指定當(dāng)前要debug哪種類型的復(fù)制報(bào)文。
本發(fā)明一實(shí)施方式中,分別以“0”“1”表示所述復(fù)制類型標(biāo)識(shí),其中“0”表示非使能標(biāo)識(shí),“1”表示使能標(biāo)識(shí),所述復(fù)制類型標(biāo)識(shí)以代碼“debugFlag”表示。
為了便于理解,下述內(nèi)容中,以應(yīng)用本發(fā)明所示方法的具體示例進(jìn)行詳細(xì)說明。
進(jìn)一步的,配置模塊300還用于預(yù)配置Forwarding寄存器,所述Forwarding寄存器用于存儲(chǔ)當(dāng)前狀態(tài)下、交換芯片處理的Forwarding復(fù)制包的目的地和下一跳編輯的索引;
調(diào)試控制模塊400用于獲取復(fù)制類型包的編碼;
若獲取的所述編碼對(duì)應(yīng)為copyToCPU復(fù)制包,則復(fù)制形成copyToCPU復(fù)制包,同時(shí),將copyToCPU復(fù)制包的對(duì)應(yīng)的debugFlag修改為1,將其它類型的debugFlag全部置為0。
若獲取的所述編碼對(duì)應(yīng)為L(zhǎng)og復(fù)制包,則復(fù)制形成Log復(fù)制包,同時(shí),將Log復(fù)制包的對(duì)應(yīng)的debugFlag修改為1,將其它類型的debugFlag全部置為0。
若獲取的所述編碼對(duì)應(yīng)為Forwarding復(fù)制包,則復(fù)制形成Forwarding復(fù)制包,同時(shí),將匹配過濾到的所述Forwarding復(fù)制包對(duì)應(yīng)的目的地和下一跳編輯的索引與所述預(yù)配置Forwarding寄存器中的目的地和下一跳編輯的索引進(jìn)行匹配;
將匹配到的所述Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)設(shè)置為使能標(biāo)識(shí),將未能匹配的Forwarding復(fù)制包的復(fù)制類型標(biāo)識(shí)以及其他復(fù)制類型標(biāo)識(shí)均設(shè)置為非使能標(biāo)識(shí)。
判斷哪一個(gè)debugFlag為1,若為1,則觸發(fā)存儲(chǔ)操作。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)和模塊的具體工作過程,可參考前述方法實(shí)施方式中的對(duì)應(yīng)過程,在此不再贅述。
綜上所述,本發(fā)明的基于多播復(fù)制報(bào)文的實(shí)時(shí)調(diào)試方法及調(diào)試系統(tǒng),普遍適用于各類型的以太網(wǎng)絡(luò),例如:企業(yè)網(wǎng)、城域網(wǎng)、數(shù)據(jù)中心等的各層次,例如:接入層、匯聚層、核心層的交換設(shè)備上的數(shù)據(jù)分析和問題定位。本發(fā)明僅用一組調(diào)試寄存器即可以實(shí)現(xiàn)對(duì)多播報(bào)文復(fù)雜復(fù)制后的報(bào)文進(jìn)行靈活且實(shí)時(shí)調(diào)試的目的,大大減少了交換芯片能耗,提升交換芯片對(duì)多播報(bào)文的在線調(diào)試能力,為調(diào)試定位芯片帶來極大的便利。
為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
以上所描述的裝置實(shí)施方式僅僅是示意性的,其中所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)模塊上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施方式方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
應(yīng)當(dāng)理解,雖然本說明書按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個(gè)整體,各實(shí)施方式中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。
上文所列出的一系列的詳細(xì)說明僅僅是針對(duì)本發(fā)明的可行性實(shí)施方式的具體說明,它們并非用以限制本發(fā)明的保護(hù)范圍,凡未脫離本發(fā)明技藝精神所作的等效實(shí)施方式或變更均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。