在經(jīng)過二十多年的發(fā)展后,TCP/IP協(xié)議(誕生于1983年)早已不適應(yīng)現(xiàn)在的網(wǎng)絡(luò)環(huán)境和復(fù)雜應(yīng)用。實(shí)際上,業(yè)界對(duì)TCP/IP協(xié)議的各種修補(bǔ)和優(yōu)化時(shí)間也不算短了,還誕生了不少專門做這件事情的公司。而對(duì)于專注在應(yīng)用交付網(wǎng)絡(luò)領(lǐng)域的F5來說,如何看待TCP協(xié)議優(yōu)化方面的問題呢?對(duì)此,F(xiàn)5中國區(qū)技術(shù)總監(jiān)吳靜濤從以下幾個(gè)維度上進(jìn)行了闡述。
維度一:TCP協(xié)議的廣域網(wǎng)優(yōu)化
TCP在最初設(shè)計(jì)時(shí)沒考慮到高帶寬情況下遠(yuǎn)程傳輸?shù)难舆t問題,主要問題在于傳輸數(shù)據(jù)包的同時(shí)還有TCP的校驗(yàn)包。在延遲很小的網(wǎng)絡(luò)TCP校驗(yàn)包可以忽略不計(jì),但幾千公里出去,很可能就是幾百毫秒的延遲(中國的網(wǎng)絡(luò)壓力比較大,這種情況很常見),光等校驗(yàn)包的累計(jì)時(shí)間就要用分鐘來計(jì)算。這種延遲在廣域網(wǎng)上是致命的,而這本身恰恰又是TCP/IP的容錯(cuò)傳輸機(jī)制造成的。
WAN優(yōu)化里面的TCP優(yōu)化,是目前很多廠商都采用的優(yōu)化技術(shù), 實(shí)現(xiàn)方法是做成一個(gè)TCP代理的方式,多發(fā)一些數(shù)據(jù)包再統(tǒng)一校驗(yàn),這是很常用的一種方法。在兩端放上代理設(shè)備,構(gòu)建與服務(wù)器的局域網(wǎng)連接環(huán)境,在廣域網(wǎng)方面就改變TCP協(xié)議的校驗(yàn)方式,通過減少TCP校驗(yàn)的次數(shù),來減少延遲的累計(jì)時(shí)間,會(huì)取得非常大的效果(一般在廣域網(wǎng)優(yōu)化時(shí)實(shí)現(xiàn),端到端文件傳輸?shù)那闆r)。
F5的WAN優(yōu)化分為幾個(gè)內(nèi)容,其中一個(gè)就是TCP優(yōu)化,另外還包括Cache的技術(shù),文件緩存和字典技術(shù)等,綜合解決協(xié)議初期主要考慮了容錯(cuò)而沒有考慮到高帶寬的延遲問題的優(yōu)化方法。
維度二:TCP連接優(yōu)化
另外,最初設(shè)計(jì)TCP/IP的時(shí)候沒有也考慮到網(wǎng)絡(luò)上那么多應(yīng)用產(chǎn)生的那么多TCP連接。大量TCP連接對(duì)服務(wù)器資源的占用,對(duì)應(yīng)用存在很大壓力。通過One Connect和TCP Express等連接優(yōu)化可以釋放服務(wù)器壓力。比如服務(wù)器性能最怕的是TCP連接,在一個(gè)網(wǎng)絡(luò)里同時(shí)有高帶寬和低帶寬用戶,后者的TCP連接結(jié)束就會(huì)相對(duì)較慢,服務(wù)器就要有資源去維護(hù)這個(gè)連接,當(dāng)連接很多數(shù)據(jù)流量不大的情況下,服務(wù)器不忙(CPU很低)但資源被耗盡了,支撐不了更多用戶,甚至簡(jiǎn)單的Web服務(wù)器都存在這個(gè)問題。
其實(shí)這些連接也是可以優(yōu)化的,首先,可以直接做TCP連接優(yōu)化,例如外部用戶發(fā)起的1萬個(gè)連接,經(jīng)過設(shè)備以后合并成100個(gè)甚至更少的長(zhǎng)連接到服務(wù)器,因?yàn)樵诰連接數(shù)量的下降,服務(wù)器性能發(fā)揮就會(huì)大很多,免費(fèi)的節(jié)省30%左右的服務(wù)器壓力;第二個(gè)方法,當(dāng)客戶端很慢的時(shí)候,可以先將服務(wù)器的回應(yīng)包緩存在設(shè)備內(nèi),盡快結(jié)束和服務(wù)器的連接,再由優(yōu)化設(shè)備慢慢將服務(wù)器回應(yīng)傳輸給客戶端,這樣也可以降低服務(wù)器的在線連接,更好的發(fā)揮服務(wù)器能力(一般在服務(wù)器端實(shí)現(xiàn),與客戶端無關(guān),大型應(yīng)用上比較多)。連接耗的資源更多的是內(nèi)存,在線連接被優(yōu)化后,內(nèi)存消耗的情況會(huì)好很多。連接優(yōu)化、服務(wù)器回應(yīng)優(yōu)化釋放資源,等一系列技術(shù)采用后,因?yàn)門CP在線連接對(duì)服務(wù)器造成的壓力會(huì)很大緩解,更有利于服務(wù)器性能提升。
維度三:TCP的安全問題
在互聯(lián)網(wǎng)上最常見的攻擊就是DoS/DDoS,用的最多的就是Syn攻擊,其實(shí)就是利用TCP的Syn來進(jìn)行攻擊,很多網(wǎng)絡(luò)攻擊都以TCP為依據(jù)。Syn Cookie和Delay Binding(延遲綁定)技術(shù)可以用來解決這個(gè)問題。在F5的TMOS中,采用的是雙TCP堆棧技術(shù),客戶端和F5設(shè)備先建立TCP連接,在F5設(shè)備收到真正的請(qǐng)求包后,才會(huì)代理客戶端發(fā)起訪問,這樣的處理方法保證攻擊根本無法到達(dá)服務(wù)器,來保證應(yīng)用的正常服務(wù),很多的銀行網(wǎng)銀系統(tǒng)和互聯(lián)網(wǎng)站都是采用這種處理方法。
維度四:對(duì)復(fù)雜應(yīng)用的支持
復(fù)雜應(yīng)用的用戶會(huì)話一般由多個(gè)TCP(甚至是UDP)連接組成,在多個(gè)連接間存在相互關(guān)聯(lián)關(guān)系。在大的服務(wù)集群中,如果不能通過輔助處理將這些關(guān)聯(lián)的連接標(biāo)識(shí),并交由一個(gè)集群節(jié)點(diǎn)服務(wù),就會(huì)出現(xiàn)訪問故障。例如用戶的注冊(cè)和訪問必須在同一集群節(jié)點(diǎn),如果將注冊(cè)和訪問的兩個(gè)不同的TCP連接分配到不同的集群節(jié)點(diǎn),訪問失敗是必然的。如何判斷這些不同的TCP聯(lián)機(jī)是否關(guān)聯(lián),或是否由一個(gè)用戶發(fā)起是和應(yīng)用相關(guān)的,比如HTTP協(xié)議可以用Cookie或會(huì)話ID,而移動(dòng)用戶可以用Calling ID或手機(jī)號(hào)碼,而這些處理方法都是TCP協(xié)議沒有涵蓋的,需要高層協(xié)議或其他設(shè)備的支持。
綜述
很多用戶都在采用針對(duì)廣域網(wǎng)延遲的TCP優(yōu)化,而TCP連接優(yōu)化也是很多用戶都要面對(duì)的問題,安全和復(fù)雜應(yīng)用的支持就更是不需要更多討論的問題。實(shí)際上,用戶開發(fā)一個(gè)網(wǎng)上應(yīng)用的目的,當(dāng)然是給更多的人用的更好,而如果再規(guī)劃應(yīng)用的前期沒有考慮到包括TCP優(yōu)化的一系列應(yīng)用交付問題。例如應(yīng)用構(gòu)建好了,可是交付不到用戶,或交付品質(zhì)不高,包括停機(jī),頁面慢,出現(xiàn)安全問題等。因此大部分高端網(wǎng)上應(yīng)用在規(guī)劃前期一定要考慮應(yīng)用交付的問題,避免在出現(xiàn)問題的時(shí)候再修修補(bǔ)補(bǔ)!