<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的TCP粘合設計與實(shí)現

基于FPGA的TCP粘合設計與實(shí)現

——
作者:程文青,曾鳴,黃建 (華中科技大學(xué) 電子與信息工程系,湖北 武漢 430074) 時(shí)間:2007-01-26 來(lái)源:《電子技術(shù)應用》 收藏

傳統的數據分流一般基于三層、四層交換,不能在應用層解析數據,導致數據在后端服務(wù)器解析后還要相互重新分發(fā),增加了服務(wù)數據傳輸的開(kāi)銷(xiāo),為解決該問(wèn)題,可以在客戶(hù)端與服務(wù)器之間采用應用級代理服務(wù)器,利用該服務(wù)器專(zhuān)門(mén)對數據包進(jìn)行解析分發(fā),但是該方式下,數據要進(jìn)入tcp/ip協(xié)議棧,處理速度慢,同時(shí)代理服務(wù)器還需要與客戶(hù)端、服務(wù)器雙方通信,需要處理的數據量非常大,因此在集群應用中,特別是大規模負載平衡集群系統中很少使用應用級代理。

在應用級代理的基礎上,為進(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]。

本文引用地址:http://dyxdggzs.com/article/21524.htm


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×m

當地址管理單元接收到字符串匹配表返回的后端服務(wù)器位置信息時(shí),首先通過(guò)該數據包的sip、dip從cam中查找該數據流對應的地址、通過(guò)上述計算公式找出ssarm中對應的頁(yè)面,寫(xiě)入返回信息。

對于地址空間的回收,為防止通信異常中斷而無(wú)法回收地址,在系統中采用定時(shí)器機制,即在一段時(shí)間后對ssram中的定時(shí)器標志位進(jìn)行檢測,一旦發(fā)現該標志位過(guò)時(shí)則通知地址管理單元回收地址,地址管理單元收到某一地址過(guò)時(shí)的信息后,將該地址掛在地址管理鏈表尾部,同時(shí)清除該地址cam中的sip、dip信息,這樣當同一ip發(fā)起新的連接時(shí)就不會(huì )查找到過(guò)時(shí)信息。

2.2.3 數據包映射單元

為完成數據包的映射,該部分需要實(shí)現兩個(gè)功能:ack序列號轉換和雙方轉換信息的存儲。

在tcp粘合過(guò)程中,由于tcp粘合系統送給客戶(hù)端的ack序列號和后端服務(wù)器送給客戶(hù)端的ack序列號不相同,因此要進(jìn)行ack序列號的轉換,同時(shí)要重新計算數據包的tcp/ip校驗和。

現假設客戶(hù)端發(fā)送了請求連接的syn數據包,而客戶(hù)端返回給客戶(hù)端的syn序列號為地址管理單元分配給該連接的地址a0,而當系統和服務(wù)器建立鏈接時(shí)服務(wù)器端返回的syn序列號為a1,則根據這兩個(gè)序列號可計算差值a為:a=a0-a1。

以后通信的過(guò)程中,只要將服務(wù)器發(fā)送給系統的序列號加上a就能夠轉換成為系統送給客戶(hù)端的序列號,這樣就完成了服務(wù)器端向客戶(hù)端發(fā)送數據的轉換,反之就可以完成客戶(hù)端向服務(wù)器發(fā)送數據的轉換。

對于數據包的校驗和轉換而言,由于校驗和本質(zhì)上是加法運算,所以只需要在原來(lái)的校驗和基礎上加上序列號之差(或減去一個(gè)差值)即可完成校驗和的轉換。

在同一個(gè)通信過(guò)程中,ack序列號轉換、校驗和的轉換、發(fā)起連接的syn、get數據包和定時(shí)器標志位等信息都需要存儲,由于每個(gè)數據流需要存儲的內容較多,單一的地址已經(jīng)無(wú)法滿(mǎn)足存儲要求,此處存儲管理采用頁(yè)面式的管理方式,將整個(gè)存儲空間若干頁(yè)面,每個(gè)數據流信息存入一個(gè)頁(yè)面中,ssram的存儲格式如圖5所示。

3 性能分析

該架構已在試驗系統上實(shí)現,接收端為兩個(gè)ge口,相對于采用tcp粘合的應用代理服務(wù)器來(lái)說(shuō)(其中代理服務(wù)器cpu pentium iv 2ghz),具體的性能對比如表1所示。

從上表可以看出在最大連接數方面,在本系統中采用一個(gè)18mbit的cam,它能夠提供的最大地址空間為288k×144bit,只能支持288k的連接數,對于服務(wù)器的最大連接數來(lái)說(shuō),syn和get數據包需要經(jīng)過(guò)軟件協(xié)議解析,因此當最大連接數達到582k時(shí)cpu的利用率將達到90%以上[3]。無(wú)法再處理新的連接,從上述分析中可以看出,由于受硬件資源的限制,硬件系統可以支持的最大連接數小于代理服務(wù)器,但是在實(shí)際的網(wǎng)絡(luò )傳輸過(guò)程中,一個(gè)http連接持續的時(shí)間一般為幾百個(gè)毫秒,在硬件系統達到每秒21k的連接數時(shí),能夠承受的一個(gè)http最大持續時(shí)間為13秒,遠遠大于實(shí)際http連接的持續時(shí)間,因此硬件系統支持的最大連接數是夠用的,當代理服務(wù)器采用千兆網(wǎng)卡來(lái)接收數據時(shí),由于數據需要經(jīng)過(guò)上層協(xié)議解析,因此實(shí)際能夠接收的數據量只能達到300mbps,假設每次平均請求512b,則代理服務(wù)器能夠支持的最大每秒連接數大約為7k,而當硬件系統工作在133mhz,內部采用32bit總線(xiàn)傳輸時(shí),整個(gè)系統的帶寬達到4gbit,同時(shí)系統內部采用流水線(xiàn)方式,能夠線(xiàn)速處理1gbps數據的接收,假設平均每次請求512b,則硬件系統能夠處理的每秒最大連接數達到21k,因此在單位時(shí)間內能夠處理的連接數量會(huì )高于代理服務(wù)器。

隨著(zhù)http訪(fǎng)問(wèn)量的不斷增大,對于訪(fǎng)問(wèn)數據包的分流力度要求越來(lái)越細,本文提出的基于硬件實(shí)現的tcp粘合系統,在tcp粘合技術(shù)的基礎上,利用硬件的高速處理特性,可以達到2個(gè)ge口收發(fā)(2gbps)的線(xiàn)速處理性能,同時(shí)能夠較好的基于內容來(lái)區分數據流,從而避免了后端服務(wù)器數據的重新分發(fā)。

tcp/ip相關(guān)文章:tcp/ip是什么




關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>