国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ICMPv6協(xié)議的IPv6網(wǎng)絡(luò)帶寬測量算法研究和實現(xiàn)

2019-01-09 03:12儲赟朱尚明
中國教育網(wǎng)絡(luò) 2018年11期
關(guān)鍵詞:字節(jié)時延排隊

文/儲赟 朱尚明

隨著互聯(lián)網(wǎng)及其應(yīng)用的飛速增長,當前的互聯(lián)網(wǎng)協(xié)議IPv4地址短缺等缺點已經(jīng)越來越突出。IPv6作為IETF確定的下一代互聯(lián)網(wǎng)協(xié)議,有望解決IPv4地址短缺等問題。我國已經(jīng)建成了世界上最大規(guī)模的IPv6網(wǎng)絡(luò),但是IPv4向IPv6的演進需要相當長的時間才能完成。網(wǎng)絡(luò)應(yīng)用特別是高清視頻等業(yè)務(wù)的拓展,對網(wǎng)絡(luò)帶寬提出了較高的要求。由于鏈路可用帶寬動態(tài)變化,背景流量呈現(xiàn)長相關(guān)、自相似特性以及短時突發(fā)性,使鏈路帶寬的實際測量面臨很大困難和挑戰(zhàn),成為下一代網(wǎng)絡(luò)研究的熱點問題[1]。

網(wǎng)絡(luò)帶寬是指網(wǎng)絡(luò)鏈路在單位時間內(nèi)所能傳送的是數(shù)據(jù)報文的最大比特數(shù)量,即最大的傳輸速率,它一般可以分為鏈路帶寬(Link bandwidth)和可用帶寬(Available bandwidth)兩種[2]。鏈路帶寬即數(shù)據(jù)在連接兩個節(jié)點間鏈路上的最大容量帶寬,可用帶寬即某一時刻在給定鏈路上發(fā)送數(shù)據(jù)可用的最大帶寬。在實際應(yīng)用中,由于多個業(yè)務(wù)流會共享網(wǎng)絡(luò),因此,鏈路帶寬無法準確地反映業(yè)務(wù)流在當前網(wǎng)絡(luò)中的帶寬占用狀態(tài),相比較而言,可用帶寬更準確地反映網(wǎng)絡(luò)當前的流量通過能力。

本文提出了一種在下一代網(wǎng)絡(luò)協(xié)議IPv6網(wǎng)絡(luò)中,運用ICPMv6實現(xiàn)對網(wǎng)絡(luò)端到端可用帶寬進行測量的有效方法。

帶寬測量算法研究現(xiàn)狀

目前常用的帶寬測量方法主要有以下三種。

1.PPTD(Packet Pair/Train Dispersion)

PPTD方法用于測量端到端的整體帶寬容量。PPTD方法的原理是在源端發(fā)送有固定時間間隔的一對大小相同的數(shù)據(jù)包,然后在接收端測量這兩個包的時間間隔,通過這個時間間隔可以推算出端到端的帶寬容量[3]。該方法要求網(wǎng)絡(luò)中沒有其他的干擾流量,這在實際網(wǎng)絡(luò)環(huán)境中基本上不可能實現(xiàn),因此需要多次測量,將那些受到干擾的測量包過濾掉。這種方法還需要兩端同時進行測量,部署成本高。

2. SLoPS(Self-Loading Periodic Streams)

SLoPS是另一種用于測量端到端可用帶寬的方法。SLoPS也是從源端發(fā)送數(shù)據(jù)包到目的端,其原理是當測試數(shù)據(jù)流量速率大于可用帶寬時,目的端包的時延將呈上升趨勢,在測試數(shù)據(jù)流量速度近似可用帶寬時,時延將是較平穩(wěn)的[4]。該方法是通過不斷發(fā)送測試數(shù)據(jù)來進行流量估算,因此對網(wǎng)絡(luò)資源的占用較大,還會對現(xiàn)網(wǎng)的正常業(yè)務(wù)性能造成影響。

3.VPS(Variable Packet Size)

VPS是一種基于可變包長的探測方法,該方法設(shè)計思想是從源端到路徑上的任一節(jié)點發(fā)送不同大小的包, 通過計算往返時延與包大小的函數(shù)關(guān)系來獲取路徑上各段鏈路的可用帶寬[5]。具體來說,首先利用IP包頭的TTL域(工作原理和常用的Tracerouter工具 一樣),強制包在一個特定的跳上超時。這一跳的節(jié)點將丟棄該探測包,并利用Internet控制消息協(xié)議(ICMPv6)的超時錯誤報文發(fā)回源端,源端就獲取到了路徑節(jié)點信息,進而通過接收到的ICMPv6報文計算出到這一跳的往返時延和可用帶寬??勺儼LVPS探測方法僅需要在源進行測量,部署成本低。

基于ICMPv6協(xié)議的可變包長帶寬測量算法

1. 測量原理

假設(shè)一條端到端的路徑由節(jié)點1到節(jié)點N構(gòu)成 ,如圖1所示,其中Ci是節(jié)點i到節(jié)點i+1之間的鏈路帶寬(1≤N)。送時延三部分組成,設(shè)T(L)為發(fā)送一個長度為L的ICMPv6包的單程時延, 則有

圖1 端到端路徑示意

其中α為傳播時延,在數(shù)量級上目前基本上都達到了光速級別,與包的大小無關(guān),只要不改變路徑,這部分時延就不會改變,為一固定值。βi為節(jié)點i到i+1排隊時延,主要與節(jié)點的緩存有關(guān),由于網(wǎng)絡(luò)內(nèi)數(shù)據(jù)包的數(shù)量很多,可能會在某個節(jié)點緩存內(nèi)排隊等待發(fā)送,這種現(xiàn)象將導致排隊時延。取最小單程時延時,排隊時延可近似為0或一固定值β(設(shè)

設(shè)B為節(jié)點1到節(jié)點N的可用帶寬,可近似為節(jié)點1到N這條路徑上的瓶頸鏈路帶寬,即B =min(Ci)。當N=2時,則有;當N > 2時,不難證明有。簡單起見,本文取作為可用帶寬的近似估計值,即

這就是可變包長帶寬測量方法的數(shù)學表達,即在單程時延最小時通過求出發(fā)送包長與兩端的單程時延函數(shù)的斜率,即可計算出兩端的可用帶寬。

2. 設(shè)計思想

可變包長帶寬測量算法的設(shè)計思想主要基于以下兩點:

(1)為了避免排隊時延,從源端節(jié)點發(fā)送大小固定的很多包,該方法假設(shè)至少有一個包可以避免排隊時延,那么該往返時延肯定是不包含排隊時延的。因此,我們可以認為在這些包中具有最小雙程時延的包只包含了發(fā)送時延和傳播時延。

(2)為了簡化計算,相鄰發(fā)送包的增幅相同,并假定雙程時延除以2即為單程時延。

為了更精確的估算和忽略排隊時延,從源端每次發(fā)送大小不同的探測包后,最小雙程時延的包是排隊時延最小的,緊接著最小雙程時延探測包的下一個探測包在相同的網(wǎng)絡(luò)環(huán)境下,也是排隊時延較小的,因此,我們可以認為使用這兩次發(fā)送的時延差ΔT(即發(fā)送最小雙程時延探測包的時間與下一個探測包的雙程時延之差)計算所得的可用帶寬是比較精確的。

具體算法設(shè)計過程如下:

(1)從源端到目的端發(fā)送m個相同大小的探測包L,計算出最小雙程時延Tmin(L),此時,認為沒有排隊時延或者是最小排隊時延的。

(2)根據(jù)探測包的增幅ΔL從源端到目的端發(fā)送包長為L0、L0+ΔL、…、L0+nΔL的探測包,并根據(jù)第(1)步計算出每個探測包的最小雙程時延Tmin(L0)、Tmin(L0+ΔL)、…、Tmin(L0+nΔL)。

(3)從 Tmin(L0)、Tmin(L0+ΔL)、…、Tmin(L0+nΔL)中再獲取最小值,假設(shè)i是最小雙程時延最小值的位置編號,計算出最小雙程時延的差ΔT =Tmin(i+1)-Tmin(i)。

(4)取雙程時延的一半作為單程時延,根據(jù)ΔL和ΔT的比值估算可用帶寬,即B=ΔL/(ΔT/2)。

3.實現(xiàn)機制

本文在.Net環(huán)境下利用MFC基于原始套接字(Raw Socket)在IPv6環(huán)境下對可用帶寬測量算法進行了技術(shù)實現(xiàn)和模擬驗證。為生成ICMPv6回送請求和應(yīng)答報文,首先定義一個ICMPv6包的結(jié)構(gòu)如下:

圖2 端到端最小雙程時延的流程

typedef struct icmp6_hdr

{ //頭部8個字節(jié)

u_char icmp6_type; //類型

u_char icmp6_code; //代碼

u_short icmp6_cksum; //校驗和

u_short icmp6_id; //標識符

u_short icmp6_seq; //序列號

//報文主體

LONGLONG icmp6_data[DATALEN]; // 其中 icmp6_data[0]存儲發(fā)送時間(微秒級)

} ICMP6_HDR,*PICMP6_HDR;

(1)計算兩端的最小雙程時延

從源端到目的端發(fā)送m個相同大小的探測包,計算出最小雙程時延的流程圖如圖2所示。

首先創(chuàng)建socket套接字并發(fā)起連接,構(gòu)造探測包時將發(fā)送端的CPU時鐘(微秒)寫入icmp6_data[0],然后把準備好的指定大小的探測包發(fā)送到指定目的端,接著等待接收應(yīng)答包。只有滿足下面三個條件的應(yīng)答包才是測試發(fā)送探測包的應(yīng)答包:包的類型為ICMP6_ECHO_REPLY,目的端地址與發(fā)送包指定的目的端地址一致,包中的標識符與發(fā)送時的進程號一致。解析應(yīng)答包獲得接收包時的CPU時鐘,從應(yīng)答包中的icmp6_data[0]中取出發(fā)送時的CPU時鐘,兩者之差就是發(fā)送到目的端的雙程時延T,并用定義的數(shù)組來存放計算獲得的發(fā)送探測包的雙程時延。待發(fā)送完指定發(fā)送次數(shù)并應(yīng)答包處理完畢后,采用快速排序算法計算出發(fā)送到指定目的端、指定包大小的最小雙程時延。

(2)計算兩端的可用帶寬

計算指定目的端的可用帶寬的流程圖如圖3所示。

首先初始化變長包個數(shù)n、包長增幅Size和起始包大小L0,根據(jù)包長增幅計算探測包大小L=L0+j*Size(j=0,1,…,n-1),然后發(fā)送探測包,計算該探測包的最小雙程時延并存放到定義的數(shù)組中,直到發(fā)送的測試包的個數(shù)等于n時不再發(fā)送。最后根據(jù)快速排序算法獲得數(shù)組中的最小值和該值所在位置,并計算出可用帶寬的值。

實驗結(jié)果及分析

我們對上述可用帶寬測量算法在IPv6環(huán)境下進行了測試驗證,并和常用的帶寬測量的工具進行對比分析。

1.實驗環(huán)境

圖3 計算指定目的端的可用帶寬的流程

源端(發(fā)送端)為華東政法大學一臺主機,IPv6地址為:2001:da8:8020:3:fd35:fc63:9151:c19e;目的端(接收端)為上海外國語大學一臺主機,IPv6地址為:2001:250:600f:160:250:56ff:feac:3d03。測試時間為2018年6月13日 14∶21。

2. 實驗結(jié)果及分析

為進行測試驗證,我們對本文提及的可用帶寬測量算法初始化L0=32字節(jié),帶寬測量增幅ΔL分別為2000字節(jié)、2500字節(jié)、3000字節(jié),不同大小探測包測試個數(shù)為n=10,相同探測包的發(fā)送測試次數(shù)為m=5,分別進行了實際測試。

(1)探測包每次遞增2000字節(jié)的測試結(jié)果見表1。

根據(jù)表1得出探測包增幅ΔL=2000B,發(fā)送的10次探測包中最小雙程時延為2.21ms,最小雙程時延所在位置序號為1,ΔT=Tmin(i+1) - Tmin(i)=2.73-2.21=0.52ms, 計算可用帶寬為B=ΔL/(ΔT/2)=2000*8/(0.52/2)=61538Kbps=61.538Mbps。

表1 探測包增幅為2000字節(jié)

表2 探測包增幅為2500字節(jié)

表3 探測包增幅為3000字節(jié)

表4 30次重復實驗結(jié)果(Mbps)

(2)探測包每次遞增2500字節(jié)的測試結(jié)果見表2。

根據(jù)表2得出探測包增幅ΔL=2500B,發(fā)送的10次探測包中最小雙程時延為1.98ms,最小雙程時延所在位置序號為1,ΔT=Tmin(i+1)-Tmin(i)=2.56-1.98=0.58ms,計算可用帶寬為B=ΔL/(ΔT/2 )=2500*8/(0.58/2)=68965Kbps=68.965Mbps 。

(3)探測包每次遞增3000字節(jié)的測試結(jié)果見表3。

根據(jù)表3得出探測包增幅ΔL=2500B ,發(fā)送的10次探測包中最小雙程時延為2.23ms,最小雙程時延所在位置序號為 1,ΔT=Tmin(i+1)-Tmin(i)=2.23-2.93=0.7ms,計算可用帶寬為B=ΔL/(ΔT/2 )=3000*8/(0.7/2) =68571Kbps=68.571Mbps。

為了取得具有統(tǒng)計性和普遍規(guī)律性的實驗結(jié)果,我們對測量結(jié)果進行了反復多次驗證,以避免單次測量所產(chǎn)生的隨機誤差。通過次30次重復驗證,結(jié)果見表4。

為了驗證測試結(jié)果的正確性和有效性,我們通過Google瀏覽器自帶的帶寬測量工具從目的端(上海外國語大學一臺主機,IPv6地址為:2001:250:600f:160:250:56ff:feac:3d03)下載1.9G的文件測量的可用帶寬范圍為42.2 ~ 71.2Mbps。而表4多次重復測量結(jié)果的平均值分別為62.07Mbps、69.01Mbps、69.69Mbps,可見我們提出的可變包長帶寬測量算法和Google瀏覽器自帶的帶寬測量工具的測量結(jié)果是非常接近的,在IPv6網(wǎng)絡(luò)下是可行和有效的。

本文提出了在IPv6網(wǎng)絡(luò)中基于ICMPv6協(xié)議的可變包長帶寬測量算法,并進行了編程實現(xiàn)。通過多種測試結(jié)果與常用的帶寬測量工具對比結(jié)果,驗證了該算法的可行性和有效性。為測量IPv6網(wǎng)絡(luò)兩端之間的可用帶寬提供了一種簡單有效的方法,為網(wǎng)絡(luò)監(jiān)控和性能測量提供了有益的手段。

猜你喜歡
字節(jié)時延排隊
No.8 字節(jié)跳動將推出獨立出口電商APP
怎樣排隊
5G承載網(wǎng)部署滿足uRLLC業(yè)務(wù)時延要求的研究
No.10 “字節(jié)跳動手機”要來了?
基于GCC-nearest時延估計的室內(nèi)聲源定位
基于MSP430的四旋翼飛行器的S-BUS通信協(xié)議的設(shè)計與實現(xiàn)
巧排隊列
三角龍排隊
簡化的基于時延線性擬合的寬帶測向算法
衛(wèi)星導航設(shè)備收發(fā)鏈路時延測量方法研究①
富裕县| 陆川县| 富宁县| 富蕴县| 云阳县| 句容市| 通渭县| 信丰县| 富平县| 鄄城县| 洛隆县| 保定市| 乌拉特中旗| 平乡县| 逊克县| 浦东新区| 淮安市| 上杭县| 平顺县| 石家庄市| 紫阳县| 贵溪市| 敦化市| 英山县| 烟台市| 辽阳县| 瑞丽市| 南昌县| 峨山| 云梦县| 赤城县| 汝州市| 凤翔县| 清徐县| 孝昌县| 墨江| 秦皇岛市| 盘锦市| 胶南市| 滕州市| 当阳市|