專利名稱:基于tcam序偶的tcp序列號檢查硬件實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信、網(wǎng)絡(luò)安全和組網(wǎng)技術(shù)領(lǐng)域,特別涉及一種TCP 序列號檢查的硬件實現(xiàn)方法
背景技術(shù):
隨著Internet的高速發(fā)展,越來越多的個人和企業(yè)加入其中,隨之而來的 網(wǎng)絡(luò)安全問題也越來越受重視。TCP/IP協(xié)議是互聯(lián)網(wǎng)事實上的標準網(wǎng)絡(luò)協(xié) 議,TCP/IP協(xié)議的安全問題是保障互聯(lián)網(wǎng)絡(luò)安全的關(guān)鍵環(huán)節(jié)。
序列號是TCP協(xié)議用于保證數(shù)據(jù)可靠性的重要手段,序列號檢査是目 前網(wǎng)絡(luò)安全設(shè)備必備的狀態(tài)檢測功能的一個重要組成部分。序列號檢查包 括數(shù)據(jù)包序列號邊界檢査和確認包ACK序列號邊界檢査,其中數(shù)據(jù)包序列 號邊界檢查包括數(shù)據(jù)包序列號上界檢查和數(shù)據(jù)包序列號下界檢査,確認包 ACK序列號邊界檢查包括確認包ACK序列號上界檢査和確認包ACK序列 號下界檢査。無論進行數(shù)據(jù)包序列號邊界檢査還是確認包ACK序列號邊界 檢査,都需要結(jié)合當前數(shù)據(jù)包攜帶的序列號、ACK序列號等信息和本TCP 連接的上一數(shù)據(jù)包攜帶的序列號、ACK序列號等信息進行檢查,硬件實現(xiàn) 比較困難。
另外,隨著各種多媒體應用的開發(fā)和普及,網(wǎng)絡(luò)帶寬越來越高,以前只有2兆的出口帶寬,而現(xiàn)在已經(jīng)千兆入戶,需要網(wǎng)絡(luò)安全設(shè)備提供吉比 特級速率支持,對序列號檢查提出了高速率的要求,需要硬件實現(xiàn)。
目前,序列號檢査通常有以下兩種實現(xiàn)方式
a、 軟件實現(xiàn)序列號檢查
這是目前網(wǎng)絡(luò)安全系統(tǒng)最常用的實現(xiàn)方式,主要是為每一個TCP連接 創(chuàng)建狀態(tài)跟蹤表,用該表來記錄輸入包的狀態(tài)信息,依據(jù)表中的狀態(tài)信息 對接收到TCP數(shù)據(jù)包進行序列號檢查來實現(xiàn)其狀態(tài)過濾。這種方式實現(xiàn)簡 單,靈活性好,但數(shù)據(jù)處理速度慢,無法適應吉比特網(wǎng)絡(luò)環(huán)境。
b、 硬件實現(xiàn)序列號檢查
目前己提出的硬件實現(xiàn)序列號檢查的方法是基于動態(tài)隨機存儲器 (DRAM)實現(xiàn)的,為每一個TCP連接創(chuàng)建狀態(tài)表,通過hash算法實現(xiàn)一個 TCP連接所必需的五元組信息(源IP地址、目的IP地址、源端口號、目 的端口號及協(xié)議號)向存儲該TCP連接狀態(tài)信息表項地址的映射,通過訪 問狀態(tài)表中存儲的信息實現(xiàn)對接收到TCP數(shù)據(jù)包的序列號檢査。這種方式 實現(xiàn)難度較大, 一次檢査需要多次訪存,且性能依賴于hash算法,很難達 到線速檢査,無法充分發(fā)揮硬件高速的特點。
發(fā)明內(nèi)容
本發(fā)明的目的是針對現(xiàn)有序列號檢査實現(xiàn)方法難以滿足網(wǎng)絡(luò)高速環(huán)境 需求的問題,提供一種基于三態(tài)地址關(guān)聯(lián)存儲器(TCAM)序偶的硬件實 現(xiàn)方法,能夠支持吉比特速率序列號檢査,且易于工程實現(xiàn)。
TCAM基于內(nèi)容實現(xiàn)并行查找,無論表項的條目數(shù)有多大,都可以一次査表命中,是一種適合吉比特速率下的査表解決方案。本發(fā)明所述序列號硬件檢査方法基于TCAM和靜態(tài)隨機存取存儲器(SRAM)實現(xiàn),具體 的說,利用TCAM來存儲需要進行序列號檢査的TCP連接的標識信息(即 源IP,目的IP,源端口,目的端口和協(xié)議),又稱査表關(guān)鍵字,每一個查 表關(guān)鍵字可唯一標識一個TCP連接;利用SRAM存儲每一個進行序列號 檢査的TCP連接的序列號檢査信息。TCAM和SRAM組成常見的硬件査 表結(jié)構(gòu),在本發(fā)明所述方法的支持下,共同實現(xiàn)高速序列號檢查。 本發(fā)明所述方法具體包括四個步驟步驟a:在TCAM上實現(xiàn)基于查表關(guān)鍵字序偶對的存儲單元邏輯化分 每個TCP連接由源IP,目的IP,源端口,目的端口和協(xié)議等五元組信 息唯一確定,進行TCP序列號檢査時需以五元組信息作為査表關(guān)鍵字。本 方法要求,表項初始配置時應按照以下步驟對TCAM內(nèi)査表關(guān)鍵字的存儲 區(qū)域進行邏輯化分假設(shè)TCAM的地址空間為iV, TCAM單個地址單元存 放的數(shù)據(jù)寬度是丄,上述五元組的總長度是丄,,則需要將TCAM從地址O 到地址7V-1按序進行單元塊劃分,每一個單元塊包括「r"l個地址,門代表 上界取整。劃分完畢后,統(tǒng)一對所有單元塊進行整數(shù)編號,0,l...「w/「mH。 例如,單元塊0包括TCAM的0到「ml-i地址空間,單元塊l包括TCAM 的「i'/il到「L'/"2一地址空間,其余單元塊依次類推。由于TCP連接是全雙 工過程,則在單元塊編號完畢后,需按照(0, 1), (2, 3)…(/, … 的方式將單元塊組成序偶對,其中/為偶數(shù),單元塊/對應的TCAM地址 空間包括「丄'/丄,",「丄'/i"h+i,…,「i'/々("l)-1 ,共「z/"l個地址, 一對序偶表征一條TCP連接的正向、反向兩個方向。對于任意序偶對(/, /+1), / 和&1互為序偶,即/為/+1的序偶,f+l為/的序偶。對于任意正整數(shù), 若/為奇數(shù)時,其序偶為j'一l,若_/為偶數(shù)時,其序偶為/H。 步驟b:輸入SYN包的檢査及表項建立SYN數(shù)據(jù)包是TCP連接的起始數(shù)據(jù)包,硬件電路接收到TCP報文后, 根據(jù)TCP報文頭部的SYN字段和ACK字段判斷出一個TCP連接建立的 SYN請求包,首先對其進行常規(guī)包檢查,具體包括包完整性檢査和有效性 檢査,檢査通過后進行規(guī)則檢査,否則丟棄該包。然后,硬件電路根據(jù)通 過規(guī)則檢査的SYN請求包的五元組信息,假設(shè)為SIP1,SP1,DIP1,DP1,P組 成表項的關(guān)鍵字(SIP1,SP1,DIP1,DP1,P),存放在TCAM的空閑序偶對的 低編號單元塊中,即編號是偶數(shù)的單元塊中,假設(shè)為單元塊/。該表項存儲 在TCAM中某空閑序偶對的偶數(shù)單元塊/后,則在SRAM中對應單元塊/ 上存放該包攜帶的序列號信息(包括序列號s,,確認號a,,長度n,和窗口 長度w,信息)。接著,根據(jù)設(shè)備需要,對該包進行網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT, Network Address Translation)或不進《亍。最后,根據(jù)數(shù)據(jù)包五元纟且《言息, 假設(shè)為SIP2,SP2,DIP2,DP2,P,組成一條反轉(zhuǎn)條目(DIP2,DP2, SIP2,SP2,P), 添加到TCAM的單元塊&1中,與上述單元塊/的表項組成序偶對,其中, 若數(shù)據(jù)包經(jīng)過NAT轉(zhuǎn)換,則五元組信息改變,SIP2,SP2,DIP2,DP2, P為NAT 轉(zhuǎn)換后新的五元組信息;若數(shù)據(jù)包未經(jīng)過NAT轉(zhuǎn)換,則五元組信息未改變, SIP2,SP2,DIP2,DP2,P即為數(shù)據(jù)包的原五元組信息SIP1,SP1,DIP1,DP1,P。對 應的,SRAM的單元塊Z+1中,填寫全零。步驟c:輸入SYN+ACK包的檢查TCP數(shù)據(jù)包輸入后,硬件電路根據(jù)TCP報文頭部的SYN字段和ACK 字段判斷出SYN+ACK包,首先對其進行常規(guī)包檢查,若檢查未能通過, 則丟棄該包;若檢查通過,則進行序列號檢査首先從數(shù)據(jù)包中取出五原 組字段,組成査表關(guān)鍵字,輸入至TCAM中進行査表,若査表未命中,則 丟棄該包,若査表命中,命中地址屬于單元塊/+1 (/是偶數(shù)),則需要從 SRAM對應的單元塊/中讀出序列號信息(序列號s2',確認號a2',長度 n2,),利用這些讀出信息與SYN+ACK包中TCP頭部的確認號32共同完成 ACK序列號檢査參ACK序列號上界檢査,判斷&<= (s2,+ n2,)是否滿足,若不滿足, 則丟棄該數(shù)據(jù)包,若滿足,則ACK序列號上界檢査通過;參ACK序列號下界檢查。由于&缺省大于0,因此該項檢查可忽略。 因此,若ACK序號上界檢査通過,則判定該包通過序列號檢查,將該 SYN+ACK包攜帶的序列號信息(序列號S2,確認號&,長度n2,窗口長 度w2)填寫到SRAM的/+1單元塊的對應位置。步驟d:輸入數(shù)據(jù)包/ACK包的檢査及表項刪除判斷 除SYN包和SYN+ACK包之外,其它TCP數(shù)據(jù)包輸入后,硬件電路 根據(jù)TCP報文頭部的SYN字段和ACK字段判斷出是數(shù)據(jù)包還是ACK包 (即確認包),對于這些包首先進行合法性檢査,若檢査未能通過,則丟棄 該包;若檢查通過,則根據(jù)包類型進行相應的數(shù)據(jù)包序列號檢查或ACK序 列號檢査,其具體檢査步驟如下參數(shù)據(jù)包序列號檢査從輸入TCP數(shù)據(jù)包中提取出五元組信息,組成査表關(guān)鍵字查找TCAM 表,若査表未命中TCAM表,則丟棄該包,若查表命中TCAM表,命中 地址屬于某單元塊乂 O'是整數(shù),0=<y'<=「w「z'"]]),則從SRAM的單元塊/ 的序偶單元塊中讀出其中的序列號檢查信息,假設(shè)這些信息為序列號Sd", 確認號a,,長度nd",窗口Wd"。然后,取出該數(shù)據(jù)包TCP頭部攜帶的序 列號Sd,確認號ad,長度nd和窗口 Wd等信息,與SRAM中單元塊y的序 偶單元塊中讀出的序列號檢查信息共同完成數(shù)據(jù)包序列號上界檢查 sd+nd<=(ad"+wd");數(shù)據(jù)包序列號下界檢查Sd〉二ad"。若二者檢查都通過, 則將輸入數(shù)據(jù)包的序列號sd、確認號ad、長度rid和窗口 Wd寫入到SRAM 的單元塊/中序列號、確認號、長度和窗口對應的位置(SRAM中對應序 列號信息更新)。若有任何邊界檢査未能通過,則丟棄數(shù)據(jù)包,不做其他處 理。參確認包ACK序列號檢査確認包輸入后,首先從該包中取出五元組信息組成査表關(guān)鍵字,查找 TCAM表,若査表未命中TCAM表,則丟包該包,若査表命中TCAM表, 命中地址屬于某單元塊A:a是整數(shù),0=<k<=「w「z;/i]l),則首先從SRAM對 應的單元塊A中讀出其中的確認號,假設(shè)為a',然后讀出該ACK包TCP 頭部攜帶的確認號,假設(shè)為a,則首先進行ACK序列號下界檢查 若檢査未通過,則丟棄數(shù)據(jù)包,若檢查通過,繼續(xù)進行ACK序列號上界檢 查從SRAM的單元塊A的序偶單元塊中讀出其中的序列號檢查信息,假設(shè)這些信息為序列號Sa",確認號aa",長度na",窗口Wa"。然后,將該 確認包TCP頭部攜帶的序列號Sa,確認號、,長度Ila和窗口 Wa等信息取出,與SRAM的A:的序偶單元塊中讀出的信息共同完成確認包ACK序列號上界檢查,即判斷aa《""+na")是否滿足,若不滿足,則丟棄該數(shù)據(jù)包;若檢查通過,則將該ACK包的序列號Sa、確認號a^、長度 和窗口Wa寫 入到SRAM的單元塊A:中序列號、確認號、長度和窗口對應的位置(SRAM 中原有的序列號信息更新)。最后,硬件電路對通過序列號檢査的數(shù)據(jù)包進行表項刪除判斷,具體 實施時不區(qū)分數(shù)據(jù)包/ACK包。該數(shù)據(jù)包TCP頭部攜帶的序列號s,確認號 a、長度n和FIN標志位f等信息,且TCAM查表命中地址屬于某單元塊 ta是整數(shù),0=<k<=「w"/i]]),則讀出SRAM的單元塊A:中FIN標志位f 和刪除標志位d'等信息,以及SRAM的A的序偶單元塊中的序列號s"、確 認號a"、長度n"、 FIN標志位f,和刪除標志位d"等信息,綜合以上信息進 行如下判斷和表項更新若f置位(f=l),則將f,置位(f = l);若數(shù)據(jù)包為ACK包,若f,已置位,且s二a", a二s"+l都滿足,則將 d"置位;若d'和d"都置位,則刪除TCAM和SRAM的單元塊A:中內(nèi)容及&的序 偶單元塊中的內(nèi)容,即置全0。否則,無需對TCAM和SRAM中表項進行操作。 本發(fā)明的有益效果-提供了一種基于TCAM序偶的高速序列號檢査的硬件實現(xiàn)方法,能夠 實現(xiàn)吉比特速率的序列號檢査,從而能夠更好地應對網(wǎng)絡(luò)威脅的迅猛發(fā)展。 采用TCAM序偶和SRAM序偶對應,只需一次存取即可實現(xiàn)序列號檢査, 大大加快了處理速度,也降低了實現(xiàn)難度。
圖1為TCP數(shù)據(jù)包結(jié)構(gòu)圖。圖2本發(fā)明的TCAM和SRAM組合實現(xiàn)的硬件査表結(jié)構(gòu)圖。圖3為本發(fā)明的TCAM和SRAM表項配置示意圖。圖4為本發(fā)明的TCAM表項內(nèi)容。圖5為本發(fā)明的SRAM表項內(nèi)容。圖6為本發(fā)明的序列號檢查流程圖。圖7為本發(fā)明的表項更新流程圖。圖2是轉(zhuǎn)發(fā)引擎中普遍使用的一種基于TCAM實現(xiàn)的硬件查表方案, 本發(fā)明所述的方法是在圖2所示的硬件査表方案的基礎(chǔ)上實現(xiàn)的。
具體實施方式
TCP協(xié)議是TCP / IP網(wǎng)絡(luò)協(xié)議模型(也稱為互聯(lián)網(wǎng)分層模型)的傳輸 層協(xié)議,其報文格式如圖l所示。序列號是TCP協(xié)議用于保證數(shù)據(jù)可靠性 的重要手段,序列號檢查是目前網(wǎng)絡(luò)安全設(shè)備必備的狀態(tài)檢測功能的一個 重要組成部分。本發(fā)明公開的序列號檢查方法是面向硬件實現(xiàn),具有高性 能,且易于實現(xiàn)。下面結(jié)合附圖,以輸入TCP包為例,介紹本發(fā)明的處理 流程。首先,介紹本發(fā)明的適用環(huán)境。TCAM和SRAM組合實現(xiàn)硬件查表是 目前常見的高速查表解決方案,圖2是該方案的結(jié)構(gòu)圖,本發(fā)明所述的方 法是在圖2所示結(jié)構(gòu)的基礎(chǔ)上實現(xiàn)的。
本發(fā)明所述方法的硬件表項配置如圖3所示。
TCAM模塊(100)和SRAM模塊(200)串行連接。其中,IOO模塊 中配置査表關(guān)鍵字表,每個TCP連接有正向、反向兩個查表關(guān)鍵字表項, 這兩個表項組成序偶對,例如,如圖3所示,塊0和塊1組成序偶對,每 個査表關(guān)鍵字包括確定一個TCP連接的五元組信息,具體的表項配置包括 以下三個步驟-
步驟1:存儲單元邏輯化分。設(shè)TCAM的地址空間是16384,數(shù)據(jù)寬 度是72,五元組取IPv4協(xié)議的定義,共104比特,如圖4所示,則單元塊 的大小是「104/721=2,表示TCAM內(nèi)每兩個地址單元組成一個單元塊,那么 TCAM內(nèi)部總共包括16384/2=8192個單元塊,單元塊的編號為0, 1,…z',z'+l…8191。編號完畢后,按照(O, 1), (2, 3)…(/, (8190,8191) 方式組成序偶對(z'是偶數(shù)單元塊),如圖3所示。其中每一個單元塊包括 兩個地址,例如,單元塊/包括2z'和2z'+l兩個TCAM地址空間。假設(shè)G, 空閑,則存放時,要求存放在單元塊/中,具體存放在2/和兩 個TCAM地址空間。
步驟2:表項建立。根據(jù)通過常規(guī)包檢査、規(guī)則檢查的SYN請求包的 五元組信息,假設(shè)為 SIP1,SP1,DIP1,DP1,P ,組成表項 (SIP1,SP1,DIP1,DP1,P),存放在TCAM的空閑序偶對的低編號單元塊中,即編號是偶數(shù)的單元塊中,假設(shè)為單元塊z'。根據(jù)經(jīng)過NAT或未經(jīng)過NAT 的該SYN數(shù)據(jù)包的五元組信息,假設(shè)為SIP2,SP2,DIP2,DP2,P,組成一條 反轉(zhuǎn)條目(DIP2,DP2, SIP2,SP2,P),添加到TCAM的單元塊/+1中,與上 述單元塊/的表項組成序偶對。
步驟3:表項刪除。若通過常規(guī)包檢査、序列號檢査的TCP包,若其 命中的SRAM單元塊及其對應的序偶單元塊中的刪除標志位均置位,即設(shè) 置為1,則刪除該數(shù)據(jù)包命中TCAM的單元塊_/及_/的序偶單元塊中的査 表關(guān)鍵字信息。
其中,200模塊中配置序列號檢查信息表,其結(jié)構(gòu)如圖5所示,包括 序列號、ACK序列號、數(shù)據(jù)包長度、窗口長度、FIN標志位和刪除標志位 信息。SRAM單元塊與TCAM單元塊一一對應,如圖3所示。每個序列號 檢查信息表項配置包括以下三個步驟
步驟l:表項建立。經(jīng)過常規(guī)包檢査、規(guī)則檢査的SYN包,在TCAM 上建立該TCP連接的查表關(guān)鍵字單元塊后,在對應的SRAM單元塊上填 寫該SYN包的序列號信息;依據(jù)經(jīng)過常規(guī)包檢査、序列號檢査的SYN+ ACK數(shù)據(jù)包攜帶信息,在TCAM査表命中單元塊所對應的SRAM單元塊 上填寫該SYN+ACK包的序列號信息;
步驟2:表項維護、更新。依據(jù)經(jīng)過常規(guī)包檢查,序列號檢查的TCP 包攜帶的信息,在TCAM査表命中單元塊對應的SRAM單元塊上,寫入 該TCP包攜帶的新的序列號信息,具體實現(xiàn)見下面的表項更新流程詳述。
步驟3:表項拆除。通過常規(guī)包檢查、序列號檢查的TCP包,若TCAM査表命中某單元塊,則從SRAM中讀出對應的單元塊及其序偶單元塊的刪 除標志位(DEL),若二者均為1,則刪除該SRAM單元塊及其序偶單元塊 中的序列號信息,即設(shè)置為全0。
下面結(jié)合圖6和圖7,以收到的TCP包為例(假設(shè)其五元組信息分別 為SIP1,SP1,DIP1,DP1,P,序列號s,長度n, ACK序列號a,窗口w和FIN 標志位f),詳述序列號檢査的處理流程(301 314)。
301:硬件電路判斷輸入包為TCP包。根據(jù)數(shù)據(jù)包的IP報頭的協(xié)議字 段判斷是否TCP包;
302: SYN請求報文判斷。按照圖1所示TCP報文結(jié)構(gòu),讀取報文TCP 頭部SYN字段。若SYN標志位置位,即為1 ,則為SYN報文或者SYN+ACK 報文;若SYN標志位未置,即為0,則為普通報文;
303: TCAM表查找。根據(jù)TCP包的五元組信息,組成査表關(guān)鍵字, 查找TCAM表,若匹配上五元組則查找命中,假設(shè)命中地址屬于某單元塊 A:U是整數(shù),0=<k<=Pw「z;"]l);若未匹配上,則查找失?。?br>
304: SRAM序列號檢査信息讀取。根據(jù)TCAM查表結(jié)果,讀取SRAM 單元塊&中的序列號檢查信息,包括序列號s'、長度n'、 ACK序列號a'、 窗口 w'、 FIN標志位f'和刪除標志位d',并讀取SRAM的A:的序偶單元塊 中的序列號檢査信息,包括序列號s"、長度n"、 ACK序列號a"、窗口w"、 FIN標志位f,和刪除標志位d"。
305: ACK報文判斷。
根據(jù)TCP頭部ACK標志位(見圖l)判斷是否ACK報文,若ACK標志位為1則為ACK報文;若ACK標志位未置,則為數(shù)據(jù)報文;
306:數(shù)據(jù)包序列號上界檢査。若s+rK氣a"+w")成立,則數(shù)據(jù)包序列號 上界檢査通過,否則不通過;
307:數(shù)據(jù)包序列號下界檢查。若s〉二a"成立,則數(shù)據(jù)包序列號下界檢 査通過,否則不通過;
308:確認包ACK序列號上界檢査。若a〈氣Sa"+na")成立,則確認包 ACK序列號上界檢査通過,否則不通過;
309:確認包ACK序列號下界檢査。若^a,成立,則確認包ACK序 列號下界檢査通過,否則不通過;
310:表項更新。依據(jù)數(shù)據(jù)包攜帶的序列號信息,對TCAM和SRAM 的單元塊A和A:的序偶單元塊中的序列號信息進行更新操作;
311: ACK報文判斷。根據(jù)TCP頭部ACK標志位(見圖1)判斷是否 ACK報文,若ACK標志位為1則為ACK報文;若ACK標志位未置,則 為數(shù)據(jù)報文;
312:數(shù)據(jù)包同方向的TCAM及SRAM表項建立。
依據(jù)數(shù)據(jù)包五元組信息組成表項(SIP1,SP1,DIP1,DP1,P),將其存放在 TCAM的空閑序偶對的低編號單元塊中,即編號是偶數(shù)的單元塊中,假設(shè) 為單元塊/,并在SRAM的單元塊/上填寫該數(shù)據(jù)包攜帶的序列號信息;
313: NAT。根據(jù)設(shè)備需要,對數(shù)據(jù)包進行NAT轉(zhuǎn)換,例如,常見的, 接入設(shè)備,如防火墻需要進行NAT轉(zhuǎn)換,骨干路由器則無需進行NAT轉(zhuǎn) 換;假設(shè)經(jīng)過NAT或未經(jīng)過NAT的數(shù)據(jù)包的五元組信息為SIP2,SP2,DIP2,DP2,P,若經(jīng)過NAT,貝!J SIP2,SP2,DIP2,DP2,P為新的五元
組信息,若未經(jīng)過NAT,則SIP2,SP2,DIP2,DP2,P仍為原數(shù)據(jù)包的五元組
信息,艮卩SIP1,SP1,DIP1,DP1,P;
314:數(shù)據(jù)包反方向的TCAM表項建立。依據(jù)數(shù)據(jù)包五元組信息
SIP2,SP2,DIP2,DP2,P,組成一條反轉(zhuǎn)條目(DIP2,DP2, SIP2,SP2,P),添加
到TCAM的單元塊z'+l中。
315:數(shù)據(jù)包丟棄。上述任一項檢査未通過的數(shù)據(jù)包將被丟棄。
其中,310表項更新的具體流程(401 408),具體描述如下
401: SRAM該單元塊的表項更新。依據(jù)數(shù)據(jù)包攜帶信息,序列號s,
長度n, ACK序列號a,窗口 w和FIN標志位f,更新SRAM的單元塊A:
中對應的信息;
402: SRAM該單元塊的序偶單元塊的刪除標志位(DEL)判斷。判斷d" 是否置位,若置位,則該TCP數(shù)據(jù)包反方向的傳輸已結(jié)束,否則,未結(jié)束;
403: SRAM該單元塊的序偶單元塊的FIN標志位判斷。判斷f'是否 置位,若置位,則該TCP數(shù)據(jù)包反方向已發(fā)出FIN請求報文,否則,未發(fā) 出;
404: FIN請求包的ACK報文判斷。若數(shù)據(jù)包為ACK報文,判斷s= a"和a=s"+l是否同時成立,若成立,則該數(shù)據(jù)包為FIN請求包的ACK 報文,否則該數(shù)據(jù)包為非FIN請求包的ACK報文;
405: SRAM該單元塊的序偶單元塊的刪除標志位(DEL)置位。將SRAM 上的A的序偶單元塊中的刪除標志位d"置位;406: SRAM該單元塊的刪除標志位判斷。判斷d'是否置位,若置位, 則該TCP數(shù)據(jù)包方向的傳輸已結(jié)束,否則,未結(jié)束;
407: TCAM和SRAM表項刪除。將TCAM和SRAM上的A:和A:的序 偶單元塊中的表項信息刪除,即設(shè)為全0;
408:表項更新完成。
權(quán)利要求
1、一種基于TCAM序偶的TCP序列號檢查硬件實現(xiàn)方法,其特征在于所述方法是利用TCAM來存儲需要進行序列號檢查的TCP連接的標識信息,又稱查表關(guān)鍵字,每一個查表關(guān)鍵字可唯一標識一個TCP連接;利用SRAM存儲每一個進行序列號檢查的TCP連接的序列號檢查信息,所述方法的硬件表項配置是TCAM和SRAM串行連接,TCAM中配置查表關(guān)鍵字表,每個TCP連接有正向、反向兩個查表關(guān)鍵字表項,這兩個表項組成序偶對,每個查表關(guān)鍵字包括確定一個TCP連接的五元組信息,所述五元組信息是指源IP,目的IP,源端口,目的端口和協(xié)議,SRAM配置序列號檢查信息表,包括序列號、ACK序列號、數(shù)據(jù)包長度、窗口長度、FIN標志位和刪除標志位,每個SRAM表項與TCAM表項一一對應,其中,TCAM具體的表項配置包括以下三個步驟步驟1存儲單元邏輯化分假設(shè)TCAM的地址空間為N,TCAM單個地址單元存放的數(shù)據(jù)寬度是L,所述五元組的總長度是L’,則需要將TCAM從地址0到地址N-1按序進行單元塊劃分,每一個單元塊包括 id="icf0001" file="A2008100229500002C1.tif" wi="8" he="4" top= "185" left = "103" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>個地址, id="icf0002" file="A2008100229500002C2.tif" wi="4" he="4" top= "185" left = "133" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>代表上界取整,劃分完畢后,統(tǒng)一對所有單元塊進行整數(shù)編號, id="icf0003" file="A2008100229500002C3.tif" wi="28" he="4" top= "196" left = "116" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>在單元塊編號完畢后,按照(0,1),(2,3)…(i,i+1)…的方式將單元塊組成序偶對,其中i為偶數(shù),單元塊i對應的TCAM地址空間包括 id="icf0004" file="A2008100229500002C4.tif" wi="42" he="4" top= "219" left = "139" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/> id="icf0005" file="A2008100229500002C5.tif" wi="24" he="4" top= "230" left = "23" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>共 id="icf0006" file="A2008100229500002C6.tif" wi="8" he="4" top= "229" left = "57" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>個地址,一對序偶表征一條TCP連接的正向、反向兩個方向,對于任意序偶對(i,i+1),i和i+1互為序偶,步驟2表項建立根據(jù)通過常規(guī)包檢查、規(guī)則檢查的SYN請求包的五元組信息,組成表項,存放在TCAM的空閑序偶對的低編號單元塊中,即編號是偶數(shù)的單元塊中,假設(shè)為單元塊i,根據(jù)經(jīng)過NAT或未經(jīng)過NAT的該SYN數(shù)據(jù)包的五元組信息,組成一條反轉(zhuǎn)條目,添加到TCAM的單元塊i+1中,與上述單元塊i的表項組成序偶對,步驟3表項刪除若通過常規(guī)包檢查、序列號檢查的TCP包,若其命中的SRAM單元塊及其對應的序偶單元塊中的刪除標志位均置位,即設(shè)置為1,則刪除該數(shù)據(jù)包命中TCAM的單元塊i及i的序偶單元塊中的查表關(guān)鍵字信息;SRAM每個序列號檢查信息表項配置包括以下三個步驟步驟1表項建立經(jīng)過常規(guī)包檢查、規(guī)則檢查的SYN包,在TCAM上建立該TCP連接的查表關(guān)鍵字單元塊后,在對應的SRAM單元塊上填寫該SYN包的序列號信息;依據(jù)經(jīng)過常規(guī)包檢查、序列號檢查的SYN+ACK數(shù)據(jù)包攜帶信息,在TCAM查表命中單元塊所對應的SRAM單元塊上填寫該SYN+ACK包的序列號信息;步驟2表項維護、更新依據(jù)經(jīng)過常規(guī)包檢查,序列號檢查的TCP包攜帶的信息,在TCAM查表命中單元塊對應的SRAM單元塊上,寫入該TCP包攜帶的新的序列號信息,步驟3表項拆除通過常規(guī)包檢查、序列號檢查的TCP包,若TCAM查表命中某單元塊,則從SRAM中讀出對應的單元塊及其序偶單元塊的刪除標志位,若二者均為1,則刪除該SRAM單元塊及其序偶單元塊中的序列號信息,即設(shè)置為全0。
2、根據(jù)權(quán)利要求1所述的一種基于TCAM序偶的TCP序列號檢查硬 件實現(xiàn)方法,其特征在于所述序列號檢查的處理流程G01 314)如下 301:硬件電路判斷輸入包為TCP包根據(jù)數(shù)據(jù)包的IP報頭的協(xié)議字段判斷是否TCP包,若是則進入以下 的302;302: SYN請求報文判斷讀取報文TCP頭部SYN字段,若SYN標志位置位,即為l,則進入 以下的311,若SYN標志位未置,即為0,則進入以下的303; 303: TCAM表查找根據(jù)TCP包的五元組信息,組成查表關(guān)鍵字,查找TCAM表,若匹 配上五元組則查找命中,假設(shè)命中地址屬于某單元塊h A是整數(shù), 0=<k<=Pv"""f],進入以下的304;若未匹配上,則丟棄該數(shù)據(jù)包(315);304: SRAM序列號檢查信息讀取根據(jù)TCAM査表結(jié)果,讀取SRAM單元塊A:中的序列號檢査信息, 包括序列號s,、長度n'、 ACK序列號a'、窗口 w'、 FIN標志位f和刪除標志位d',并讀取SRAM的t的序偶單元塊中的序列號檢査信息,包括序列 號s"、長度n,'、 ACK序列號a"、窗口 w"、 FIN標志位f,和刪除標志位d";305: ACK報文判斷 根據(jù)TCP頭部ACK標志位判斷是否ACK報文,若ACK標志位為1則進 入以下的308;若ACK標志位未置,則進入以下的306;306:數(shù)據(jù)包序列號上界檢査若s+rK-(a"+w")成立,則進入以下的307,否則不通過,丟棄該數(shù)據(jù) 包(315);307:數(shù)據(jù)包序列號下界檢查若8>=3"成立,則進入以下的310,否則,丟棄該數(shù)據(jù)包(315); 308:確認包ACK序列號上界檢査若a《(Sa"+na")成立,則進入以下的309,否則丟棄該數(shù)據(jù)包(315); 309:確認包ACK序列號下界檢査若&a,成立,則進入以下的310,否則丟棄該數(shù)據(jù)包(315); 310:表項更新依據(jù)數(shù)據(jù)包攜帶的序列號信息,對TCAM和SRAM的單元塊A:和A: 的序偶單元塊中的序列號信息進行更新操作; 311: ACK報文判斷根據(jù)TCP頭部ACK標志位判斷是否ACK報文,若ACK標志位為1 則進入前述的303,若ACK標志位未置,則進入以下的312; 312:數(shù)據(jù)包同方向的TCAM及SRAM表項建立依據(jù)數(shù)據(jù)包五元組信息組成表項(SIP1,SP1,DIP1,DP1,P),將其存放在 TCAM的空閑序偶對的低編號單元塊中,即編號是偶數(shù)的單元塊中,假設(shè) 為單元塊/,并在SRAM的單元塊/上填寫該數(shù)據(jù)包攜帶的序列號信息, 進入以下的313;313: NAT根據(jù)設(shè)備需要,對數(shù)據(jù)包進行NAT轉(zhuǎn)換,假設(shè)經(jīng)過NAT或未經(jīng)過NAT 的數(shù)據(jù)包的五元組信息為SIP2,SP2,DIP2,DP2,P ,若經(jīng)過NAT,則 SIP2,SP2,DIP2,DP2,P為新的五元組信息,進入以下的314,若未經(jīng)過NAT, 則SIP2,SP2,DIP2,DP2,P仍為原數(shù)據(jù)包的五元組信息,即 SIP1,SP1,DIP1,DP1,P,進入以下的314;314:數(shù)據(jù)包反方向的TCAM表項建立依據(jù)數(shù)據(jù)包五元組信息SIP2,SP2,DIP2,DP2,P,組成一條反轉(zhuǎn)條目 (DIP2,DP2, SIP2,SP2,P),添加到TCAM的單元塊&1中。 315:數(shù)據(jù)包丟棄。
3、根據(jù)權(quán)利要求2所述的一種基于TCAM序偶的TCP序列號檢査硬 件實現(xiàn)方法,其特征在于所述表項更新(310)的具體流程(401 408) 描述如下401: SRAM該單元塊的表項更新依據(jù)數(shù)據(jù)包攜帶信息,序列號s,長度n, ACK序列號a,窗口w和 FIN標志位f,更新SRAM的單元塊A:中對應的信息,進入以下的402; 402: SRAM該單元塊的序偶單元塊的刪除標志位(DEL)判斷判斷d"是否置位,若置位,則進入以下的406,否則,進入以下的403; 403: SRAM該單元塊的序偶單元塊的FIN標志位判斷判斷f'是否置位,若置位,則進入以下的404,否則,表項更新完成 (408);404: FIN請求包的ACK報文判斷若數(shù)據(jù)包為ACK報文,判斷s-a"和a=s"+l是否同時成立,若成立, 則進入以下的405,否則表項更新完成(408);405: SRAM該單元塊的序偶單元塊的刪除標志位(DEL)置位將SRAM上的A:的序偶單元塊中的刪除標志位d"置位,進入以下的406;406: SRAM該單元塊的刪除標志位判斷判斷d'是否置位,若置位,則該TCP數(shù)據(jù)包方向的傳輸已結(jié)束,進入 以下的407,否則,表項更新完成(408); 407: TCAM和SRAM表項刪除將TCAM和SRAM上的k和k的序偶單元塊中的表項信息刪除,即 設(shè)為全O。
全文摘要
本發(fā)明涉及一種基于TCAM序偶的TCP序列號檢查硬件實現(xiàn)方法,其特征在于所述方法是利用TCAM來存儲需要進行序列號檢查的TCP連接的標識信息,又稱查表關(guān)鍵字,每一個查表關(guān)鍵字可唯一標識一個TCP連接;利用SRAM存儲每一個進行序列號檢查的TCP連接的序列號檢查信息,TCAM和SRAM串行連接,TCAM中配置查表關(guān)鍵字表,每個TCP連接有正向、反向兩個查表關(guān)鍵字表項,這兩個表項組成序偶對,每個查表關(guān)鍵字包括確定一個TCP連接的五元組信息,SRAM配置序列號檢查信息表,包括序列號、ACK序列號、數(shù)據(jù)包長度、窗口長度、FIN標志位和刪除標志位,每個SRAM表項與TCAM表項一一對應。本發(fā)明只需一次存取即可實現(xiàn)序列號檢查,大大加快了處理速度,也降低了實現(xiàn)難度。
文檔編號H04L9/36GK101321162SQ200810022950
公開日2008年12月10日 申請日期2008年7月3日 優(yōu)先權(quán)日2008年7月3日
發(fā)明者丁賢根, 萬成威, 冉宇暉, 然 孟, 李玉峰, 菡 邱, 錢菁華 申請人:江蘇華麗網(wǎng)絡(luò)工程有限公司;中國人民解放軍信息工程大學