專利名稱:數(shù)據(jù)信元處理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,尤其涉及一種數(shù)據(jù)信元處理方法和裝置。
背景技術(shù):
在數(shù)據(jù)通信領(lǐng)域,對(duì)數(shù)據(jù)產(chǎn)品的交換容量的需求越來(lái)越高。目前交換網(wǎng)專用芯片 支持的交換容量也越來(lái)越大,支持的端口數(shù)也越來(lái)越多,比如64X64交換、96X96交換、 128X 128交換,同時(shí)也支持3級(jí)CLOS網(wǎng)絡(luò)的級(jí)聯(lián)。在現(xiàn)實(shí)組網(wǎng)中,組網(wǎng)方式存在很大的靈活性。在交換容量滿足的情況下,或者為了 保證系統(tǒng)的連接健壯性,交換網(wǎng)芯片之間往往會(huì)設(shè)置多條鏈路連接。一方面提高了交換網(wǎng) 芯片的端口利用率,另一方面也提高了兩個(gè)芯片之間的傳輸帶寬。為了便于說(shuō)明,提出交換 網(wǎng)端口聚合(Trunk)的概念,具體是指通過(guò)寄存器配置,將2個(gè)或多個(gè)物理端口組合在一起 成為一個(gè)邏輯端口,這個(gè)邏輯端口的物理帶寬等于所有成員端口的帶寬之和。這樣就提供 了 一種靈活的組網(wǎng)并增加端口帶寬的方法。兩個(gè)交換網(wǎng)芯片之間有N條鏈路相連接,則稱為Trunk = N。圖1為交換網(wǎng)Trunk 連接的示意圖,交換網(wǎng)芯片A和交換網(wǎng)芯片B有4條鏈路連接(101),稱之為Trunk = 4,交 換網(wǎng)芯片A和交換網(wǎng)芯片C有6條鏈路連接(102),稱之為"Trunk = 6。假設(shè)圖1中的芯片D和芯片E分別為2個(gè)目的芯片。某個(gè)單播信元的目的地址為 D,則需要經(jīng)過(guò)交換網(wǎng)芯片A,完成Trunk = 4的負(fù)載均衡鏈路選擇,到達(dá)交換網(wǎng)芯片B,再到 達(dá)目的芯片D ;某個(gè)單播信元的目的地址為E,則需要經(jīng)過(guò)交換網(wǎng)芯片A,完成Trunk = 6的 負(fù)載均衡鏈路選擇,到達(dá)交換網(wǎng)芯片C,再到達(dá)目的芯片E。某個(gè)多播信元的目的地址為D 和E,則首先需要在交換網(wǎng)芯片A完成到2個(gè)目的地址的信元復(fù)制,然后其中一個(gè)信元完成 Trunk = 4的負(fù)載均衡鏈路選擇,通過(guò)B到達(dá)D,另一個(gè)信元完成Trunk = 6的負(fù)載均衡鏈 路選擇,通過(guò)C到達(dá)E。但如何實(shí)現(xiàn)數(shù)據(jù)信元的處理尚缺乏明確的解決機(jī)制。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種數(shù)據(jù)信元處理方法和裝置,以提高交換效率。為解決以上技術(shù)問(wèn)題,本發(fā)明提供了一種數(shù)據(jù)信元處理方法,該方法包括配置單播路由表和多播路由表,其中所述單播路由表包括單播目的地址與端口聚 合(Trunk)的對(duì)應(yīng)關(guān)系,所述多播路由表包括多播組地址與Trunk的對(duì)應(yīng)關(guān)系;接收數(shù)據(jù)信元; 根據(jù)所述數(shù)據(jù)信元類型確定對(duì)應(yīng)的端口聚合(Trunk),其中,若為單播信元,則提 取單播信元的目的地址,查詢單播路由表,得到所述單播信元對(duì)應(yīng)的Trunk ;若為多播信 元,則提取所述多播信元的多播組地址,查詢多播路由表,得到所述多播信元對(duì)應(yīng)的一個(gè)或 多個(gè)Trunk ;
根據(jù)預(yù)置的負(fù)載均衡策略從確定的Trunk中選擇輸出鏈路,并通過(guò)所述選擇的輸 出鏈路發(fā)送所述數(shù)據(jù)信元。進(jìn)一步地,所述負(fù)載均衡策略包括以下一種或多種組合緩存深度選擇策略,每個(gè)輸出鏈路的輸出端口對(duì)應(yīng)一個(gè)用于緩存待發(fā)送的數(shù)據(jù)信 元的虛擬輸出隊(duì)列,根據(jù)所述各輸出端口的虛擬輸出隊(duì)列的緩存深度進(jìn)行選擇;掩碼選擇策略,利用選擇掩碼寄存器中掩碼與端口的對(duì)應(yīng)關(guān)系,從未選擇的端口 對(duì)應(yīng)的掩碼中選擇;從待選的端口中隨機(jī)選擇。進(jìn)一步地,利用選擇掩碼寄存器選擇端口時(shí),掩碼的位寬與端口數(shù)相同,不同的 Trunk對(duì)應(yīng)的選擇起始掩碼相同或不同。進(jìn)一步地,選擇掩碼的翻轉(zhuǎn)規(guī)則包括選擇掩碼寄存器的所有選擇掩碼均表示已選時(shí),所有選擇掩碼翻轉(zhuǎn);選擇掩碼寄存器的所有選擇掩碼與有效鏈路信息相與結(jié)果為全無(wú)效值,則翻轉(zhuǎn)成 上一個(gè)輸出結(jié)果的取反。進(jìn)一步地,根據(jù)預(yù)置的負(fù)載均衡策略從對(duì)應(yīng)的Trunk中選擇輸出鏈路包括(a)根據(jù)選擇掩碼寄存器從待選鏈路中確定備選端口,若備選端口唯一,則該備 選端口為最終輸出端口 ;若備選端口有多個(gè),則執(zhí)行步驟(b),若無(wú)備選端口,則執(zhí)行步驟 (c);(b)根據(jù)虛擬輸出隊(duì)列深度從所述備選端口中選擇輸出端口,若深度最小的端口 唯一,則選擇最小的備選端口為最終輸出端口,否隨機(jī)選擇其中一個(gè)作為最終輸出端口 ;(c)根據(jù)虛擬輸出隊(duì)列深度從待選鏈路中選擇輸出端口,若深度最小的端口唯一, 則選擇最小的備選端口為最終輸出端口,否隨機(jī)選擇其中一個(gè)作為最終輸出端口 ;(d)翻轉(zhuǎn)所述最終輸出端口對(duì)應(yīng)掩碼,流程結(jié)束。進(jìn)一步地,確定對(duì)應(yīng)的Trunk,選擇輸出鏈路前,該方法還包括,從所有輸出鏈路中 排除物理無(wú)效鏈路和/或預(yù)置的無(wú)效鏈路得到有效鏈路,再?gòu)乃鲇行ф溌分羞x擇輸出鏈路。為解決以上技術(shù)問(wèn)題,本發(fā)明還提供了一種數(shù)據(jù)信元處理裝置,該裝置包括配置模塊,用于配置單播路由表和多播路由表,其中所述單播路由表包括單播目 的地址與端口聚合(Trunk)的對(duì)應(yīng)關(guān)系,所述多播路由表包括多播組地址與Trunk的對(duì)應(yīng) 關(guān)系;接收模塊,用于接收數(shù)據(jù)信元;Trunk確定模塊,用于根據(jù)所述數(shù)據(jù)信元類型確定對(duì)應(yīng)的端口聚合(Trunk),其 中,若為單播信元,則提取單播信元的目的地址,查詢單播路由表,得到所述單播信元對(duì)應(yīng) 的Trunk ;若為多播信元,則提取所述多播信元的多播組地址,查詢多播路由表,得到所述 多播信元對(duì)應(yīng)的一個(gè)或多個(gè)iTrunk ;輸出鏈路選擇模塊,用于根據(jù)預(yù)置的負(fù)載均衡策略從所述Trunk確定模塊確定的 Trunk中選擇輸出鏈路;發(fā)送模塊,用于通過(guò)所述選擇的輸出鏈路發(fā)送所述數(shù)據(jù)信元。進(jìn)一步地,所述鏈路選擇模塊包括
主電路,用于根據(jù)選擇掩碼寄存器從有效鏈路中確定備選端口,備選端口唯一時(shí), 該備選端口為輸出端口 ;備選端口有多個(gè)時(shí),根據(jù)虛擬輸出隊(duì)列深度從所述備選端口中選 擇輸出端口,若深度最小的端口唯一,則選擇最小的備選端口為輸出端口,否隨機(jī)選擇其中 一個(gè)作為輸出端口;副電路,用于根據(jù)虛擬輸出隊(duì)列深度從所述有效鏈路中選擇輸出端口,若深度最 小的端口唯一,則選擇最小的備選端口為輸出端口,否則隨機(jī)選擇其中一個(gè)作為輸出端口。端口確定子模塊,用于在主電路選擇出輸出端口時(shí),確定所述主電路輸出結(jié)果為 最終輸出端口,在主電路未選擇出輸出端口,且副電路選擇出輸出端口時(shí),確定副電路輸出 結(jié)果為最終輸出端口;掩碼翻轉(zhuǎn)子模塊,用于根據(jù)所述端口確定子模塊翻轉(zhuǎn)對(duì)應(yīng)的掩碼。本發(fā)明方法和裝置提供了一種實(shí)現(xiàn)數(shù)據(jù)信元在交換網(wǎng)中的處理的方案,提高交換 的效率且利用預(yù)置負(fù)載均衡策略,能有效的實(shí)現(xiàn)數(shù)據(jù)信元在不同鏈路間的負(fù)載均衡,保證 了各鏈路的業(yè)務(wù)量均衡,同時(shí)也降低了數(shù)據(jù)信元在交換網(wǎng)內(nèi)部的延時(shí)。
附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書的一部分,與本發(fā)明的實(shí) 施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。圖1是本發(fā)明的交換網(wǎng)Trunk連接示意圖;圖2是本發(fā)明數(shù)據(jù)信元處理方法的示意圖;圖3是本發(fā)明數(shù)據(jù)信元處理流程的實(shí)施例示意圖;圖4是本發(fā)明選擇輸出端口的實(shí)現(xiàn)方式示意圖;圖5是本發(fā)明的負(fù)載均衡電路的主、副電路結(jié)構(gòu)示意圖;圖6是本發(fā)明的負(fù)載均衡電路的主、副電路輸出結(jié)果選擇流程示意圖;圖7是本發(fā)明數(shù)據(jù)信元處理裝置的模塊結(jié)構(gòu)示意圖;圖8是本發(fā)明數(shù)據(jù)信元處理裝置的又一模塊結(jié)構(gòu)示意圖。
具體實(shí)施例方式如圖2所示,本發(fā)明數(shù)據(jù)信元處理方法包括步驟201 配置單播路由表和多播路由表,其中所述單播路由表包括單播目的地 址與端口聚合(Trunk)的對(duì)應(yīng)關(guān)系,所述多播路由表包括多播組地址與Trunk的對(duì)應(yīng)關(guān) 系;步驟202 接收數(shù)據(jù)信元;步驟203 根據(jù)所述數(shù)據(jù)信元類型確定對(duì)應(yīng)的端口聚合(Trunk),其中,若為單播 信元,則提取單播信元的目的地址,查詢單播路由表,得到所述單播信元對(duì)應(yīng)的Trunk ;若 為多播信元,則提取所述多播信元的多播組地址,查詢多播路由表,得到所述多播信元對(duì)應(yīng) 的一個(gè)或多個(gè)Trunk ;步驟204 根據(jù)預(yù)置的負(fù)載均衡策略從確定的Trunk中選擇輸出鏈路,并通過(guò)所述 選擇的輸出鏈路發(fā)送所述數(shù)據(jù)信元。所述負(fù)載均衡策略包括以下一種或多種組合
緩存深度選擇策略,每個(gè)輸出鏈路的輸出端口對(duì)應(yīng)一個(gè)用于緩存待發(fā)送的數(shù)據(jù)信 元的虛擬輸出隊(duì)列,根據(jù)所述各輸出端口的虛擬輸出隊(duì)列的緩存深度進(jìn)行選擇;掩碼選擇策略,利用選擇掩碼寄存器中掩碼與端口的對(duì)應(yīng)關(guān)系,從未選擇的端口 對(duì)應(yīng)的掩碼中選擇;從待選的端口中隨機(jī)選擇。確定對(duì)應(yīng)的Trunk,選擇輸出鏈路前,該方法還包括,從所有輸出鏈路中排除物理 無(wú)效鏈路和/或預(yù)置的無(wú)效鏈路得到有效鏈路,再?gòu)乃鲇行ф溌分羞x擇輸出鏈路。以上幾種負(fù)載均衡策略可以單獨(dú)使用,也可以結(jié)合不同的邏輯關(guān)系組合使用,以 下結(jié)合附圖進(jìn)行具體說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相
互組合。下面結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,此處所描述的優(yōu)選實(shí)施例僅用于 說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。實(shí)施例1如圖3所示,數(shù)據(jù)信元處理流程示意圖步驟S301,通過(guò)軟件配置Trunk分組,配置單播路由表和多播路由表,其中所述單 播路由表包括單播目的地址與端口聚合(Trunk)的對(duì)應(yīng)關(guān)系,所述多播路由表包括多播組 地址與Trunk的對(duì)應(yīng)關(guān)系;Trunk的分組是與實(shí)際組網(wǎng)相關(guān)的,每一種組網(wǎng)結(jié)構(gòu)中一般只存在一種Trunk分 組,不同的iTrunk分組不會(huì)在同一種組網(wǎng)結(jié)構(gòu)中出現(xiàn)。步驟S302,通過(guò)軟件配置單播和多播的出端口過(guò)濾寄存器(Mask);單播和多播出端口 Mask是指用戶可以根據(jù)需要設(shè)定某些鏈路是否可以用于單播 或多播數(shù)據(jù)的輸出。步驟S303,接收到的數(shù)據(jù)信元進(jìn)行類型識(shí)別,單播信元執(zhí)行步驟S304,多播信元 則執(zhí)行步驟S310;步驟S304,提取單播信元攜帶的目的地址信息;步驟S305,根據(jù)步驟S304提取的目的地址信息查詢單播路由表,得到對(duì)應(yīng)的單播 輸出的Trunk編號(hào);步驟S306,在步驟S305輸出的Trunk編號(hào)基礎(chǔ)上進(jìn)行物理無(wú)效鏈路的過(guò)濾,得到 單播對(duì)應(yīng)輸出iTrunk中所有有效鏈路;物理無(wú)效鏈路是指物理線路異常的鏈路,可由鏈路的突然中斷或線路的傳輸誤碼 率過(guò)高等原因?qū)е?,如果用這樣的鏈路來(lái)傳輸數(shù)據(jù),則不能保證數(shù)據(jù)能正確發(fā)送出去。步驟S307,在步驟S306的基礎(chǔ)上,排除軟件配置不允許單播輸出的無(wú)效鏈路,得 到最終的可輸出該單播信元的全部有效鏈路;步驟S308,在步驟S307所選擇的鏈路中,根據(jù)虛擬輸出隊(duì)列(VOQ)緩存深度,完成 輸出鏈路選擇;交換網(wǎng)芯片的每一個(gè)輸出端口對(duì)應(yīng)著一個(gè)虛擬輸出隊(duì)列(VOQ)緩存,用于存放已 經(jīng)完成鏈路查表選擇而還未發(fā)送出去的數(shù)據(jù)。如果某個(gè)端口的VOQ緩存深度比較深,說(shuō)明 此端口積壓的未發(fā)送數(shù)據(jù)比較多,如果再選擇往這條鏈路發(fā)送數(shù)據(jù),則會(huì)更加惡化這條鏈路的擁塞程度;相反,某個(gè)端口的VOQ緩存深度比較淺,說(shuō)明此端口積壓的未發(fā)送數(shù)據(jù)比較 少,鏈路發(fā)送比較通暢,將優(yōu)先選擇這樣的鏈路進(jìn)行數(shù)據(jù)發(fā)送。步驟S309,根據(jù)步驟S308選擇的鏈路將該單播信元從該鏈路中發(fā)送出去,當(dāng)前單 播流程處理完成,返回步驟S303。步驟S310,提取多播信元攜帶的多播組地址信息;步驟S311,根據(jù)步驟S310提取的多播組地址信息查詢多播路由表,得到該多播信 元應(yīng)復(fù)制的iTrunk組;步驟S312,將該多播信元復(fù)制到各個(gè)Trunk組,即向每個(gè)Trunk都輸出該多播信 元;步驟S313,在每個(gè)Trunk內(nèi)進(jìn)行物理無(wú)效鏈路的過(guò)濾,得到可以輸出的物理有效 鏈路;步驟S314,將步驟S313多播對(duì)應(yīng)輸出Trunk中的所有物理有效鏈路,排除軟件配 置不允許多播輸出的鏈路,得到最終的可輸出該多播信元的全部有效鏈路;步驟S315,在步驟S314所選擇的鏈路中,每個(gè)Trunk內(nèi)根據(jù)虛擬輸出隊(duì)列(VOQ) 緩存深度,具體同S308,完成輸出鏈路選擇;步驟S316,根據(jù)步驟S315的結(jié)果,重復(fù)步驟S313 步驟S315,完成該多播信元的 復(fù)制與輸出,返回步驟S303。為近一步理解本發(fā)明實(shí)施例,下面通過(guò)具體實(shí)施例對(duì)本發(fā)明提供的技術(shù)方案進(jìn)行 說(shuō)明。某待處理信元A,經(jīng)過(guò)類型判別為單播信元,則提取其攜帶的目的地址查詢單播路 由表,再對(duì)查表結(jié)果進(jìn)行無(wú)效鏈路過(guò)濾后得到0#、1#、姊三條鏈路可以抵達(dá),假設(shè)上一次的 選擇結(jié)果是0#鏈路,則本次將在1#和2#鏈路之間選擇。如果1#鏈路和2#鏈路的VOQ緩 存深度相等,則在1#和姊鏈路之間隨機(jī)選擇一條作為輸出即可;如果1#鏈路和姊鏈路的 VOQ緩存深度不相等,則本次將選擇VOQ緩存深度較淺的那條鏈路作為輸出鏈路。某待處理信元B,經(jīng)過(guò)類型判別為多播信元,則提取其攜帶的多播組地址查詢多播 路由表,得到需要復(fù)制的Trunk組,假設(shè)需要復(fù)制到Trunk M和"Trunk N,則在IYunk M和 Trunk N內(nèi)分別執(zhí)行類似上述單播信元A的處理。最終,在Trunk M內(nèi)選擇一條輸出鏈路, 在Trunk N內(nèi)選擇一條輸出鏈路,分別輸出多播信元B即可。在以上實(shí)施例1中,在確定的Trunk中確定輸出鏈路時(shí),先從所有鏈路中選擇出 有效鏈路,再根據(jù)虛擬輸出隊(duì)列(VOQ)緩存深度選擇輸出鏈路,可變換地,如圖4所示,各 Trunk也可以根據(jù)以下方法確定輸出鏈路(401)根據(jù)選擇掩碼寄存器從待選鏈路中確定備選端口,若備選端口唯一,則該備 選端口為最終輸出端口 ;若備選端口有多個(gè),則執(zhí)行步驟002),若無(wú)備選端口,則執(zhí)行步 驟 ;(402)根據(jù)虛擬輸出隊(duì)列深度從所述備選端口中選擇輸出端口,若深度最小的 端口唯一,則選擇最小的備選端口為最終輸出端口,否隨機(jī)選擇其中一個(gè)作為最終輸出端 Π ;(403)根據(jù)虛擬輸出隊(duì)列深度從待選鏈路中選擇輸出端口,若深度最小的端口唯 一,則選擇最小的備選端口為最終輸出端口,否隨機(jī)選擇其中一個(gè)作為最終輸出端口 ;
(404)翻轉(zhuǎn)所述最終輸出端口對(duì)應(yīng)掩碼,流程結(jié)束。具體地,以上圖4流程可由兩個(gè)子電路實(shí)現(xiàn),如圖5所示,本發(fā)明將其稱為主電路 和副電路。主電路具有選擇記憶功能,電路中設(shè)置一個(gè)選擇掩碼寄存器,能記錄本次的選擇 結(jié)果并能作用于下一次負(fù)載均衡選擇運(yùn)算,以此保證各端口不會(huì)連續(xù)被選到。主電路選擇掩碼的位寬與交換網(wǎng)的端口數(shù)相等,每一位與端口一一對(duì)應(yīng),掩碼規(guī) 則為當(dāng)前結(jié)果選中了哪些端口,就將對(duì)應(yīng)位置成0(這里是具體示意,當(dāng)然也可以設(shè)置為1, 以下設(shè)置相應(yīng)改變),未選到位保持原值。主電路選擇掩碼也受Trunk配置的作用,分成不同的Trunk組,每個(gè)"Trunk內(nèi)選擇 掩碼的翻轉(zhuǎn)規(guī)則為1) Trunk內(nèi)的選擇掩碼為全0則翻轉(zhuǎn)成全1,并作用于下一次選擇運(yùn)算,即,選擇掩 碼寄存器的所有選擇掩碼均表示已選時(shí),所有選擇掩碼翻轉(zhuǎn);2)Trunk內(nèi)的選擇掩碼和有效鏈路信息相與的結(jié)果為全0則翻轉(zhuǎn)成上一個(gè)輸出結(jié) 果的取反,即,Trunk內(nèi)的選擇掩碼和有效鏈路信息相與的結(jié)果為全無(wú)效值則翻轉(zhuǎn)成上一個(gè) 輸出結(jié)果的取反。以Trunk = 4為例,選擇掩碼為4’ bllOO,有效鏈路信息為4’ bllll,兩者相 與為4’ bllOO,在兩個(gè)為1的鏈路中選擇出一條鏈路即可,如bit2的1,輸出的結(jié)果就 為4’ b0100,當(dāng)前信元處理結(jié)束,接下來(lái)進(jìn)行下一個(gè)信元的處理。此時(shí)選擇掩碼變成了 4’bl000,新進(jìn)入的有效鏈路信息為4’b0011,兩者相與為4’b0000,這樣主電路就選不出結(jié) 果了,此種情況需要使用副電路的結(jié)果,并且選擇掩碼翻轉(zhuǎn)成上一個(gè)輸出結(jié)果4’ b0100的 取反:4,blOll。副電路具有全端口選擇功能,確保在主電路無(wú)有效結(jié)果輸出時(shí)能采用副電路的結(jié)果。主電路和副電路每次都同時(shí)運(yùn)算,最終結(jié)果的選擇遵循如下規(guī)則主電路的結(jié)果 有效(即,有效指確定唯一的輸出端口)時(shí)則輸出主電路的結(jié)果;主電路的結(jié)果無(wú)效副電路 的結(jié)果有效時(shí),輸出副電路的結(jié)果;主電路、副電路的結(jié)果都無(wú)效時(shí),則當(dāng)前輸出結(jié)果無(wú)效。圖5為本發(fā)明所述的負(fù)載均衡電路的結(jié)構(gòu)圖,輸入(501)為所有有效的鏈路信息 及VOQ緩存深度信息,這些信息同時(shí)送入主電路(50 和副電路(503),同時(shí)送入主電路 的還有每次根據(jù)輸出結(jié)果計(jì)算出的選擇掩碼(即,根據(jù)選擇端口進(jìn)行過(guò)翻轉(zhuǎn)處理的掩碼) (504),主、副電路同步計(jì)算,各計(jì)算出一個(gè)結(jié)果,經(jīng)過(guò)MUX選擇后完成輸出(505)。圖6為主、副電路輸出結(jié)果的選擇流程圖,首先MUX判斷主電路輸出結(jié)果是否有效 (601),如果主電路輸出結(jié)果有效則輸出主電路結(jié)果(602),否則判斷副電路結(jié)果是否有效 (603),如果副電路輸出結(jié)果有效則輸出副電路結(jié)果(604),否則輸出無(wú)效值(605)。相應(yīng)于上述方法,本發(fā)明進(jìn)而提出了一種數(shù)據(jù)信元處理裝置,如圖7所示,該裝置 包括配置模塊,用于配置單播路由表和多播路由表,其中所述單播路由表包括單播目 的地址與端口聚合(Trunk)的對(duì)應(yīng)關(guān)系,所述多播路由表包括多播組地址與Trunk的對(duì)應(yīng) 關(guān)系;接收模塊,用于接收數(shù)據(jù)信元;
Trunk確定模塊,用于根據(jù)所述數(shù)據(jù)信元類型確定對(duì)應(yīng)的端口聚合(Trunk),其 中,若為單播信元,則提取單播信元的目的地址,查詢單播路由表,得到所述單播信元對(duì)應(yīng) 的Trunk ;若為多播信元,則提取所述多播信元的多播組地址,查詢多播路由表,得到所述 多播信元對(duì)應(yīng)的一個(gè)或多個(gè)iTrunk ;輸出鏈路選擇模塊,用于根據(jù)預(yù)置的負(fù)載均衡策略從所述Trunk確定模塊確定的 Trunk中選擇輸出鏈路;發(fā)送模塊,用于通過(guò)所述選擇的輸出鏈路發(fā)送所述數(shù)據(jù)信元。若采用VOQ緩存隊(duì)列,則將要輸出的數(shù)據(jù)信元存入到最終輸出端口的VOQ緩存隊(duì) 列中,等待輸出;每個(gè)隊(duì)列維護(hù)一個(gè)VOQ緩存深度計(jì)數(shù)器,進(jìn)入一個(gè)信元加1,輸出一個(gè)信元 則減1,并將VOQ緩存深度信息實(shí)時(shí)的輸出至輸出鏈路選擇模塊。所述輸出鏈路選擇模塊選擇所述輸出鏈路時(shí)依據(jù)的負(fù)載均衡策略包括以下一種 或多種組合緩存深度選擇策略,每個(gè)輸出鏈路的輸出端口對(duì)應(yīng)一個(gè)用于緩存待發(fā)送的數(shù)據(jù)信 元的虛擬輸出隊(duì)列,根據(jù)所述各輸出端口的虛擬輸出隊(duì)列的緩存深度進(jìn)行選擇;掩碼選擇策略,利用選擇掩碼寄存器中掩碼與端口的對(duì)應(yīng)關(guān)系,從未選擇的端口 對(duì)應(yīng)的掩碼中選擇;從待選的端口中隨機(jī)選擇。進(jìn)一步地,利用選擇掩碼寄存器選擇端口時(shí),掩碼的位寬與端口數(shù)相同,不同的 Trunk對(duì)應(yīng)的選擇掩碼相同或不同。選擇掩碼的翻轉(zhuǎn)規(guī)則包括選擇掩碼寄存器的所有選擇掩碼均表示已選時(shí),所有選擇掩碼翻轉(zhuǎn);選擇掩碼寄存器的所有選擇掩碼與有效鏈路信息相與結(jié)果為全無(wú)效值,則翻轉(zhuǎn)成 上一個(gè)輸出結(jié)果的取反。對(duì)應(yīng)于圖4,所述鏈路選擇模塊包括主電路,用于根據(jù)選擇掩碼寄存器從有效鏈路中確定備選端口,備選端口唯一時(shí), 該備選端口為輸出端口 ;備選端口有多個(gè)時(shí),根據(jù)虛擬輸出隊(duì)列深度從所述備選端口中選 擇輸出端口,若深度最小的端口唯一,則選擇最小的備選端口為輸出端口,否隨機(jī)選擇其中 一個(gè)作為輸出端口;副電路,用于根據(jù)虛擬輸出隊(duì)列深度從所述有效鏈路中選擇輸出端口,若深度最 小的端口唯一,則選擇最小的備選端口為輸出端口,否則隨機(jī)選擇其中一個(gè)作為輸出端 Π ;端口確定子模塊,用于在主電路選擇出輸出端口時(shí),確定所述主電路輸出結(jié)果為 最終輸出端口,在主電路未選擇出輸出端口,且副電路選擇出輸出端口時(shí),確定副電路輸出 結(jié)果為最終輸出端口; 掩碼翻轉(zhuǎn)子模塊,用于根據(jù)所述端口確定子模塊翻轉(zhuǎn)對(duì)應(yīng)的掩碼。圖8是另一裝置示意圖,與圖7不同之處在于,所述裝置還包括有效鏈路選擇模 塊,用于從所有輸出鏈路中排除物理無(wú)效鏈路和/或預(yù)置的無(wú)效鏈路得到有效鏈路,所述 輸出鏈路選擇模塊,從所述有效鏈路中選擇輸出鏈路。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于本發(fā)明的限定范圍。
本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和 范圍,這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi), 則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過(guò)程序來(lái)指令 相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤或光盤 等。可選地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來(lái)實(shí)現(xiàn)。相應(yīng) 地,上述實(shí)施例中的各模塊可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí) 現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。在到達(dá)一個(gè)目的地存在多條路徑可達(dá)的情況下,同時(shí)根據(jù)輸出端口或者鏈路的緩 存深度,選擇最優(yōu)的輸出路徑,實(shí)現(xiàn)單播的負(fù)載均衡,多播的負(fù)載均衡與復(fù)制。利用本發(fā)明提供負(fù)載均衡策略,能有效的實(shí)現(xiàn)數(shù)據(jù)信元在不同鏈路間的負(fù)載均 衡,保證了各鏈路的業(yè)務(wù)量均衡,同時(shí)也降低了數(shù)據(jù)信元在交換網(wǎng)內(nèi)部的延時(shí),提高了交換 的效率。
權(quán)利要求
1.一種數(shù)據(jù)信元處理方法,其特征在于,該方法包括配置單播路由表和多播路由表,其中所述單播路由表包括單播目的地址與端口聚合 (Trunk)的對(duì)應(yīng)關(guān)系,所述多播路由表包括多播組地址與Trunk的對(duì)應(yīng)關(guān)系;接收數(shù)據(jù)信元;根據(jù)所述數(shù)據(jù)信元類型確定對(duì)應(yīng)的Trunk,其中,若為單播信元,則提取單播信元的目 的地址,查詢單播路由表,得到所述單播信元對(duì)應(yīng)的Trunk ;若為多播信元,則提取所述多 播信元的多播組地址,查詢多播路由表,得到所述多播信元對(duì)應(yīng)的一個(gè)或多個(gè)Trunk ;根據(jù)預(yù)置的負(fù)載均衡策略從確定的Trunk中選擇輸出鏈路,并通過(guò)所述選擇的輸出鏈 路發(fā)送所述數(shù)據(jù)信元。
2.如權(quán)利要求1所述的方法,其特征在于所述負(fù)載均衡策略包括以下一種或多種組合緩存深度選擇策略,每個(gè)輸出鏈路的輸出端口對(duì)應(yīng)一個(gè)用于緩存待發(fā)送的數(shù)據(jù)信元的 虛擬輸出隊(duì)列,根據(jù)所述各輸出端口的虛擬輸出隊(duì)列的緩存深度進(jìn)行選擇;掩碼選擇策略,利用選擇掩碼寄存器中掩碼與端口的對(duì)應(yīng)關(guān)系,從未選擇的端口對(duì)應(yīng) 的掩碼中選擇;從待選的端口中隨機(jī)選擇。
3.如權(quán)利要求2所述的方法,其特征在于利用選擇掩碼寄存器選擇端口時(shí),掩碼的位 寬與端口數(shù)相同,不同的Trunk對(duì)應(yīng)的選擇起始掩碼相同或不同。
4.如權(quán)利要求2所述的方法,其特征在于選擇掩碼的翻轉(zhuǎn)規(guī)則包括選擇掩碼寄存器的所有選擇掩碼均表示已選時(shí),所有選擇掩碼翻轉(zhuǎn);選擇掩碼寄存器的所有選擇掩碼與有效鏈路信息相與結(jié)果為全無(wú)效值,則翻轉(zhuǎn)成上一 個(gè)輸出結(jié)果的取反。
5.如權(quán)利要求2所述的方法,其特征在于根據(jù)預(yù)置的負(fù)載均衡策略從對(duì)應(yīng)的Trunk 中選擇輸出鏈路包括(a)根據(jù)選擇掩碼寄存器從待選鏈路中確定備選端口,若備選端口唯一,則該備選端口 為最終輸出端口 ;若備選端口有多個(gè),則執(zhí)行步驟(b),若無(wú)備選端口,則執(zhí)行步驟(C);(b)根據(jù)虛擬輸出隊(duì)列深度從所述備選端口中選擇輸出端口,若深度最小的端口唯一, 則選擇最小的備選端口為最終輸出端口,否隨機(jī)選擇其中一個(gè)作為最終輸出端口 ;(c)根據(jù)虛擬輸出隊(duì)列深度從待選鏈路中選擇輸出端口,若深度最小的端口唯一,則選 擇最小的備選端口為最終輸出端口,否隨機(jī)選擇其中一個(gè)作為最終輸出端口 ;(d)翻轉(zhuǎn)所述最終輸出端口對(duì)應(yīng)掩碼,流程結(jié)束。
6.如權(quán)利要求1所述的方法,其特征在于確定對(duì)應(yīng)的Trunk,選擇輸出鏈路前,該方法 還包括,從所有輸出鏈路中排除物理無(wú)效鏈路和/或預(yù)置的無(wú)效鏈路得到有效鏈路,再?gòu)?所述有效鏈路中選擇輸出鏈路。
7.一種數(shù)據(jù)信元處理裝置,其特征在于,該裝置包括配置模塊,用于配置單播路由表和多播路由表,其中所述單播路由表包括單播目的地 址與端口聚合(Trunk)的對(duì)應(yīng)關(guān)系,所述多播路由表包括多播組地址與Trunk的對(duì)應(yīng)關(guān) 系;接收模塊,用于接收數(shù)據(jù)信元;Trunk確定模塊,用于根據(jù)所述數(shù)據(jù)信元類型確定對(duì)應(yīng)的Trunk,其中,若為單播信元, 則提取單播信元的目的地址,查詢單播路由表,得到所述單播信元對(duì)應(yīng)的Trunk ;若為多播 信元,則提取所述多播信元的多播組地址,查詢多播路由表,得到所述多播信元對(duì)應(yīng)的一個(gè) 或多個(gè)iTrunk ;輸出鏈路選擇模塊,用于根據(jù)預(yù)置的負(fù)載均衡策略從所述Trunk確定模塊確定的 Trunk中選擇輸出鏈路;發(fā)送模塊,用于通過(guò)所述選擇的輸出鏈路發(fā)送所述數(shù)據(jù)信元。
8.如權(quán)利要求7所述的裝置,其特征在于所述輸出鏈路選擇模塊選擇所述輸出鏈路 時(shí)依據(jù)的負(fù)載均衡策略包括以下一種或多種組合緩存深度選擇策略,每個(gè)輸出鏈路的輸出端口對(duì)應(yīng)一個(gè)用于緩存待發(fā)送的數(shù)據(jù)信元的 虛擬輸出隊(duì)列,根據(jù)所述各輸出端口的虛擬輸出隊(duì)列的緩存深度進(jìn)行選擇;掩碼選擇策略,利用選擇掩碼寄存器中掩碼與端口的對(duì)應(yīng)關(guān)系,從未選擇的端口對(duì)應(yīng) 的掩碼中選擇;從待選的端口中隨機(jī)選擇。
9.如權(quán)利要求8所述的裝置,其特征在于利用選擇掩碼寄存器選擇端口時(shí),掩碼的位 寬與端口數(shù)相同,不同的Trunk對(duì)應(yīng)的選擇掩碼相同或不同;選擇掩碼的翻轉(zhuǎn)規(guī)則包括選擇掩碼寄存器的所有選擇掩碼均表示已選時(shí),所有選擇掩碼翻轉(zhuǎn);選擇掩碼寄存器的所有選擇掩碼與有效鏈路信息相與結(jié)果為全無(wú)效值,則翻轉(zhuǎn)成上一 個(gè)輸出結(jié)果的取反。
10.如權(quán)利要求8所述的裝置,其特征在于所述輸出鏈路選擇模塊包括主電路,用于根據(jù)選擇掩碼寄存器從有效鏈路中確定備選端口,備選端口唯一時(shí),該備 選端口為輸出端口 ;備選端口有多個(gè)時(shí),根據(jù)虛擬輸出隊(duì)列深度從所述備選端口中選擇輸 出端口,若深度最小的端口唯一,則選擇最小的備選端口為輸出端口,否隨機(jī)選擇其中一個(gè) 作為輸出端口;副電路,用于根據(jù)虛擬輸出隊(duì)列深度從所述有效鏈路中選擇輸出端口,若深度最小的 端口唯一,則選擇最小的備選端口為輸出端口,否則隨機(jī)選擇其中一個(gè)作為輸出端口 ;端口確定子模塊,用于在主電路選擇出輸出端口時(shí),確定所述主電路輸出結(jié)果為最終 輸出端口,在主電路未選擇出輸出端口,且副電路選擇出輸出端口時(shí),確定副電路輸出結(jié)果 為最終輸出端口;掩碼翻轉(zhuǎn)子模塊,用于根據(jù)所述端口確定子模塊翻轉(zhuǎn)對(duì)應(yīng)的掩碼。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)信元處理方法和裝置,該方法包括配置單播路由表和多播路由表,其中單播路由表包括單播目的地址與Trunk的對(duì)應(yīng)關(guān)系,多播路由表包括多播組地址與Trunk的對(duì)應(yīng)關(guān)系;接收數(shù)據(jù)信元;根據(jù)數(shù)據(jù)信元類型確定對(duì)應(yīng)的Trunk,其中,若為單播信元,則提取單播信元的目的地址,查詢單播路由表,得到單播信元對(duì)應(yīng)的Trunk;若為多播信元,則提取多播信元的多播組地址,查詢多播路由表,得到多播信元對(duì)應(yīng)的一個(gè)或多個(gè)Trunk;根據(jù)預(yù)置的負(fù)載均衡策略從確定的Trunk中選擇輸出鏈路,并通過(guò)選擇的輸出鏈路發(fā)送數(shù)據(jù)信元。本發(fā)明方法和裝置提供的數(shù)據(jù)信元在交換網(wǎng)中的處理方案提高了交換效率。
文檔編號(hào)H04L12/56GK102065014SQ20101061242
公開日2011年5月18日 申請(qǐng)日期2010年12月29日 優(yōu)先權(quán)日2010年12月29日
發(fā)明者劉建立, 曾敏 申請(qǐng)人:中興通訊股份有限公司