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