一種數據處理方法及網絡設備的制造方法
【技術領域】
[0001]本發明實施例涉及通信技術領域,尤其涉及一種數據處理方法及網絡設備。
【背景技術】
[0002]隨著現代通信網絡的飛速發展,人們對網絡設備提出了更高的要求,不僅需要保證數據的可靠性和安全性,還要求更加高速的數據處理能力。路由器、交換機、防火墻等網絡設備通常通過軟件管理內存例如通過軟件申請或釋放的軟件緩沖區buffer,對接收的數據進行處理。高速數據處理能力的要求使得網絡設備的數據處理方式擴展為通過硬件管理的內存進行數據處理。
[0003]現有技術中,網絡設備從外部設備接收到數據后,通過硬件申請硬件buffer,并通過直接內存存取(Direct Memory Access, DMA)方式將數據存儲至硬件buffer對應的內存區域中,該存儲過程無需中央處理器(Central Processing Unit,CPU)和軟件的參與,僅通過網絡設備的硬件部分進行操作。在硬件buffer獲取到該數據后,網絡設備可以將硬件buffer中的數據拷貝到軟件buffer的數據區,從而由硬件buffer轉換成軟件buffer以使得上層應用模塊可以通過軟件buffer進行數據處理,并將硬件buffer釋放回硬件buffer管理單元。其中的軟件buffer滿足上層應用模塊進行數據處理時需要的數據結構,例如,Iinux系統中需要的sk_buff結構的軟件buffer,vxwork系統中需要的m_blk結構的軟件buffer等。在上層應用模塊完成數據處理或數據轉發后,將軟件buffer釋放回軟件buffer池。上述過程可以正確地將硬件buffer釋放回硬件buffer管理單元并將軟件buffer釋放回軟件buffer池,從而可以避免軟件buffer和硬件buffer的錯誤釋放。
[0004]但是,上述過程將硬件buffer中的數據拷貝到軟件buffer的數據區的拷貝動作,增加了網絡設備進行數據處理的時間,并且過多地消耗了系統資源,從而降低了系統的運行效率。
【發明內容】
[0005]本發明實施例提供一種數據處理方法及網絡設備,能夠解決現有技術中由于需要將硬件buffer中的數據拷貝到軟件buffer的數據區以供上層應用模塊進行處理,從而導致的系統運行效率低的問題。
[0006]為達到上述目的,本發明的實施例采用如下技術方案:
[0007]第一方面,提供一種數據處理方法,包括:
[0008]A、從物理接口接收到待處理數據后,獲取指向空閑硬件buffer的第一指針,所述第一指針指向的地址為所述硬件buffer的起始地址;
[0009]B、根據所述第一指針將待處理數據存儲至所述硬件buffer ;
[0010]C、根據所述第一指針獲取第二指針,所述第二指針指向的地址為與所述硬件buffer對應的軟件buffer的起始地址,所述軟件buffer的數據區與所述硬件buffer對應同一塊內存區域;
[0011]D、將所述第二指針指向的所述軟件buffer交由上層應用模塊進行數據處理。
[0012]結合第一方面,在第一方面的第一種可能的實現方式中,在步驟A之前,所述方法還包括初始化步驟:
[0013]在所述軟件buffer中存放指向該軟件buffer起始地址的第二指針,所述第二指針的起始存放地址與所述第一指針指向的地址間隔預設字節數。
[0014]結合第一方面或第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,步驟C中,所述根據所述第一指針獲取所述第二指針包括:
[0015]根據預設字節數,將所述第一指針指向的地址進行偏移計算,從計算出的地址中獲取存放的軟件buffer的起始地址。
[0016]結合第一方面或第一方面的第一種可能的實現方式,在第一方面的第三種可能的實現方式中,所述方法還包括如下步驟:
[0017]E、若確定不需要將上層應用模塊處理后的數據進行轉發,則將所述軟件buffer釋放至軟件buffer池,并按照一定的周期時間將所述軟件buffer池中的所有軟件buffer的數據區作為空閑硬件buffer進行管理;
[0018]若確定需要將上層應用模塊處理后的數據進行轉發,則在將上層應用模塊處理后的數據發送完成后,若確定待釋放buffer為與硬件buffer對應的軟件buffer,則將所述待釋放軟件buffer的數據區作為空閑硬件buffer進行管理。
[0019]結合第一方面的第三種可能的實現方式,在第一方面的第四種可能的實現方式中,步驟E中,所述確定待釋放buffer為與硬件buffer對應的軟件buffer包括:
[0020]判斷所述軟件buffer中存放的硬件buffer標識符與預設標識符一致,和/或所述軟件buffer起始地址的起始存放地址與其數據區的起始地址間隔的字節數與預設字節數一致,則確定所述待釋放軟件buffer為與硬件buffer對應的軟件buffer。
[0021]第二方面,提供一種網絡設備,包括:
[0022]硬件buffer管理單元,用于根據buffer處理單元的申請,向buffer處理單元分配指向空閑硬件buffer的第一指針,所述第一指針指向的地址為所述硬件buffer的起始地址;
[0023]buffer處理單元,用于從物理接口接收待處理數據,并將所述待處理數據存儲至所述第一指針指向的硬件buffer ;并用于根據所述第一指針獲取第二指針,所述第二指針指向的地址為與所述硬件buffer對應的軟件buffer的起始地址,所述軟件buffer的數據區與所述硬件buffer對應同一塊內存區域;并將所述第二指針指向的所述軟件buffer交由上層應用模塊進行數據處理。
[0024]結合第二方面,在第二方面的第一種可能的實現方式中,所述網絡設備還包括:
[0025]初始化單元,用于在軟件buffer中存放指向該軟件buffer起始地址的第二指針,所述第二指針的起始存放地址與所述第一指針指向的地址間隔預設字節數。
[0026]結合第二方面或第二方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述buffer處理單元還用于:
[0027]根據預設字節數,將所述第一指針指向的地址進行偏移計算,從計算出的地址中獲取存放的軟件buffer的起始地址。
[0028]結合第二方面或第二方面的第一種可能的實現方式,在第一方面的第三種可能的實現方式中,所述buffer處理單元還用于:
[0029]若確定不需要將上層應用模塊處理后的數據進行轉發,則將所述軟件buffer釋放至軟件buffer池,并按照一定的周期時間將所述軟件buffer池中的所有軟件buffer的數據區批量釋放至硬件buffer管理單元;
[0030]若確定需要將上層應用模塊處理后的數據進行轉發,則在將上層應用模塊處理后的數據發送完成后,若確定待釋放buffer為與硬件buffer對應的軟件buffer,則將所述待釋放軟件buffer的數據區釋放至硬件buffer管理單元。
[0031]結合第二方面的第三種可能的實現方式,在第二方面的第四種可能的實現方式中,所述buffer處理單元還用于:
[0032]判斷所述軟件buffer中存放的硬件buffer標識符與預設標識符一致,和/或所述軟件buffer起始地址的起始存放地址與其數據區的起始地址間隔的字節數與預設字節數一致,則確定所述待釋放軟件buffer為與硬件buffer對應的軟件buffer,則將所述待釋放軟件buffer的數據區釋放至硬件buffer管理單元。
[0033]本發明實施例提供一種數據處理方法及網絡設備,由于硬件buffer與對應的軟件buffer的數據區對應同一塊內存區域,因而當網絡設備根據指向硬件buffer起始地址的第一指針將待處理數據存儲至硬件buffer時,相當于同時將待處理數據存儲至硬件buffer對應的軟件buffer的數據區,從而在網絡設備根據第一指針獲取到指向軟件buffer起始地址的第二指針后,可以將第二指針指向的軟件buffer交由上層應用模塊進行數據處理,從而可以避免將待處理數據從硬件buffer拷貝到軟件buffer的數據區,因此,能夠解決現有技術中由于需要將硬件buffer中的數據拷貝到軟件buffer的數據區以供上層應用模塊進行數據處理,從而導致的系統運行效率低的問題。
【附圖說明】
[0034]為了更清楚地說明本發明實施例的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0035]圖1為本發明實施例提供的一種數據處理方法流程圖;
[0036]圖2為本發明另一實施例提供的一種數據處理方法流程圖;
[0037]圖3為本發明實施例提供的另一種數據處理方法流程圖;
[0038]圖4為本發明實施例提供的一種軟件buffer的結構示意圖;
[0039]圖5為本發明另一實施例提供的一種網絡設備結構示意圖;
[0040]圖6為本發明另一實施例提供的一種網絡設備結構示意圖。
【具體實施方式】
[0041]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0042]本發明以下實施例中的硬件buffer及其對應的軟件buffer的數據區共用一塊內存區域,當路由器等網絡設備將待處理數據存儲至硬件buffer時,同時也將待處理數據存儲到了硬件buf的軟件buf f er的數據區,從而可以避免現有技術中的拷貝動作,節省資源開銷,提高系統運行效率。
[0043]實施例1
[0044]本發明實