使用Iperf調(diào)整網(wǎng)絡(luò)
一、Iperf工作原理
Iperf主要的功能是調(diào)諧基于特定路徑的TCP連接的性能,我們知道TCP連接調(diào)諧最基本的措施是調(diào)諧TCP窗口的大小,窗口大小控制在任何節(jié)點(diǎn)網(wǎng)絡(luò)中可以存在的數(shù)據(jù)大小如果該值太小,發(fā)送者將會(huì)在某段時(shí)間處于空閑狀態(tài),從而影響發(fā)送的性能。TCP窗口大小的理論值為鏈路瓶頸帶寬與往返時(shí)延的乘積:
bottleneck bandwidth * round trip time
例如鏈路瓶頸帶寬為45Mbit/sec,往返時(shí)延為42ms(可以通過ping來測試),那么窗口的理論值為:
45Mbit/sec*42ms=(45e6)*(42e-3)
調(diào)諧窗口大小即可以上.理論值為基準(zhǔn),在該值上慢慢增大或減少,即可獲得最好的結(jié)果。
IperfN試TCP帶寬的原理較簡單,即客戶端和服務(wù)器端建立連接,然后客戶端發(fā)送一定大小的數(shù)據(jù),并記下發(fā)送的時(shí)間,或者客戶端在一定的時(shí)間內(nèi)發(fā)送數(shù)據(jù),并記下發(fā)送的總數(shù)據(jù)。帶寬的大小等于發(fā)送的總數(shù)據(jù)除以發(fā)送的總時(shí)間。對(duì)服務(wù)器端來說,就是在連接建立時(shí)間內(nèi),接收的總數(shù)據(jù)除以所花時(shí)間即為服務(wù)器端所測得的帶寬。MSS的大小通過TCP內(nèi)核接口函數(shù)直接獲得。
二、Iperf實(shí)現(xiàn)
Iperf主要類圖結(jié)構(gòu)包括9個(gè)類。IPerf 的核心部分均在PerfSocket類中實(shí)現(xiàn),包括客戶端和服務(wù)器端發(fā)送和接收數(shù)據(jù)、帶寬報(bào)告、數(shù)據(jù)丟失及延遲抖動(dòng)報(bào)告,以及窗口大小和MSS報(bào)告等功能。其中Speaker和Client為客戶端的對(duì)象,Listener、Audience和Server為服務(wù)器端的對(duì)象??蛻舳撕头?wù)器端的通信通過三個(gè)消息完成:Connect、write及shutdown。這里connect不同于TCP中的連接,它還包含一個(gè)數(shù)據(jù)報(bào)文,其信息為雙向測試而傳給服務(wù)器端的信息,主要用于雙向測試時(shí)讓服務(wù)器端啟動(dòng)客戶端線程而所需要的信息。UDP 測試的過程基本上跟TCP類似。UDP報(bào)文包含了一個(gè)應(yīng)用報(bào)文頭,其主要字段為報(bào)文ID和時(shí)間信息,這個(gè)主要是為了測試UDP報(bào)文的丟失、亂序以及延遲抖動(dòng)性能。UDP的第一個(gè)報(bào)文用來建立連接,不作為應(yīng)用數(shù)據(jù),其信息為雙向測試而傳給服務(wù)器端的信息,主要用于雙向測試時(shí)讓服務(wù)器端啟動(dòng)客戶端線程而所需要的信息。UDP與TCP第一個(gè)報(bào)文內(nèi)容的主要區(qū)別是UDP報(bào)文還包括一個(gè)應(yīng)用報(bào)文頭。UDP傳輸結(jié)束通過客戶端發(fā)送一個(gè)FIN 的報(bào)文來實(shí)現(xiàn),該報(bào)文的報(bào)文ID為負(fù)數(shù),服務(wù)器端接收到FIN報(bào)文后即停止接收?qǐng)?bào)文并回送一個(gè)AckFIN報(bào)文給客戶,AckFIN 報(bào)文包含了服務(wù)器端得到的測試數(shù)據(jù)。
操作舉例:
1)TCP測試
服務(wù)器執(zhí)行:#iperf -s -i 1 -w 1M
客戶端執(zhí)行:#iperf -c host -i 1 -w 1M
其中-w表示TCP window size,host需替換成服務(wù)器地址。
2)UDP測試
服務(wù)器執(zhí)行:#iperf -u -s
客戶端執(zhí)行:#iperf -u -c 10.32.0.254 -b 900M
其中-b表示使用帶寬數(shù)量,千兆鏈路使用90%容量進(jìn)行測試就可以了。
|
|