專利名稱:一種用于高速獲取tcp連接數(shù)據(jù)的方法和設備的制作方法
技術領域:
本發(fā)明涉及網(wǎng)絡數(shù)據(jù)處理領域,具體涉及一種用于高速獲取TCP連接數(shù)據(jù)的方法 和設備。
背景技術:
TCP卸載技術是把主機軟件中的TCP/ip網(wǎng)絡協(xié)議棧處理固化到網(wǎng)卡硬件中實現(xiàn), 以便降低系統(tǒng)CPU負載,增大網(wǎng)絡IO帶寬的技術。TCP卸載系統(tǒng)一般包括兩部分功能,第一 部分是TCP連接狀態(tài)管理,用TCP連接表來維護每個TCP連接開始、數(shù)據(jù)傳輸、關閉的狀態(tài)。 第二部分是TCP數(shù)據(jù)管理,用來把亂序的TCP報文的數(shù)據(jù)進行重新排序,把TCP傳輸?shù)臄?shù)據(jù) 提取出來提交給主機。一般在TCP卸載系統(tǒng)中,硬件在進行TCP數(shù)據(jù)管理時,要使用一個數(shù)據(jù)緩存器,把 每個TCP連接的數(shù)據(jù)提取出來,用緩沖器完成TCP數(shù)據(jù)的重排序和拼接,然后以緩沖區(qū)為單 位向主機系統(tǒng)提交。申請?zhí)?00680(^6^7. 4公開了一種透明傳輸控制協(xié)議(TCP)卸載的方法和系統(tǒng), 所述方法的各個方面包括在網(wǎng)絡接口卡處理器中收集TCP段,但不將狀態(tài)信息轉(zhuǎn)移到主 機系統(tǒng)。收集的TCP段緩存在結合器中。結合器可檢驗與收集的TCP段相關的網(wǎng)絡流在流 查找表(FLT)中具有入口。當FLT已滿時,結合器可關閉當前入口,并將網(wǎng)絡流指派到可用 入口。結合器也可更新FLT中的信息。當終止TCP段收集的事件發(fā)生時,結合器可基于收集 的TCP段生成單個聚合的TCP段??蓪⒕酆系腡CP段和狀態(tài)信息傳送到主機以進行處理。申請?zhí)?3820350. 2公開了一種TCP卸載的系統(tǒng)和方法。在TEEC上接收輸入TCP 分組,并由所述TEEC處理所述輸入分組的至少一部分一次,而不必由所述TEEC進行任何 重組和/或重發(fā)。至少一部分所述輸入TCP分組可緩存在所述TEEC的至少一個內(nèi)部彈性 緩存器中。所述內(nèi)部彈性緩存器可包括接收內(nèi)部彈性緩存器和/或發(fā)送內(nèi)部彈性緩存器。 因此,至少一部分所述輸入TCP分組可緩存在所述接收內(nèi)部彈性緩存器中。至少一部分所 述處理過的輸入分組可放進一個主機存儲器的一部分中,以便由主機處理器或CPU進行處 理。此外,至少一部分所述處理過的輸入TCP分組可DMA傳送到所述所述主機存儲器的一 部分中。用一般TCP卸載系統(tǒng)獲取TCP數(shù)據(jù)的缺點是,有些應用業(yè)務需要對TCP數(shù)據(jù)實時 處理,主機需要及時拿到TCP傳輸?shù)臄?shù)據(jù),一般TCP卸載系統(tǒng)需要硬件拼接一定量的數(shù)據(jù)后 再提交給主機,雖然有利于提高系統(tǒng)帶寬,但是降低了系統(tǒng)的響應速度。
發(fā)明內(nèi)容
本發(fā)明目的是提供一種系統(tǒng)把TCP數(shù)據(jù)及時上傳主機,避免TCP數(shù)據(jù)在硬件中拼接。一種用于高速獲取TCP連接數(shù)據(jù)的方法,包含以下步驟A、專用芯片通過網(wǎng)絡接口接收到TCP報文后,從報文中提取出TCP連接信息,并把原始報文暫存到板載內(nèi)存中;B、專用芯片根據(jù)報文的TCP連接信息,查詢板載內(nèi)存中的TCP連接表,如果是新建 立連接的報文,就在連接表中給該連接增加一個新的表項;如果是關閉連接的報文,就把連 接表中該連接的表項刪除;如果是已經(jīng)建立連接的數(shù)據(jù)報文,則在連接表項中記錄該連接 的當前狀態(tài);C、對于TCP數(shù)據(jù)報文,專用芯片根據(jù)連接表項中記錄的狀態(tài),判斷該報文是否發(fā) 生了亂序,如果沒有亂序,則直接上傳給主機;如果發(fā)生亂序,則把報文放入鏈表,等待后繼 報文進行重新排序,排序完成后,以報文為單位上傳主機;D、網(wǎng)卡在向主機提交報文前,在報文的封裝頭前增加一個自定義的報頭結構,保 存該TCP連接的信息;E、驅(qū)動軟件把報文從網(wǎng)卡板載內(nèi)存?zhèn)鬏數(shù)街鳈C內(nèi)存;F、應用軟件通過API接口庫讀取TCP數(shù)據(jù)時,接口庫軟件從主機內(nèi)存中讀取原始 報文,根據(jù)報文附加的信息頭,定位TCP數(shù)據(jù),把原始報文數(shù)據(jù)結構,轉(zhuǎn)換成應用需要的TCP 數(shù)據(jù)結構。本發(fā)明的一種優(yōu)選技術方案在于發(fā)生亂序后的排序過程使用報文鏈表,不使用 拼接緩沖器,只對報文重新排序,不進行TCP數(shù)據(jù)的拼接。本發(fā)明的再一優(yōu)選技術方案在于所述D步驟中保存的TCP連接信息包括連接狀 態(tài)、TCP數(shù)據(jù)在報文中的偏移。一種用于高速獲取TCP連接數(shù)據(jù)的設備,包括網(wǎng)卡和主機軟件部分,所述網(wǎng)卡包括專用芯片、網(wǎng)絡接口和板載內(nèi)存;所述主機軟件部分包括網(wǎng)卡驅(qū)動和應用軟件API接口庫。本發(fā)明的一種優(yōu)選技術方案在于所述專用芯片為網(wǎng)卡的主控芯片,運行所有的 報文處理邏輯。本發(fā)明既能及時把報文提交給主機,又能方便實現(xiàn)原始報文數(shù)據(jù)到TCP數(shù)據(jù)格式 的轉(zhuǎn)換,起到數(shù)據(jù)拼接的作用,整個系統(tǒng)可以實現(xiàn)高速的獲取TCP數(shù)據(jù)。
圖1是本發(fā)明系統(tǒng)結構圖
具體實施例方式本技術方案是一個軟硬件一體的設備,硬件是以專用芯片為主要器件設計的網(wǎng) 卡,包括網(wǎng)絡接口,專用芯片,板載內(nèi)存構成。軟件由網(wǎng)卡驅(qū)動和應用軟件API接口庫構成。系統(tǒng)每部分的功能如下(1)網(wǎng)絡接口 把網(wǎng)絡報文數(shù)據(jù)接收進網(wǎng)卡。(2)專用芯片網(wǎng)卡的主控芯片,運行所有的報文處理邏輯。(3)板載內(nèi)存存儲TCP連接管理用的連接表,暫存報文。(4)網(wǎng)卡驅(qū)動管理配置網(wǎng)卡,為網(wǎng)卡向主機的數(shù)據(jù)傳輸提供通路。(5)API接口庫連接網(wǎng)卡系統(tǒng)和應用軟件的編程接口,把網(wǎng)卡提交給主機的報文 格式轉(zhuǎn)換成應用軟件需要的TCP數(shù)據(jù)格式。
該設備的處理方法和過程如下(1)硬件網(wǎng)卡接收報文。專用芯片通過網(wǎng)絡接口接收到TCP報文后,從報文中提取出TCP連接信息,并把原 始報文暫存到板載內(nèi)存中。(2)硬件網(wǎng)卡進行TCP連接管理。專用芯片根據(jù)報文的TCP連接信息,查詢板載內(nèi)存中的TCP連接表,如果是新建立 連接的報文,就在連接表中給該連接增加一個新的表項,如果是關閉連接的報文,就把連接 表中該連接的表項刪除,如果是已經(jīng)建立連接的數(shù)據(jù)報文,則在連接表項中記錄該連接的 當前狀態(tài)。(3)網(wǎng)卡硬件進行TCP亂序數(shù)據(jù)的重新排序,但不進行數(shù)據(jù)拼接。對TCP數(shù)據(jù)報文,專用芯片根據(jù)連接表項中記錄的狀態(tài),判斷該數(shù)據(jù)報文是否發(fā) 生亂序,如果沒有亂序,則直接上傳給主機;如果發(fā)生亂序,則把報文放入鏈表,等待后繼報 文進行重新排序,排序完成后,以報文為單位上傳主機。這個排序過程使用報文鏈表,不使 用拼接緩沖器,不進行TCP數(shù)據(jù)的拼接。(4)網(wǎng)卡硬件給報文添加信息報頭,記錄TCP連接信息。網(wǎng)卡在向主機提交報文前,在報文的封裝頭前增加一個自定義的報頭結構,其中 保存該TCP連接的信息,包括連接狀態(tài)、TCP數(shù)據(jù)在報文中的偏移等。(5)驅(qū)動軟件把報文從網(wǎng)卡板載內(nèi)存?zhèn)鬏數(shù)街鳈C內(nèi)存。(6) API接口庫進行數(shù)據(jù)格式轉(zhuǎn)換。 應用軟件通過API接口庫讀取TCP數(shù)據(jù)時,接口庫軟件從主機內(nèi)存中讀取原始報 文,根據(jù)報文附加的信息頭,定位TCP數(shù)據(jù),把原始報文數(shù)據(jù)結構,轉(zhuǎn)換成應用需要的TCP數(shù) 據(jù)結構。 本發(fā)明已經(jīng)在曙光生產(chǎn)的網(wǎng)絡安全專用服務器中使用,取得了良好的效果。
權利要求
1.一種用于高速獲取TCP連接數(shù)據(jù)的方法,其特征在于包含以下步驟A、專用芯片通過網(wǎng)絡接口接收到TCP報文后,從報文中提取出TCP連接信息,并把原始 報文暫存到板載內(nèi)存中;B、專用芯片根據(jù)報文的TCP連接信息,查詢板載內(nèi)存中的TCP連接表,如果是新建立連 接的報文,就在連接表中給該連接增加一個新的表項;如果是關閉連接的報文,就把連接表 中該連接的表項刪除;如果是已經(jīng)建立連接的數(shù)據(jù)報文,則在連接表項中記錄該連接的當 前狀態(tài);C、對于TCP數(shù)據(jù)報文,專用芯片根據(jù)連接表項中記錄的狀態(tài),判斷該報文是否發(fā)生了 亂序,如果沒有亂序,則直接上傳給主機;如果發(fā)生亂序,則把報文放入鏈表,等待后繼報文 進行重新排序,排序完成后,以報文為單位上傳主機;D、網(wǎng)卡在向主機提交報文前,在報文的封裝頭前增加一個自定義的報頭結構,保存該 tcp連接的信息;E、驅(qū)動軟件把報文從網(wǎng)卡板載內(nèi)存?zhèn)鬏數(shù)街鳈C內(nèi)存;F、應用軟件通過API接口庫讀取tcp數(shù)據(jù)時,接口庫軟件從主機內(nèi)存中讀取原始報文, 根據(jù)報文附加的信息頭,定位tcp數(shù)據(jù),把原始報文數(shù)據(jù)結構,轉(zhuǎn)換成應用需要的tcp數(shù)據(jù) 結構。
2.如權利要求1所述一種用于高速獲取TCP連接數(shù)據(jù)的方法,其特征在于發(fā)生亂序 后的排序過程使用報文鏈表,不使用拼接緩沖器,不進行tcp數(shù)據(jù)的拼接。
3.如權利要求1所述一種用于高速獲取TCP連接數(shù)據(jù)的方法,其特征在于所述D步 驟中保存的TCP連接信息包括連接狀態(tài)、TCP數(shù)據(jù)在報文中的偏移。
4.一種用于高速獲取TCP連接數(shù)據(jù)的設備,其特征在于包括網(wǎng)卡和主機軟件部分,所述網(wǎng)卡包括專用芯片、網(wǎng)絡接口和板載內(nèi)存;所述主機軟件部分包括網(wǎng)卡驅(qū)動和應用軟件API接口庫。
5.如權利要求4所述一種用于高速獲取TCP連接數(shù)據(jù)的設備,其特征在于所述專用 芯片為網(wǎng)卡的主控芯片,運行所有的報文處理邏輯。
全文摘要
本發(fā)明提供了一種用于高速獲取TCP連接數(shù)據(jù)的方法和設備。硬件網(wǎng)卡接收到報文并進行TCP連接管理后,對沒有亂序的報文。添加記錄TCP連接的信息報頭后,直接上傳給主機;對發(fā)生了亂序的報文進行TCP亂序數(shù)據(jù)的重新排序,但排序過程不使用緩沖器進行數(shù)據(jù)拼接;API接口庫接收到TCP報文后再進行數(shù)據(jù)拼接和TCP數(shù)據(jù)格式轉(zhuǎn)換等操作。本發(fā)明既能及時把報文提交給主機,又能方便實現(xiàn)原始報文數(shù)據(jù)到TCP數(shù)據(jù)格式的轉(zhuǎn)換,起到數(shù)據(jù)拼接的作用,整個系統(tǒng)可以實現(xiàn)高速的獲取TCP數(shù)據(jù)。
文檔編號H04L29/08GK102111403SQ20101060898
公開日2011年6月29日 申請日期2010年12月17日 優(yōu)先權日2010年12月17日
發(fā)明者劉朝輝, 張磊, 張英文, 李靜, 白宗元, 紀奎 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司