新聞中心

EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于FPGA的TCP粘合設(shè)計與實現(xiàn)

基于FPGA的TCP粘合設(shè)計與實現(xiàn)

——
作者:程文青 曾鳴 黃建 時間:2006-12-20 來源:電子技術(shù)應(yīng)用 收藏
傳統(tǒng)的數(shù)據(jù)分流一般基于三層、四層交換,不能在應(yīng)用層解析數(shù)據(jù),導(dǎo)致數(shù)據(jù)在后端解析后還要相互重新分發(fā),增加了服務(wù)數(shù)據(jù)傳輸?shù)拈_銷,為解決該問題,可以在之間采用應(yīng)用級代理,利用該服務(wù)器專門對數(shù)據(jù)包進行解析分發(fā),但是該方式下,數(shù)據(jù)要進入TCP/IP協(xié)議棧,處理速度慢,同時代理服務(wù)器還需要與、服務(wù)器雙方通信,需要處理的數(shù)據(jù)量非常大,因此在集群應(yīng)用中,特別是大規(guī)模負(fù)載平衡集群系統(tǒng)中很少使用應(yīng)用級代理。

在應(yīng)用級代理的基礎(chǔ)上,為進一步提高數(shù)據(jù)處理的速度,提出了技術(shù)[1]。該技術(shù)在通信雙方建立通信之處對雙方的握手信號以及通信原語進行分析,獲取必要的信息,決定數(shù)據(jù)的流向,一旦雙方開始通信,該代理就不再對數(shù)據(jù)進行分析,而僅起到了一個透明網(wǎng)關(guān)的作用,從而提高了代理的系統(tǒng)性能。

技術(shù)采用軟件處理方式時,由于大量數(shù)據(jù)包不需要上層解析,因此提高了系統(tǒng)性能,但是受軟件處理速度的限制,該技術(shù)能很難應(yīng)用于大規(guī)模的集群系統(tǒng),本文提出了一種基于技術(shù)的高速實現(xiàn)機制,利用硬件的高速處理特性和流水線的技術(shù)來適應(yīng)高速傳輸?shù)男枰?/P>

1 現(xiàn)存的TCP粘合技術(shù)

TCP粘合原理如下:(1)監(jiān)聽的連接請求,并在客戶端發(fā)出連接請求后(從SYN開始),建立客戶端到均衡器之間的連接(通過TCP的三次握手協(xié)議完成),(2)在隨后的請求報文中分析數(shù)據(jù)并決定真正被訪問的服務(wù)節(jié)點。(3)與服務(wù)節(jié)點建立性一個連接,將兩個連接粘合在一起(splicing)。其TCP粘合原理示意圖如圖1所示[2]。

TCP

2 TCP粘合技術(shù)的硬件實現(xiàn)

TCP粘合技術(shù)的關(guān)鍵在于,當(dāng)客戶端發(fā)起連接請求時,系統(tǒng)并不是立即將該請求發(fā)給后端服務(wù)器,而是偽裝成服務(wù)器與客戶端建立連接,取得用戶的GET數(shù)據(jù)包,通過對URL的匹配來找到信息在后端服務(wù)器的位置,然后再在客戶端與服務(wù)器之間建立連接通信。

2.1 系統(tǒng)架構(gòu)

TCP粘合系統(tǒng)結(jié)構(gòu)如圖2所示。

TCP

該系統(tǒng)中首先由客戶數(shù)據(jù)接收端對接收到的HTTP報文進行解析,發(fā)現(xiàn)數(shù)據(jù)包為一個發(fā)起連接的SYN數(shù)據(jù)包時,傳給地址管理單元,地址管理就為該連接分配一個地址空間,同時通過映射單元告訴客戶數(shù)據(jù)發(fā)送端與客戶端完成三次握手,建立連接。

當(dāng)客戶數(shù)據(jù)接收端收到GET數(shù)據(jù)包時,將該數(shù)據(jù)包發(fā)送給字符串匹配表,該表會將信息在后端服務(wù)器的位置返回給地址管理單元,地址管理單元將該信息送給數(shù)據(jù)包映射單元,映射單元將該信息寫入相應(yīng)的SSRAM空間中,同時通知服務(wù)器發(fā)送端與后端服務(wù)器建立連接,這樣就完成了一個TCP的粘合過程。

在客戶端與服務(wù)器的通信過程中,數(shù)據(jù)包映射單元通過雙方SIP、DIP信息從SSARM中查找出對應(yīng)的替換信息,完成雙方數(shù)據(jù)包的映射。

在客戶端通信結(jié)束時,由地址管理單元對雙方使用的地址空間進行回收;同時為防止通過過程中的異常中斷,地址管理單元內(nèi)部采用了定時器機制對地址空間進行監(jiān)測,根據(jù)定時器返回結(jié)果回收過時地址,防止過時信息被查用。

2.2 設(shè)計實現(xiàn)

在該系統(tǒng)中,為完成TCP粘合并且保證TCP通信的可靠性,必須能夠正確識別接收到的數(shù)據(jù)包類型,同時由于實際數(shù)據(jù)傳輸?shù)难訒r,在一個客戶端通信過程中可能會插入很多其他客戶端發(fā)起的新的連接請求,系統(tǒng)內(nèi)部根據(jù)對CAM查找返回的地址來區(qū)分不同的數(shù)據(jù)流,因此要對內(nèi)部地址空間進行有效的釋放回收,為處理通信異常中斷而導(dǎo)致內(nèi)部地址無法回收而引入定時器機制,在數(shù)據(jù)發(fā)送部分,客戶端數(shù)據(jù)發(fā)送模塊偽裝成服務(wù)器與客戶端完成TCP三次握手協(xié)議,服務(wù)器數(shù)據(jù)發(fā)送模塊則偽裝成客戶端與服務(wù)器完成TCP三次握手協(xié)議,雙方在通信過程中轉(zhuǎn)發(fā)對方的數(shù)據(jù)包。

2.2.1 數(shù)據(jù)收發(fā)

對于系統(tǒng)的發(fā)送接口來說,所有發(fā)送數(shù)據(jù)包的轉(zhuǎn)發(fā)由數(shù)據(jù)包映射單元完成,因此發(fā)送接口僅完成簡單的數(shù)據(jù)包轉(zhuǎn)發(fā)功能,而當(dāng)系統(tǒng)接收到數(shù)據(jù)包時,要對數(shù)據(jù)包進行協(xié)議解析從而決定數(shù)據(jù)包后端處理得方式,在接收部分主要對三種數(shù)據(jù)包進行區(qū)分:(1)雙方發(fā)起連接的SYN數(shù)據(jù)包。這表示一個新連接的發(fā)起,因此交給地址管理單元,為它分配一個新的地址空間,同時要求發(fā)送端返回一個ACK數(shù)據(jù)包;(2)客戶端發(fā)送來的GET數(shù)據(jù)包中含有客戶端所需信息的URL地址,將該數(shù)據(jù)包送給字符串匹配表以獲得該信息所在后端服務(wù)器的位置;(3)雙方通信的普通數(shù)據(jù)包,該數(shù)據(jù)包交給數(shù)據(jù)包映射單元實現(xiàn)雙發(fā)的通信,具體接收的狀態(tài)轉(zhuǎn)換圖如圖3所示。

具體接收的狀態(tài)轉(zhuǎn)換圖

2.2.2 地址管理單元

在地址管理的方式上,在此處利用一個地址鏈表進行管理,如圖4所示。

地址管理鏈表

每次地址管理單元接收到新的請求連接就從鏈表的頭部取出該可用地址空間,將新請求的SIP、DIP信息寫入該地址的CAN中,同時在該地址對應(yīng)的SSRAM的頁面中寫入相關(guān)的信息。假設(shè)鏈表中取出地址為n,頁面大小為m,則SSRAM中對應(yīng)的頁面起始地址l為:

l=n



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉