欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

報文處理方法、裝置和網(wǎng)絡設備的制作方法

文檔序號:7758713閱讀:142來源:國知局
專利名稱:報文處理方法、裝置和網(wǎng)絡設備的制作方法
技術領域
本發(fā)明涉及通信技術,尤其涉及一種報文處理方法、裝置和網(wǎng)絡設備。
背景技術
以太網(wǎng)交換機作為一種常用的網(wǎng)絡設備,其主要完成網(wǎng)絡的二層交換功能,可以 大致分為硬件交換機和軟件交換機兩種類型。硬件交換機通常使用特殊應用集成電路 (Application Specific Integrated Circuit ;以下簡稱ASIC),交換效率較高、成本低 廉,但功能較少、可擴展性不強。與使用ASIC實現(xiàn)交換功能的硬件交換機相比,軟件交換機 基于其高性能CPU來實現(xiàn)交換功能,其功能豐富、可擴展性好。在現(xiàn)有技術中,在通過軟件交換機對組播/廣播報文進行發(fā)送時,由于這類報文 存在多個出口,假設為N個,而軟件交換機中未設置有專用的硬件進行報文復制和發(fā)送,則 在報文發(fā)送之前,需要先將該報文復制成N份,將N個報文分別通過N個端口進行發(fā)送。且 通常交換機的不同端口可能具有不同的交換屬性,報文通過不同屬性的端口發(fā)出時,需要 根據(jù)端口的屬性修改報文的內(nèi)容。因此,現(xiàn)有技術中通過軟件交換機發(fā)送組播/廣播報文時,報文的復制拷貝過程 必須在軟件交換機的內(nèi)存中進行,復制過程相對較慢,特別是在報文的出口較多且報文較 長的情況下,會導致占用較多的軟件交換機的CPU資源,嚴重影響軟件交換機的交換效率。

發(fā)明內(nèi)容
本發(fā)明提供一種報文處理方法、裝置和網(wǎng)絡設備,用以解決現(xiàn)有技術中組播/廣 播報文發(fā)送時占用較多CPU資源的缺陷,避免報文復制占用過多CPU資源,提高網(wǎng)絡設備的 交換效率,且可以靈活適應各種出口,提高網(wǎng)絡設備的擴展性。本發(fā)明提供一種報文處理方法,包括獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交換屬性分別生成對 應的出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu);按照預設的順序獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)所述出口數(shù)據(jù)結(jié) 構(gòu)將所述待發(fā)送組播/廣播報文在所述出口發(fā)送,重復該步驟,直到將所述待發(fā)送組播/廣 播報文在所述所有出口發(fā)送為止。本發(fā)明提供一種報文處理裝置,包括預處理模塊,用于獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交 換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu);發(fā)送模塊,用于按照預設的順序獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù) 所述出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā)送組播/廣播報文在所述出口發(fā)送,重復該步驟,直到將所 述待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。本發(fā)明提供一種網(wǎng)絡設備,包括上述報文處理裝置。本發(fā)明的報文處理方法、裝置和網(wǎng)絡設備,通過獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各出口的交換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并將出口數(shù)據(jù)結(jié)構(gòu)記錄在 該報文的數(shù)據(jù)結(jié)構(gòu)或額外添加的數(shù)據(jù)結(jié)構(gòu)中,在進行報文發(fā)送時,按照預設的順序獲取當 前情況下的下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)該出口數(shù)據(jù)結(jié)構(gòu)在對應的出口上發(fā)送該 待發(fā)送組播/廣播報文,并重復該發(fā)送過程,直到將該報文在其對應的所有出口上均實現(xiàn) 發(fā)送為止。本實施例通過對組播或廣播報文進行順序發(fā)送,而避免了現(xiàn)有技術中在發(fā)送前 對報文的復制拷貝,解決了現(xiàn)有技術中組播/廣播報文發(fā)送時占用較多CPU資源的缺陷,避 免了報文復制占用過多CPU資源,提高了網(wǎng)絡設備的交換效率,且本實施提供的方法通過 將各出口的交換屬性提取記錄為對應的出口數(shù)據(jù)結(jié)構(gòu),則其可以靈活適應各種出口,提高 了網(wǎng)絡設備的擴展性。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn) 有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明報文處理方法實施例一的流程圖;圖2為本發(fā)明報文處理方法實施例二的流程圖;圖3為本發(fā)明報文處理方法實施例三的流程圖;圖4為本發(fā)明報文處理裝置實施例一的結(jié)構(gòu)示意圖;圖5為本發(fā)明報文處理裝置實施例二的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖1為本發(fā)明報文處理方法實施例一的流程圖,如圖1所示,本實施例提供了一種 報文處理方法,可以具體包括如下步驟步驟101,網(wǎng)絡設備獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交 換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu)。本實施例針對的情況為組播或廣播報文在網(wǎng)絡設備上的發(fā)送情景,在本實施例 中,在通過網(wǎng)絡設備發(fā)送組播或廣播報文之前,先對待發(fā)送組播/廣播報文進行預處理。具 體地,本實施例中的網(wǎng)絡設備可以具體為軟件交換機。此處的預處理可以為網(wǎng)絡設備針對 待發(fā)送組播/廣播報文,根據(jù)交換規(guī)則獲取該報文將要發(fā)送的所有出口。由于各出口均對 應不同的交換屬性,本步驟根據(jù)獲取到的待發(fā)送組播/廣播報文的各出口的交換屬性,分 別生成各出口對應的出口數(shù)據(jù)結(jié)構(gòu),該出口數(shù)據(jù)結(jié)構(gòu)用于指示待發(fā)送組播/廣播報文在該 出口上進行發(fā)送時需要修改的相關信息以及報文在修改之后需要修復的相關信息。網(wǎng)絡設 備將生成的所有出口的出口數(shù)據(jù)結(jié)構(gòu)進行記錄,可以將其記錄在待發(fā)送組播/廣播報文的 報文數(shù)據(jù)結(jié)構(gòu)中,也可以添加額外的數(shù)據(jù)結(jié)構(gòu),將出口數(shù)據(jù)結(jié)構(gòu)記錄在額外的數(shù)據(jù)結(jié)構(gòu)中,但所添加的額外的數(shù)據(jù)結(jié)構(gòu)需要滿足后續(xù)報文發(fā)送時可以從報文攜帶的數(shù)據(jù)中獲取得到 的要求,可以在待發(fā)送組播/廣播報文中攜帶該額外的數(shù)據(jù)結(jié)構(gòu)的標識信息等。步驟102,網(wǎng)絡設備按照預設的順序獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根 據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā)送組播/廣播報文在所述出口發(fā)送,重復該步驟,直到將 所述待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。在完成待發(fā)送組播/廣播報文的所有出口的預處理之后,網(wǎng)絡設備可以在各個出 口上對該報文進行發(fā)送。盡管該待發(fā)送組播/廣播報文需要在多個出口上發(fā)送,但本實施 例無需執(zhí)行現(xiàn)有技術中的對該報文的復制拷貝操作,而按照預設的順序在各個出口上對該 待發(fā)送組播/廣播報文進行依次發(fā)送。此處所指的預設的順序為預先設定的待發(fā)送組播/ 廣播報文在其對應的各出口上的發(fā)送順序,可以以出口的索引信息作為設定的依據(jù),當然 也可以為本領域技術人員根據(jù)實際情況設定的其他順序。本步驟為按照預設的順序先獲取 當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu);如果當前發(fā)送過程為對待發(fā)送組播/廣播報文的第 一次發(fā)送,即在第一個出口上發(fā)送該報文,則此處的當前下一個出口為選擇的第一個出口 ; 如果當前發(fā)送過程不是第一次發(fā)送,則此處的當前下一個出口指的是經(jīng)過前次發(fā)送之后的 預設的順序中指示的下一個出口。本實施例通過重復該步驟102,根據(jù)不同出口對應的出口 數(shù)據(jù)結(jié)構(gòu)將待發(fā)送組播/廣播報文在不同出口上進行發(fā)送,直到將該報文在其對應的所有 出口發(fā)送為止,即直到當前下一個出口為預設的順序中的最后一個出口,并在該出口上將 該報文發(fā)送為止。本實施例提供了一種報文處理方法,通過獲取待發(fā)送組播/廣播報文的所有出 口,根據(jù)各出口的交換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并將出口數(shù)據(jù)結(jié)構(gòu)記錄在該報 文的數(shù)據(jù)結(jié)構(gòu)或額外添加的數(shù)據(jù)結(jié)構(gòu)中,在進行報文發(fā)送時,按照預設的順序獲取當前情 況下的下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)該出口數(shù)據(jù)結(jié)構(gòu)在對應的出口上發(fā)送該待發(fā) 送組播/廣播報文,并重復該發(fā)送過程,直到將該報文在其對應的所有出口上均實現(xiàn)發(fā)送 為止。本實施例通過對組播或廣播報文進行順序發(fā)送,而避免了現(xiàn)有技術中在發(fā)送前對報 文的復制拷貝,解決了現(xiàn)有技術中組播/廣播報文發(fā)送時占用較多CPU資源的缺陷,避免了 報文復制占用過多CPU資源,提高了網(wǎng)絡設備的交換效率,且本實施提供的方法通過將各 出口的交換屬性提取記錄為對應的出口數(shù)據(jù)結(jié)構(gòu),則其可以靈活適應各種出口,提高了網(wǎng) 絡設備的擴展性。圖2為本發(fā)明報文處理方法實施例二的流程圖,如圖2所示,本實施例提供了一 種報文處理方法,本實施例采用中斷方式對報文發(fā)送過程進行控制,可以具體包括如下步 驟步驟201,網(wǎng)絡設備獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交 換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu)。本實施例在通過網(wǎng)絡設備發(fā)送組播或廣播報文之前,網(wǎng)絡設備先針對待發(fā)送組播 /廣播報文,根據(jù)交換規(guī)則獲取該報文將要發(fā)送的所有出口。本步驟根據(jù)獲取到的待發(fā)送組 播/廣播報文的各出口的交換屬性,分別生成各出口對應的出口數(shù)據(jù)結(jié)構(gòu),該出口數(shù)據(jù)結(jié) 構(gòu)用于指示待發(fā)送組播/廣播報文在該出口上進行發(fā)送時需要修改的相關信息以及報文 在修改之后需要修復的相關信息。網(wǎng)絡設備將生成的所有出口的出口數(shù)據(jù)結(jié)構(gòu)進行記錄, 可以將其記錄在待發(fā)送組播/廣播報文的報文數(shù)據(jù)結(jié)構(gòu)中,也可以添加額外的數(shù)據(jù)結(jié)構(gòu),將出口數(shù)據(jù)結(jié)構(gòu)記錄在額外的數(shù)據(jù)結(jié)構(gòu)中,但所添加的額外的數(shù)據(jù)結(jié)構(gòu)需要滿足后續(xù)報文 發(fā)送時可以從報文攜帶的數(shù)據(jù)中獲取得到的要求,可以在待發(fā)送組播/廣播報文中攜帶該 額外的數(shù)據(jù)結(jié)構(gòu)的標識信息等。步驟202,網(wǎng)絡設備按照預設的順序獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu)。本步驟為按照預設的順序先獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu);如果當前 發(fā)送過程為對待發(fā)送組播/廣播報文的第一次發(fā)送,即在第一個出口上發(fā)送該報文,則此 處的當前下一個出口為選擇的第一個出口 ;如果當前發(fā)送過程不是第一次發(fā)送,則此處的 當前下一個出口指的是經(jīng)過前次發(fā)送之后的預設的順序中指示的下一個出口。網(wǎng)絡設備可 以通過待發(fā)送組播/廣播報文的報文數(shù)據(jù)結(jié)構(gòu)或其中攜帶的額外的數(shù)據(jù)結(jié)構(gòu)的標識信息 來獲取出口對應的出口數(shù)據(jù)結(jié)構(gòu)。具體地,本實施例中各出口對應的出口數(shù)據(jù)結(jié)構(gòu)可以包 括但不限于所述出口的索引信息IFINDEX、所述出口的修改函數(shù)MODIFY、所述出口的修復 函數(shù)RECOVER、所述修改函數(shù)的參數(shù)個數(shù)M0DIFY_ARGC、所述修改函數(shù)的參數(shù)向量M0DIFY_ ARGV、所述修復函數(shù)的參數(shù)個數(shù)REC0VER_ARGC和所述修復函數(shù)的參數(shù)向量REC0VER_ARGV。 其中,出口的索引信息IFINDEX用于標識報文出口的索引,其為出口數(shù)據(jù)結(jié)構(gòu)中的必要字 段。出口的修改函數(shù)MODIFY為報文在從該出口發(fā)送之前,必須運行的修改函數(shù),用于在報 文發(fā)送前修改報文內(nèi)容。如對于802. Iq中的VALN TAG來說,報文在有些出口上發(fā)送時必 須攜帶TAG,而有些則不能攜帶TAG,根據(jù)不同出口的交換屬性來設定該修改函數(shù);再比如 報文從隧道出口發(fā)送時,需要對報文進行特殊的封裝。當報文在該出口發(fā)送時無需任何修 改時,則這個字段可以置成空NULL。出口的修復函數(shù)RECOVER為報文從該出口發(fā)送后,必 須運行的修復函數(shù),用于在報文發(fā)送后回退針對該出口的所有修改內(nèi)容,將報文恢復到發(fā) 送前的狀態(tài),比如針對之前所述隧道出口的封裝的解封裝。而修改函數(shù)的參數(shù)個數(shù)M0DIFY_ ARGC和修改函數(shù)的參數(shù)向量M0DIFY_ARGV為修改函數(shù)的兩個參量,修復函數(shù)的參數(shù)個數(shù) REC0VER_ARGC和修復函數(shù)的參數(shù)向量REC0VER_ARGV為修復函數(shù)的兩個參量。步驟203,網(wǎng)絡設備判斷該出口對應的出口數(shù)據(jù)結(jié)構(gòu)中是否包含可用的出口的修 改函數(shù),如果是,則執(zhí)行步驟204,否則執(zhí)行步驟206。網(wǎng)絡設備在獲取到出口對應的出口數(shù)據(jù)結(jié)構(gòu)后,判斷其中是否包含可用的出口的 修改函數(shù),即出口的修改函數(shù)是否為空。如果出口的修改函數(shù)不為空,則表明待發(fā)送組播/ 廣播報文在從該出口發(fā)送時需要修改報文的內(nèi)容,則執(zhí)行步驟204,對該報文進行相應的修 改。如果出口的修改函數(shù)為空,則表明待發(fā)送組播/廣播報文在從該出口發(fā)送時不需要修 改報文的內(nèi)容,則執(zhí)行步驟206,不對該報文進行修改。步驟204,網(wǎng)絡設備利用所述修改函數(shù)的參數(shù)個數(shù)和所述修改函數(shù)的參數(shù)向量調(diào) 用所述出口的修改函數(shù)對所述待發(fā)送組播/廣播報文進行修改。當該出口的修改函數(shù)不為空時,網(wǎng)絡設備利用出口數(shù)據(jù)結(jié)構(gòu)中記錄的修改函數(shù) 的參數(shù)個數(shù)M0DIFY_ARGC和修改函數(shù)的參數(shù)向量M0DIFY_ARGV來調(diào)用該出口的修改函數(shù) MODIFY,對待發(fā)送組播/廣播報文進行修改,使其符合該出口的交換屬性。步驟205,網(wǎng)絡設備將修改后的組播/廣播報文在所述出口發(fā)送。當通過修改函數(shù)對待發(fā)送組播/廣播報文進行修改后,網(wǎng)絡設備將該修改后的組 播/廣播報文掛載到該出口的發(fā)送隊列上,并啟動網(wǎng)絡設備的端口硬件,比如寫一個寄存 器,通過硬件對報文進行發(fā)送。
步驟206,網(wǎng)絡設備直接將所述待發(fā)送組播/廣播報文在所述出口發(fā)送。當該出口的修改函數(shù)為空時,網(wǎng)絡設備直接將所述待發(fā)送組播/廣播報文在所述 出口發(fā)送,即網(wǎng)絡設備直接將該待發(fā)送組播/廣播報文掛載到該出口的發(fā)送隊列上,并啟 動網(wǎng)絡設備的端口硬件,比如寫一個寄存器,通過硬件對報文進行發(fā)送。步驟207,網(wǎng)絡設備接收硬件返回的中斷信號,根據(jù)中斷信號獲取發(fā)送完畢的報文 和發(fā)送報文的出口,并根據(jù)發(fā)送報文的出口獲取對應的出口數(shù)據(jù)結(jié)構(gòu)。硬件在完成報文的發(fā)送之后,產(chǎn)生一個中斷信號,以表明報文在當前出口上已發(fā) 送完畢,在中斷信號中可以攜帶發(fā)送完畢的報文和發(fā)送該報文的出口。網(wǎng)絡設備接收到硬 件返回的中斷信號后,從中斷信號中獲取發(fā)送完畢的報文和發(fā)送報文的出口信息,并根據(jù) 該出口信息獲取該出口對應的出口數(shù)據(jù)結(jié)構(gòu)。步驟208,網(wǎng)絡設備根據(jù)該出口數(shù)據(jù)結(jié)構(gòu)判斷其中是否包含有可用的出口的修復 函數(shù),如果是,則執(zhí)行步驟209,否則執(zhí)行步驟210。網(wǎng)絡設備根據(jù)獲取到的發(fā)送報文的出口對應的出口數(shù)據(jù)結(jié)構(gòu)后,根據(jù)該出口數(shù)據(jù) 結(jié)構(gòu)判斷其中是否包含有可用的該出口的修復函數(shù),即其中包含的出口的修復函數(shù)是否為 空。如果該出口的修復函數(shù)不為空時,則執(zhí)行步驟209,利用修復函數(shù)對發(fā)送完畢的報文進 行修復;如果出口的修復函數(shù)為空時,則執(zhí)行步驟210,無需對發(fā)送完畢的報文進行修復。步驟209,網(wǎng)絡設備利用所述修復函數(shù)的參數(shù)個數(shù)和所述修復函數(shù)的參數(shù)向量調(diào) 用所述出口的修復函數(shù)對所述發(fā)送完畢的報文進行修復,以重新生成所述待發(fā)送組播/廣 播報文,并返回執(zhí)行步驟202,直到將待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。當出口對應的出口數(shù)據(jù)結(jié)構(gòu)中包含有用的修復函數(shù)時,表明之前報文在從該出口 發(fā)送前經(jīng)過了修改,為了在后續(xù)其他出口上正確地發(fā)送原始的待發(fā)送組播/廣播報文,則 需要將修改后的報文恢復為原始狀態(tài),網(wǎng)絡設備利用出口數(shù)據(jù)結(jié)構(gòu)中記錄的修復函數(shù)的參 數(shù)個數(shù)REC0VER_ARGC和修復函數(shù)的參數(shù)向量REC0VER_ARGV來調(diào)用出口的修復函數(shù),對之 前獲取到的發(fā)送完畢的報文進行修復,將其修復為原始狀態(tài)的待發(fā)送組播/廣播報文。網(wǎng) 絡設備再返回執(zhí)行步驟202,繼續(xù)獲取下一個出口,將重新獲取到的待發(fā)送組播/廣播報文 在下一個出口上進行發(fā)送,直到將待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。步驟210,網(wǎng)絡設備直接將所述發(fā)送完畢的報文作為所述待發(fā)送組播/廣播報文, 并返回執(zhí)行步驟202,直到將待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。當出口對應的出口數(shù)據(jù)結(jié)構(gòu)中未包含有用的修復函數(shù)時,表明之前報文在從該出 口發(fā)送前未經(jīng)過修改,則之前獲取到的發(fā)送完畢的報文即為原始的待發(fā)送組播/廣播報 文,本步驟無需對其進行修復處理。網(wǎng)絡設備再返回執(zhí)行步驟202,繼續(xù)獲取下一個出口,將 待發(fā)送組播/廣播報文在下一個出口上進行發(fā)送,直到將待發(fā)送組播/廣播報文在所述所 有出口發(fā)送為止。下述以一個例子對本發(fā)明的實施例進行進一步的具體說明,假設待發(fā)送組播/廣 播報文為報文PKT,其出口為Pl和P2。其中,Pl為trunk 口,該出口在發(fā)送報文時需要插 入vlan tag VTAG, P2為access 口,該出口在發(fā)送報文時則不能攜帶vlan tag VTAG。網(wǎng) 絡設備在發(fā)送報文前,先進行預處理,在報文的數(shù)據(jù)結(jié)構(gòu)中記錄出口 Pl的出口數(shù)據(jù)結(jié)構(gòu)和 出口 P2的出口數(shù)據(jù)結(jié)構(gòu)。其中,出口 Pl的出口數(shù)據(jù)結(jié)構(gòu)記錄如下
{IFINDEX = Pl;MODIFY = insert_vlan_tag ;RECOVER = remove一vlan_tag ;MODIFY_ARGC = VTAG ;MODIFY_ARGV = NULL ;RECOVER_ARGC = NULL ;RECOVER_ARGV = NULL ;}出口 P2的出口數(shù)據(jù)結(jié)構(gòu)記錄如下{IFINDEX = P2 ;MODIFY = NULL ;RECOVER = NULL ;MODIFY_ARGC = NULL ;MODIFY_ARGV = NULL ;RECOVER_ARGC = NULL ;RECOVER_ARGV = NULL ;}其中,修改函數(shù)的實現(xiàn)如下void insert_vlan_tag (pkt_t*pkt, int argc, int*argv) {/* argv T^MilJ/* 將 argc 作為 vlan tag 插入 艮文 pkt 中 */......}其中,修復函數(shù)的實現(xiàn)如下void remove_vlan一tag(pkt_t*pkt, int argc, int*argv) {/* 參數(shù) argc 禾口 argv
未用到*//* 移除報文 pkt 的 vlan tag*/......}如果修改函數(shù)或修復函數(shù)具有多個參數(shù),則*argv為第一個參數(shù),* (argv+Ι)為第 二個參數(shù),*(argv+2)為第三個參數(shù),……,以此類推。例如,出口 X對應的出口數(shù)據(jù)結(jié)構(gòu) 可以如下所示{IFINDEX = Pn ;MODIFY = modify_with_multi-arg ;RECOVER = recover_with_multi-arg ;M0DIFY_ARGC = η ;
M0DIFY_ARGV = (int*)memory_point_m ;(*M0DIFY_ARGV) = margl ;(*M0DIFY_ARGV+1) = marg2 ;(*M0DIFY_ARGV+2) = marg3 ;......(*M0DIFY_ARGV+n-l) = margn ;REC0VER_ARGC = m ;REC0VER_ARGV = (int*)memory一point一r ;(*REC0VER_ARGV) = rargl ;(*REC0VER_ARGV+1) = rarg2 ;(*REC0VER_ARGV+2) = rarg3 ;......(*RECOVER_ARGV+n-l) = rargm ;}其中,修改函數(shù)的實現(xiàn)如下void modify_with_multi-arg(pkt_t*pkt, int argc, int^argv){/* 第 η 個參數(shù)(* (argv+n)) */......}其中,修復函數(shù)的實現(xiàn)如下void recover_with_multi-arg(pkt_t*pkt, int argc, int^argv){/* 第 η 個參數(shù)(* (argv+n)) */......}當網(wǎng)絡設備在出口 Pl上發(fā)送報文PKT時,先獲取到Pl對應的出口數(shù)據(jù)結(jié)構(gòu),根 據(jù)該出口數(shù)據(jù)結(jié)構(gòu)可知其中包含可用的修改函數(shù),則網(wǎng)絡設備使用PKT、M0DIFY_ARGC和 M0DIFY_ARGV調(diào)用該出口的MODIFY函數(shù)修改報文,即使用參數(shù)PKT、VTAG和NULL調(diào)用函數(shù) insert_Vlan_tag,完成tag的插入,然后將PKT掛到Pl的硬件發(fā)送隊列進行發(fā)送。硬件發(fā) 送完畢后產(chǎn)生中斷信號,網(wǎng)絡設備使用PKT、REC0VER_ARGC和REC0VER_ARGV調(diào)用該出口的 RECOVER函數(shù)修復該報文,即使用參數(shù)PKT、NULL、NULL調(diào)用函數(shù)remove_vlan_tag,將報文 PKT的vlan tag移除,使得報文PKT恢復原始狀態(tài),PKT接著從P2發(fā)送。網(wǎng)絡設備獲取到出口 2的出口結(jié)構(gòu)數(shù)據(jù)后,由于P2的MODIFY為NULL,便不再修 改報文,直接將PKT掛到端口 P2的硬件發(fā)送隊列進行發(fā)送。硬件發(fā)送完畢后,產(chǎn)生中斷信 號,網(wǎng)絡設備發(fā)現(xiàn)RECOVER為NULL,就不會對報文進行修復。此時,網(wǎng)絡設備獲知PKT的所 有出口均已發(fā)送完畢,則直接釋放該報文。本實施例提供了一種報文處理方法,通過獲取待發(fā)送組播/廣播報文的所有出 口,根據(jù)各出口的交換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并將出口數(shù)據(jù)結(jié)構(gòu)記錄在該報 文的數(shù)據(jù)結(jié)構(gòu)或額外添加的數(shù)據(jù)結(jié)構(gòu)中,在進行報文發(fā)送時,按照預設的順序獲取當前情 況下的下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)該出口數(shù)據(jù)結(jié)構(gòu)在對應的出口上發(fā)送該待發(fā)
10送組播/廣播報文,并重復該發(fā)送過程,直到將該報文在其對應的所有出口上均實現(xiàn)發(fā)送 為止。本實施例通過對組播或廣播報文進行順序發(fā)送,而避免了現(xiàn)有技術中在發(fā)送前對報 文的復制拷貝,解決了現(xiàn)有技術中組播/廣播報文發(fā)送時占用較多CPU資源的缺陷,避免了 報文復制占用過多CPU資源,提高了網(wǎng)絡設備的交換效率,且本實施提供的方法通過將各 出口的交換屬性提取記錄為對應的出口數(shù)據(jù)結(jié)構(gòu),則其可以靈活適應各種出口,提高了網(wǎng) 絡設備的擴展性。圖3為本發(fā)明報文處理方法實施例三的流程圖,如圖3所示,本實施例提供了一種 報文處理方法,本實施例為采用輪詢方式對報文的發(fā)送過程進行控制,可以具體包括如下 步驟步驟301,網(wǎng)絡設備獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交 換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu),此步驟 與上述步驟201類似,此處不再贅述。步驟302,網(wǎng)絡設備將待發(fā)送組播/廣播報文的發(fā)送狀態(tài)設置為可發(fā)送狀態(tài),并將 該報文掛載到一個待發(fā)送隊列中。步驟303,網(wǎng)絡設備通過啟動輪詢進程對待發(fā)送隊列中的待發(fā)送組播/廣播報文 的發(fā)送狀態(tài)進行定時檢查,對待發(fā)送組播/廣播報文的發(fā)送狀態(tài)進行判斷,當該發(fā)送狀態(tài) 為可發(fā)送狀態(tài)時,執(zhí)行步驟304,當該發(fā)送狀態(tài)為發(fā)送完畢狀態(tài)時,執(zhí)行步驟312,當該發(fā)送 狀態(tài)為不可發(fā)送狀態(tài)時,返回對待發(fā)送隊列中的下一個報文進行發(fā)送處理。步驟304,網(wǎng)絡設備判斷該待發(fā)送組播/廣播報文的出口數(shù)據(jù)結(jié)構(gòu)中是否存在下 一個出口,如果是,則執(zhí)行步驟305,否則執(zhí)行步驟306。步驟305,網(wǎng)絡設備將該待發(fā)送組播/廣播報文的下一個出口設置為當前出口。步驟306,網(wǎng)絡設備從待發(fā)送隊列中取下該待發(fā)送組播/廣播報文,并釋放其所占 有的內(nèi)存空間,并返回執(zhí)行步驟303,對待發(fā)送隊列中的下一個報文進行發(fā)送處理。步驟307,網(wǎng)絡設備判斷該出口的出口數(shù)據(jù)結(jié)構(gòu)中是否包含可用的出口的修改函 數(shù),如果是,則執(zhí)行步驟308,否則執(zhí)行步驟310。步驟308,網(wǎng)絡設備利用所述修改函數(shù)的參數(shù)個數(shù)和所述修改函數(shù)的參數(shù)向量調(diào) 用所述出口的修改函數(shù)對所述待發(fā)送組播/廣播報文進行修改。步驟309,網(wǎng)絡設備將修改后的組播/廣播報文在該出口發(fā)送,并將報文的發(fā)送狀 態(tài)設置為不可發(fā)送狀態(tài)。步驟310,網(wǎng)絡設備直接將所述待發(fā)送組播/廣播報文在所述出口發(fā)送,并將報文 的發(fā)送狀態(tài)設置為不可發(fā)送狀態(tài)。步驟311,硬件在發(fā)送完畢報文后,自動將報文的發(fā)送狀態(tài)設置為發(fā)送完畢狀態(tài)。步驟312,網(wǎng)絡設備獲取到當前出口對應的出口數(shù)據(jù)結(jié)構(gòu),判斷該出口數(shù)據(jù)結(jié)構(gòu)中 是否包含可用的出口的修復函數(shù),如果是,則執(zhí)行步驟313,否則執(zhí)行步驟314。步驟313,網(wǎng)絡設備利用所述修復函數(shù)的參數(shù)個數(shù)和所述修復函數(shù)的參數(shù)向量調(diào) 用所述出口的修復函數(shù)對所述發(fā)送完畢的報文進行修復,以重新生成所述待發(fā)送組播/廣 播報文,將報文的發(fā)送狀態(tài)設置為可發(fā)送狀態(tài),并返回執(zhí)行步驟304,直到將待發(fā)送組播/ 廣播報文在所述所有出口發(fā)送為止。步驟314,網(wǎng)絡設備直接將所述發(fā)送完畢的報文作為所述待發(fā)送組播/廣播報文,將報文的發(fā)送狀態(tài)設置為可發(fā)送狀態(tài),并返回執(zhí)行步驟304,直到將待發(fā)送組播/廣播報文 在所述所有出口發(fā)送為止。本領域普通技術人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序 在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者 光盤等各種可以存儲程序代碼的介質(zhì)。圖4為本發(fā)明報文處理裝置實施例一的結(jié)構(gòu)示意圖,如圖4所示,本實施例提供了 一種報文處理裝置,可以具體執(zhí)行上述方法實施例一中的各個步驟,此處步驟贅述。本實 施例提供的報文處理裝置可以具體包括預處理模塊401和發(fā)送模塊402。預處理模塊401 用于獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交換屬性分別生成對應的 出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu)。發(fā)送模塊402用于按照預設的 順序獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā)送組播 /廣播報文在所述出口發(fā)送,重復該步驟,直到將所述待發(fā)送組播/廣播報文在所述所有出 口發(fā)送為止。圖5為本發(fā)明報文處理裝置實施例二的結(jié)構(gòu)示意圖,如圖5所示,本實施例提供了 一種報文處理裝置,可以具體執(zhí)行上述方法實施例二或?qū)嵤├械母鱾€步驟,此處步驟 贅述。本實施例提供的報文處理裝置在上述圖4所示的基礎之上,所述出口對應的出口數(shù) 據(jù)結(jié)構(gòu)包括所述出口的索引信息、所述出口的修改函數(shù)、所述出口的修復函數(shù)、所述修改函 數(shù)的參數(shù)個數(shù)、所述修改函數(shù)的參數(shù)向量、所述修復函數(shù)的參數(shù)個數(shù)和所述修復函數(shù)的參 數(shù)向量。具體地,發(fā)送模塊402可以具體包括第一發(fā)送單元412和第二發(fā)送單元422。第 一發(fā)送單元412用于當所述出口數(shù)據(jù)結(jié)構(gòu)中包含可用的出口的修改函數(shù)時,利用所述修改 函數(shù)的參數(shù)個數(shù)和所述修改函數(shù)的參數(shù)向量調(diào)用所述出口的修改函數(shù)對所述待發(fā)送組播/ 廣播報文進行修改,并將修改后的組播/廣播報文在所述出口發(fā)送,重復該步驟,直到將所 述待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。第二發(fā)送單元422用于當所述出口數(shù) 據(jù)結(jié)構(gòu)中未包含可用的出口的修改函數(shù)時,直接將所述待發(fā)送組播/廣播報文在所述出口 發(fā)送,重復該步驟,直到將所述待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。進一步地,本實施例提供的報文處理裝置還可以包括第一獲取模塊403和第二獲 取模塊404。其中,第一獲取模塊403用于在所述根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā)送組播 /廣播報文在所述出口發(fā)送之后,根據(jù)硬件發(fā)送的中斷信號或報文的發(fā)送完畢狀態(tài)獲取發(fā) 送完畢的報文和發(fā)送報文的出口,并根據(jù)所述發(fā)送報文的出口獲取對應的出口數(shù)據(jù)結(jié)構(gòu)。 第二獲取模塊404用于根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)重新獲取所述待發(fā)送組播/廣播報文。具體地,第二獲取模塊404可以具體包括第一獲取單元414和第二獲取單元424。 其中,第一獲取單元414用于當所述出口數(shù)據(jù)結(jié)構(gòu)中包含可用的出口的修復函數(shù)時,利用 所述修復函數(shù)的參數(shù)個數(shù)和所述修復函數(shù)的參數(shù)向量調(diào)用所述出口的修復函數(shù)對所述發(fā) 送完畢的報文進行修復,以重新生成所述待發(fā)送組播/廣播報文。第二獲取單元424用于 當所述出口數(shù)據(jù)結(jié)構(gòu)中未包含可用的出口的修復函數(shù)時,直接將所述發(fā)送完畢的報文作為 所述待發(fā)送組播/廣播報文。本實施例提供了一種報文處理裝置,通過獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各出口的交換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并將出口數(shù)據(jù)結(jié)構(gòu)記錄在該報 文的數(shù)據(jù)結(jié)構(gòu)或額外添加的數(shù)據(jù)結(jié)構(gòu)中,在進行報文發(fā)送時,按照預設的順序獲取當前情 況下的下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)該出口數(shù)據(jù)結(jié)構(gòu)在對應的出口上發(fā)送該待發(fā) 送組播/廣播報文,并重復該發(fā)送過程,直到將該報文在其對應的所有出口上均實現(xiàn)發(fā)送 為止。本實施例通過對組播或廣播報文進行順序發(fā)送,而避免了現(xiàn)有技術中在發(fā)送前對報 文的復制拷貝,解決了現(xiàn)有技術中組播/廣播報文發(fā)送時占用較多CPU資源的缺陷,避免了 報文復制占用過多CPU資源,提高了網(wǎng)絡設備的交換效率,且本實施提供的方法通過將各 出口的交換屬性提取記錄為對應的出口數(shù)據(jù)結(jié)構(gòu),則其可以靈活適應各種出口,提高了網(wǎng) 絡設備的擴展性。本實施例還提供了一種網(wǎng)絡設備,可以包括上述圖4或圖5所示的報文處理裝置, 本實施例中的網(wǎng)絡設備可以為軟件交換機。最后應說明的是以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡 管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解其依然 可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替 換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的精 神和范圍。
權(quán)利要求
一種報文處理方法,其特征在于,包括獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu);按照預設的順序獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā)送組播/廣播報文在所述出口發(fā)送,重復該步驟,直到將所述待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)將所述待 發(fā)送組播/廣播報文在所述出口發(fā)送之后,還包括根據(jù)硬件發(fā)送的中斷信號或報文的發(fā)送完畢狀態(tài)獲取發(fā)送完畢的報文和發(fā)送報文的 出口,并根據(jù)所述發(fā)送報文的出口獲取對應的出口數(shù)據(jù)結(jié)構(gòu);根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)重新獲取所述待發(fā)送組播/廣播報文。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述出口對應的出口數(shù)據(jù)結(jié)構(gòu)包括所述 出口的索引信息、所述出口的修改函數(shù)、所述出口的修復函數(shù)、所述修改函數(shù)的參數(shù)個數(shù)、 所述修改函數(shù)的參數(shù)向量、所述修復函數(shù)的參數(shù)個數(shù)和所述修復函數(shù)的參數(shù)向量。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā) 送組播/廣播報文在所述出口發(fā)送包括當所述出口數(shù)據(jù)結(jié)構(gòu)中包含可用的出口的修改函數(shù)時,利用所述修改函數(shù)的參數(shù)個數(shù) 和所述修改函數(shù)的參數(shù)向量調(diào)用所述出口的修改函數(shù)對所述待發(fā)送組播/廣播報文進行 修改,并將修改后的組播/廣播報文在所述出口發(fā)送;當所述出口數(shù)據(jù)結(jié)構(gòu)中未包含可用的出口的修改函數(shù)時,直接將所述待發(fā)送組播/廣 播報文在所述出口發(fā)送。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)重新獲取所 述待發(fā)送組播/廣播報文包括當所述出口數(shù)據(jù)結(jié)構(gòu)中包含可用的出口的修復函數(shù)時,利用所述修復函數(shù)的參數(shù)個數(shù) 和所述修復函數(shù)的參數(shù)向量調(diào)用所述出口的修復函數(shù)對所述發(fā)送完畢的報文進行修復,以 重新生成所述待發(fā)送組播/廣播報文;當所述出口數(shù)據(jù)結(jié)構(gòu)中未包含可用的出口的修復函數(shù)時,直接將所述發(fā)送完畢的報文 作為所述待發(fā)送組播/廣播報文。
6.一種報文處理裝置,其特征在于,包括預處理模塊,用于獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交換屬 性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu);發(fā)送模塊,用于按照預設的順序獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)所述 出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā)送組播/廣播報文在所述出口發(fā)送,重復該步驟,直到將所述待 發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。
7.根據(jù)權(quán)利要求6所述的報文處理裝置,其特征在于,還包括第一獲取模塊,用于在所述根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā)送組播/廣播報文在所 述出口發(fā)送之后,根據(jù)硬件發(fā)送的中斷信號或報文的發(fā)送完畢狀態(tài)獲取發(fā)送完畢的報文和 發(fā)送報文的出口,并根據(jù)所述發(fā)送報文的出口獲取對應的出口數(shù)據(jù)結(jié)構(gòu);第二獲取模塊,用于根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)重新獲取所述待發(fā)送組播/廣播報文。
8.根據(jù)權(quán)利要求7所述的報文處理裝置,其特征在于,所述出口對應的出口數(shù)據(jù)結(jié)構(gòu) 包括所述出口的索引信息、所述出口的修改函數(shù)、所述出口的修復函數(shù)、所述修改函數(shù)的參 數(shù)個數(shù)、所述修改函數(shù)的參數(shù)向量、所述修復函數(shù)的參數(shù)個數(shù)和所述修復函數(shù)的參數(shù)向量。
9.根據(jù)權(quán)利要求8所述的報文處理裝置,其特征在于,所述發(fā)送模塊包括第一發(fā)送單元,用于當所述出口數(shù)據(jù)結(jié)構(gòu)中包含可用的出口的修改函數(shù)時,利用所述 修改函數(shù)的參數(shù)個數(shù)和所述修改函數(shù)的參數(shù)向量調(diào)用所述出口的修改函數(shù)對所述待發(fā)送 組播/廣播報文進行修改,并將修改后的組播/廣播報文在所述出口發(fā)送,重復該步驟,直 到將所述待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止;第二發(fā)送單元,用于當所述出口數(shù)據(jù)結(jié)構(gòu)中未包含可用的出口的修改函數(shù)時,直接將 所述待發(fā)送組播/廣播報文在所述出口發(fā)送,重復該步驟,直到將所述待發(fā)送組播/廣播報 文在所述所有出口發(fā)送為止。
10.根據(jù)權(quán)利要求8所述的報文處理裝置,其特征在于,所述第二獲取模塊包括第一獲取單元,用于當所述出口數(shù)據(jù)結(jié)構(gòu)中包含可用的出口的修復函數(shù)時,利用所述 修復函數(shù)的參數(shù)個數(shù)和所述修復函數(shù)的參數(shù)向量調(diào)用所述出口的修復函數(shù)對所述發(fā)送完 畢的報文進行修復,以重新生成所述待發(fā)送組播/廣播報文;第二獲取單元,用于當所述出口數(shù)據(jù)結(jié)構(gòu)中未包含可用的出口的修復函數(shù)時,直接將 所述發(fā)送完畢的報文作為所述待發(fā)送組播/廣播報文。
11.一種網(wǎng)絡設備,其特征在于,包括權(quán)利要求6-10中任一項所述的報文處理裝置。
全文摘要
本發(fā)明提供一種報文處理方法、裝置和網(wǎng)絡設備,其中方法包括獲取待發(fā)送組播/廣播報文的所有出口,根據(jù)各所述出口的交換屬性分別生成對應的出口數(shù)據(jù)結(jié)構(gòu),并記錄所述所有出口對應的出口數(shù)據(jù)結(jié)構(gòu);按照預設的順序獲取當前下一個出口對應的出口數(shù)據(jù)結(jié)構(gòu),根據(jù)所述出口數(shù)據(jù)結(jié)構(gòu)將所述待發(fā)送組播/廣播報文在所述出口發(fā)送,重復該步驟,直到將所述待發(fā)送組播/廣播報文在所述所有出口發(fā)送為止。報文處理裝置包括預處理模塊和發(fā)送模塊。網(wǎng)絡設備包括上述報文處理裝置。本發(fā)明解決了現(xiàn)有技術中組播/廣播報文發(fā)送時占用較多CPU資源的缺陷,避免了報文復制占用過多CPU資源,提高了網(wǎng)絡設備的交換效率。
文檔編號H04L12/18GK101945040SQ201010269269
公開日2011年1月12日 申請日期2010年8月31日 優(yōu)先權(quán)日2010年8月31日
發(fā)明者梁星 申請人:北京星網(wǎng)銳捷網(wǎng)絡技術有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
西乌珠穆沁旗| 高碑店市| 尉犁县| 洪江市| 准格尔旗| 松阳县| 宝应县| 新密市| 武宣县| 万山特区| 厦门市| 鹤庆县| 徐水县| 龙州县| 麻江县| 确山县| 望都县| 水富县| 民丰县| 息烽县| 贵州省| 长宁区| 罗江县| 且末县| 长宁区| 晴隆县| 靖宇县| 大埔县| 贵德县| 突泉县| 东乌| 疏勒县| 锡林郭勒盟| 广饶县| 揭东县| 丰原市| 察雅县| 镇赉县| 江城| 三河市| 吐鲁番市|