在數(shù)據(jù)傳輸過程中,有時(shí)候雖然設(shè)備之間的連接是正常的,但是也會發(fā)生通信故障。如在傳輸一個(gè)大型文件的時(shí)候,網(wǎng)絡(luò)明明是連接正常的,但是會突然冒出一個(gè)“文件傳送失敗”的錯(cuò)誤,或者接收成功的文件無法正常打開。這主要都是因?yàn)樵谖募魉偷倪^程中出現(xiàn)了數(shù)據(jù)丟失的情況。眾所周知,在網(wǎng)絡(luò)中傳送數(shù)據(jù)的時(shí)候,在發(fā)送端會將需要傳送的數(shù)據(jù)文件分割成一個(gè)個(gè)固定長度的數(shù)據(jù)塊;然后再在接收端進(jìn)行組裝。在這個(gè)傳送的過程中,如果有一個(gè)數(shù)據(jù)塊丟失,就會發(fā)生以上的錯(cuò)誤。為此網(wǎng)絡(luò)工程師要設(shè)計(jì)一個(gè)穩(wěn)定的網(wǎng)絡(luò),就必須要考慮到數(shù)據(jù)丟失這種意外情況。即在網(wǎng)絡(luò)設(shè)計(jì)中,采取必要的措施避免這種情況的發(fā)生。

一、數(shù)據(jù)丟失發(fā)生的原因
如上圖所示,當(dāng)網(wǎng)絡(luò)中的文件服務(wù)器將某個(gè)文件發(fā)送到交換機(jī)A中,有可能會發(fā)生流量丟失的情況。當(dāng)交換機(jī)A將文件傳送到交換機(jī)B中,也有可能發(fā)生流量丟失的問題。也就是說,在任何兩臺設(shè)備之間,只要涉及到數(shù)據(jù)的轉(zhuǎn)發(fā),那么就都有可能發(fā)生流量丟失的情況。這主要是什么原因造成的呢?
其實(shí)這主要是因?yàn)閮膳_不同設(shè)備之間緩沖區(qū)的大小不同所造成的。如發(fā)送端(交換機(jī)A)的緩沖區(qū)比較大,而接收端(交換機(jī)B)的緩沖區(qū)比較小。當(dāng)交換機(jī)A將數(shù)據(jù)流量源源不斷的發(fā)送到交換機(jī)B的過程中,由于交換機(jī)A的緩沖區(qū)要比交換機(jī)B大,那么交換機(jī)B的緩沖區(qū)就裝不下這么多流量。如果交換機(jī)B不不能夠很快的釋放其緩存區(qū)中的數(shù)據(jù),那么在交換機(jī)B中就可能發(fā)生緩沖區(qū)溢出故障,從而發(fā)生數(shù)據(jù)流量的丟失。
不過即時(shí)兩臺設(shè)備的數(shù)據(jù)緩沖區(qū)大小相同,但是由于其他一些方面的原因,也會造成數(shù)據(jù)流量的丟失。或者說,接收端與發(fā)送端具有相同的工作效率,發(fā)送端也可能會發(fā)生緩沖區(qū)溢出的故障。如可能因?yàn)槟硞€(gè)網(wǎng)絡(luò)設(shè)備內(nèi)在的瓶頸或者下流設(shè)備(如下游交換機(jī)故障)的原因,接收設(shè)備無法及時(shí)將數(shù)據(jù)發(fā)送出去,從而不能夠足夠快的清空接收緩沖區(qū)。此時(shí)發(fā)送端不知道這種情況,仍然源源不斷的將數(shù)據(jù)發(fā)送過來,此時(shí)就難免會發(fā)送緩沖區(qū)溢出的故障,從而導(dǎo)致數(shù)據(jù)流量丟失。所以雖然通過整體升級網(wǎng)絡(luò)設(shè)備,讓同級設(shè)備之間具有近似的緩沖區(qū)與工作效率,可以在一定程度上降低數(shù)據(jù)流量丟失的故障。但是不能夠從根本上解決這個(gè)問題。為此我們還是需要尋求其他的解決方式。
二、利用流量控制功能來減少設(shè)備之間的流量丟失
在IEEE802.3種,提出了流量控制的特性。通過這個(gè)特性,就可以有效的避免設(shè)備之間的流量丟失。不過可惜的是,并不是所有的網(wǎng)絡(luò)設(shè)備都支持這個(gè)特性。雖然如此,為了避免上述的數(shù)據(jù)流量丟失錯(cuò)誤,筆者還是建議盡可能的采用流量控制功能來防止數(shù)據(jù)流量丟失。這個(gè)數(shù)據(jù)流量控制功能的工作原理比較簡單,其提供了一種在兩臺設(shè)備之間,或者精確的說,是在鏈路伙伴之間提供一種緩沖區(qū)是否滿的這種情況進(jìn)行溝通的一種手段。當(dāng)鏈路伙伴發(fā)現(xiàn)對端設(shè)備的緩沖區(qū)已經(jīng)滿了,則將停止發(fā)送數(shù)據(jù)流量,并且在對端設(shè)備表明它具有接收流量的能力之后(緩沖區(qū)得到一定的釋放之后)再重新發(fā)送流量。其實(shí),這個(gè)特性只是對QOS特性的一個(gè)補(bǔ)充。網(wǎng)絡(luò)工程師普遍認(rèn)為,這個(gè)特性有助于解決緩沖區(qū)溢出導(dǎo)致的數(shù)據(jù)流量丟失問題。
如上圖所示,當(dāng)交換機(jī)B發(fā)現(xiàn)自己的緩沖區(qū)已滿無法接收更多的數(shù)據(jù)時(shí),就會向其鏈接伙伴交換機(jī)A發(fā)送消息,告知自己的緩沖區(qū)已經(jīng)滿了無法再接收新的數(shù)據(jù)。此時(shí)交換機(jī)B就會停止向其發(fā)送新的數(shù)據(jù),直到交換機(jī)B再次發(fā)送消息給交換機(jī)A,可以重新發(fā)數(shù)據(jù)為止。在流量控制特性中,網(wǎng)絡(luò)設(shè)備是使用特定的數(shù)據(jù)正來通知鏈路伙伴網(wǎng)絡(luò)設(shè)備來延遲一段特定的時(shí)間后再重新發(fā)送數(shù)據(jù)。那么這個(gè)特定的時(shí)間是多少呢?根據(jù)現(xiàn)在的網(wǎng)絡(luò)通行標(biāo)準(zhǔn),這個(gè)時(shí)間不是有用戶或者網(wǎng)絡(luò)管理員配置的。而是接收端根據(jù)實(shí)際情況來自動確定的,或者說是根據(jù)接收端的交換機(jī)等網(wǎng)絡(luò)設(shè)備的端口邏輯來確定的。通常情況下,網(wǎng)絡(luò)管理員不需要關(guān)注這個(gè)時(shí)間是多少,只需要了解此時(shí)會發(fā)生數(shù)據(jù)延遲。這也是采用數(shù)據(jù)流量控制所帶來的一個(gè)負(fù)面作用。不過話說回來,比起數(shù)據(jù)流量丟失來說,這個(gè)數(shù)據(jù)延遲還是可以接受的。畢竟只要能夠完全接收數(shù)據(jù),即使發(fā)送數(shù)據(jù)延遲的話,至少這個(gè)數(shù)據(jù)還可以正常使用。相反,只要一發(fā)生數(shù)據(jù)流量丟失,無法完整的受到全部數(shù)據(jù),那么這個(gè)文件就無法正常使用。
三、在思科系列交換機(jī)上啟用流量控制特性
現(xiàn)在大部分的思科交換機(jī)都支持這個(gè)流量控制特性。如在基于IOS軟件的交換機(jī)中,可以通過執(zhí)行如下命令來啟動這個(gè)功能。
Flowcontrol {receive/send} {on/desired/off}
其中關(guān)鍵字receive表示網(wǎng)絡(luò)設(shè)備的接口是否處理接收到的表示緩沖區(qū)滿的特定楨(一般把這個(gè)楨叫做暫停楨)。而關(guān)鍵字send表示交換機(jī)等網(wǎng)絡(luò)設(shè)備的接口在發(fā)生擁塞的情況下是否發(fā)送暫停楨,即是否通知鏈接伙伴自己的緩沖區(qū)已滿,暫停發(fā)送數(shù)據(jù)。在思科交換機(jī)上啟用流量控制特性的時(shí)候,筆者認(rèn)為需要注意如下幾個(gè)問題。
首先是需要考慮到兼容性。也就是說,為了讓這個(gè)特性發(fā)揮應(yīng)有的作用,一般要求相關(guān)的網(wǎng)絡(luò)設(shè)備都啟用這個(gè)特性。如果某個(gè)鏈接伙伴沒有啟用這個(gè)特性的話,則仍然會發(fā)生數(shù)據(jù)流量丟失的問題,甚至還會造成其他的數(shù)據(jù)通信故障,從而使得功虧一簣。但是由于企業(yè)網(wǎng)絡(luò)設(shè)備購買時(shí)間不同,為此如果讓網(wǎng)絡(luò)管理員去一一確認(rèn)網(wǎng)絡(luò)設(shè)備是否開啟了這個(gè)特性,具有一定的難度。而且每加入一個(gè)網(wǎng)絡(luò)設(shè)備,都需要確認(rèn)一下,靈活性不高。為此筆者建議,平時(shí)最好將這個(gè)參數(shù)的值設(shè)置為desired。這個(gè)參數(shù)表示“請求實(shí)現(xiàn)”的意思。也就是說,如果將交換機(jī)的端口設(shè)置為這個(gè)值,那么交換機(jī)會根據(jù)實(shí)際情況來判斷是否需要開啟流量控制特性。首先其會請求鏈路伙伴開啟這個(gè)特性。如果對方設(shè)備支持這個(gè)特性的話,那么在接收端與發(fā)送端都會采用數(shù)據(jù)流量控制特性。但是如果鏈路伙伴的另一端不支持這個(gè)特性,那么這個(gè)接口在數(shù)據(jù)傳輸?shù)倪^程中也會關(guān)掉這個(gè)特性,從而保證數(shù)據(jù)的正確傳輸。這種自動協(xié)商機(jī)制,跟IPSec安全措施中的協(xié)商機(jī)制有著異曲同工之妙。
其次需要注意的是,數(shù)據(jù)流量丟失往往跟設(shè)備的配置沒有直接的關(guān)系。如思科高端交換機(jī)與具有吉比特網(wǎng)卡的服務(wù)器之間也有可能因?yàn)榫彌_區(qū)溢出而發(fā)生數(shù)據(jù)流量丟失的情況。這主要是因?yàn)榭赡艹霈F(xiàn)網(wǎng)絡(luò)擁塞或者下游設(shè)備故障所造成的。總之,光升級網(wǎng)絡(luò)設(shè)備還不能夠徹底的解決這個(gè)問題。為了避免因網(wǎng)絡(luò)擁塞等原因造成數(shù)據(jù)包丟失,筆者強(qiáng)烈建議對于網(wǎng)絡(luò)設(shè)備采用流量控制的特性。特別是在關(guān)鍵或者高端服務(wù)器和工作站的配置中,要啟用這個(gè)特性。當(dāng)然,有時(shí)候企業(yè)可能需要更換不支持這個(gè)特性的網(wǎng)絡(luò)設(shè)備。但是筆者認(rèn)為,這個(gè)投資還是有必要的。