專利名稱:IPv6網絡鏈路利用率測量方法、測量裝置及IPv6網絡路由器的制作方法
技術領域:
本發明涉及網絡測量技術,尤其涉及IPv6網絡鏈路利用率測量方法、測量裝置及IPv6網絡路由器。
背景技術:
網絡測量是獲取網絡動態運行信息的方法和手段的總稱。網絡測量按照測量點的位置可分為端到端測量、基于路由器的測量和路由器協作測量。
網絡提供商(Network Provider,簡稱NP)通常采用基于路由器的測量監測其網絡運行狀態,但NP間的非協作性導致信息無法共享。而路由器向網管中心傳遞信息需消耗大量帶寬,也增加了網絡負載。此外,運營商的網管系統無法管理客戶一側的接入設備,所以,當客戶濫用網絡并導致其關鍵業務性能下降時,運營商很難證明這是用戶的責任。端到端的測量使運營商可以在客戶方展現網絡性能,發現和定位問題。
網絡測量按照是否主動向網絡中發送探測報文,分為二種主動測量和被動測量。主動測量是基于往返時間(Round Trip Time,簡稱RTT)測量。測量裝置主動向網絡發送探測包,然后根據返回的參數來判斷網絡現有狀況,這些參數包括響應時間和丟包率等。主動方式可以了解整個網絡的行為,獲得端到端的信息,但是會增加網絡的負荷并引起網絡的擁塞。
在被動測量方式中,測量裝置(可以是端節點或路由器等中間節點)被動地根據一定需求來監測和采集網絡上特定鏈路、特定時段的流量。被動測量很難獲得對網絡整體的了解,也很難對網絡終端到終端的性能做出準確的分析,但是不會增加網絡的負荷。
近年出現的主動網絡測量技術集中在(1)端到端時延(end-to-end delay)測量,主要解決時延測量中的時鐘扭曲(screw)和重置(reset)問題;(2)可用帶寬測量和瓶頸帶寬定位;(3)丟包率測量;(4)網絡性能拓撲推測。
IP網絡狀態信息和變化過程的監測是保障網絡正常運行的基礎,因此近些年網絡運營商越來越關注網絡測量技術在其IP網絡中的作用。通過對網絡進行測量,獲得網絡的鏈路/路徑的時延、帶寬、丟包率、拓撲穩定性等信息,可以有效幫助運營商優化網絡,及時擴容,也能幫運營商進行網絡故障定位。此外,運營商還要關心網絡鏈路的利用率、路徑的長期利用率、路由可達性、瓶頸帶寬和其它端到端的性能等屬性和參數。
下一代網絡采用IPv6協議,克服了IPv4地址短缺、安全性差、移動性差等問題,實現即插即用。IPv6技術已經實現了工程化和實用化,正步入大規模部署的前期。
IPv6網絡的測量也是IPv6網絡大規模部署和運營過程中重要的技術。然而對網絡端到端性能的研究大部分基于IPv4網絡,少有直接基于IPv6體系的研究。IPv4中的端到端性能的測量方法能否適用于IPv6體系結構,仍然需要大量的工作來確定并找出合適的方法。
通過測量網絡的鏈路利用率,可以獲知網絡鏈路的負載狀況,這對于改善端到端應用的服務質量是一個參考依據;同時,通過對全網的鏈路利用率長期監測,能夠獲知網絡流量的分布拓撲,進而為網絡規劃和優化提供依據。
目前在IPv6網絡中獲取鏈路利用率的方法是通過簡單網絡管理協議(Simple Network Management Protocol,簡稱SNMP)讀取網絡中的路由/交換設備(路由器或者交換機)的管理信息庫(Management Information Base,簡稱MIB)的方式。SNMP是目前最常用的網絡環境管理協議,是一系列協議和規范的集合,包括MIB由網絡管理協議訪問的管理對象數據庫,它包括SNMP可以通過網絡設備的SNMP管理代理進行設置的變量;管理信息結構(Structure of Management Information,簡稱SMI),用于定義通過網絡管理協議可訪問的對象的規則;SMI定義在MIB中使用的數據類型及網絡資源在MIB中的名稱或表示。SNMP的功能是取得、設置和接收SNMP代理發送的意外信息。取得指的是SNMP管理者發送請求,代理根據這個請求回送相應的數據;設置是SNMP管理者設置管理對象(也就是代理)的值,接收代理發送的意外信息是指代理可以在SNMP管理者未請求的狀態下向基站報告發生的意外情況。
通過SNMP獲取網絡鏈路利用率的方法如下 (1)以時間t為周期(t的單位為“秒”),通過SNMP協議的get原語讀取路由器/交換機MIB中的某個接口(Interface)的“ifInOctets(收到的所有字節數)”或者“ifOutOctets(發出的所有字節數)”項的值,第i次讀取的值記為Pi; (2)記鏈路的物理帶寬是B(字節/秒),記Pi的獲取時刻是Ti,則稱Ui=(Pi+1-Pi)/tB是Ti時刻開始的t時間內的平均鏈路利用率; 當t足夠小時,就稱Ui是Ti時刻的鏈路利用率,對于全雙工的鏈路,若Pi是“ifInOctets”的值,則稱Ui是該接口入鏈路的利用率,若Pi是“ifOutOctets”的值,則稱Ui是該接口出鏈路的利用率。上述方法,對于IPv4網絡和IPv6網絡均有效。
上述方法有如下缺點 (1)獲取如Pi的值需要通過SNMP協議直接訪問路由器存在安全隱患。SNMP協議的v1、v2、v3三個版本有不同的鑒權機制,在使用SNMP協議獲取如Pi的值之前,需要向路由器發送認證信息,除非路由器不設置安全認證限制。
(2)方法不夠靈活、局限性較大。由于該方法只能通過訪問路由器的MIB獲取必要的信息計算鏈路利用率,因此,必須獲取路由器的SNMP訪問權限。但目前網絡運營商的路由器均是封閉的,只有運營商內部的管理人員才可能獲得受限訪問權限。對于普通用戶,則無法了解鏈路利用率信息。此外,由于網絡運營商間的非協作性導致運營商也只能了解內部網絡的信息。對于跨越運營商的網絡則無法獲得想要的端到端信息。
(3)因為是被動收集信息,會受到某些方面的限制。由于通過SNMP獲取路由器信息時,會給路由器帶來較大的處理負擔,影響路由器的性能,因此讀取信息的周期不能過短。
現在有一種基于逐跳時間標簽的IPv4網絡鏈路利用率測量方法,該測量方法屬于路由器協作的主動測量,發送探測報文,通過IPv4協議中定義的時間戳選項記錄計算鏈路利用率。
表1 IPv4報文結構
如表1所示,為IPv4報文結構,在32位目的IP地址之后和IP凈荷數據之前,有一段“選項”數據。這段“選項”數據可以根據實際需要來決定是否存在。
IPv4協議中已經定義了約5種選項類型,其中“時間戳選項”的格式定義參見表2。
表2 IP報文頭部中時間戳選項的格式
在如表2所示的格式設置好“type”、“length”、“offset”、“overflw”、“flags”等字段后,這個IP報文經過每個路由器時,路由器都會依照順序把它自己的當前時鐘值(即“時間戳”)記錄到“timestamp”中。最多可以記錄9個時間戳,詳細信息可以參考RFC781。
在測量時,從端設備向網絡發送IP探測報文。探測報文經過的每個路由器,都會將路由器的時鐘值記錄到探測報文中。通過這種方式,探測報文即可將它所通過的路由器的時鐘值全部記下來。通過對這些時鐘值的分析可以得到鏈路忙閑的采樣序列{Xi},進而用滑動窗口方法得到鏈路利用率。此方法利用了RFC781所定義的功能。通過將探測報文設置為互聯網控制消息協議(Internet Control Message Protocol,簡稱ICMP)報文,可以實現單端測量,前提是目的端設備是IP設備且支持ICMP報文。通常情況下,支持IPv4協議的設備均支持ICMP報文。
上述方法中最關鍵的部分是獲取探測報文在路由器中的排隊時延。獲取路由器排隊時延的原理和方法簡述如下。如圖1所示,為單跳時延模型示意圖。探測報文的端到端時延由節點時延和鏈路時延組成,具體分為4部分——分組在鏈路上的傳播時延Tg(propagation delay)、分組的傳輸時延Tt(transmission delay)、分組在節點的處理時延Tp(processing delay)、在緩沖區中的排隊時延Tq(queuing delay)。如果能夠測得某時刻的排隊時延,就可以知道該時刻路由器的忙閑狀態,即可以獲得鏈路的利用率。但是,唯一可測的只是第i個報文通過兩個路由器的時間T(i),而第i個報文的排隊時延Tq(i)是無法直接得到的。基于逐跳時間標簽的IPv4網絡鏈路利用率測量方法應用單跳時延-鏈路利用率算法,通過T(i)間接得到Tq(i),從而得到鏈路利用率。
用T(ik)表示第i個探測報文和第k個探測報文經過路由器1和路由器2的時間差。考慮探測報文Pi和Pk,i,k∈[1,N],N為探測報文總數,若分組長度len(Pi)=len(Pk),則同一路由器對Pi和Pk的處理時延Tp、傳播時延Tg以及傳輸時延Tt相等。若探測報文Pi和Pk的發送間隔足夠短,即(τ0(i)和τ0(k)分別為探測報文Pi和Pk的發送時間,D被稱為無偏窗口)時,因路由器時鐘扭曲而導致的偏差小于1ms,即小于時間戳的最小分辨率,可以忽略,則 若探測報文k滿足T(k)=min(T(1),...,T(N)),則通過公式(1)可以看出,由于T(ik)已知,若則Tq(i)可知。
若D期間內的平均鏈路利用率為u,對該期間內任一時刻t的采樣Xt有P(Xt=1)=u,N個采樣中至少存在一個采樣Xk=0的概率,即N個探測報文中至少有一個探測報文在路由器中無需排隊等待的概率為 Pidle=1-uN(2) 從式(2)可以分析為使Pidle達到某一置信度,采樣數N與鏈路平均利用率u之間的數值關系。當采樣數達到N=100時,只要D期間內鏈路平均利用率不超過90%,則N個采樣中存在一個探測報文k使得的概率不小于99.9%。所以只要采樣數和無偏窗口設計合理,一定可以使Tq(k)為0,這樣就可以通過T(ik)得到排隊時延,間接得到鏈路利用率。
IPv4網絡中單跳時延-鏈路利用率算法的具體步驟如下 (1)以無偏窗口D將所有探測報文分為M段,取第j段進行處理; (2)計算第m跳鏈路時延序列i∈[1,n],n為第j段的探測報文數目,tm+1(i)及tm(i)分別為第j段探測報文的第i個報文的第m+1個和第m個時間戳; (3)計算第m跳鏈路的時延最小值T(k)=min{T(i)},i∈[1,n]; (4)計算第m跳鏈路的排隊時延序列i∈[1,n]; (5)將排隊時延序列{Tqueue(i)},i∈[1,n]變換為鏈路狀態序列{X(i)},i∈[1,n];當排隊時延Tqueue(i)大于一定的閾值時鏈路狀態為忙,即X(i)=1,否則,鏈路狀態為閑,即X(i)=0; (6)以W為滑動窗口,按公式計算D期間內第m跳鏈路的利用率; (7)重復(2)-(6),直至M段探測報文全部處理完畢。
根據前述分析,若無偏窗口設計合理,最小值T(k)中的排隊時延為0,只包含除排隊時延以外的其它時延;對于每個探測報文來講,除排隊時延以外的其它時延是相同的,因此,通過在計算可以得到各探測報文的排隊時延。若各路由器對探測報文的處理流程不同,對本方法也沒有影響。由于同一路由器對探測報文的處理流程是相同的,無論路由器的處理時延在時間戳之前還是在時間戳之后,該時延均包括在T(k)中,通過計算T(i)-T(k)可將影響消除。例如,在圖1中,t1表示路由器1在探測報文中的時間戳;t2表示路由器2在探測報文中的時間戳;Tp1表示探測報文被路由器1打上時間戳之后還需經歷的處理時延,Tp2表示探測報文被路由器2打上時間戳之前經歷的處理時延;對于第1跳,T(i),i∈[1,n]均包括了Tp1及Tp2,當然,Tp1及Tp2也包含在T(k)中;由于對各探測報文來講,Tp1是相同的,Tp2也是相同的,在計算T(i)-T(k)時,Tp1及Tp2會被消去。因而,路由器對探測報文的處理流程對計算排隊時延并沒有影響,從而對計算鏈路利用率也沒有影響。
IPv6是基于IPv4的,它是IPv4的演化,它們的報頭格式不同。IPv6具有固定的長度的數據報頭,IPv4報頭中的大部分選項這里都沒有,如果需要會在基本報頭之后增加一個或多個擴展頭。可見IPv6的數據報具有很大的靈活性。IPv6的包頭包括基本頭和擴展頭兩種。
表3 IPv6基本頭格式
如表3所示,IPv6基本頭包括 Version版本號,4位;IPv6協議的版本值為6。
Traffic Classes通信量等級,8位;IPv6報頭中的通信量等級域使得源節點或進行包轉發路由器能夠識別和區分IPv6信息包的不同等級或優先權。
Flow Label流標記,20位;IPv6報頭中的流標記是為了用來標記那些需要IPv6路由器特殊處理的信息包的順序。
Payload Length有效負載長度,16位;有效負載長度使用16位無符號正數表示,代表信息包中除IPv6報頭之外其余部分的長度,以字節即8位計數。
Next Header下一報頭,8位;這個字段指出了IPv6頭后所跟的頭字段中的協議類型。與IPv6協議字段類似,下一報頭字段可以用來指出高層協議是傳輸控制協議(Transmission Control Protocol,簡稱TCP)還是用戶數據報協議(User Datagram Protocol,簡稱UDP),另外也可以用來指明IPv6擴展頭的存在。
Hop Limit路程段限制,8位;該域用8位無符號整數表示,功能同IPv4。
Source Address(源地址,128位)和Destination Address(目的地址,128位)分別標識了發送者和接收者。
在IPv4中可以在IP頭的尾部加入選項,與此不同,IPv6中把選項加在單獨的擴展頭中。IPv6實現的擴展頭可以消滅或大量減少選項帶來的對通信性能的沖擊。通過把選項從IP頭搬到凈荷中,路由器可以像轉發無選項包一樣來轉發包含選項的包。已經定義的IPv6擴展報文頭包括逐跳選項頭、選路頭、分段頭、目的地選項頭、身份驗證頭、封裝安全凈荷頭等。RFC 2460中為IPv6定義了如下選項擴展 逐跳選項頭(Hop-by-Hop Options Header) 此擴展頭必須緊隨在IPv6頭之后。它包含包所經路徑上的每個節點都必須檢查的選項數據。由于它需要每個中間路由器進行處理,逐跳選項只有在絕對必要的時候才會出現。到目前為止,已經定義了兩個選項巨型凈荷選項和路由器提示選項。巨型凈荷選項指明包的凈荷長度超過IPv6的16位凈荷長度字段。只要包的凈荷超過65535字節(其中包括逐跳選項頭),就必須包含該選項。如果節點不能轉發該包,則必須回送一個ICMPv6出錯報文。路由器提示選項用來通知路由器,IPv6數據報中的信息希望能夠得到中間路由器的查看和處理,即使這個包是發給其他某個節點的(例如,包含帶寬預留協議信息的控制數據報)。
選路頭(Routing Header) 此擴展頭指明包在到達目的地途中將經過哪些節點。它包含包沿途經過的各節點的地址列表。IPv6頭的最初目的地址是路由頭的一系列地址中的第一個地址,而不是包的最終目的地址。此地址對應的節點接收到該包之后,對IPv6頭和選路頭進行處理,并把包發送到選路頭列表中的第二個地址。如此繼續,直到包到達其最終目的地。
分段頭(Fragment Header) 此擴展頭包含一個分段偏移值、一個“更多段”標志和一個標識符字段,用于源節點對長度超出源端和目的端路徑最大傳送單元(MaximumTransmission Unit,簡稱MTU)的包進行分段。
目的地選項頭(Destination Options Header) 此擴展頭代替了IPv4選項字段。目前,唯一定義的目的地選項是在需要時把選項填充為64位的整數倍。此擴展頭可以用來攜帶由目的地節點檢查的信息。
身份驗證頭(Authentication header) 此擴展頭提供了一種機制,對IPv6頭、擴展頭和凈荷的某些部分進行加密的校驗和的計算。
封裝安全性凈荷頭(Encapsulating Security Payload header) 這是最后一個擴展頭,不進行加密。它指明剩余的凈荷已經加密,并為已獲得授權的目的節點提供足夠的解密信息。
在沒有擴展頭的IPv6包中,基本頭中的“NEXT HEADER”字段的值表示上一層協議。即,若IP包中含有TCP段,則IPv6基本頭中的“NEXT HEADER”字段的8位二進制值是6(源自RFC 1700(已指派號碼));若IP包中含有UDP數據報,這個值就是17。
表4 未加擴展頭的IPv6報文結構 如表4所示,為一個未加擴展頭的TCP6報文結構。它是一個IPv6基本頭加上一段TCP報文,IPv6基本頭的“NEXT HEADER”字段標明后續數據是一個TCP報文結構。
如果要在表4所示的報文中,增加一個路由擴展頭,則修改后報文如表5所示。
表5 增加了“路由擴展頭”的IPv6報文結構 其中,IPv6基本頭的“NEXT HEADER”字段要指向路由擴展頭,路由擴展頭中也有一個“NEXT HEADER”字段,這個字段指向后面的TCP數據。
但是在IPv6協議中,并沒有與RFC781相關的標準,因此前述的IPv4的鏈路利用率測量方法無法應用于IPv6網絡。并且由于IPv4時間戳選項的分辨率只能到1ms,因此在測量10M以上鏈路時,誤差比較大。
發明內容
本發明的目的在于針對現有技術所存在的缺陷,提供IPv6網絡鏈路利用率測量方法、測量裝置及IPv6網絡路由器,實現利用帶有時間戳擴展頭的IPv6報文,采用端到端的方式測量網絡的鏈路利用率。
為了實現上述目的,本發明提供了一種IPv6網絡鏈路利用率測量方法,包括如下步驟探測源端向網絡發送多個帶有時間戳擴展頭的探測報文;探測報文經過的每一跳路由器將當前時間戳寫入探測報文;探測源端和/或目的端根據多個探測報文的時間戳序列得到鏈路利用率。
探測報文經過的每一跳路由器接收到探測報文后,從基本頭中提取下一報頭字段,若下一報頭字段的值為時間戳擴展頭標識,并且當時間戳可以寫入時間戳擴展頭時,將該時間戳寫入該時間戳擴展頭。
所述的探測源端發送的探測報文可以是回顯請求報文或傳輸控制協議報文或用戶數據協議報文;探測目的端接收到帶有時間戳擴展頭的回顯報文后,創建帶有時間戳擴展頭的回顯報文,將所述回顯請求報文的內容復制到該回顯報文中,然后將該回顯報文向探測源端發送。
在根據多個探測報文的時間戳序列計算鏈路利用率時,探測源端和/或探測目的端提取多個探測報文的時間戳序列,針對每一跳鏈路,計算時延序列,提取時延序列中的最小時延,計算排隊時延序列,將排隊時延序列轉換為鏈路狀態序列,計算該跳鏈路的利用率。
在探測源端和/或探測目的端中,可預先設置排隊時延與鏈路狀態的映射關系;在將排隊時延序列轉換為鏈路狀態序列時,根據排隊時延與鏈路狀態映射關系將排隊時延序列中的每一排隊時延轉換為相應的鏈路狀態,生成鏈路狀態序列。
探測源端發送探測報文的時間間隔可根據待測鏈路速率確定。
為了實現上述目的,本發明還提供了IPv6網絡鏈路利用率測量裝置,包括探測報文生成模塊、探測報文處理模塊及探測報文回送模塊的任一個或任幾個,以及網絡通信模塊。探測報文生成模塊用于生成帶有時間戳擴展頭的探測報文;探測報文處理模塊用于根據接收的探測報文的時間戳計算鏈路利用率;探測報文回送模塊用于根據回顯請求探測報文生成回顯探測報文。
為了實現上述目的,本發明又提供了一種IPv6網絡路由器,包括網絡通信模塊;擴展頭識別模塊,用于識別接收到的IPv6報文基本頭中的下一報頭字段,在下一報頭字段值為時間戳擴展頭標識時,發送至時間戳擴展頭處理模塊;以及時間戳擴展頭處理模塊,與所述擴展識別模塊及網絡通信模塊連接,用于將時間戳寫入帶有時間戳擴展頭的探測報文,并將寫入時間戳的探測報文發送至網絡通信模塊。
本發明通過帶有時間戳擴展頭的IPv6報文實現了鏈路利用率的端到端測量,無需通過SNMP訪問路由器,不會給路由器帶來很大的處理負擔;測量精度高,并且可根據IPv6網絡的速率調整探測報文發送參數,從而對測量精度進行調整。
下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
圖1為單跳時延模型示意圖; 圖2為本發明的IPv6網絡鏈路利用率測量方法流程圖; 圖3為本發明的IPv6網絡鏈路利用率測量方法的路由器處理探測報文的流程圖; 圖4為本發明的IPv6網絡鏈路利用率測量方法實施例一的部署方案示意圖; 圖5為本發明的IPv6網絡鏈路利用率測量方法實施例二的部署方案示意圖; 圖6為本發明的IPv6網絡鏈路利用率測量裝置實施例一結構示意圖; 圖7為本發明的IPv6網絡鏈路利用率測量裝置實施例二結構示意圖; 圖8為本發明的IPv6網絡鏈路利用率測量裝置實施例三結構示意圖; 圖9為本發明的IPv6網絡鏈路利用率測量裝置實施例四結構示意圖; 圖10為本發明的IPv6網絡鏈路利用率測量裝置實施例五結構示意圖; 圖11為本發明的IPv6網絡鏈路利用率測量裝置實施例六結構示意圖; 圖12為支持本發明的測量方法的IPv6網絡路由器結構示意圖; 圖13為本發明的IPv6網絡路由器的時間戳擴展頭處理模塊結構示意圖。
具體實施例方式 由于IPv6協議中并沒有IPv4協議的“時間戳選項”這種標準報文定義,因此必須定義一個時間戳擴展頭,同時要求IPv6路由器支持對時間戳擴展頭的處理,并需要相應的IPv6網絡測試裝置能夠生成帶IPv6時間戳擴展頭的探測報文,并能根據多個探測報文的時間戳序列計算鏈路利用率。
為了敘述方便,本發明定義了一種時間戳擴展頭的結構,并以該時間戳擴展頭結構為例說明本發明的技術方案。但需要說明的是,本發明的技術方案并不限于采用該時間戳擴展頭結構的技術方案,時間戳擴展頭可采用多種定義方式,根據時間戳擴展頭字段定義的不同,路由器記錄時間戳的具體方式,以及測量裝置生成探測報文以及處理報文的具體方法,可能會有所不同。
IPv6擴展頭通過IPv6頭的“下一報頭”字段進行標識。根據國際組織互聯網編號分配機構(Internet Assigned Numbers Authority)所給出的協議編號(Protocol Number)列表,目前未指派的編號是138-252。可采用其中的一個編號作為時間戳擴展頭標識,例如,使用138標識,即當IPv6基本頭的“NEXTHEADER”字段的值為138的時候,表明基本頭之后是時間戳擴展頭。根據RFC 2460規定的格式,時間戳擴展頭的具體格式可如表6所示 表6時間戳擴展頭格式
各字段含義如下 Next Header下一報頭;該字段占用1個字節;所有IPv6擴展頭都包含“Next Header”字段用于標識下一頭字段的類型; Extension Header Length擴展頭長度;該字段占用1個字節;擴展頭長度,用以標識時間戳選項擴展頭的長度,該長度以8字節為單位,不包含擴展頭的第一個8字節,即如果擴展頭只有8字節長,該字段值即為0;該字段限制了擴展頭最多為2048字節。
Type類型;該字段占用1個字節;用于標識時間戳選項頭的類型,根據RFC 2460的建議,Type字段的兩個高位值為00,表示“如果IPv6節點不支持該選項類型,則跳過本擴展頭處理下一個擴展頭”;因此,可規定以4表示“逐跳記錄路由器時間戳”,參見表7 表7“Type”字段的構成 Data Pointer數據指針;該字段占用1個字節;標識當前已經記錄的時間戳數目,同時表明下一個時間戳存放在擴展頭中的位置;Data Pointer的初始值是0,每當帶有時間戳擴展頭的IPv6報文經過一個路由器的時候,這個路由器就在時間戳擴展報頭的“Data”部分寫入一個時間戳,同時將DataPointer的值加一,除非Data Pointer的值已經是255;路由器記錄時間戳的位置為從時間戳擴展報文頭的首部算起的第8×(DataPointer+1)個字節。
PADS該字段占用4個字節(32bits);僅用于填充,使得時間戳擴展報文頭在去除了“Data”字段后的長度是8字節的倍數。
Data擴展頭中的數據,該字段記錄報文通過路由器的具體時間,即時間戳;每個時間戳占用8個字節(64 bit)。時間戳是從協調世界時間(Coordinated Universal Time,簡稱UTC)午夜開始到當前時間所經過的微秒數;多個時間戳按照被記錄到時間戳擴展頭的順序依次排列。受到“ExtensionHeader Length”的限制,“Data”字段最多可以記錄255個時間戳。
如圖2所示,為本發明的IPv6網絡鏈路利用率測量方法流程圖,包括如下步驟 步驟1、探測源端向網絡發送多個帶有時間戳擴展頭的探測報文; 步驟2、探測報文經過的每一跳路由器將當前時間戳寫入探測報文; 步驟3、探測源端和/或探測目的端根據多個探測報文的時間戳序列得到鏈路利用率。
對不同速率的鏈路在測試過程中探測頻率的選擇主要考慮兩方面的因素首先考慮測量的精確度,如果探測報文發送過少,測量得到的精確度不足;另外要考慮探測報文對鏈路本身利用率的影響,如果探針發送的過于頻繁,會加重鏈路負載影響測試結果。發送探測報文的時間間隔可通過下表確定。
表8鏈路速率與探測頻率的關系 如圖3所示,為路由器處理探測報文的流程圖,包括如下步驟 步驟A、從探測報文中提取基本頭中的“Next Header”字段; 步驟B、判斷“Next Header”的值是否為時間戳擴展頭標識138,若是,執行步驟C; 步驟C、判斷時間戳擴展頭是否可容納更多的時間戳,若是,執行步驟D; 可以通過時間戳擴展頭中的“Extension Header Length”字段以及“DataPointer”字段判斷是否可容納更多的時間戳;由于“Extension Header Length”字段的值不包含擴展頭的第一個8字節,因此實際上該字段的值即為表明時間戳數目的“Data Pointer”的最大值。
路由器從時間戳擴展頭中提取“Extension Header Length”字段以及“DataPointer”字段的值,判斷“Extension Header Length”是否大于“Data Pointer”,若是,則說明時間戳擴展頭可容納更多地時間戳,可寫入;否則,說明時間戳擴展頭無法容納更多的時間戳。
步驟D、將時間戳寫入時間戳擴展頭; 路由器在寫入時間戳時,先根據“Data Pointer”計算時間戳存放位置,然后將時間戳寫入時間戳擴展頭,并且更新“Data Pointer”的值,即將“DataPointer”的值加一。
根據多個探測報文的時間戳序列得到鏈路利用率的方法可參照IPv4網絡中單跳時延-鏈路利用率算法,提取多個探測報文的時間戳序列,針對每一跳鏈路,計算時延序列,提取時延序列中的最小時延,計算排隊時延序列,將排隊時延序列轉換為鏈路狀態序列,計算該跳鏈路的利用率。
但是,對于吞吐量大,鏈路利用率變化顯著的情況,如果只是簡單的通過0,1來統計鏈路的忙閑狀態,不夠準確。本發明采用利用率平滑算法,將鏈路狀態從0,1這個二階量改成多階量,從而使得到的鏈路利用率比使用0,1統計方法更加貼近實際鏈路利用率。
記第i個探測報文的排隊時延為Tqueue(i)設N個連續探測報文中最大的排隊時延其中i=1,2,...,N。根據探測精度的要求,可設定一個遞增數列{t}=t0,t1,...,tj,tj+1,...,tK,tK+1,(其中t0=0,tK+1=Tqmax)。數列{t}的子列{t′}=t0,t1,...,tj,tj+1,...,tK在實數域[0,1)上的映射是遞增數列{x}=x0,x1,...,xj,xj+1,...,xK(其中x0=0,xK=1)。tj與xj的映射關系可以通過線性或非線性函數定義,也可通過映射關系表定義。
第i個探測報文測得的鏈路狀態為Xi 最后對鏈路狀態通過滑動窗口算法來處理,得到信道利用率。在采樣窗口W時間內,以頻率f對鏈路的忙閑狀態持續采樣,樣本數n=Wf,記采樣結果為Xi,i=1...n,則鏈路利用率 探測報文至少可以通過ICMP報文或TCP/UDP報文實現,下面分別通過兩個實施例分別對采用這兩種報文的測量方法進行說明。
方法實施例一 本實施例采用帶有IPv6時間戳擴展頭的ICMP回顯請求(Echo Request)作為探測報文。如圖4所示,為本實施例的部署方案示意圖,探測目的端是任意支持IPv6協議的網絡節點,可以是路由器、計算機主機等。
表9 帶有IPv6時間戳擴展頭的ICMP報文 如表9所示,為帶有IPv6時間戳擴展頭的ICMP報文結構。探測源端根據表9所示報文結構生成帶有時間戳擴展頭的ICMPv6 Echo Request報文PktX,并向探測目的端發送。中途經過的路由器將時間戳記錄到報文PktX的時間戳擴展頭的Data字段中。報文PktX到達探測目的端后,探測目的端創建ICMPv6 Echo報文PktY,將PktX的內容拷貝到PktY中,然后將該報文發送回探測源端。在探測目的端到探測源端的路徑上,路由器同樣將時間戳依序記錄到報文PktY中。探測源收到報文PktY,提取時間戳擴展頭的數據,進行處理,根據時間戳序列計算得到鏈路Router1->Router2、鏈路Router2->Router3、...、鏈路 RouterN-1->RouterN、鏈路RouterN->RouterN-1、...、鏈路Router2->Router1的鏈路利用率。
這種測量方式的好處是可以實現單端測量,即,在探測源端發送探測報文并接收探測報文,只需要探測源端支持探測報文的生成以及根據時間戳序列計算鏈路利用率。
方法實施例二 本實施例采用帶有IPv6時間戳擴展頭的TCP/UDP報文作為探測報文。如圖5所示,為本實施例的部署方案示意圖,探測目的端可以是任意支持IPv6協議的網絡節點,可以是路由器、計算機主機等,但與上一實施例不同之處在于探測目的端應該能夠據根據時間戳序列計算鏈路利用率。
表10 帶有IPv6時間戳擴展報文頭的TCP/UDP報文 如表10所示,為帶有IPv6時間戳擴展頭的TCP/UDP報文。探測源端向探測目的端發送帶有時間戳擴展頭的TCP/UDP報文PktZ。中途經過的路由器將時間戳記錄到報文PktZ的時間戳擴展頭的Data字段中。在探測目的端接收這些探測報文并提取時間戳數據進行處理,根據時間戳序列計算得到鏈路Router1->Router2、鏈路Router2->Router3、...、鏈路RouterN-1->RouterN的鏈路利用率。
本實施例具有更大的靈活性,在探測從探測源端到探測目的端路徑的各個鏈路利用率時,不需記錄探測目的端到探測源端路徑的時間戳;在探測從探測目的端到探測源端路徑的各個鏈路利用率時,也不需記錄探測源端到探測目的端路徑的時間戳,縮短了測量的時間,并減少了因測量而給相應路由器帶來的負擔。
IPv6網絡鏈路利用率測量裝置實施例一 如圖6所示,為本發明的IPv6網絡鏈路利用率測量裝置實施例一結構示意圖。該裝置至少包括探測報文生成模塊以及網絡通信模塊。探測報文生成模塊用于生成帶有時間戳擴展頭的探測報文,根據測量方案的不同,探測報文可以為帶有IPv6時間戳擴展頭的ICMP Echo Requset,或者為帶有IPv6時間戳擴展頭的TCP/UDP報文。網絡通信模塊用于發送和/或接收探測報文。在基于TCP/UDP報文的測量方法中,探測源端可采用這種結構,并且網絡通信模塊只支持發送探測報文即可。
IPv6網絡鏈路利用率測量裝置實施例二 如圖7所示,為本發明的IPv6網絡鏈路利用率測量裝置實施例二結構示意圖。本實施例在實施例一的基礎上加入了一個探測報文處理模塊,該模塊與網絡通信模塊連接,用于根據接收的探測報文的時間戳序列計算鏈路利用率。在基于ICMP報文的測量方法中,探測源端可采用這種結構。首先由探測報文生成模塊生成帶有IPv6時間戳擴展頭的ICMP Echo Request并通過網絡通信模塊發送;網絡通信模塊收到帶有IPv6時間戳擴展頭的ICMP Echo后發送至探測報文處理模塊;探測報文處理模塊提取時間戳序列,并根據時間戳序列計算鏈路利用率。
IPv6網絡鏈路利用率測量裝置實施例三 如圖8所示,為本發明的IPv6網絡鏈路利用率測量裝置實施例三結構示意圖。本實施例包括網絡通信模塊及探測報文處理模塊。網絡通信模塊用于發送和/或接收探測報文;探測報文處理模塊與網路通信模塊連接,用于根據接收的探測報文的時間戳序列計算鏈路利用率。在基于TCP/UDP報文的測量方法中,探測目的端可采用這種結構。探測目的端的網絡通信模塊接收到帶有IPv6時間戳擴展頭的TCP/UDP報文后,發送至探測報文處理模塊,由探測報文處理模塊根據時間戳序列計算鏈路利用率。
IPv6網絡鏈路利用率測量裝置實施例四 如圖9所示,為本發明的IPv6網絡鏈路利用率測量裝置實施例四結構示意圖。本實施例包括網絡通信模塊及探測報文回送模塊。探測報文回送模塊與網絡通信模塊連接,用于根據帶有IPv6時間戳擴展頭的ICMP Echo Request生成帶有IPv6時間戳擴展頭的ICMP Echo并向發送。在基于ICMP報文的測量方法中,測量目的端可采用這種結構。探測目的端的網絡通信模塊接收到帶有IPv6時間戳擴展頭的ICMP Echo Request報文后,發送至探測報文回送模塊;探測報文回送模塊根據ICMP Echo Request報文生成ICMP Echo報文,即創建ICMP Echo報文,將ICMP Echo Request報文的內容復制到ICMP Echo報文中,然后發送至網絡通信模塊,由網絡通信模塊將ICMP Echo報文發送回探測源端。
IPv6網絡鏈路利用率測量裝置實施例五 在圖9所示的實施例中也可加入探測報文處理模塊,構成圖10所示的IPv6網絡鏈路利用率測量裝置實施例五。探測報文處理模塊與網絡通信模塊連接。在基于ICMP報文的測量方法中,探測目的端可采用這種結構,網絡通信模塊接收到帶有IPv6時間戳擴展頭的ICMP Echo Request報文后,將其同時發送至探測報文處理模塊以及探測報文回送模塊;探測報文處理模塊根據時間戳序列計算探測源端到探測目的端路徑各鏈路利用率;探測報文回送模塊生成帶有IPv6時間戳擴展頭的ICMP Echo報文并向探測目的端返回。這樣,探測目的端既可以響應帶有IPv6時間戳擴展頭的ICMP Echo Request,又可以計算鏈路利用率。
IPv6網絡鏈路利用率測量裝置實施例六 如圖11所示,為本發明的IPv6網絡鏈路利用率測量裝置實施例六結構示意圖。本實施例包括網絡通信模塊,以及與網絡通信模塊連接的探測報文生成模塊、探測報文處理模塊及探測報文回送模塊。各模塊的功能不再贅述。本實施例可作為探測源端,也可作為探測目的端,并且即可用于基于ICMP報文的測量方法,也可應用于基于TCP/UDP的測量方法。
IPv6網絡路由器實施例 如圖12所示,為支持本發明的測量方法的IPv6網絡路由器結構示意圖。在現有路由器中加入了時間戳擴展頭處理模塊,并對現有路由器的模塊進行改進。擴展頭識別模塊與所述網絡通信模塊連接,該擴展頭識別模塊除了能夠識別RFC2460中定義的擴展頭之外,還要能夠識別IPv6時間戳擴展頭標識,在“Next Header”字段值為時間戳擴展頭標識時,發送至時間戳擴展頭處理模塊;時間戳擴展頭處理模塊與擴展識別模塊連接及網絡通信模塊連接,用于將時間戳寫入帶有時間戳擴展頭的探測報文,然后交由網絡通信模塊發送。
如圖13所示,為上述IPv6網絡路由器實施例中時間戳擴展頭處理模塊的結構示意圖,包括容量判斷模塊,與擴展頭識別模塊連接,用于判斷時間戳擴展頭是否可容納更多的時間戳;位置計算模塊,與容量判斷模塊連接,用于在時間戳擴展頭可容納更多時間戳的情況下,計算時間戳的存放位置;記錄模塊,與位置計算模塊及網絡通信模塊連接,用于根據時間戳存放位置將時間戳寫入時間戳擴展頭,然后將新寫入時間戳的時間戳擴展頭交由網絡通信模塊發送。
本發明通過帶有時間戳擴展頭的IPv6報文實現了鏈路利用率的端到端測量,無需通過SNMP訪問路由器,不會給路由器帶來很大的處理負擔;測量精度高,并且可根據IPv6網絡的速率調整探測報文發送參數,從而對測量精度進行調整。
最后應當說明的是以上實施例僅用以說明本發明的技術方案而非對其限制;對本發明的具體實施方式
進行修改或者對部分技術特征進行等同替換,而不脫離本發明技術方案精神的,其均應涵蓋在本發明請求保護的技術方案范圍當中。
權利要求
1.一種IPv6網絡鏈路利用率測量方法,其特征在于,所述方法包括如下步驟
探測源端向網絡發送多個帶有時間戳擴展頭的探測報文;
探測報文經過的每一跳路由器將當前時間戳寫入探測報文;
探測源端和/或目的端根據多個探測報文的時間戳序列得到鏈路利用率。
2.根據權利要求1所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述探測報文經過的每一跳路由器將當前時間戳寫入探測報文進一步包括以下步驟探測報文經過的路由器提取探測報文基本頭的下一報頭字段,若所述下一報頭字段的值為時間戳擴展頭標識,并且當所述時間戳可以寫入所述時間戳擴展頭時,將所述時間戳寫入所述時間戳擴展頭。
3.根據權利要求2所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述時間戳可以寫入所述時間戳擴展頭的條件是從所述時間戳擴展頭中提取擴展頭長度信息及時間戳數目信息,所述擴展頭長度大于所述時間戳數目。
4.根據權利要求3所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述將時間戳寫入時間戳擴展頭的步驟具體為根據所述時間戳數目計算時間戳存放位置,將時間戳寫入時間戳擴展頭,并且將時間戳數目加一。
5.根據權利要求1所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述探測源端向網絡發送的多個帶有時間戳擴展頭的探測報文為多個帶有時間戳擴展頭的回顯請求報文。
6.根據權利要求5所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述方法進一步包括以下步驟
探測目的端接收帶有時間戳擴展頭的回顯請求報文;
創建帶有時間戳擴展頭的回顯報文,將所述回顯請求報文的內容復制到所述回顯報文中;
將所述回顯報文向探測源端發送。
7.根據權利要求1所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述探測源端向網絡發送的多個帶有時間戳擴展頭的探測報文為多個帶有時間戳擴展頭的傳輸控制協議報文或用戶數據協議報文。
8.根據權利要求1所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述根據多個探測報文的時間戳序列得到鏈路利用率進一步包括以下步驟提取多個探測報文的時間戳序列,針對每一跳鏈路,計算時延序列,提取時延序列中的最小時延,計算排隊時延序列,將排隊時延序列轉換為鏈路狀態序列,計算該跳鏈路的利用率。
9.根據權利要求8所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述方法進一步包括以下步驟
設置排隊時延與鏈路狀態的映射關系;
根據所述排隊時延與鏈路狀態的映射關系將排隊時延序列中的每一排隊時延轉換為相應的鏈路狀態,生成鏈路狀態序列。
10.根據權利要求9所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述計算該跳鏈路的利用率的步驟具體為,計算所述鏈路狀態序列的均值。
11.根據權利要求1-10任一所述的IPv6網絡鏈路利用率測量方法,其特征在于,所述方法還包括根據鏈路速率確定發送探測報文的時間間隔。
12.一種IPv6網絡鏈路利用率測量裝置,其特征在于,所述裝置包括
探測報文生成模塊,用于生成帶有時間戳擴展頭的探測報文;
網絡通信模塊,用于發送和/或接收所述探測報文。
13.根據權利要求12所述的IPv6網絡鏈路利用率測量裝置,其特征在于,所述裝置還包括探測報文處理模塊,用于根據接收的探測報文的時間戳計算鏈路利用率。
14.根據權利要求12或13所述的IPv6網絡鏈路利用率測量裝置,其特征在于,所述裝置還包括探測報文回送模塊,用于根據回顯請求探測報文生成回顯探測報文。
15.一種IPv6網絡鏈路利用率測量裝置,其特征在于,所述裝置包括
網絡通信模塊,用于發送和/或接收探測報文;
探測報文處理模塊,用于根據所述探測報文的時間戳計算鏈路利用率。
16.根據權利要求15所述的IPv6網絡鏈路以用率測量裝置,其特征在于,所述裝置還包括探測報文回送模塊,用于根據回顯請求探測報文生成回顯探測報文。
17.一種IPv6網絡鏈路利用率測量裝置,其特征在于,所述裝置包括
網絡通信模塊,用于發送和/或接收探測報文;
探測報文回送模塊,用于根據回顯請求探測報文生成回顯探測報文。
18.一種IPv6網絡路由器,包括網絡通信模塊,其特征在于,所述路由器還包括
擴展頭識別模塊,用于識別接收到的IPv6報文基本頭中的下一報頭字段,在下一報頭字段值為時間戳擴展頭標識時,發送至時間戳擴展頭處理模塊;以及
時間戳擴展頭處理模塊,用于將時間戳寫入帶有時間戳擴展頭的探測報文,并將寫入時間戳的探測報文發送至網絡通信模塊。
19.根據權利要求18所述的路由器,其特征在于,所述時間戳擴展頭處理模塊包括
容量判斷模塊,用于判斷時間戳擴展頭是否可容納更多的時間戳;
位置計算模塊,用于在時間戳擴展頭可容納更多時間戳的情況下,計算時間戳的存放位置;
記錄模塊,用于根據時間戳存放位置將時間戳寫入時間戳擴展頭。
全文摘要
本發明提供一種IPv6網絡鏈路利用率測量方法,包括如下步驟探測源端向網絡發送多個帶有時間戳擴展頭的探測報文;探測報文經過的每一跳路由器將當前時間戳寫入探測報文;探測源端和/或目的端根據多個探測報文的時間戳序列得到鏈路利用率。本發明還提供一種IPv6網絡鏈路利用率測量裝置和一種IPv6網絡路由器。本發明通過帶有時間戳擴展頭的IPv6報文實現了鏈路利用率的端到端測量,測量精度高,并且可根據IPv6網絡的速率調整探測報文發送參數,從而對測量精度進行調整。
文檔編號H04L12/24GK101192951SQ20061014420
公開日2008年6月4日 申請日期2006年11月29日 優先權日2006年11月29日
發明者李智濤, 崔毅東, 莊宏成, 青 劉, 徐雅靜, 黃小紅 申請人:華為技術有限公司