一種提高時延測量精度的網(wǎng)絡(luò)時延測量方法
【專利摘要】本發(fā)明公開了一種網(wǎng)絡(luò)時延測量方法。該方法包括:時延測量過程中自動減去目的端設(shè)備的處理時間,使得時延測量值能更精確地反應(yīng)當下網(wǎng)絡(luò)運行的狀況;通過UDP無連接的傳輸層協(xié)議發(fā)送測試數(shù)據(jù)包,解決有些情況下ICMP數(shù)據(jù)包被屏蔽的問題;針對UDP傳輸不可靠的問題利用TCP可靠傳輸來傳遞時間戳的值;在數(shù)據(jù)包到達網(wǎng)卡的時刻計時,將收發(fā)包時間戳記錄位置從應(yīng)用層移動到物理層,以便更加接近數(shù)據(jù)包離開和到達的真實時刻。能夠去除目的端設(shè)備的處理時延,使得收發(fā)包時間戳更加接近真實收發(fā)包時刻,所測時延值可以更好的反應(yīng)當下網(wǎng)絡(luò)的運行狀況。
【專利說明】一種提高時延測量精度的網(wǎng)絡(luò)時延測量方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)時延測量【技術(shù)領(lǐng)域】,具體是一種通過減去目的端設(shè)備的處理時延 來提高時延測量精度的網(wǎng)絡(luò)時延測量方法。
【背景技術(shù)】
[0002] 隨著時延是評價網(wǎng)絡(luò)性能的基本指標,同時也是測量時延抖動、網(wǎng)絡(luò)帶寬等性能 指標的基礎(chǔ)。時延測量在網(wǎng)絡(luò)性能監(jiān)測、網(wǎng)絡(luò)行為分析、網(wǎng)絡(luò)應(yīng)用設(shè)計等領(lǐng)域有著廣泛的應(yīng) 用。隨著網(wǎng)絡(luò)的發(fā)展,特別是光纖的誕生應(yīng)用,網(wǎng)絡(luò)帶寬已經(jīng)達到lOGbps,桌面也有很多采 用百兆以太網(wǎng)或者ADSL等寬帶接入,時延變得很小,常用工具的測量精度已經(jīng)不能滿足測 量分析的需求。隨著網(wǎng)絡(luò)速率的提升,對高精度的時延測量方法進行研究非常有必要。
[0003] 網(wǎng)絡(luò)性能測量中,往返時延常常被用作反映網(wǎng)絡(luò)狀態(tài)的一個重要指標。往返時延 可以看做由三部分組成:源端到目的端的傳輸時延,目的端設(shè)備的處理時延,目的端到源端 的傳輸時延。在這三部分中,目的端設(shè)備的處理時延并非是數(shù)據(jù)包在網(wǎng)絡(luò)中傳輸?shù)臅r間,并 且這段時間也會隨著目的端硬件設(shè)備的不同而不同,這就導致測量得到的時延值也不同。 事實上,這段時延只是目的端設(shè)備的處理時間,并不是數(shù)據(jù)包在網(wǎng)絡(luò)中經(jīng)過的時間,不能反 映當下網(wǎng)絡(luò)的運行狀況,所以將目的端設(shè)備的處理時延略去有利于時延更準確的反應(yīng)網(wǎng)絡(luò) 狀況。然而最常用的時延測量工具PING為了方便起見并沒有將這一段時延去掉,這就導致 測量得到的時延值不準確。此外,PING采用ICMP協(xié)議,當時延測量的目的主機或者是路徑 中其它節(jié)點過濾ICMP數(shù)據(jù)包后,PING將不能進行測量。針對這一問題可以采用UDP數(shù)據(jù) 包來測量往返時延。數(shù)據(jù)包在發(fā)送和接收的過程中存在緩存,緩存的時間與主機設(shè)備以及 主機當下的負載狀況有關(guān)。網(wǎng)卡會產(chǎn)生中斷來通知驅(qū)動程序?qū)?shù)據(jù)包進行處理,對中斷的 響應(yīng)所需的時間也是隨著主機設(shè)備以及主機當下的負載情況有關(guān)。由于數(shù)據(jù)包緩存延遲以 及終端響應(yīng)時間延遲不確定等因素的影響,記錄數(shù)據(jù)包收發(fā)時間戳的精度不夠高。此外,想 要實現(xiàn)在時延計算過程中減去目的端設(shè)備處理時延的影響就要實現(xiàn)源端和目的端之間時 間戳數(shù)據(jù)的通信,即將目的端記錄的兩個時間戳傳送到源端。UDP協(xié)議是面向無連接的,采 用UDP報文來傳輸時間戳數(shù)據(jù)信息不是最佳選擇。如果直接將T2和T3作為數(shù)據(jù)用測量包 傳輸?shù)皆炊耍敲丛撉闆r下目的端數(shù)據(jù)包發(fā)送時間戳T3必須是在數(shù)據(jù)包構(gòu)造之前就獲取, 這就會導致獲取的時間戳距離真實的發(fā)包時刻相差更遠。上述問題在時延測量的過程中均 會引起誤差,影響時延對網(wǎng)絡(luò)狀態(tài)的真實反應(yīng)。
【發(fā)明內(nèi)容】
[0004] 針對以上現(xiàn)有技術(shù)中的不足,本發(fā)明的目的在于提供一種提高時延測量精度的網(wǎng) 絡(luò)時延測量方法。本發(fā)明的技術(shù)方案如下:一種提高時延測量精度的網(wǎng)絡(luò)時延測量方法,其 包括以下步驟:
[0005] 101、當進行網(wǎng)絡(luò)時延測量時,源端按照UDP協(xié)議構(gòu)造測量數(shù)據(jù)包I,然后將構(gòu)造 好的測量數(shù)據(jù)包I發(fā)送給目的端,并記錄測量數(shù)據(jù)包I離開源端網(wǎng)卡的時間作為發(fā)送時間 戳T1,將該發(fā)送時間戳T1存放到源端MAC層的時延計算模塊中;
[0006] 102,當目的端接收到源端發(fā)送來的測量數(shù)據(jù)包I后,目的端記錄測量數(shù)據(jù)包I到 達目的端網(wǎng)卡的時間作為接收時間戳T2,并將T2存放在目的端MAC層的通信模塊中;
[0007] 103、目的端對測量數(shù)據(jù)包I進行響應(yīng),按照UDP協(xié)議構(gòu)造新的測量數(shù)據(jù)包II,并 將新的測量數(shù)據(jù)包II發(fā)送給源端,將測量數(shù)據(jù)包II離開目的端網(wǎng)卡的時間記為發(fā)送時間戳 T3,將該時間戳T3存放在目的端MAC層的通信模塊中;
[0008] 104、當源端接收到新的測量數(shù)據(jù)包II后,記錄新的測量數(shù)據(jù)包II到達源端網(wǎng)卡的 時間為接收時間戳T4,并將T4傳遞到源端MAC層的時延計算模塊;
[0009] 105,同時目的端構(gòu)造TCP數(shù)據(jù)包,將T2和T3作為數(shù)據(jù)傳送到源端;,當源端接收 至IJ TCP數(shù)據(jù)包后,得到時間戳T2和T3,源端MAC層的時延計算模塊結(jié)合本地存儲的T1和 T4,計算往返時延值RTT= (T2-T1) + (T4-T3) = (T4-T1)-(T3-T2),并顯示網(wǎng)絡(luò)時延測量結(jié) 果值。
[0010] 進一步的,步驟101中所述的測量數(shù)據(jù)包I為UDP數(shù)據(jù)包。
[0011] 本發(fā)明的優(yōu)點及有益效果如下:
[0012] 本發(fā)明網(wǎng)絡(luò)時延測量方法通過去除目的端設(shè)備處理時延可以更精確的獲得時延 測量值,更好地通過時延反應(yīng)當下網(wǎng)絡(luò)運行狀況,避免因服務(wù)端設(shè)備性能差異而帶來的誤 差;通過TCP可靠傳輸解決目的端測量時延值傳送到源端的問題;通過將時間戳記錄位置 由應(yīng)用程序轉(zhuǎn)移到網(wǎng)卡位置來獲得更準確的時間戳。該方案所測的的網(wǎng)絡(luò)時延值將更加精 確。
【專利附圖】
【附圖說明】
[0013] 圖1所示為本發(fā)明優(yōu)選實施例系統(tǒng)流程示意圖;
[0014] 圖2數(shù)據(jù)包接收過程中可以添加時間戳位置的示意圖;
[0015] 圖3本發(fā)明采用的時延計算方法圖;
[0016] 圖4數(shù)據(jù)包發(fā)送和接收過程;
[0017] 圖5時間戳傳遞原理圖;
[0018] 圖6是傳輸時間戳數(shù)據(jù)的TCP報文格式;
[0019] 圖7是UDP測量數(shù)據(jù)報格式。
【具體實施方式】
[0020] 下面結(jié)合附圖給出一個非限定性的實施例對本發(fā)明作進一步的闡述。
[0021] 下面結(jié)合附圖給出一個非限定的實施例對本發(fā)明作進一步的闡述。但是應(yīng)該理 解,這些描述只是示例的,而并非要限制本發(fā)明的范圍。此外,在以下說明中,省略了對公知 結(jié)構(gòu)和技術(shù)的描述,以避免不必要地混淆本發(fā)明的概念。為了達到目的,本發(fā)明的技術(shù)方案 如下:
[0022] 1)為了保證時延值是網(wǎng)絡(luò)狀態(tài)的真實反映,減去目的端設(shè)備的處理時延。
[0023] 2)為了解決ICMP協(xié)議被目的端主機或者路徑中的中間節(jié)點過濾掉的情況,采用 UDP報文作為測量數(shù)據(jù)包。
[0024] 3)采用面向連接的TCP協(xié)議,將目的端測量得到的時間戳數(shù)據(jù)通過TCP可靠傳輸 傳遞到源端。
[0025] 4)時間戳記錄的真實性影響時延值的準確性,將時間戳的記錄位置從應(yīng)用層轉(zhuǎn)移 到物理層網(wǎng)卡的位置。
[0026] 下面對本發(fā)明進行進一步說明:
[0027] 1)為了保證時延值是網(wǎng)絡(luò)狀態(tài)的真實反映,減去目的端設(shè)備的處理時延。從源端 發(fā)送UDP數(shù)據(jù)包到測試的目的端,目的端接受到該測試數(shù)據(jù)包后向源端發(fā)送UDP數(shù)據(jù)包。分 別按照順序在源端和目的端記錄四個時間戳:源端測量數(shù)據(jù)包發(fā)送時記錄時間戳T1 ;目的 端接收測量數(shù)據(jù)包時記錄時間戳T2 ;目的端發(fā)送測量數(shù)據(jù)包時記錄時間戳T3 ;源端接收到 測量數(shù)據(jù)包時記錄時間戳T4。往返時延值RTT= (T2-T1) + (T4-T3) = (T4-T1)-(T3-T2)。
[0028] 2)為了解決ICMP被目的端主機或者路徑中的中間節(jié)點過濾掉的情況,采用UDP報 文作為測量數(shù)據(jù)包。UDP和ICMP較為類似,都是面向無連接的,區(qū)別是UDP需要指定一個端 □。
[0029] 3)想要實現(xiàn)源端和目的端之間的測量數(shù)據(jù)的傳輸,直接將測量得到的數(shù)據(jù)放在測 試數(shù)據(jù)包m)P中傳遞不是最佳方案,因為UDP協(xié)議是面向無連接的。此外,如果直接將T2 和T3作為數(shù)據(jù)用測量包傳輸?shù)皆炊?,那么該情況下目的端數(shù)據(jù)包發(fā)送時間戳T3必須是在 數(shù)據(jù)包構(gòu)造之前就獲取,這就會導致獲取的時間戳距離真實的發(fā)包時刻相差更遠。針對這 兩個問題的解決方案是采用TCP來傳送T2和T3,在保證了數(shù)據(jù)可靠傳輸?shù)耐瑫r也避免了因 需要傳送T2和T3而帶來的發(fā)包時間戳的誤差。在源端記錄時間戳T1和T4,在目的端記錄 時間戳T2和T3,將T2和T3作為數(shù)據(jù)利用TCP協(xié)議從目的端傳送到源端,以供計算往返時 延。
[0030] 4)時間戳記錄的真實性影響時延值的準確性。下面以接收數(shù)據(jù)包為例來進行說 明。以太網(wǎng)上的物理幀被網(wǎng)卡芯片獲取之后,網(wǎng)卡將數(shù)據(jù)傳遞到主機內(nèi)存,同時通過中斷通 知驅(qū)動程序處理接收到的數(shù)據(jù)包。接著主機響應(yīng)中斷,將數(shù)據(jù)包拷貝到上層協(xié)議棧中進行 處理,處理后的數(shù)據(jù)包到達應(yīng)用層。在不同位置插入時間戳所受緩存和中斷響應(yīng)時間帶來 的延遲的影響是不同的,這會導致時間戳與數(shù)據(jù)包到達的真實時間偏差也不同。為了數(shù)據(jù) 包的接收時間戳更加接近測試數(shù)據(jù)包接收的真實時間,將時間戳的計時位置從應(yīng)用層轉(zhuǎn)移 到物理層網(wǎng)卡的位置。在數(shù)據(jù)包到達網(wǎng)卡時刻記錄數(shù)據(jù)包接收時間。
[0031] 圖1是是本發(fā)明時延測量原理,包括如下步驟:
[0032] 步驟101,源端構(gòu)造測量數(shù)據(jù)包;
[0033] 步驟102,源端發(fā)送測量數(shù)據(jù)包,記錄數(shù)據(jù)包離開網(wǎng)卡的時間作為發(fā)送時間戳T1 ;
[0034] 步驟103,將該時間戳T1存放到時延計算模塊中;
[0035] 步驟104,目的端接受測量數(shù)據(jù)包,記錄數(shù)據(jù)包到達網(wǎng)卡的時間作為接收時間戳 T2,并將T2存放在通信模塊中;
[0036] 步驟105,目的端對測量數(shù)據(jù)包進行響應(yīng),構(gòu)造新的測量數(shù)據(jù)包;
[0037] 步驟106,目的端發(fā)送測量數(shù)據(jù)包,記錄數(shù)據(jù)包離開網(wǎng)卡的時間作為發(fā)送時間戳 T3 ;
[0038] 步驟107,將該時間戳T3存放在通信模塊中;
[0039] 步驟108,源端接收測量數(shù)據(jù)包,記錄數(shù)據(jù)包到達網(wǎng)卡的時間作為接收時間戳T4, 并將T4傳遞到時延計算模塊;
[0040] 步驟109,目的端構(gòu)造TCP數(shù)據(jù)包,將T2和T3作為數(shù)據(jù)傳送到源端;
[0041] 步驟110,源端接收TCP數(shù)據(jù)包,得到時間戳Τ2和Τ3,結(jié)合本地存儲的Τ1和Τ4計 算往返時延值并顯示結(jié)果。
[0042] 圖2是數(shù)據(jù)包接收過程中可以添加時間戳位置的示意圖。
[0043] 影響數(shù)據(jù)包收發(fā)處理時間的因素主要為幾下幾點:中斷服務(wù)開銷;數(shù)據(jù)拷貝和內(nèi) 存分配操作;在內(nèi)核協(xié)議棧上多余的協(xié)議處理時間。每個數(shù)據(jù)包的響應(yīng)時間是在內(nèi)核里的 傳輸時間和用戶空間程序響應(yīng)時間之和。內(nèi)核里的傳輸時間包括硬終端延時、中斷服務(wù)開 銷、中斷和內(nèi)核的上下文切換時間、協(xié)議棧處理的時間以及內(nèi)核和用戶空間的上下文切換 時間。數(shù)據(jù)包在用戶空間的處理時間不僅取決于程序本身的效率,還與LINUX內(nèi)核行為有 關(guān)。如圖2所示,加入時間戳的位置可以有多種選擇,記錄的時間戳分別為用戶空間、內(nèi)核 空間、硬件時間戳。最常用的時延測量工具PING采用的是用戶空間時間戳,如圖2中11、t2 位置。內(nèi)核空間網(wǎng)卡驅(qū)動是通過軟件可以控制的最接近數(shù)據(jù)包收發(fā)的真實時刻,見圖2中 t3、t4位置。硬件時間戳須修改硬件,雖然實現(xiàn)較為復(fù)雜,但是最接近數(shù)據(jù)包收發(fā)的真是時 亥IJ。本方案將時間戳記錄位置移動到MAC層,即圖2中t5、t6位置,以便更接近數(shù)據(jù)包到達 網(wǎng)卡的真實時間。
[0044] 圖3是本發(fā)明實施例的數(shù)據(jù)包發(fā)送和接收過程示意圖,包括如下步驟:
[0045] 步驟301,Linux網(wǎng)卡驅(qū)動程序為IP數(shù)據(jù)包添加14字節(jié)的MAC包頭,構(gòu)成MAC數(shù) 據(jù)包,主機的CPU首先檢查網(wǎng)卡是否有足夠大的發(fā)送緩沖區(qū),用于存放待發(fā)送的數(shù)據(jù)包;
[0046] 步驟302,主機CUP將內(nèi)存緩沖區(qū)中的MAC數(shù)據(jù)包拷貝到網(wǎng)卡的發(fā)送緩沖區(qū)內(nèi);
[0047] 步驟303,網(wǎng)卡芯片將其發(fā)送緩沖區(qū)內(nèi)的MAC數(shù)據(jù)包封裝成物理幀,并添加頭部信 息和CRC校驗碼,然后將MAC數(shù)據(jù)包傳到以太網(wǎng)上并記錄此時的時間戳。等到MAC數(shù)據(jù)包 傳到以太網(wǎng)后,網(wǎng)卡設(shè)備產(chǎn)生一個發(fā)送中斷,隨后進入中斷處理程序,清楚緩沖區(qū)里的數(shù)據(jù) 包;
[0048] 步驟304,來自以太網(wǎng)的幀會被網(wǎng)卡芯片獲取網(wǎng)卡芯片檢測物理幀的 CRC (Cyclical Redundancy Check),從而保證物理巾貞的完整。檢驗完成后,物理巾貞的頭部會 被去掉,從而得到MAC包。網(wǎng)卡芯片對比MAC包內(nèi)的目的MAC地址是否與本網(wǎng)卡MAC相同, 不同則丟棄,若相同則記錄時間戳,然后將MAC幀拷貝到網(wǎng)卡上接收緩沖區(qū)中;
[0049] 步驟305, MAC幀接受完后,網(wǎng)卡會產(chǎn)生接收中斷,通知主機有數(shù)據(jù)包被接收,CPU 進入接收中斷處理;
[0050] 步驟306,CPU會在內(nèi)存中分配塊緩沖區(qū),來存放數(shù)據(jù)包;
[0051] 步驟307,網(wǎng)卡驅(qū)動通過中斷將網(wǎng)卡緩沖區(qū)中的數(shù)據(jù)包拷貝到系統(tǒng)分配的內(nèi)存中 的緩沖區(qū)中;
[0052] 步驟308,協(xié)議幀會去掉緩沖區(qū)傳來的MAC包頭,得到數(shù)據(jù)包。
[0053] 圖4是本發(fā)明時延計算原理圖圖。將目的端對數(shù)據(jù)包進行處理的時間去掉,使得 測量所得時延能更好的反應(yīng)當下網(wǎng)絡(luò)的運行狀況,同時避免目的端設(shè)備差異帶來的影響。 計算公式為:往返時延值RTT= (T2-T1) + (T4-T3) = (T4-T1)-(T3-T2)。具體步驟如下:
[0054] 步驟401,源端向目的端發(fā)送測量數(shù)據(jù)包;
[0055] 步驟402,目的端接收到數(shù)據(jù)包后對源端進行響應(yīng),向源端發(fā)送測量數(shù)據(jù)包。
[0056] 圖5是本發(fā)明時間戳數(shù)據(jù)傳輸原理圖。首先,源端建立TCP三次握手協(xié)議與目的 端建立連接;其次,發(fā)送UDP測量數(shù)據(jù)包;目的端接受后記錄T2,并返回相應(yīng)UDP包記錄T3 ; 同時TCP將記錄結(jié)果Τ2和Τ3傳遞到源端。每一次測量過程都是上述過程的重復(fù),所有測 量包發(fā)送結(jié)束后,TCP四次揮手結(jié)束連接。
[0057] 圖6是傳輸時間戳數(shù)據(jù)的TCP報文格式,TCP數(shù)據(jù)被封裝在一個IP數(shù)據(jù)包中,在 構(gòu)造TCP數(shù)據(jù)包時將T2和T3填充到TCP數(shù)據(jù)部分。
[0058] 圖7是UDP測量數(shù)據(jù)報格式,用戶數(shù)據(jù)報協(xié)議在IP數(shù)據(jù)報服務(wù)至上增加了端口功 能和差錯功能。UDP報文中有兩個部分:數(shù)據(jù)部分和首部,首部部分由四個字段組成:源端 口號、目的端口號、長度、檢驗和。
[0059] 以上這些實施例應(yīng)理解為僅用于說明本發(fā)明而不用于限制本發(fā)明的保護范圍。在 閱讀了本發(fā)明的記載的內(nèi)容之后,技術(shù)人員可以對本發(fā)明作各種改動或修改,這些等效變 化和修飾同樣落入本發(fā)明方法權(quán)利要求所限定的范圍。
【權(quán)利要求】
1. 一種提高時延測量精度的網(wǎng)絡(luò)時延測量方法,其特征在于,包括以下步驟: 101、 當進行網(wǎng)絡(luò)時延測量時,源端按照UDP協(xié)議構(gòu)造測量數(shù)據(jù)包I,然后將構(gòu)造好的 測量數(shù)據(jù)包I發(fā)送給目的端,并記錄測量數(shù)據(jù)包I離開源端網(wǎng)卡的時間作為發(fā)送時間戳 T1,將該發(fā)送時間戳T1存放到源端MAC層的時延計算模塊中; 102、 當目的端接收到源端發(fā)送來的測量數(shù)據(jù)包I后,目的端將測量數(shù)據(jù)包I到達目的 端網(wǎng)卡的時間作為接收時間戳T2,并將T2存放在目的端MAC層的通信模塊中; 103、 目的端對測量數(shù)據(jù)包I進行響應(yīng),按照UDP協(xié)議構(gòu)造新的測量數(shù)據(jù)包II,并將新 的測量數(shù)據(jù)包II發(fā)送給源端,將測量數(shù)據(jù)包II離開目的端網(wǎng)卡的時間記為發(fā)送時間戳T3, 將該時間戳T3存放在目的端MAC層的通信模塊中; 104、 當源端接收到新的測量數(shù)據(jù)包II后,將新的測量數(shù)據(jù)包II到達源端網(wǎng)卡的時間為 接收時間戳T4,并將T4傳遞到源端MAC層的時延計算模塊; 105、 同時目的端構(gòu)造TCP數(shù)據(jù)包,將T2和T3作為數(shù)據(jù)傳送到源端,當源端接收到TCP 數(shù)據(jù)包后,得到時間戳T2和T3,源端MAC層的時延計算模塊結(jié)合本地存儲的T1和T4,計算 往返時延值RTT= (T2-T1) + (T4-T3) = (T4-T1)-(T3-T2),并顯示網(wǎng)絡(luò)時延測量結(jié)果值。
2. 根據(jù)權(quán)利要求1所述的提高時延測量精度的網(wǎng)絡(luò)時延測量方法,其特征在于:步驟 101中所述的測量數(shù)據(jù)包I為UDP數(shù)據(jù)包。
【文檔編號】H04L12/26GK104144088SQ201410355604
【公開日】2014年11月12日 申請日期:2014年7月24日 優(yōu)先權(quán)日:2014年7月24日
【發(fā)明者】唐紅, 劉靜嫻, 趙國鋒, 鄧婭茹, 王大瑞, 戴俊, 王新恒, 唐文廣 申請人:重慶郵電大學