tcprstat和tcpstat工作原理

myownstars發表於2015-03-09

1 tcprstat

原理

採用libpcap捕獲tcp,計算請求響應時間並進行一系列聚集統計,響應時間 = diff(last inbound packet, first outbound packet)

相較tcpstat,該工具側重於響應時間而非通訊流量的計算;

可以直接監控網路介面(預設埠3306),或者讀取tcpdump檔案。

 

安裝

檔案本身為二進位制格式,下載後無需編譯可直接放入系統bin目錄,賦予chmod +x後便可直接呼叫。

 

輸出格式

# tcprstat -p 3306 -t 1 -n 5

timestamp        count    max      min      avg      med      stddev   95_max   95_avg   95_std   99_max         99_avg   99_std

1283261499       1870     559009   39       883      153      13306    1267     201      150      6792         323      685

1283261500       1865     25704    29       578      142      2755     889      175      107      23630         333      1331

1283261501       1887     26908    33       583      148      2761     714      176      94       23391         339      1340

1283261502       2015     304965   35       624      151      7204     564      171      79       8615         237      507

1timestampmicrosecond為統計單位;Percentiles = 結果排序並忽略最大的N%

 

可以只輸出部分欄位,譬如只統計完成的請求數:

# tcprstat -f '%n\n' -p 3306 -t 1 -n 0
count
2212
2070
...

 

Format Code

Header

Default?

Meaning

%n

count

y

Count of requests that completed during this iteration

%a

avg

y

Average response time

%s

sum

y

Sum of response times

%x

sqs

Sum of squares of response times

%m

min

y

Minimum response time

%M

max

y

Maximum response time

%h

med

y

Median response time

%S

stddev

y

Standard deviation of response times

%v

var

Variance of response times

%I

iter#

Iteration number

%t

elapsed

Seconds elapsed since the first iteration

%T

timestamp

y

Unix timestamp

%%

A literal %

\t

A tab character

\n

A newline character

95,99

Adds a prefix

y

A percentile indicator; see later in this section for more

 

 

 

2 tcpstat

統計網路介面的流量資訊,可直接監控某指定介面,或者讀取tcpdump檔案;

統計內容主要包括:頻寬;packet數量;每秒的packet;平均packet大小;interface load.

 

輸出樣例

   bash-2.03$ tcpstat -i eth0
   Time:940948785  n=107   avg=251.81      stddev=422.45   bps=43110.40
   Time:940948790  n=99    avg=400.21      stddev=539.39   bps=63393.60
   Time:940948795  n=43    avg=257.16      stddev=352.83   bps=17692.80

2n = packet數量;avg = 平均packet大小;stddev = standard deviation of packet sizebps = 每秒頻寬(bit)

 

 

 

3 libpcap

是一個網路包捕獲函式庫,tcpdump便基於此實現,可用於構造網路嗅探器(sniffer)

工作架構如下

一個包捕獲機制包含三個主要部分:最底層是針對特定作業系統的包捕獲機制,最高層是針對使用者程式的介面,第三部分是包過濾機制。

 

資料包常規的傳輸路徑:網路卡 -- 裝置驅動層 -- 資料鏈路層(捕獲) -- IP -- 傳輸層 -- 應用程式

包捕獲機制是在資料鏈路層增加一個旁路處理,對傳送和接收到的資料包做過濾/緩衝等相關處理,最後直接傳遞到應用程式。

3:這也解釋了在開啟checksum offloading時,sniffer抓取的包顯示bad checksum,因為此種情形下checksum由網路卡完成checksum計算http://blog.itpub.net/15480802/viewspace-1416446/

 

網路介面在Linux網路體系中是一個很重要的概念,它是對具體網路硬體裝置的一個抽象,在它的下面是具體的網路卡驅動程式,而其上則是網路協議層。Linux中最常見的介面裝置名eth0loLo 稱為迴路裝置,是一種邏輯意義上的裝置, 其主要目的是為了除錯網路程式之間的通訊功能。eth0對應了實際的物理網路卡,在真實網路環境下,資料包的傳送和接收都要透過 eth0。如果計算機有多個網路卡,則還可以有更多的網路介面,如eth1,eth2 等等。呼叫命令ifconfig可以列出當前所有活躍的介面及相關資訊,注意對eth0的描述中既有物理網路卡的MAC地址,也有網路協議的IP地址。

 

 

 

參考資料

http://www.ibm.com/developerworks/cn/linux/l-libpcap/index.html  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-1453968/,如需轉載,請註明出處,否則將追究法律責任。

相關文章