一種往返時延的測量方法、裝置及系統與流程
2024-03-25 05:46:05
本發明涉及通信領域,尤其涉及一種往返時延的測量方法、裝置及系統。
背景技術:
傳輸控制協議(Transmission Control Protocol,TCP)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議。它通過重傳機制提供可靠的通信,具體的,TCP為每個數據包設置一個序列號,當接收端成功收到數據包A後向發送端發送數據包A的確認包(ACK),該確認包中攜帶有數據包A的序列號,如果發送端在一定時間內未收到數據包A的確認包,那麼,發送端則認為數據包A已丟失,進而重傳數據包A。
為了避免網絡擁塞,TCP採用滑窗限流,批量傳輸的機制。具體的,發送端按照滑動窗口(Sliding Window,SW)規定的字節批量發送若干數據包(即包群),在一個批次的包群發送完成後,發送端停止發送數據包,直到一個往返時延(Round-Trip Time,RTT)後,即發送端收到接收端對上一批次的包群發送的確認包後,再啟動新批次的包群發送。
從上述傳輸機制可以看出,往返時延是決定TCP傳輸速率的重要指標,如圖1所示,在測量TCP連結的RTT時,通常在發送端和接收端之間設置監測點,將監測點接收到的數據包A和數據包A的確認包B之間的時間差作為RTT。
但是,上述RTT測量方法只能得到監測點到接收端之間的RTT值,並不能真實地測量發送端與接收端之間的RTT值,如果監測點距發送端端較遠,那麼,上述RTT測量方法測量得到的RTT值誤差較大。
技術實現要素:
本發明的實施例提供一種往返時延的測量方法、裝置及系統,可以一 定程度上提高RTT測量的準確度。
為達到上述目的,本發明的實施例採用如下技術方案:
第一方面,本發明的實施例提供一種往返時延的測量方法,所述方法用於測量發送端與接收端之間TCP連結上的RTT,包括:獲取在所述TCP連結上接收到數據包A的第一時間,所述數據包A為所述發送端向所述接收端發送的第一包群中的第一個數據包;在接收到所述數據包A的確認包之後,計算所述發送端發送的數據包C與數據包D之間的發包時間間隔,所述數據包C為在所述數據包A之後的數據包,所述數據包D為在所述數據包C之後與所述數據包C相鄰的數據包;若所述數據包C與所述數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值,則將接收到所述數據包C的第二時間與所述第一時間的差值作為所述TCP連結的本次RTT值。
這樣一來,基於TCP批量傳輸的機制,若監測到數據包C與數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則確定數據包D為在第一包群之後的第二包群中的第一個數據包,此時,將接收到數據包D的第二時間與接收到數據包A的第一時間的差值,即接收第一包群與第二包群之間的時間差作為該TCP連結的本次RTT值,從而一定程度上提高RTT測量的準確度。
結合第一方面,在第一方面的第一種可能的實現方式中,獲取在所述TCP連結上接收到所述數據包A的第一時間,可具體通過以下方式獲得:計算在所述TCP連結上接收到的數據包E和數據包A』之間的發包時間間隔,所述數據包A』為在所述數據包E之後與所述數據包E相鄰的數據包;若所述數據包E和所述數據包A』之間的發包時間間隔大於所述第一門限值,且小於所述第二門限值時,則將所述數據包A』確定為所述數據包A;查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間。
其中,查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間,可具體包括:根據所述數據包A的序列號,查詢所述數據 包A的確認包是否唯一;若所述數據包A的確認包唯一,則查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間。
這樣,通過查詢該數據包A的確認包是否唯一,即可排除數據包A被接收端多次確認的情況,因為數據包A被接收端多次確認時會產生多個確認包,而通過這多個確認包無法準確確定接收端確認的是哪個數據包,進而造成RTT測量時得到的RTT值準確性降低。
結合第一方面,在第一方面的第二種可能的實現方式中,將接收到所述數據包D的第二時間與所述第一時間的差值作為所述TCP連結的本次RTT值之後,還包括:根據所述本次RTT值更新所述第一門限值和所述第二門限值,其中,更新後的所述第一門限值為第一比例係數與所述本次RTT值的乘積,更新後的所述第二門限值為第二比例係數與所述本次RTT值的乘積,所述第一比例係數小於所述第二比例係數。
結合第一方面,在第一方面的第三種可能的實現方式中,在將接收到所述數據包D的第二時間與所述第一時間的差值作為所述TCP連結的本次RTT值之後,還包括:對所述本次RTT值與本次RTT測量之前得到的N個歷史RTT值求取平均值,N為大於0的整數;根據所述平均值更新所述第一門限值和所述第二門限值,其中,更新後的所述第一門限值為第一比例係數與所述平均值的乘積,更新後的所述第二門限值為第二比例係數與所述平均值的乘積,所述第一比例係數小於所述第二比例係數。
在進行下一次RTT測量時,仍然可以循環執行上述更新方法,並且,可以使用上一次RTT測量後更新的第一門限值和第二門限值,將得到的發包時間間隔與更新後的第一門限值和第二門限值進行比較,進而動態測量TCP連結上的每次RTT值。
結合第一方面,在第一方面的第四種可能的實現方式中,在獲取在TCP連結上接收到所述數據包A的第一時間之前,還包括:計算建立所述TCP連結時的初始RTT值;根據所述初始RTT值設置所述第一門限值和所述第二門限值,其中,所述第一門限值為第一比例係數與所述初始 RTT值的乘積,所述第二門限值為第二比例係數與所述初始RTT值的乘積,所述第一比例係數小於所述第二比例係數。
結合第一方面以及第一方面的第一至第四中可能的實現方式中的任一種實現方式,在第一方面的第五種可能的實現方式中,在監測所述發送端發送的數據包C與數據包D之間的發包時間間隔之後,還包括:若所述數據包C與所述數據包D之間的發包時間間隔小於所述第一門限值,則繼續計算所述數據包D與數據包H之間的發包時間間隔,所述數據包H為在所述數據包D之後與所述數據包D相鄰的數據包;若所述數據包C與所述數據包D之間的發包時間間隔大於所述第二門限值,則放棄本次RTT測量。
結合第一方面以及第一方面的第一至第四中可能的實現方式中的任一種實現方式,在第一方面的第六種可能的實現方式中,在監測所述發送端發送的數據包C與數據包D之間的發包時間間隔之後,還包括:若所述發包時間間隔大於第一門限值,且小於第二門限值時,則將所述數據包D的序列號與所述數據包A的序列號的差值作為SW的大小。
由於除了RTT是決定TCP傳輸速率的重要指標之外,SW也是決定TCP傳輸速率的重要指標,因此,可以看出,本發明實施例提供的RTT測量方法,能夠同時較為準確地測量RTT值和SW的大小,該方法適用於所有TCP連結,並且,可以對一條TCP連結上的數據流進行多次RTT測量,實現對RTT的動態跟蹤。
第二方面,本發明的實施例提供一種往返時延的測量裝置,所述裝置用於測量發送端與接收端之間傳輸控制協議TCP連結上的往返時延RTT,包括:獲取單元,用於獲取在所述TCP連結上接收到數據包A的第一時間,所述數據包A為所述發送端向所述接收端發送的第一包群中的第一個數據包;計算單元,用於在接收到所述數據包A的確認包之後,計算所述發送端發送的數據包C與數據包D之間的發包時間間隔,所述數據包C 為在所述數據包A之後的數據包,所述數據包D為在所述數據包C之後與所述數據包C相鄰的數據包;所述計算單元,還用於若所述數據包C與所述數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值,則將接收到所述數據包C的第二時間與所述第一時間的差值作為所述TCP連結的本次RTT值。
結合第二方面,在第二方面的第一種可能的實現方式中,所述裝置還包括確定單元和查詢單元,其中,所述計算單元,還用於計算在所述TCP連結上接收到的數據包E和數據包A』之間的發包時間間隔,所述數據包A』為在所述數據包E之後與所述數據包E相鄰的數據包;所述確定單元,用於若所述數據包E和所述數據包A』之間的發包時間間隔大於所述第一門限值,且小於所述第二門限值時,則將所述數據包A』確定為所述數據包A;所述查詢單元,用於查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間。
其中,所述查詢單元,具體用於查詢所述數據包A的確認包是否唯一;若所述數據包A的確認包唯一,則查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間。
結合第二方面,在第二方面的第二種可能的實現方式中,所述裝置還包括:更新單元,用於根據所述本次RTT值更新所述第一門限值和所述第二門限值,其中,更新後的所述第一門限值為第一比例係數與所述本次RTT值的乘積,更新後的所述第二門限值為第二比例係數與所述本次RTT值的乘積,所述第一比例係數小於所述第二比例係數。
結合第二方面,在第二方面的第三種可能的實現方式中,所述裝置還包括更新單元,其中,所述計算單元,還用於對本次RTT測量得到的所述本次RTT值與本次RTT測量之前得到的N個歷史RTT值求取平均值,N為大於0的整數;所述更新單元,用於根據所述平均值更新所述第一門限值和所述第二門限值,其中,更新後的所述第一門限值為第一比例係數 與所述平均值的乘積,更新後的所述第二門限值為第二比例係數與所述平均值的乘積,所述第一比例係數小於所述第二比例係數。
結合第二方面,在第二方面的第四種可能的實現方式中,所述裝置還包括設置單元,其中,所述計算單元,還用於計算建立所述TCP連結時的初始RTT值;所述設置單元,用於根據所述初始RTT值設置所述第一門限值和所述第二門限值,其中,所述第一門限值為第一比例係數與所述初始RTT值的乘積,所述第二門限值為第二比例係數與所述初始RTT值的乘積,所述第一比例係數小於所述第二比例係數。
結合第二方面以及第二方面的第第一至四種可能的實現方式中的任一種實現方式,在第二方面的第五種可能的實現方式中,所述計算單元,還用於若所述數據包C與所述數據包D之間的發包時間間隔小於所述第一門限值,則繼續計算所述數據包D與數據包H之間的發包時間間隔,所述數據包H為在所述數據包D之後與所述數據包D相鄰的數據包;若所述數據包C與所述數據包D之間的發包時間間隔大於所述第二門限值,則放棄本次RTT測量。
結合第二方面以及第二方面的第第一至四種可能的實現方式中的任一種實現方式,在第二方面的第六種可能的實現方式中,所述計算單元,還用於若所述發包時間間隔大於第一門限值,且小於第二門限值時,則將所述數據包D的序列號與所述數據包A的序列號的差值作為滑動窗口SW的大小。
第三方面,本發明的實施例提供一種往返時延的測量系統,包括上述第二方面中任一項所述的往返時延的測量裝置,以及與所述往返時延的測量裝置均相連的接收端和發送端。
本發明的實施例提供一種往返時延的測量方法、裝置及系統,可用於測量發送端與接收端之間TCP連結上的RTT,首先,可獲取在該TCP連結上接收到數據包A的第一時間,該數據包A為發送端向接收端發送的第 一包群中的第一個數據包;在接收到該數據包A的確認包之後,計算發送端發送的數據包C與數據包D之間的發包時間間隔,該數據包C為在數據包A之後的數據包,該數據包D為在數據包C之後與數據包C相鄰的數據包;若該數據包C與該數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則將接收到該數據包D的第二時間與第一時間的差值作為該TCP連結的本次RTT值。這樣一來,基於TCP批量傳輸的機制,若監測到數據包C與數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則確定數據包D為在第一包群之後的第二包群中的第一個數據包,此時,將接收到數據包D的第二時間與接收到數據包A的第一時間的差值,即接收第一包群與第二包群之間的時間差作為該TCP連結的本次RTT值,從而一定程度上提高RTT測量的準確度。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹。
圖1為現有技術中RTT測量方法的示意圖;
圖2為本發明實施例中進行RTT測量的架構示意圖;
圖3為本發明實施例提供的一種往返時延的測量方法的流程圖一;
圖4為本發明實施例提供的RTT測量方法的示意圖;
圖5為本發明實施例提供的一種往返時延的測量方法的流程圖二;
圖6為本發明實施例提供的三次握手機制的示意圖;
圖7為本發明實施例提供的一種往返時延的測量裝置的結構示意圖一;
圖8為本發明實施例提供的一種往返時延的測量裝置的結構示意圖二;
圖9為本發明實施例提供的一種往返時延的測量裝置的結構示意圖三;
圖10為本發明實施例提供的一種往返時延的測量裝置的結構示意圖 四;
圖11為本發明實施例提供的一種往返時延的測量系統的結構示意圖;
圖12為本發明實施例提供的一種往返時延的測量裝置的硬體結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。
另外,術語「第一」、「第二」僅用於描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術特徵的數量。由此,限定有「第一」、「第二」的特徵可以明示或者隱含地包括一個或者更多個該特徵。在本發明的描述中,除非另有說明,「多個」的含義是兩個或兩個以上。
本文中術語「和/或」,僅僅是一種描述關聯對象的關聯關係,表示可以存在三種關係,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字符「/」,一般表示前後關聯對象是一種「或」的關係。
如圖2所示,TCP協議具有批量傳輸的機制,具體的,接收端與發送端之間通過「三次握手(three times handshake;three-way handshake)機制」建立TCP連結,該TCP連結建立後,發送端傳輸一個包群,該包群內包含若干個數據包,接收端在接收到發送端批量發送的數據包後,向發送端回復確認包(ACK),當發送端接收到該確認包後啟動新的一輪包群的發送。
而RTT是指:TCP協議中從發送端發送一個數據包,到收到接收端發送的確認包所經歷的時間,也就是發送端連續發送兩次包群之間的時間間隔,即圖2中的R1,對於RTT測量裝置點來說,發送端與接收端之間在該TCP連結上的一次RTT,是指:監測到第一包群中第一個數據包,到監測到第二包群中第一個數據包的時間差,即圖2中的R2,因此,本 發明的實施例提供的RTT測量方法通過識別包群間隔,計算發送端與接收端之間在該TCP連結上的一次RTT,該方法可以連續測量該TCP連結上每一次的RTT值,並且容易在網絡中間任意位置上實現。
需要說明的是,在本發明實施例中涉及到的數據包A、數據包A』、數據包B、數據包C等數據包中,A、B、C等英文字母僅用於區分數據包,不會對數據包的順序、大小等屬性特徵進行限制。
實施例1
本發明的實施例提供一種往返時延的測量方法,如圖3所示,包括:
101、獲取在TCP連結上接收到數據包A的第一時間,該數據包A為發送端向接收端發送的第一包群中的第一個數據包。
102、在接收到該數據包A的確認包之後,計算發送端發送的數據包C與數據包D之間的發包時間間隔,該數據包C為在數據包A之後的數據包,該數據包D為在數據包C之後與該數據包C相鄰的數據包。
103、若該數據包C與數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則將接收到該數據包D的第二時間與該第一時間的差值作為該TCP連結的本次RTT值。
在步驟101中,RTT測量裝置位於接收端和發送端之間,當接收端與發送端之間通過「三次握手機制」建立TCP連結後,RTT測量裝置可分別監測到發送端向接收端批量發送的包群(例如第一包群)中的每個數據包到達RTT測量裝置的時間,以及接收端針對每個接收到的數據包向發送端發送的確認包到達RTT測量裝置的時間。
此時,若接收到接收端發送的第一包群中的第一個數據包(本發明實施例中稱為數據包A)的確認包,RTT測量裝置可獲取從發送端在該TCP連結上接收該數據包A的第一時間T1(T1>0),即第一包群中的第一個數據包到達RTT測量裝置的時間。
具體的,RTT測量裝置可記錄接收到的各個數據包的接收時間,並將該各個數據包的接收時間存儲至自身的存儲單元,並且,RTT測量裝置可實時計算接收到的各個數據包之間的時間間隔,該時間間隔即為發送端發送各個數據包之間的發包時間間隔,由於TCP協議具有批量傳輸的機制,也就是說,當發送端將第一包群進行發送結束後,當發送端接收到該第一 包群內的數據包的確認包後,才啟動新的一輪包群(即第二包群)的發送,因此,第一包群的最後一個數據包與第二包群的第一個數據包之間的發包間隔時間,通常大於每個包群內數據包之間的發包時間間隔,那麼,當RTT測量裝置監測到該數據包A的前一個數據包(本發明實施例中稱為數據包E)與該數據包A之間的發包時間間隔大於第一門限值,且小於第二門限值時,則可認為該數據包E為第一包群的前一個包群(即第三包群)中的最後一個數據包。
此時,RTT測量裝置查詢該數據包A的確認包是否唯一,即排除數據包A被接收端多次確認的情況,因為數據包A被接收端多次確認時會產生多個確認包,RTT測量裝置通過這多個確認包無法準確確定接收端確認的是哪個數據包,進而造成RTT測量時得到的RTT值準確性降低。
具體的,由於TCP為每個數據包設置一個序列號,當接收端成功收到數據包A後,向發送端發送數據包A的確認包,該確認包中也攜帶有數據包A的序列號,因此,RTT測量裝置可以解析監測到的各個數據包的序列號和各個確認包的序列號,通過對比,確定數據包A的確認包是否唯一,若數據包A的確認包唯一,RTT測量裝置則從存儲器中已經記錄的接收該數據包A的接收時間作為該第一時間T1。
示例性的,如圖4所示,下行方向表示發送端向接收端發送各個數據包,上行方向表示接收端向發送端發送對應的確認包,RTT測量裝置會記錄每一個接收到的數據包的接收時間,當監測到在該TCP連結上接收到的數據包E和數據包A』之間的發包時間間隔J1(J1>0)大於第一門限值,且小於所述第二門限值時,則確定該數據包A』為發送端向所述接收端發送的第一包群中的第一個數據包,即數據包A,此時,RTT測量裝置從上行方向上查找與數據包A的序列號相同的確認包B是否唯一,若數據包A的確認包B唯一,RTT測量裝置則將存儲器中已經記錄的接收該數據包A的接收時間作為該第一時間T1。
其中,第一門限值和第二門限值的具體取值可以由本領域技術人員根據實際經驗進行預置,又或者,第一門限值和第二門限值的具體取值可以是由RTT測量裝置根據本次RTT測量的前一次RTT測量得到的RTT值計算的,本發明後續實施例將對此做詳細介紹,故此處不再贅述。
至此,RTT測量裝置獲取到從發送端在該TCP連結上接收數據包A的第一時間T1。
在步驟102中,由於發送端發送的第二包群一定是在接收到第一包群的確認包之後發送的,也就是說,在發送端接收到數據包A的確認包之後,才會發送第二包群的第一個數據包,因此,在接收到該數據包A的確認包之後,RTT測量裝置可連續計算發送端發送的數據包C與數據包D之間的發包時間間隔,數據包C與數據包D均為數據阿伯A之後的數據包,且數據包D為在數據包C之後與該數據包C相鄰的數據包(本發明實施例中所指的相鄰數據包,是指按照時間的先後順序RTT測量裝置連續接收到的兩個數據包)。
進一步地,由於發送端按照滑動窗口(Sliding Window,SW)規定的字節發送包群,而包群內的大多數數據包都按照預定字節大小進行封裝(即數據包為滿包),而每個包群內的最後一個或幾個數據包的大小可能會小於該預定字節大小,出現非滿包的情況。
而由於非滿包(可能是大小極小的包)的傳輸時延可能與滿包的傳輸時延有差別,因此,為了增加RTT測量的準確性,RTT測量裝置可連續計算數據包為滿包的數據包C與數據包D之間的發包時間間隔。
在步驟103中,若在步驟102中計算出數據包C與數據包D之間的發包時間間隔J2(J2>0)大於第一門限值,且小於第二門限值時,RTT測量裝置則記錄接收該數據包D的第二時間T2,以便於計算該TCP連結的本次RTT值。
示例性的,仍如圖4所示,當RTT測量裝置在下行方向上,計算得到數據包A的確認包B之後的數據包C與相鄰的數據包D之間的發包時間間隔J2大於第一門限值,且小於所述第二門限值時,可以認為數據包D為第一包群之後的包群(及第二包群)中的第一個數據包,此時,RTT測量裝置記錄接收該數據包D的第二時間T2。
當然,在步驟102之後,若監測到的數據包C與數據包D之間的發包時間間隔J2小於該第一門限值,即說明數據包D仍屬於第一包群內的數據包,那麼,RTT測量裝置可繼續監測該數據包D與後續相鄰的數據包H之間的發包時間間隔;又或者,若監測到的數據包C與數據包D之 間的發包時間間隔J2大於該第二門限值,即認為當前發送端無數據包發送,此時,RTT測量裝置可放棄本次RTT測量。
而對於RTT測量裝置來說,發送端與接收端之間在該TCP連結上的一次RTT,是指:監測到第一包群中第一個數據包,到監測到第二包群中第一個數據包的時間差,即圖2中的R2,因此,在該TCP連結上本次RTT測量裝置測量的RTT值(即本次RTT值)R2=第二時間T2-第一時間T1。
至此,本發明的實施例提供一種往返時延的測量方法,可用於測量發送端與接收端之間TCP連結上的RTT,首先,可獲取在該TCP連結上接收到數據包A的第一時間,該數據包A為發送端向接收端發送的第一包群中的第一個數據包;在接收到該數據包A的確認包之後,計算發送端發送的數據包C與數據包D之間的發包時間間隔,該數據包C為在數據包A之後的數據包,該數據包D為在數據包C之後與數據包C相鄰的數據包;若該數據包C與該數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則將接收到該數據包D的第二時間與第一時間的差值作為該TCP連結的本次RTT值。這樣一來,基於TCP批量傳輸的機制,若監測到數據包C與數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則確定數據包D為在第一包群之後的第二包群中的第一個數據包,此時,將接收到數據包D的第二時間與接收到數據包A的第一時間的差值,即接收第一包群與第二包群之間的時間差作為該TCP連結的本次RTT值,從而一定程度上提高RTT測量的準確度。
實施例2
本發明的實施例提供一種往返時延的測量方法,如圖5所示,包括:
201、計算建立TCP連結時的初始RTT值。
202、根據該初始RTT值設置第一門限值和第二門限值,其中,第一門限值為第一比例係數與初始RTT值的乘積,第二門限值為第二比例係數與初始RTT值的乘積。
203、獲取在TCP連結上接收到數據包A的第一時間,該數據包A為發送端向接收端發送的第一包群中的第一個數據包。
204、在接收到該數據包A的確認包之後,計算發送端發送的數據包 C與數據包D之間的發包時間間隔。
205、若該發包時間間隔大於第一門限值,且小於第二門限值時,則記錄接收該數據包D的第二時間。
206、將該第二時間與該第一時間的差值作為該TCP連結的本次RTT值。
207、根據該本次RTT值更新該第一門限值和該第二門限值,其中,更新後的第一門限值為第一比例係數與本次RTT值的乘積,更新後的第二門限值為第二比例係數與本次RTT值的乘積。
208、若該發包時間間隔大於第一門限值,且小於第二門限值時,則將該數據包D的序列號與該數據包A的序列號的差值作為SW的大小。
具體的,RTT測量裝置位於接收端和發送端之間,而接收端與發送端之間通過「三次握手機制」建立TCP連結。
其中,所謂的三次握手的機制,是指為了提供可靠的數據傳送,接收端和發送端對每次數據的傳輸進行協商,使數據的發送和接收同步。如圖6所示,第一次握手是指,在建立TCP連結時,發送端發送SYN(synchronous)報文到接收端,該SYN報文中包含該TCP連結的配置信息,以使得接收端根據配置信息進行初始化配置。第二次握手是指,接收端進行初始化配置後發送響應消息(即SYN報文+ACK)指示發送端該TCP連結的配置完成。第三次握手是指,發送端收到接收端的響應消息後發送確認信息(即ACK),指示接收端該TCP連結已經建立,準備傳輸數據。
可以看出,發送端與接收端在建立TCP連結時的初始RTT值(即該TCP連結上的第一次RTT值),為RTT測量裝置從接收到發送端在第一次握手時發送SYN報文,至RTT測量裝置接收到接收端發送的響應消息的時間W1,以及RTT測量裝置從接收到接收端發送的響應消息至,RTT測量裝置接收到發送端發送的確認信息的時間W2。
因此,在步驟201中,RTT測量裝置根據上述W1與W2,計算在建立該TCP連結時的初始RTT值,即RTT測量裝置=W1+W2。
然而,步驟201中得到的初始RTT值,只能代表該TCP連結上傳輸的數據流在開始時刻的RTT值,為了能夠動態測量在該TCP連結上整個 數據流的在進行數據發送和接收時RTT值的變化,可進一步執行步驟202-207。
在步驟202中,RTT測量裝置根據步驟201中得到的該初始RTT值,設置第一門限值和第二門限值,其中,第一門限值為第一比例係數與初始RTT值的乘積,第二門限值為第二比例係數與初始RTT值的乘積,該第一比例係數小於第二比例係數。即:
第一門限值M1=第一比例係數*初始RTT值
第二門限值M2=第二比例係數*初始RTT值
例如,第一比例係數可以是0.2-0.3範圍內的任意值,第二比例係數可以是2-3範圍內的任意值,本領域技術人員可以根據實際經驗或特定的算法選擇第一比例係數和第二比例係數,本發明實施例對此不做限定。
在步驟203中,RTT測量裝置可獲取在該TCP連結上接收到該數據包A的第一時間T1(T1>0),即第一包群中的第一個數據包到達RTT測量裝置的時間,具體可參見步驟101中的相關描述。
在步驟204中,在接收到該數據包A的確認包之後,RTT測量裝置可連續計算發送端發送的數據包C與數據包D之間的發包時間間隔J2,該數據包C與數據包D為前後相鄰的數據包,具體可參見步驟102中的相關描述。
在步驟205中,可以進一步將步驟204中得到的發包時間間隔與步驟202中計算的第一門限值和第二門限值進行比較,若數據包C與數據包D之間的發包時間間隔J2大於第一門限值,且小於第二門限值時,RTT測量裝置則記錄接收該數據包D的第二時間T2。
示例性的,如圖4所示,當RTT測量裝置在下行方向上,監測到數據包A的確認包B之後的數據包C與相鄰的數據包D之間的發包時間間隔J2大於第一門限值,且小於所述第二門限值時,可以認為數據包D為第一包群之後的包群(及第二包群)中的第一個數據包,此時,RTT測量裝置記錄接收該數據包D的第二時間T2。
在步驟206中,對於RTT測量裝置來說,發送端與接收端之間在該TCP連結上的一次RTT,是指:監測到第一包群中第一個數據包,到監測到第二包群中第一個數據包的時間差,即圖2中的R2,因此,在該TCP 連結上本次RTT測量裝置測量的RTT值(即本次RTT值)R2=第二時間T2-第一時間T1。
在步驟207中,為了保證後續RTT測量時使用的第一門限值和該第二門限值更加準確,RTT測量裝置可以根據步驟206中得到的該本次RTT值,更新該第一門限值和該第二門限值,其中,更新後的第一門限值為第一比例係數與本次RTT值的乘積,更新後的第二門限值為第二比例係數與本次RTT值的乘積。即:
更新後的第一門限值M3=第一比例係數*本次RTT值
更新後的第二門限值M4=第二比例係數*本次RTT值
這樣,在步驟207之後進行下一次RTT測量時,RTT測量裝置仍然可以循環執行步驟203-206中的方法,不同的是,在循環執行步驟205時,RTT測量裝置可以使用上一次RTT測量後更新的第一門限值M3和第二門限值M4,將步驟204中得到的發包時間間隔與更新後的第一門限值M3和第二門限值M4進行比較。
又或者,RTT測量裝置還可以對步驟206中得到的本次RTT值與進行本次RTT測量之前得到的N(N>0)個歷史RTT值求取平均值(該平均值可以是算術平均值,也可以是幾何平均值);進而,根據該平均值更新第一門限值和第二門限值,其中,該第一門限值為第一比例係數與該平均值的乘積,該第二門限值為第二比例係數與該平均值的乘積。
進一步地,在TCP協議中,發送端按照滑動窗口SW規定的字節批量發送若干數據包(即包群),在一個批次的包群發送完成後,發送端停止發送數據包,直到一個RTT後,發送端再啟動新批次的包群發送。
從上述傳輸機制可以看出,除了RTT是決定TCP傳輸速率的重要指標之外,SW也是決定TCP傳輸速率的重要指標。
因此,在步驟208中,為了計算該TCP連結上SW的大小,當步驟204中監測到的該發包時間間隔J2大於第一門限值,且小於第二門限值,由於該TCP連結上的數據包都是按照序列號的大小依次發送的,因此,RTT測量裝置可以將該數據包D的序列號與該數據包A的序列號的差值作為該SW的大小,即通過第一包群中第一個數據包的序列號與第二包群中第一個數據包的序列號的差值,計算該SW的大小。
可以看出,本發明實施例提供的RTT測量方法,能夠同時較為準確地測量RTT值和SW的大小,該方法適用於所有TCP連結,並且,可以對一條TCP連結上的數據流進行多次RTT測量,實現對RTT的動態跟蹤。
需要說明的是,步驟208可以在步驟205-207之間的任意時間執行,本發明實施例對此不作限制。
至此,本發明的實施例提供一種往返時延的測量方法,可用於測量發送端與接收端之間TCP連結上的RTT,首先,可獲取在該TCP連結上接收到數據包A的第一時間,該數據包A為發送端向接收端發送的第一包群中的第一個數據包;在接收到該數據包A的確認包之後,計算發送端發送的數據包C與數據包D之間的發包時間間隔,該數據包C為在數據包A之後的數據包,該數據包D為在數據包C之後與數據包C相鄰的數據包;若該數據包C與該數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則將接收到該數據包D的第二時間與第一時間的差值作為該TCP連結的本次RTT值。這樣一來,基於TCP批量傳輸的機制,若監測到數據包C與數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則確定數據包D為在第一包群之後的第二包群中的第一個數據包,此時,將接收到數據包D的第二時間與接收到數據包A的第一時間的差值,即接收第一包群與第二包群之間的時間差作為該TCP連結的本次RTT值,從而一定程度上提高RTT測量的準確度。
實施例3
本發明的實施例提供一種往返時延的測量裝置(即RTT測量裝置),該裝置用於測量發送端與接收端之間TCP連結上的RTT,如圖7所示,該裝置包括:
獲取單元11,用於獲取在所述TCP連結上接收到數據包A的第一時間,所述數據包A為所述發送端向所述接收端發送的第一包群中的第一個數據包;
計算單元12,用於在接收到所述數據包A的確認包之後,計算所述發送端發送的數據包C與數據包D之間的發包時間間隔,所述數據包C為在所述數據包A之後的數據包,所述數據包D為在所述數據包C之後與所述數據包C相鄰的數據包;以及,若所述數據包C與所述數據包D 之間的發包時間間隔大於第一門限值,且小於第二門限值,則將接收到所述數據包C的第二時間與所述第一時間的差值作為所述TCP連結的本次RTT值。
進一步地,如圖8所示,所述裝置還包括確定單元13和查詢單元14,其中,
所述計算單元12,還用於計算在所述TCP連結上接收到的數據包E和數據包A』之間的發包時間間隔,所述數據包A』為在所述數據包E之後與所述數據包E相鄰的數據包;
所述確定單元13,用於若所述計算單元12中所述數據包E和所述數據包A』之間的發包時間間隔大於所述第一門限值,且小於所述第二門限值時,則將所述數據包A』確定為所述數據包A;
所述查詢單元14,用於查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間.
進一步地,所述查詢單元14,具體用於根據所述數據包A的序列號,查詢所述數據包A的確認包是否唯一;若所述數據包A的確認包唯一,則查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間。
進一步地,如圖9所示,所述裝置還包括:
更新單元15,用於根據所述本次RTT值更新所述第一門限值和所述第二門限值,其中,更新後的所述第一門限值為第一比例係數與所述本次RTT值的乘積,更新後的所述第二門限值為第二比例係數與所述本次RTT值的乘積,所述第一比例係數小於所述第二比例係數。
又或者,如圖9所示,所述計算單元12,還用於對本次RTT測量得到的所述本次RTT值與本次RTT測量之前得到的N個歷史RTT值求取平均值,N為大於0的整數;
所述更新單元15,用於根據所述計算單元12中的平均值更新所述第一門限值和所述第二門限值,其中,更新後的所述第一門限值為第一比例係數與所述平均值的乘積,更新後的所述第二門限值為第二比例係數與所述平均值的乘積,所述第一比例係數小於所述第二比例係數。
進一步地,如圖10所示,所述裝置還包括設置單元16,其中,
所述計算單元12,還用於計算建立所述TCP連結時的初始RTT值;
所述設置單元16,用於根據所述計算單元12中的初始RTT值設置所述第一門限值和所述第二門限值,其中,所述第一門限值為第一比例係數與所述初始RTT值的乘積,所述第二門限值為第二比例係數與所述初始RTT值的乘積,所述第一比例係數小於所述第二比例係數。
進一步地,所述計算單元12,還用於若所述數據包C與所述數據包D之間的發包時間間隔小於所述第一門限值,則繼續計算所述數據包D與數據包H之間的發包時間間隔,所述數據包H為在所述數據包D之後與所述數據包D相鄰的數據包;若所述數據包C與所述數據包D之間的發包時間間隔大於所述第二門限值,則放棄本次RTT測量。
進一步地,所述計算單元12,還用於若所述發包時間間隔大於第一門限值,且小於第二門限值時,則將所述數據包D的序列號與所述數據包A的序列號的差值作為滑動窗口SW的大小。
至此,本發明的實施例提供一種往返時延的測量裝置,可用於測量發送端與接收端之間TCP連結上的RTT,首先,可獲取在該TCP連結上接收到數據包A的第一時間,該數據包A為發送端向接收端發送的第一包群中的第一個數據包;在接收到該數據包A的確認包之後,計算發送端發送的數據包C與數據包D之間的發包時間間隔,該數據包C為在數據包A之後的數據包,該數據包D為在數據包C之後與數據包C相鄰的數據包;若該數據包C與該數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則將接收到該數據包D的第二時間與第一時間的差值作為該TCP連結的本次RTT值。這樣一來,基於TCP批量傳輸的機制,若監測到數據包C與數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則確定數據包D為在第一包群之後的第二包群中的第一個數據包,此時,將接收到數據包D的第二時間與接收到數據包A的第一時間的差值,即接收第一包群與第二包群之間的時間差作為該TCP連結的本次RTT值,從而一定程度上提高RTT測量的準確度。
實施例4
圖11為本發明實施例提供的一種往返時延的測量系統的結構示意圖,該系統包括上述任一種往返時延的測量裝置(即RTT測量裝置)100, 以及與該往返時延的測量裝置100均數據相連的接收端200和發送端300。
具體的,本發明實施例提供的系統可以用於實施上述圖1-圖6所示的本發明各實施例實現的方法,為了便於說明,僅示出了與本發明實施例相關的部分,具體技術細節未揭示的,請參照圖1-圖6所示的本發明各實施例,故此處不再贅述。
示例性的,圖12為本發明實施例提供的一種RTT測量裝置100的實體結構示意圖,本發明實施例提供的RTT測量裝置100可以用於實施上述圖1-圖6所示的本發明各實施例實現的方法,為了便於說明,僅示出了與本發明實施例相關的部分,具體技術細節未揭示的,請參照圖1-圖6所示的本發明各實施例。
其中,該RTT測量裝置100包括處理器21、收發器22以及存儲器23,並且,該處理器21、收發器22以及存儲器23通過總線24進行通信。
具體的,收發器22從存儲器23中獲取從發送端接收到數據包A的第一時間,所述數據包A為第一包群中的第一個數據包;在收發器22接收到所述數據包A的確認包之後,處理器21計算所述發送端發送的數據包C與數據包D之間的發包時間間隔,所述數據包C與所述數據包D為前後相鄰的數據包;若所述發包時間間隔大於第一門限值,且小於第二門限值時,處理器21則將接收所述數據包D的第二時間記錄在存儲器23中;進而,處理器21通過處理器21計算所述第二時間與所述第一時間的差值,並將所述第二時間與所述第一時間的差值作為所述TCP連結的本次RTT值。
進一步地,收發器22從存儲器23中獲取從發送端接收到數據包A的第一時間,具體包括步驟:處理器21計算在所述TCP連結上接收到的數據包E和數據包A』之間的發包時間間隔,所述數據包A』為在所述數據包E之後與所述數據包E相鄰的數據包;若所述數據包E和所述數據包A』之間的發包時間間隔大於所述第一門限值,且小於所述第二門限值時,處理器21則確定所述數據包A』為所述數據包A,此時,處理器21查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間。
具體的,處理器231可先根據所述數據包A的序列號,查詢所述數據包A的確認包是否唯一;若所述數據包A的確認包唯一,則查詢接收到所述數據包A的接收時間,並將所述接收時間作為所述第一時間。
進一步地,在處理器21將所述第二時間與所述第一時間的差值作為所述TCP連結的本次往返時延RTT值之後,還可以包括步驟:處理器21根據所述本次RTT值更新所述第一門限值和所述第二門限值,並將更新後的第一門限值和第二門限值存儲至存儲器23中,其中,更新後的所述第一門限值為第一比例係數與所述本次RTT值的乘積,更新後的所述第二門限值為第二比例係數與所述本次RTT值的乘積,所述第一比例係數小於所述第二比例係數。
進一步地,在處理器21將所述第二時間與所述第一時間的差值作為所述TCP連結的本次往返時延RTT值之後,還可以包括步驟:處理器21對本次RTT測量得到的所述本次RTT值與本次RTT測量之前得到的N個歷史RTT值求取平均值,N為大於0的整數;進而,處理器21根據所述平均值更新所述第一門限值和所述第二門限值,並將更新後的第一門限值和第二門限值存儲至存儲器23,其中,更新後的所述第一門限值為第一比例係數與所述平均值的乘積,更新後的所述第二門限值為第二比例係數與所述平均值的乘積,所述第一比例係數小於所述第二比例係數。
進一步地,在收發器22則通過處理器21,從存儲器23中獲取從發送端接收數據包A的第一時間之前,還可以包括步驟:處理器21計算建立所述TCP連結時的初始RTT值;並且,處理器21根據所述初始RTT值設置所述第一門限值和所述第二門限值,其中,所述第一門限值為第一比例係數與所述初始RTT值的乘積,所述第二門限值為第二比例係數與所述初始RTT值的乘積,所述第一比例係數小於所述第二比例係數。
進一步地,在處理器21計算所述發送端發送的數據包C與數據包D之間的發包時間間隔之後,還可以包括步驟:若所述發包時間間隔小於所述第一門限值,處理器21則繼續計算所述數據包D與後續相鄰的數據包之間的發包時間間隔;若所述發包時間間隔大於所述第二門限值,處理器21則放棄本次RTT測量。
進一步地,在處理器21監測所述發送端發送的數據包C與數據包D 之間的發包時間間隔之後,還可以包括步驟:若所述發包時間間隔大於第一門限值,且小於第二門限值時,則處理器21通過處理器21將所述數據包D的序列號與所述數據包A的序列號的差值作為SW的大小。
至此,本發明的實施例提供一種往返時延的測量裝置及系統,可用於測量發送端與接收端之間TCP連結上的RTT,首先,可獲取在該TCP連結上接收到數據包A的第一時間,該數據包A為發送端向接收端發送的第一包群中的第一個數據包;在接收到該數據包A的確認包之後,計算發送端發送的數據包C與數據包D之間的發包時間間隔,該數據包C為在數據包A之後的數據包,該數據包D為在數據包C之後與數據包C相鄰的數據包;若該數據包C與該數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則將接收到該數據包D的第二時間與第一時間的差值作為該TCP連結的本次RTT值。這樣一來,基於TCP批量傳輸的機制,若監測到數據包C與數據包D之間的發包時間間隔大於第一門限值,且小於第二門限值時,則確定數據包D為在第一包群之後的第二包群中的第一個數據包,此時,將接收到數據包D的第二時間與接收到數據包A的第一時間的差值,即接收第一包群與第二包群之間的時間差作為該TCP連結的本次RTT值,從而一定程度上提高RTT測量的準確度。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將裝置的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。
所述集成的單元如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)或處理器(processor)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬碟、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光碟等各種可以存儲程序代碼的介質。
以上所述,僅為本發明的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應以所述權利要求的保護範圍為準。