崔鴻 顧兆軍
摘要:國(guó)內(nèi)大多數(shù)高校的《計(jì)算機(jī)網(wǎng)絡(luò)》教材,在介紹計(jì)算機(jī)網(wǎng)絡(luò)基本原理分組交換技術(shù)時(shí),給出相同的總時(shí)延公式,對(duì)該公式進(jìn)行了探討,提出其修正公式及分析。
關(guān)鍵詞: 關(guān)總時(shí)延公式;計(jì)算機(jī)網(wǎng)絡(luò)
Abstract: When introducing the basic principle of computer network and packet switching technology, the same total delay formula is given in the textbook of computer network in most domestic colleges and universities. This paper discusses the formula, and puts forward its correction formula and analysis.
Key words: total delay formula; computer network
1 引言
國(guó)內(nèi)大多數(shù)高校的本科“計(jì)算機(jī)網(wǎng)絡(luò)”課程選用的是《計(jì)算機(jī)網(wǎng)絡(luò)》1或《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法》2為教材,這兩種教材在計(jì)算機(jī)網(wǎng)絡(luò)概述部分,在介紹網(wǎng)絡(luò)基本原理分組交換技術(shù)時(shí),給出了相同的分組交換總時(shí)延公式。筆者認(rèn)為該公式應(yīng)該修正。
2 總時(shí)延公式
計(jì)算機(jī)網(wǎng)絡(luò)的基本原理是分組交換技術(shù),分組從源主機(jī)出發(fā),經(jīng)過(guò)多個(gè)路由器,到達(dá)終點(diǎn)主機(jī)。分組從源端到目的端所花費(fèi)的時(shí)間為總時(shí)延。
2.1 總時(shí)延原公式與修正公式
兩種教材給出的總時(shí)延公式為:
總時(shí)延 = 發(fā)送時(shí)延 + 傳播時(shí)延 + 處理時(shí)延 + 排隊(duì)時(shí)延
筆者認(rèn)為總時(shí)延公式應(yīng)當(dāng)修正為:
總時(shí)延 = 發(fā)送時(shí)延 + 傳播時(shí)延 + 存儲(chǔ)時(shí)延
先介紹這幾個(gè)時(shí)延概念,再介紹本文提出的“存儲(chǔ)時(shí)延”的概念。
發(fā)送時(shí)延(dtrans)是指主機(jī)向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)所花費(fèi)的時(shí)間,就是數(shù)據(jù)量除以網(wǎng)絡(luò)帶寬。舉例,鏈路的數(shù)據(jù)傳輸速率為100Mbps,分組大小為1000B,該分組的發(fā)送時(shí)延就是0.08ms。注意分組數(shù)據(jù)以字節(jié)為單位,網(wǎng)絡(luò)帶寬以比特為單位,要換算一下。
傳播時(shí)延(dprop)是指信號(hào)電磁波在信道中傳播一定的距離而花費(fèi)的時(shí)間,電磁波在電纜中的速度通常按200m/us計(jì)算。舉例:某兩個(gè)主機(jī)相距1000m,傳播時(shí)延的計(jì)算結(jié)果就是5us。
排隊(duì)時(shí)延(dqueue)分組在路由器內(nèi)排隊(duì)等待處理的時(shí)間,稱為排隊(duì)時(shí)延。排隊(duì)時(shí)間實(shí)質(zhì)是當(dāng)時(shí)網(wǎng)絡(luò)的擁塞程度。
處理時(shí)延(dproc)是指路由器CPU處理分組的時(shí)間,CPU處理時(shí)間也非常小。
2.2 修正公式的分析
計(jì)算機(jī)網(wǎng)絡(luò)基本原理是分組交換技術(shù),就是說(shuō)一個(gè)分組從源主機(jī)出發(fā),穿越多個(gè)路由器后,到達(dá)目的主機(jī)。其中的關(guān)鍵就是“路由器存儲(chǔ)-轉(zhuǎn)發(fā)分組(store and forward)”。分組在網(wǎng)絡(luò)中傳輸過(guò)程如圖1所示。
在這個(gè)過(guò)程中,關(guān)鍵是分析清楚分組在路由器內(nèi)部的過(guò)程,現(xiàn)在詳細(xì)分析一下分組在路由器內(nèi)的全過(guò)程。
第一步:接收分組
當(dāng)分組的第1個(gè)比特到達(dá)路由器的接口時(shí),接口芯片開(kāi)始接將分組數(shù)據(jù)存儲(chǔ)在I/O設(shè)備的緩沖區(qū)里,當(dāng)整個(gè)分組接收完畢,分組完全存入路由器的I/O設(shè)備的緩沖區(qū)后,路由器的I/O設(shè)備產(chǎn)生一個(gè)中斷信號(hào)給路由器CPU。從第1個(gè)比特到達(dá)路由器I/O接口,到分組接收完畢,這段時(shí)間我稱其為“存儲(chǔ)時(shí)延”,是“存儲(chǔ)-轉(zhuǎn)發(fā)”中存儲(chǔ)兩個(gè)字的意思,是路由器I/O設(shè)備的讀寫(xiě)時(shí)間。
第二步:分組排隊(duì)
分組進(jìn)入路由器后,路由器可能已經(jīng)接收了多個(gè)分組,這些分組在路由器內(nèi)部排隊(duì),等待CPU處理。排隊(duì)的長(zhǎng)度是不確定的,依賴于路由器當(dāng)前的擁塞程度。這段時(shí)延稱為“排隊(duì)時(shí)延”。
第三步:轉(zhuǎn)發(fā)分組
當(dāng)分組排隊(duì)排到后,路由器的CPU開(kāi)始處理分組,就是檢索路由表,轉(zhuǎn)發(fā)分組,這段CPU處理所用時(shí)間很短。這段時(shí)間稱為“處理時(shí)延”。
路由器的存儲(chǔ)轉(zhuǎn)發(fā)原理絕不是分組的第1個(gè)比特到達(dá)路由器I/O設(shè)備時(shí),路由器就開(kāi)始轉(zhuǎn)發(fā)分組。而是要完成三個(gè)步驟,路由器接收分組,分組排隊(duì),轉(zhuǎn)發(fā)分組。接收分組所花的時(shí)間,不能忽略,必須計(jì)算。分組進(jìn)入路由器后,所花時(shí)間為排隊(duì)時(shí)延和處理時(shí)延,如無(wú)特殊需求,應(yīng)忽略不計(jì)。
總時(shí)延公式的瑕疵就是沒(méi)有將“路由器存儲(chǔ)轉(zhuǎn)發(fā)”原理與總時(shí)延公式匹配,沒(méi)有展開(kāi)詳細(xì)的討論。在總時(shí)延公式中,將不能忽略的忽略了,將通常忽略的寫(xiě)入了,弄反了整件事情的方向和重點(diǎn)。這樣一來(lái),就無(wú)法說(shuō)明白存儲(chǔ)轉(zhuǎn)發(fā)原理與總時(shí)延公式是同一個(gè)事物,只是兩種表達(dá),文字表達(dá)和公式表達(dá)。讀者就無(wú)法將存儲(chǔ)轉(zhuǎn)發(fā)原理與總時(shí)延公式匹配在一起。
總時(shí)延 = 發(fā)送時(shí)延 + 傳播時(shí)延 + 存儲(chǔ)時(shí)延
現(xiàn)對(duì)“存儲(chǔ)轉(zhuǎn)發(fā)”原理展開(kāi)了詳細(xì)的討論,明確提出了“存儲(chǔ)時(shí)延”的概念,修正了總時(shí)延的計(jì)算公式,明確表述存儲(chǔ)轉(zhuǎn)發(fā)原理與總時(shí)延公式是同一個(gè)事物,將原理、公式、分析圖統(tǒng)一在一起。
3 總時(shí)延修正公式的應(yīng)用
此處通過(guò)一例題(2010年考研題34題單選題),詳述存儲(chǔ)轉(zhuǎn)發(fā)原理、總時(shí)延公式、分析圖,給出總時(shí)延公式的實(shí)際應(yīng)用。
例1在下圖所示的采用“存儲(chǔ)-轉(zhuǎn)發(fā)”方式分組的交換網(wǎng)絡(luò)中,所有鏈路的數(shù)據(jù)傳輸速率為100Mbps,分組大小為1000B,其中分組首部大小20B,若主機(jī)H1向主機(jī)H2發(fā)送一個(gè)大小為980000B的文件,則在不考慮分組拆裝時(shí)間和傳播延遲的情況下,從H1發(fā)送到H2接收完為止,需要的時(shí)間至少是() A.80ms B.80.08ms C.80.16ms D.80.24ms? ?單項(xiàng)選擇
解析:題中有“至少”兩個(gè)字,如何理解??聪聢D,從主機(jī)H1到主機(jī)H2,可以有兩條路徑,路徑①與路徑②。
路徑①經(jīng)過(guò)3段鏈路,路徑②經(jīng)過(guò)4段鏈路,電磁信號(hào)的速度是200m/us的常數(shù),那是不是路徑②花的時(shí)間多呢?題目中說(shuō)明了“不考慮傳播時(shí)延”,就是說(shuō)花的時(shí)間都按0計(jì)算。那么走路徑②就和路徑①花的時(shí)間一樣多了,都是0?選哪條路都無(wú)所謂嗎?
路由器是“存儲(chǔ)轉(zhuǎn)發(fā)”,傳播時(shí)延忽略不計(jì),存儲(chǔ)時(shí)延不能忽略不計(jì)。走路徑①,途中經(jīng)過(guò)2個(gè)路由器,會(huì)產(chǎn)生2個(gè)存儲(chǔ)時(shí)延,如果選擇路徑②,途中會(huì)經(jīng)過(guò)3個(gè)路由器,會(huì)產(chǎn)生3個(gè)存儲(chǔ)時(shí)延,轉(zhuǎn)發(fā)流程示意圖如下:
題中要求“至少”,所以應(yīng)選擇路徑①。按經(jīng)過(guò)2個(gè)路由器計(jì)算,分析總時(shí)延最好的工具就是分組轉(zhuǎn)發(fā)示意圖。注意,因?yàn)楹雎詡鞑r(shí)延,圖中的分組傳播線就應(yīng)該是水平的,表示8:00從H1出發(fā),8:00就到達(dá)R1,從H1到R1花費(fèi)時(shí)間為0。由題目知,每個(gè)分組1000B,注意B是字節(jié),數(shù)據(jù)傳輸速率為100Mbps,注意b是比特。每個(gè)分組的發(fā)送時(shí)延就是1000*8 / 100Mbps = 80 us= 0.08 ms。分組首部20B,數(shù)據(jù)部分就是1000-20=980 B,文件大小為980000B, 980000B / 980 B=1000,文件被切分為1000個(gè)分組。分組轉(zhuǎn)發(fā)流程如圖5所示。
總時(shí)延= 發(fā)送時(shí)延 + 傳播時(shí)延 + 存儲(chǔ)時(shí)延
總時(shí)延= 1000 * 0.08ms + 0 (忽略)+? 0.08ms * 2,? 共計(jì)80.16ms,故應(yīng)選C。
繼續(xù)引申。假設(shè)上題主機(jī)到路由器鏈路的數(shù)據(jù)傳輸速率為100Mbps,路由器之間的鏈路數(shù)據(jù)傳輸速率為1000Mbps,其余條件不變,從H1發(fā)送到H2接收完為止,需要的時(shí)間至少是多少呢?
第一段鏈路是低速鏈路,傳輸1000B的分組需要0.08ms,在0.08ms后,第1個(gè)分組完全到達(dá)路由器R1,路由器開(kāi)始轉(zhuǎn)發(fā),因第二段鏈路是高速鏈路,傳輸1000B的分組僅僅需要0.008ms,傳輸完之后,路由器能立即傳輸?shù)?個(gè)分組嗎?不行,路由器是存儲(chǔ)轉(zhuǎn)發(fā),此時(shí)第2個(gè)分組在第一段鏈路中還沒(méi)有傳輸完,必須在傳輸結(jié)束后,路由器才能開(kāi)始轉(zhuǎn)發(fā),這段時(shí)間就只能空閑等待。由存儲(chǔ)轉(zhuǎn)發(fā)原理可清晰地分析出路由器R1的存儲(chǔ)時(shí)延為0.08ms,路由器R2的存儲(chǔ)時(shí)延為0.008ms。
總時(shí)延= 發(fā)送時(shí)延 + 傳播時(shí)延 + 存儲(chǔ)時(shí)延
總時(shí)延=1000*0.08ms? +? 0(忽略) +? 0.08ms + 0.008ms,? 共計(jì)80.088ms。
在例題的引申變化中,能更加清晰地解釋總時(shí)延公式與存儲(chǔ)轉(zhuǎn)發(fā)原理的關(guān)系,二者完全是同一個(gè)事物,只是兩種表達(dá)方式。在實(shí)際分析與應(yīng)用中,通常忽略排隊(duì)時(shí)延與處理時(shí)延,但不能忽略存儲(chǔ)時(shí)延。
參考文獻(xiàn):
[1] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)第7版[M].北京:電子工業(yè)出版社,2017.
[2] James F.Kurose,Keith W.Ross.計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法[M]. 陳鳴,譯.北京:機(jī)械工業(yè)出版社,2009.
【通聯(lián)編輯:代影】