基于FPGA的TCP粘合設(shè)計(jì)實(shí)現(xiàn)
在應(yīng)用級(jí)代理的基礎(chǔ)上,為進(jìn)一步提高數(shù)據(jù)處理的速度,提出了TCP粘合技術(shù)[1]。該技術(shù)在通信雙方建立通信之初對(duì)雙方的握手信號(hào)以及通信原語(yǔ)進(jìn)行分析,獲取必要的信息,決定數(shù)據(jù)的流向,一旦雙方開(kāi)始通信,該代理就不再對(duì)數(shù)據(jù)進(jìn)行分析,而僅起到一個(gè)透明網(wǎng)關(guān)的作用,從而提高代理的系統(tǒng)性能。
本文引用地址:http://m.butianyuan.cn/article/150354.htmTCP粘合技術(shù)采用軟件處理方式時(shí),由于大量數(shù)據(jù)包不需要上層解析,因此提高了系統(tǒng)性能,但是受軟件處理速度的限制,該技術(shù)仍很難應(yīng)用于大規(guī)模的集群系統(tǒng)。本文提出了一種基于FPGA的TCP粘合技術(shù)的高速實(shí)現(xiàn)機(jī)制,利用硬件的高速處理特性和流水線技術(shù)來(lái)適應(yīng)高速網(wǎng)絡(luò)傳輸?shù)男枰?br />
1 現(xiàn)存的TCP粘合技術(shù)
TCP粘合原理如下:(1)監(jiān)聽(tīng)客戶端的連接請(qǐng)求,并在客戶端發(fā)出連接請(qǐng)求后(從SYN開(kāi)始),建立客戶端到均衡器之間的連接(通過(guò)TCP的三次握手協(xié)議完成)。(2)在隨后的請(qǐng)求報(bào)文中分析數(shù)據(jù)并決定真正被訪問(wèn)的服務(wù)節(jié)點(diǎn)。(3)與服務(wù)節(jié)點(diǎn)建立另一個(gè)連接,將兩個(gè)連接粘合在一起(Splicing)。其TCP粘合原理示意圖如圖1所示[2]。
2 TCP粘合技術(shù)的硬件實(shí)現(xiàn)
TCP粘合技術(shù)的關(guān)鍵在于,當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),系統(tǒng)并不是立即將該請(qǐng)求發(fā)給后端服務(wù)器,而是偽裝成服務(wù)器與客戶端建立連接,取得用戶的GET數(shù)據(jù)包。通過(guò)對(duì)URL的匹配來(lái)找到信息在后端服務(wù)器的位置,然后再在客戶端與服務(wù)器之間建立連接通信。
2.1 系統(tǒng)架構(gòu)
TCP粘合系統(tǒng)結(jié)構(gòu)如圖2所示。
該系統(tǒng)中首先由客戶數(shù)據(jù)接收端對(duì)接收到的HTTP報(bào)文進(jìn)行解析,發(fā)現(xiàn)數(shù)據(jù)包為一個(gè)發(fā)起連接的SYN數(shù)據(jù)包時(shí),傳給地址管理單元,地址管理就為該連接分配一個(gè)地址空間,同時(shí)通過(guò)映射單元告訴客戶數(shù)據(jù)發(fā)送端與客戶端完成三次握手,建立連接。
當(dāng)客戶數(shù)據(jù)接收端接收到GET數(shù)據(jù)包時(shí),將該數(shù)據(jù)包發(fā)送給字符串匹配表,該表會(huì)將信息在后端服務(wù)器的位置返回給地址管理單元,地址管理單元將該信息送給數(shù)據(jù)包映射單元,映射單元將該信息寫(xiě)入相應(yīng)的SSRAM空間中,同時(shí)通知服務(wù)器發(fā)送端與后端服務(wù)器建立連接。這樣就完成了一個(gè)TCP的粘合過(guò)程。
在客戶端與服務(wù)器的通信過(guò)程中,數(shù)據(jù)包映射單元通過(guò)雙方SIP、DIP信息從SSRAM中查找出對(duì)應(yīng)的替換信息,完成雙方數(shù)據(jù)包的映射。
在雙方通信結(jié)束時(shí),由地址管理單元對(duì)雙方使用的地址空間進(jìn)行回收;同時(shí)為防止通信過(guò)程中的異常中斷,地址管理單元內(nèi)部還采用了定時(shí)器機(jī)制對(duì)地址空間進(jìn)行監(jiān)測(cè),根據(jù)定時(shí)器返回結(jié)果回收過(guò)時(shí)地址,防止過(guò)時(shí)信息被查用。
評(píng)論