摘要:目前,各職業院校教學使用的計算機房都建立了局域網,但對于局域網內部的文件傳輸而言,如何保證文件傳輸可靠、快速是一個值得研究的課題。文章主要針對機房局域網的可靠多播技術進行了分析,具有一定的參考價值。
關鍵詞:可靠多播技術;局域網;機房管理
一、需求分析
隨著網絡技術的普及,各學校都建立了局域網,在教學當中利用局域網,老師先講、演示,然后學生操作,這樣能夠達到最佳的教學效果。但對于機房管理及技術人員來說,如何保證局域網內部文件傳輸可靠、快速是值得研究的課題。
可靠多播主要是針對局域網內部進行文件傳輸的有效方案,在局域網內部進行文件傳輸具有傳輸范圍小、接收端數目有限的特點,一般局域網內部不需要連接路由器;多播文件傳輸對實時性要求并不嚴格,但必須保證傳輸數據100%的可靠性。
二、可靠多播模式的選擇
IP多播是一種基于UDP協議的不可靠的傳輸方式,由于其缺少對于數據可靠性的支持:它可能會產生數據包丟失和數據包亂序等錯誤,因此它在網絡音頻/視頻廣播、AOD/VOD、網絡視頻會議等方面應用比較常見;但在可靠性要求很高的文件傳輸中比較少見。基于TCP協議的傳輸方式能夠保證高可靠性,但它不能進行多播傳輸,對網絡的帶寬和服務器要求比較高。為保證可靠性,必須在UDP傳輸服務之上應用層完成數據的可靠性處理,目前可靠多播主要集中在以下三個方面進行研究:
1.基于NAK消息機制的協議
其主要思想是由接收端檢測數據包丟失情況,當檢測到有數據丟失時,等待一定的時間后向服務器發送一個NAK消息,請求服務器重新傳輸丟失的數據包,以此來保證傳輸的可靠性。該類協議設計比較簡單,適合中、小型規模傳輸應用。
2.基于樹形的ACK/NAK協議
這類協議在傳輸網絡中組建一個樹狀的、層次結構的控制節點群,利用這種結構把網絡分成若干區域,每個區域都存在一個管理者,每一個多播節點都屬于某個區域,當本區域內發現有節點發生數據包丟失時,由該管理者在區域內進行數據修復,僅當本區域無法處理時才向上級管理者發送請求,在區域間進行數據修復,因此一般情況下不會要求服務來承擔重發工作,從而降低服務器的負擔。該類協議適合大型規模傳輸應用。
3.基于自主糾錯編碼的協議
這類協議主要應用于單向鏈路中,其基本思想是在數據發送前,通過算法加入一定的冗余信息,接收端先對數據包進行校驗,如果沒有產生錯誤,直接提取有效信息,如果信息有誤,則根據冗余信息進行數據修復。這類協議的優點是實現比較簡單,服務端僅負責數據封O3BAmrHX8vM3P6VJBvIMClBcMevmgTdNSe4/QBSP0s4=裝和發送,不要進行數據重發工作。但接收到的數據不能保證100%的可靠性。
三、數據丟包的檢測與恢復
1.數據丟包的檢測方法
作為文件傳輸系統,必須保證其高可靠性,首先要做的就是如何發現數據包丟失的情況,只有發現數據丟失了,才能想辦法對數據包進行修復或者重傳處理。目前檢測丟包有序列號模式和計時器模式兩種:
序列號模式即基于序號間隔的序列號模式。該模式下所有數據包都進行統一編號,發送方按編號順序進行發送,接收方接收到數據包后對序號進行檢測。其缺點是除非發生多個連續的數據包丟失或者網絡完全中斷時,則很難預測下一數據包到達的時間。
計時器模式即基于時間間隔的計時器模式。在該模式下,發送方定時進行數據發送,正常情況下,接收方等待在某一時間段內會到達的數據包。其缺點是當有時僅僅是網絡阻塞而超過了接收時間,并不是發生數據丟失的情況,也會被錯誤判斷為數據包丟失,因此需要雙方重新協商等待時間。
2.丟包問題由誰來檢測
根據由誰來檢測丟包,可靠多播可以分為基于發送方的丟包檢測方法和基于接收方的丟包檢測方法兩大類。
基于發送方的差錯檢測方法是由發送者負責多播數據的可靠性檢測,發送者在數據傳輸進程中判斷是否出現差錯,一旦發現差錯就啟動重傳機制對出錯的數據包進行重傳。該方法通常使用基于時間間隔的計時器模式來發現差錯,具體實現時規定:所有接收節點接收到數據包后,都要馬上向發送方回復一個ACK信息(肯定確認信息)。具體做法是:發送者發送數據后,啟動一個時間片,如果在該時間片內收到了某一接收者發回的ACK信息,說明數據包已經到達接收方;如果該時間片消耗完畢,還沒有收到某結點的ACK信息,說明發送到該接收節點的數據包丟失;這一方法的優點是實現算法比較簡單;但常常會造成反饋內陷(Feedback Implosion)問題;
基于接收者的差錯檢測方法是由接收方負責多播數據的可靠性檢測,每一個接收者負責自己的數據檢測,一旦發現數據丟失,就啟動重傳機制,這樣,把可靠性檢測分布在各個接收端處理,減輕了服務器的負擔。該方法在具體實現方面,使用上述的序列號模式和計時器模式均可;如果采用序列號模式,當接收的數據包的序號不連續,或者采用計時模式,在約定的時間內沒有接收到數據包時,均認為數據包丟失,由接收端向服務器發送數據包不可到的NAK信息(否定確認信息),要求發送方啟動數據重傳機制,重新獲得丟失的數據包。在數據傳輸過程中,通常發生丟包的幾率是很小的,所以網絡中的NAK信號比ACK信號要少得多,因此本方法可以減少Feedback Implosion問題的發生。
3.如何恢復數據包
檢測數據丟包的目的是要保證數據的完整性,檢測到差錯后,要采取一定的手段來進行修復,目前通常采用重新發送的方法進行數據的修復,即發現數據出錯后,啟動相應的機制,把這部分數據進行重傳來糾正這些錯誤。解決這一問題的方法按恢復的方式分,可以分為單播重傳和多播重傳。
單播重傳:當接收方啟動重傳機制時,由發送者(不一定是多播服務器)與該接收端進行一對一的數據傳輸。這種方式在網絡狀況好、丟包幾率低的環境中比較適合,但當丟包的接收者比較多時,這種方式占用較多的網絡帶寬,最壞的情況就是所有的接收方的數據包都出錯,重傳就等同于傳統的傳輸方式。
多播重傳:當發生數據包丟失時,重新向所有接收者(或某些接收者)以廣播的方式進行數據重發。當大多數接收者接收到的數據是正確的,不需要進行重傳時,這種方式比較浪費資源;它適合于網絡出現故障時,大部分接收者不能正常接收到數據包,此時的效率比單播重傳要高。目前應用中通常采用這兩種方式的組合,由接收者的數目來選擇重傳的方式:要求重傳的節點比較多,則采用多播重傳,要求重傳的節點比較少,則采用單播重傳。
按恢復的實施者來分,可以分為集中式恢復和分布式恢復。
集中式重傳:這種方式中,啟動重傳機制時,由發送方(多播服務器或多播服務器群)向接收方以多播或單播的方式重新發送數據包。其優點是算法實現簡單,缺點是發送方的負擔加重,因為同一個數據包可能要發送多次。
分布式重傳:為減輕集中式重傳中發送方的負擔,重發工作可以由某一個已經接收到完整數據包的接收者來完成,通常在樹狀多播傳輸中使用,并且還可以在多個分支內部選取一個接收者對出錯接收者進行重傳,這樣效率更快。
本文分析了局域網內部文件交換的可靠多播技術,對其中的IP多播技術、丟包檢測方法和包數據恢復進行了詳細分析,對于廣大的高校機房管理人員而言具有十分重要的參考和應用價值。
參考文獻:
[1] 王麗群.IP組播及其應用[J].教育信息化,2002,(8).
[2] 王際洲,賴雋文,楊壽保.可靠組播的差錯控制技術研究
[J].計算機應用,2000,20(9):45~48.