李勇軍 張勝兵 劉潮東 張雋 秦濤
摘要:在與計(jì)算機(jī)網(wǎng)絡(luò)相關(guān)課程的教學(xué)或?qū)嵺`過程中經(jīng)常提及“線端阻塞”這個(gè)概念,其與擁塞控制、網(wǎng)絡(luò)性能和網(wǎng)絡(luò)應(yīng)用緊密聯(lián)系。了解該概念的本義與延伸,可以幫助學(xué)習(xí)者或從業(yè)者準(zhǔn)確地理解和掌握相關(guān)知識(shí)點(diǎn)。本文從日常中的“線端阻塞”現(xiàn)象入手釋義概念,詳細(xì)解釋計(jì)算機(jī)網(wǎng)絡(luò)中該概念的本義、外延和解決方法,并給出計(jì)算機(jī)網(wǎng)絡(luò)中線端阻塞的測(cè)試方法,有助于相關(guān)知識(shí)點(diǎn)的教學(xué)活動(dòng)。
關(guān)鍵詞:線端阻塞;計(jì)算機(jī)網(wǎng)絡(luò);網(wǎng)絡(luò)性能;交通管理
中圖分類號(hào):TP393.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2019)04-0036-02
但凡學(xué)習(xí)過計(jì)算機(jī)網(wǎng)絡(luò)相關(guān)課程的學(xué)習(xí)者或計(jì)算機(jī)網(wǎng)絡(luò)相關(guān)領(lǐng)域的從業(yè)者都接觸到過“線端阻塞”“隊(duì)頭阻塞”等概念。很自然地會(huì)(被)問到什么是“線端”?什么是“線端阻塞”?這也是在學(xué)活動(dòng)中經(jīng)常被學(xué)習(xí)者問的問題。為幫助學(xué)習(xí)者或從業(yè)者準(zhǔn)確理解和掌握相關(guān)知識(shí),本文詳細(xì)解釋該概念的本義和延伸。
“阻塞”是一種生活中的常見現(xiàn)象,比如道路擁塞、排隊(duì)等待服務(wù)等。意指“有障礙而不能通過,無法暢通。”明朝文學(xué)家陳子龍?jiān)凇赌季毸畮熓琛分刑峒啊帮L(fēng)塵阻塞,未達(dá)中朝。”就是指該意思。“阻塞”在自然科學(xué)中也是經(jīng)常被提及的概念,比如氣象學(xué)、無線電學(xué)、軟件工程和網(wǎng)絡(luò)工程等。該概念在不同學(xué)科的意思可能存在細(xì)微差異,但其本義基本是一致的。在計(jì)算機(jī)網(wǎng)絡(luò)中,“阻塞”發(fā)生在發(fā)送端發(fā)送的數(shù)據(jù)量超過了接收端的處理能力的情況下,因部分?jǐn)?shù)據(jù)不能及時(shí)被處理而引起擁塞。在計(jì)算機(jī)網(wǎng)絡(luò)中的不同協(xié)議層,有不同的阻塞處理策略(或算法)[1]。
從字面上看,“線端阻塞”(Head of Line Blocking[2])是“阻塞”的一種形式。準(zhǔn)確理解“線端”的含義是理解“線端阻塞”的關(guān)鍵所在。“線”在這里指隊(duì)列,“端”指隊(duì)列頭部。“線端阻塞”可以直觀地理解為發(fā)生在隊(duì)列頭部或由隊(duì)列頭部而引起的阻塞現(xiàn)象。有些文獻(xiàn)中也譯為“隊(duì)頭阻塞”。在本文中統(tǒng)稱為“線端阻塞”,該現(xiàn)象也常見于日常生活中。
1 交通管理中的線端阻塞現(xiàn)象
本文先從交通管理中的“線端阻塞”現(xiàn)象談起。圖1給出了一個(gè)十字路口的交通示意圖。從南向北有兩條同向車道,分別稱為A車道和B車道。A車道可以允許車輛左轉(zhuǎn)和直行,而B車道允許右轉(zhuǎn)和直行。
在A車道中,有三輛汽車分別是公共汽車、小汽車和出租車。假設(shè)公共汽車是左轉(zhuǎn)車輛,小汽車和出租車是直行車輛。當(dāng)綠燈亮起后,在公共汽車因?yàn)閷?duì)向(C)車道的直行車輛通過而不能及時(shí)左轉(zhuǎn)時(shí),它后面的小汽車和出租車受阻而不能直行。這種在交通管理中常見的現(xiàn)象即為“線端阻塞”。假設(shè)公共汽車是直行車輛,小汽車是左轉(zhuǎn)車輛,出租車是直行車輛,同理(小汽車)也會(huì)引起“線段阻塞”;當(dāng)三輛汽車均為直行車輛時(shí),則不會(huì)發(fā)生“線端阻塞”現(xiàn)象;而當(dāng)三輛車均左轉(zhuǎn)時(shí),則引起的“阻塞”現(xiàn)象是普通擁塞,而非“線段阻塞”。
針對(duì)交通管理中的“線端阻塞”,可行的解決方法有:1)設(shè)置左轉(zhuǎn)等待區(qū);2)分離左轉(zhuǎn)和直行車道。有經(jīng)驗(yàn)的駕駛員駕車到達(dá)十字路口時(shí),通常不會(huì)選擇左側(cè)車道等待紅燈,擔(dān)心“線端阻塞”發(fā)生也是原因之一。
2 計(jì)算機(jī)網(wǎng)絡(luò)中的線端阻塞現(xiàn)象
計(jì)算機(jī)網(wǎng)絡(luò)中“線端阻塞”與交通管理中的“線端阻塞”有類似的內(nèi)涵。圖2給出了一個(gè)發(fā)生在交換機(jī)中的“線端阻塞”示例。在交換機(jī)中,有三個(gè)端口,端口0是發(fā)送數(shù)據(jù)幀的端口,端口1是接收數(shù)據(jù)幀的擁塞端口,端口2是另一個(gè)接收數(shù)據(jù)幀的非擁塞端口。交換機(jī)采用先進(jìn)先出的輸入緩沖隊(duì)列模式,發(fā)送隊(duì)列中的數(shù)字表示數(shù)據(jù)幀的目的端口號(hào)。
在端口0的發(fā)送隊(duì)列中,有7個(gè)數(shù)據(jù)幀分別發(fā)往端口1、1、2、2、1、2和1。假設(shè)接收端口1 此時(shí)已經(jīng)產(chǎn)生擁塞,隊(duì)列頭部的數(shù)據(jù)幀則不能被及時(shí)處理和發(fā)送,而在隊(duì)列頭部產(chǎn)生擁塞,致使發(fā)往非擁塞接收端口2的數(shù)據(jù)幀也被阻塞。這種現(xiàn)象即為計(jì)算機(jī)網(wǎng)絡(luò)中“線端阻塞”。通常,該現(xiàn)象是“計(jì)算機(jī)網(wǎng)絡(luò)中的一種性能受限的現(xiàn)象,產(chǎn)生的原因是第一個(gè)數(shù)據(jù)幀受阻而導(dǎo)致整個(gè)隊(duì)列的數(shù)據(jù)幀受阻。”該現(xiàn)象發(fā)生在采用輸入緩沖隊(duì)列模式的場(chǎng)景中,從其形成機(jī)理上很容易理解,當(dāng)采用輸出緩沖隊(duì)列模式時(shí)不會(huì)產(chǎn)生“線端阻塞”現(xiàn)象。“線端阻塞”不僅僅產(chǎn)生在計(jì)算機(jī)網(wǎng)絡(luò)的數(shù)據(jù)鏈路層,在計(jì)算機(jī)網(wǎng)絡(luò)的其他協(xié)議層也會(huì)產(chǎn)生該現(xiàn)象,比如傳輸層[3]、應(yīng)用層[4]。
解決“線端阻塞”問題的一個(gè)思路是采用虛擬輸出隊(duì)列技術(shù)[5]。在輸入端設(shè)置多個(gè)虛擬輸出隊(duì)列,每個(gè)輸出隊(duì)列對(duì)應(yīng)一個(gè)接收端口。當(dāng)數(shù)據(jù)到達(dá)輸入隊(duì)列時(shí),根據(jù)其目的端口被及時(shí)移至對(duì)應(yīng)虛擬輸出隊(duì)列中。以圖2為例,在端口0處為端口1和2分別設(shè)置虛擬輸出隊(duì)列1和2。當(dāng)目的端口為1的數(shù)據(jù)幀到達(dá)輸入隊(duì)列時(shí),被移至虛擬隊(duì)列1中,其余數(shù)據(jù)幀同樣被處理。這樣就不會(huì)在輸入隊(duì)列頭部產(chǎn)生擁塞,解決了“線端阻塞”問題。這種解決問題的思路與交通管理中的細(xì)分不同行駛車道的方法有異曲同工之處。
3 線端阻塞的測(cè)試
理解網(wǎng)絡(luò)中是否發(fā)生“線端阻塞”現(xiàn)象的判斷方法不僅有助于學(xué)習(xí)者掌握相關(guān)知識(shí),而且有助于從業(yè)者優(yōu)化網(wǎng)絡(luò)性能。本文以測(cè)試交換機(jī)中的“線端阻塞”為例詳細(xì)解釋測(cè)試方案 、判斷條件等。
圖3是RFC 2889建議的測(cè)試“線端阻塞”的拓?fù)浣Y(jié)構(gòu)[6]。四個(gè)相同的端口組成一個(gè)測(cè)試塊,采用先進(jìn)先出的輸入緩沖隊(duì)列模式,其中兩個(gè)為發(fā)送端口,另外兩個(gè)為接收端口。兩個(gè)發(fā)送端口的負(fù)載分配方案如圖3所示,接收端口2因要接收150%的負(fù)載而產(chǎn)生擁塞,而接收端口1因僅接收50%的負(fù)載而成為非擁塞端口。實(shí)驗(yàn)過程中,按照?qǐng)D3所示的負(fù)載分配方案發(fā)送數(shù)據(jù),在兩個(gè)接收端口記錄接收到的數(shù)據(jù)。
在接收端口2,因?yàn)楫a(chǎn)生了數(shù)據(jù)擁塞,導(dǎo)致發(fā)往接收端口2的部分?jǐn)?shù)據(jù)丟失。在丟失數(shù)據(jù)中,既有來自發(fā)送端口1的,也有發(fā)送端口2的。參考圖2,假設(shè)存在“線端阻塞”現(xiàn)象,因?yàn)榘l(fā)往接收端口2的數(shù)據(jù)產(chǎn)生阻塞,致使發(fā)往接收端口1的部分?jǐn)?shù)據(jù)也被阻塞在發(fā)送端口1,導(dǎo)致接收端口1的丟幀率不為0。基于上述分析,在實(shí)驗(yàn)過程中,只要在接收端口1發(fā)現(xiàn)了丟幀現(xiàn)象,則說明交換機(jī)產(chǎn)生了“線端阻塞”。