王 欣
(無(wú)錫職業(yè)技術(shù)學(xué)院,江蘇 無(wú)錫 214121)
當(dāng)前,研究網(wǎng)絡(luò)數(shù)據(jù)的高速傳輸,能夠提升現(xiàn)有網(wǎng)絡(luò)的實(shí)際性能,加速網(wǎng)絡(luò)推廣應(yīng)用,為海量數(shù)據(jù)傳輸和災(zāi)難情況下的數(shù)據(jù)備份提供一個(gè)有效的網(wǎng)絡(luò)存儲(chǔ)途徑。 要獲得最大可能的網(wǎng)絡(luò)數(shù)據(jù)傳輸速率,在硬件設(shè)備無(wú)法改變的前提下,可以有針對(duì)性地修改部分傳輸控制協(xié)議 (Transmission Control Protocol,TCP)的參數(shù)設(shè)置。 這些修改成本最低,但帶來(lái)的效果卻最明顯。
TCP 窗口就是在一個(gè)連接上能夠緩存的沒(méi)有經(jīng)過(guò)確認(rèn)的接收數(shù)據(jù)量。TCP 發(fā)送數(shù)據(jù)段的典型長(zhǎng)度是1460 字節(jié)。 如果只允許發(fā)送端的發(fā)送窗口為1 個(gè)數(shù)據(jù)段,那么它每次就只能發(fā)送1 個(gè)數(shù)據(jù)段,然后等待這個(gè)數(shù)據(jù)段的確認(rèn)。如果這種情況發(fā)生在高時(shí)延的網(wǎng)絡(luò)上,那么網(wǎng)絡(luò)的吞吐量會(huì)非常低。 因?yàn)槊看蝹鬏敃r(shí)網(wǎng)絡(luò)上只有一個(gè)數(shù)據(jù)段,發(fā)送端和接收端都浪費(fèi)了大量的時(shí)間,在相應(yīng)的端口上監(jiān)聽(tīng)網(wǎng)絡(luò)上的數(shù)據(jù)。 為了改變這一狀況, 就必須提高發(fā)送端每次發(fā)送的數(shù)據(jù)量, 也涉及TCP 窗口是否允許在傳輸管道中有最大數(shù)據(jù)量。在傳輸階段,窗口值逐漸增大,直到傳輸管道變滿(mǎn)(此時(shí)可能會(huì)丟失數(shù)據(jù)段)。這時(shí)窗口值就不再增大,除非接收端增大窗口值。需要注意的是,接收端的窗口值表示接收端的有效緩存大小,決定了發(fā)送端每次發(fā)送數(shù)據(jù)的最大數(shù)量,這是一個(gè)硬性的限制,即使網(wǎng)絡(luò)帶寬很充裕也不會(huì)改變。
要取得最好的網(wǎng)絡(luò)性能,必須在通信期間保持通信管道的充盈,這就涉及帶寬時(shí)延積(Bandwith Delay Product,簡(jiǎn)稱(chēng)BDP)了[1]。在一個(gè)連續(xù)的傳輸過(guò)程中,通信管道中的總的數(shù)據(jù)量就是帶寬時(shí)延積的大小,它可以用“帶寬×往返時(shí)延”來(lái)計(jì)算。 帶寬可以從網(wǎng)絡(luò)提供商那里獲得,時(shí)延可以用ping 命令或traceroute 命令自己測(cè)得,一般WAN 的典型時(shí)延在10~100ms。
當(dāng)網(wǎng)絡(luò)的帶寬很大時(shí),往返時(shí)延(Round-Trip Time,簡(jiǎn)稱(chēng)RTT)也很高,這時(shí),在滿(mǎn)負(fù)荷通信管道中的數(shù)據(jù)量也一定很大, 相應(yīng)的傳輸窗口值也很大,為BDP,即TCP 窗口值帶寬×往返時(shí)延。 比如一個(gè)LAN 中的主機(jī)為百兆網(wǎng)卡, 往返時(shí)延為0.010s (10ms), 則 合 適 的 窗 口 值 約 為125kB(100000000×0.010/8=125kB), 這樣才能使網(wǎng)絡(luò)吞吐量接近極限。如果TCP 窗口值固定,帶寬急劇增大, 這時(shí)哪怕極小的時(shí)延增大都會(huì)嚴(yán)重影響網(wǎng)絡(luò)的吞吐量。
2.1.1 軟件
操作系統(tǒng)為RedHat9(linux kernel 2.4),帶寬測(cè)試程序?yàn)镮perf。 Iperf 是一種網(wǎng)絡(luò)性能的測(cè)量工具,它從內(nèi)存生成要傳送的數(shù)據(jù), 接收方無(wú)需寫(xiě)到磁盤(pán),可直接丟棄。 這種方法能有效繞過(guò)測(cè)試機(jī)器磁盤(pán)讀寫(xiě)速度對(duì)網(wǎng)絡(luò)傳輸?shù)挠绊慬2]。
2.1.2 硬件
終端機(jī)器為IBM xSeries236(處理器Intel xeon 3.0G,主板 800M FSB,內(nèi)存1G DDR2 400,硬盤(pán)SCSI 73G), 網(wǎng) 卡 為Intel PRO/10GbE LR。 Intel PRO/10GbE LR 是Intel 公司推出的面向企業(yè)級(jí)應(yīng)用的10G 網(wǎng)卡,它支持TOE 技術(shù)以及巨幅幀,能最大限度地減輕網(wǎng)卡對(duì)服務(wù)器硬件的依賴(lài)。
2.1.3 連接模式
本次實(shí)驗(yàn)環(huán)境采用兩臺(tái)服務(wù)器用光纖直連的模式。 其主要原因?yàn)椋海?)骨干路由器或交換機(jī)要達(dá)到10Gbit/s 的傳輸速度仍然十分遙遠(yuǎn), 不具有普遍意義。 (2)能將硬件環(huán)境對(duì)網(wǎng)絡(luò)傳輸?shù)挠绊懡档阶畹?,更明顯地看到網(wǎng)絡(luò)參數(shù)的調(diào)節(jié)所帶來(lái)的傳輸速率的巨大改善[3]。
(1)用ping 命令測(cè)試往返時(shí)延RTT。 依據(jù)具體環(huán)境而定(本實(shí)驗(yàn)由于是直連,所以時(shí)延基本上可以忽略不計(jì)),如果不到1ms,則計(jì)算BDP 值時(shí)RTT 值取1ms。 本實(shí)驗(yàn)使用的Intel 網(wǎng)卡帶寬為10Gbps,因此BDP=10 Gbps×1ms=10 000 000 bit=1 250 000 byte=1.25M 字節(jié)。
(2)在系統(tǒng)默認(rèn)配置下的測(cè)試。默認(rèn)狀態(tài)下系統(tǒng)的網(wǎng)絡(luò)設(shè)置如表1 所示。
表1 系統(tǒng)默認(rèn)狀態(tài)下的網(wǎng)絡(luò)情況Table 1 Network condition under system default state
在命令行模式下,運(yùn)行iperf.exe,一臺(tái)主機(jī)作為服務(wù)器端,另一臺(tái)作為客戶(hù)端。 在服務(wù)器端命令行提示符下輸入iperf -s ,在客戶(hù)端命令行提示符下輸入iperf -c <服務(wù)器ip 地址>,測(cè)試10 次,結(jié)果如圖1 所示。
圖1 10G 帶寬下主機(jī)相連未經(jīng)優(yōu)化的帶寬Fig.1 Host machine direct-coupled bandwidth without optimization under 10G bandwidth
(3)對(duì)系統(tǒng)優(yōu)化配置后的測(cè)試。 通常的廣域網(wǎng)時(shí)延在70 ms,因此將窗口大小設(shè)置為10M 比較合適。同時(shí),由于網(wǎng)卡本身支持巨幅幀,應(yīng)將MTU 也設(shè)為9000 byte。 通過(guò)對(duì)系統(tǒng)進(jìn)行優(yōu)化配置,得到了穩(wěn)定在5G 左右的網(wǎng)卡速率。
通過(guò)優(yōu)化的配置,對(duì)二臺(tái)主機(jī)測(cè)試10 次,結(jié)果如圖2 所示。
圖2 10G 帶寬下主機(jī)相連最終優(yōu)化結(jié)果Fig.2 Ultimate optimized results of host machine under 10G bandwidth
通過(guò)本次實(shí)驗(yàn),我們使兩臺(tái)主機(jī)間的傳輸速率從系統(tǒng)默認(rèn)的900 Mbps 升到將近5 Gbps, 提高了5 倍多,但離理想速率10 Gbps 仍然有很大距離,這主要是由于主機(jī)的性能(CPU 處理能力、 主板FSB大小、內(nèi)存讀寫(xiě)能力等)影響。 如果采用具有支持巨幅幀、硬件檢測(cè)校驗(yàn)等功能的高性能網(wǎng)卡,再對(duì)系統(tǒng)設(shè)置進(jìn)行一些微調(diào)(比如調(diào)整系統(tǒng)支持的滑動(dòng)窗口技術(shù)、選擇性回復(fù)、快速重傳等)我們就能使現(xiàn)有的網(wǎng)絡(luò)設(shè)備發(fā)揮最大的效能,提高網(wǎng)絡(luò)傳輸速率。
本文主要論述通過(guò)軟件或協(xié)議方面的調(diào)節(jié)來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的高速傳輸,即通過(guò)調(diào)節(jié)軟件方面來(lái)實(shí)現(xiàn)硬件的最充分利用,從而達(dá)到最高傳輸速率。 適當(dāng)調(diào)節(jié)系統(tǒng)的網(wǎng)絡(luò)參數(shù),能較大幅度地提高遠(yuǎn)程主機(jī)間的傳輸速率,這也是解決遠(yuǎn)程主機(jī)隨著距離增大傳輸速率復(fù)雜性增加問(wèn)題的重要手段。
[1] Manish Jain, Ravi S. Prasad, Constantinos Dovrolis. The TCP Bandwidth-Delay Product revisited:network buffering cross traffic,and socket buffer auto-sizing[C]. Technical Report GIT -CERCS -03 -02,College of Computling,Georgia Tech,2003.
[2] 侯瑋,竇睿彧,蘭巨龍. FAST TCP 擁塞控制機(jī)制研究[J].微計(jì)算機(jī)信息,2005(8):10-12.
[3] 胡風(fēng)華,侯紫峰,祝明發(fā). toe 技術(shù)及其在IP 存儲(chǔ)環(huán)境下的性能研究[J]. 徽電子學(xué)與計(jì)算機(jī),2004(2):90-94.