基于FPGA的TCP粘合設計與實(shí)現
在應用級代理的基礎上,為進(jìn)一步提高數據處理的速度,提出了TCP粘合技術(shù)[1]。該技術(shù)在通信雙方建立通信之處對雙方的握手信號以及通信原語(yǔ)進(jìn)行分析,獲取必要的信息,決定數據的流向,一旦雙方開(kāi)始通信,該代理就不再對數據進(jìn)行分析,而僅起到了一個(gè)透明網(wǎng)關(guān)的作用,從而提高了代理的系統性能。
TCP粘合技術(shù)采用軟件處理方式時(shí),由于大量數據包不需要上層解析,因此提高了系統性能,但是受軟件處理速度的限制,該技術(shù)能很難應用于大規模的集群系統,本文提出了一種基于FPGA的TCP粘合技術(shù)的高速實(shí)現機制,利用硬件的高速處理特性和流水線(xiàn)的技術(shù)來(lái)適應高速網(wǎng)絡(luò )傳輸的需要。
1 現存的TCP粘合技術(shù)
TCP粘合原理如下:(1)監聽(tīng)客戶(hù)端的連接請求,并在客戶(hù)端發(fā)出連接請求后(從SYN開(kāi)始),建立客戶(hù)端到均衡器之間的連接(通過(guò)TCP的三次握手協(xié)議完成),(2)在隨后的請求報文中分析數據并決定真正被訪(fǎng)問(wèn)的服務(wù)節點(diǎn)。(3)與服務(wù)節點(diǎn)建立性一個(gè)連接,將兩個(gè)連接粘合在一起(splicing)。其TCP粘合原理示意圖如圖1所示[2]。
2 TCP粘合技術(shù)的硬件實(shí)現
TCP粘合技術(shù)的關(guān)鍵在于,當客戶(hù)端發(fā)起連接請求時(shí),系統并不是立即將該請求發(fā)給后端服務(wù)器,而是偽裝成服務(wù)器與客戶(hù)端建立連接,取得用戶(hù)的GET數據包,通過(guò)對URL的匹配來(lái)找到信息在后端服務(wù)器的位置,然后再在客戶(hù)端與服務(wù)器之間建立連接通信。
2.1 系統架構
TCP粘合系統結構如圖2所示。
該系統中首先由客戶(hù)數據接收端對接收到的HTTP報文進(jìn)行解析,發(fā)現數據包為一個(gè)發(fā)起連接的SYN數據包時(shí),傳給地址管理單元,地址管理就為該連接分配一個(gè)地址空間,同時(shí)通過(guò)映射單元告訴客戶(hù)數據發(fā)送端與客戶(hù)端完成三次握手,建立連接。
當客戶(hù)數據接收端收到GET數據包時(shí),將該數據包發(fā)送給字符串匹配表,該表會(huì )將信息在后端服務(wù)器的位置返回給地址管理單元,地址管理單元將該信息送給數據包映射單元,映射單元將該信息寫(xiě)入相應的SSRAM空間中,同時(shí)通知服務(wù)器發(fā)送端與后端服務(wù)器建立連接,這樣就完成了一個(gè)TCP的粘合過(guò)程。
在客戶(hù)端與服務(wù)器的通信過(guò)程中,數據包映射單元通過(guò)雙方SIP、DIP信息從SSARM中查找出對應的替換信息,完成雙方數據包的映射。
在客戶(hù)端通信結束時(shí),由地址管理單元對雙方使用的地址空間進(jìn)行回收;同時(shí)為防止通過(guò)過(guò)程中的異常中斷,地址管理單元內部采用了定時(shí)器機制對地址空間進(jìn)行監測,根據定時(shí)器返回結果回收過(guò)時(shí)地址,防止過(guò)時(shí)信息被查用。
2.2 設計實(shí)現
在該系統中,為完成TCP粘合并且保證TCP通信的可靠性,必須能夠正確識別接收到的數據包類(lèi)型,同時(shí)由于實(shí)際網(wǎng)絡(luò )數據傳輸的延時(shí),在一個(gè)客戶(hù)端通信過(guò)程中可能會(huì )插入很多其他客戶(hù)端發(fā)起的新的連接請求,系統內部根據對CAM查找返回的地址來(lái)區分不同的數據流,因此要對內部地址空間進(jìn)行有效的釋放回收,為處理網(wǎng)絡(luò )通信異常中斷而導致內部地址無(wú)法回收而引入定時(shí)器機制,在數據發(fā)送部分,客戶(hù)端數據發(fā)送模塊偽裝成服務(wù)器與客戶(hù)端完成TCP三次握手協(xié)議,服務(wù)器數據發(fā)送模塊則偽裝成客戶(hù)端與服務(wù)器完成TCP三次握手協(xié)議,雙方在通信過(guò)程中轉發(fā)對方的數據包。
2.2.1 數據收發(fā)
對于系統的發(fā)送接口來(lái)說(shuō),所有發(fā)送數據包的轉發(fā)由數據包映射單元完成,因此發(fā)送接口僅完成簡(jiǎn)單的數據包轉發(fā)功能,而當系統接收到數據包時(shí),要對數據包進(jìn)行協(xié)議解析從而決定數據包后端處理得方式,在接收部分主要對三種數據包進(jìn)行區分:(1)雙方發(fā)起連接的SYN數據包。這表示一個(gè)新連接的發(fā)起,因此交給地址管理單元,為它分配一個(gè)新的地址空間,同時(shí)要求發(fā)送端返回一個(gè)ACK數據包;(2)客戶(hù)端發(fā)送來(lái)的GET數據包中含有客戶(hù)端所需信息的URL地址,將該數據包送給字符串匹配表以獲得該信息所在后端服務(wù)器的位置;(3)雙方通信的普通數據包,該數據包交給數據包映射單元實(shí)現雙發(fā)的通信,具體接收的狀態(tài)轉換圖如圖3所示。
2.2.2 地址管理單元
在地址管理的方式上,在此處利用一個(gè)地址鏈表進(jìn)行管理,如圖4所示。
每次地址管理單元接收到新的請求連接就從鏈表的頭部取出該可用地址空間,將新請求的SIP、DIP信息寫(xiě)入該地址的CAN中,同時(shí)在該地址對應的SSRAM的頁(yè)面中寫(xiě)入相關(guān)的信息。假設鏈表中取出地址為n,頁(yè)面大小為m,則SSRAM中對應的頁(yè)面起始地址l為:
l=n
相關(guān)推薦
技術(shù)專(zhuān)區
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線(xiàn)
- 開(kāi)關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍牙
- PLC
- PWM
- 汽車(chē)電子
- 轉換器
- 電源管理
- 信號放大器
評論