交換機的 直通轉發 和 存儲轉發


(1)、直通交換bai方式(Cut-through)
采用直通交換方du式的以太網zhi交換機可以理解為在各dao端口間是縱橫交叉的線路矩陣電話交換機。它在輸入端口檢測到一個數據包時,檢查該包的包頭,獲取包的目的地址,啟動內部的動態查找表轉換成相應的輸出端口,在輸入與輸出交叉處接通,把數據包直通到相應的端口,實現交換功能。由於它只檢查數據包的包頭(通常只檢查14個字節),不需要存儲,所以切入方式具有延遲小,交換速度快的優點。所謂延遲(Latency)是指數據包進入一個網絡設備到離開該設備所花的時間。
它的缺點主要有三個方面:一是因為數據包內容並沒有被以太網交換機保存下來,所以無法檢查所傳送的數據包是否有誤,不能提供錯誤檢測能力;第二,由於沒有緩存,不能將具有不同速率的輸入/輸出端口直接接通,而且容易丟包。如果要連到高速網絡上,如提供快速以太網(100BASE-T)、FDDI或ATM連接,就不能簡單地將輸入/輸出端口“接通”,因為輸入/輸出端口間有速度上的差異,必須提供緩存;第三,當以太網交換機的端口增加時,交換矩陣變得越來越復雜,實現起來就越困難。 
(2)、存儲轉發方式(Store-and-Forward)
存儲轉發(Store and Forward)是計算機網絡領域使用得最為廣泛的技術之一,以太網交換機的控制器先將輸入端口到來的數據包緩存起來,先檢查數據包是否正確,並過濾掉沖突包錯誤。確定包正確后,取出目的地址,通過查找表找到想要發送的輸出端口地址,然后將該包發送出去。正因如此,存儲轉發方式在數據處理時延時大,這是它的不足,但是它可以對進入交換機的數據包進行錯誤檢測,並且能支持不同速度的輸入/輸出端口間的交換,可有效地改善網絡性能。它的另一優點就是這種交換方式支持不同速度端口間的轉換,保持高速端口和低速端口間協同工作。實現的辦法是將10Mbps低速包存儲起來,再通過100Mbps速率轉發到端口上。 
(3)、碎片隔離式(Fragment Free)
這是介於直通式和存儲轉發式之間的一種解決方案。它在轉發前先檢查數據包的長度是否夠64個字節(512 bit),如果小於64字節,說明是假包(或稱殘幀),則丟棄該包;如果大於64字節,則發送該包。該方式的數據處理速度比存儲轉發方式快,但比直通式慢,但由於能夠避免殘幀的轉發,所以被廣泛應用於低檔交換機中。
使用這類交換技術的交換機一般是使用了一種特殊的緩存。這種緩存是一種先進先出的FIFO(First In First Out),比特從一端進入然后再以同樣的順序從另一端出來。當幀被接收時,它被保存在FIFO中。如果幀以小於512比特的長度結束,那么FIFO中的內容(殘幀)就會被丟棄。因此,不存在普通直通轉發交換機存在的殘幀轉發問題,是一個非常好的解決方案。數據包在轉發之前將被緩存保存下來,從而確保碰撞碎片不通過網絡傳播,能夠在很大程度上提高網絡傳輸效率。

 

------------------------------------------------------------------------------

 

1.直通轉發(cut-through switching )

2.存儲轉發(Store-and-Forward switching)

3.無碎片轉發(segment-free switching)

 

由於第三種方法主要是第一種“直通轉發”的變形,所以只着重介紹第一二種方法。



無論式直通轉發還是存儲轉發都是一種二層的轉發方式,而且它們的轉發策略都是基於 目的MAC(DMAC)的,在這一點上這兩種轉發方式沒有區別。

它們之間的最大區別在於,它們何時去處理轉發,也就是交換機怎樣去處理數據包的接收進程和轉發進程的關系。下面具體來看

存儲轉發(Store-and-Forward switching):

存儲轉發是一種傳統的轉發方式,是最早使用的一種轉發方法。




如圖一所示,這是一個數據幀的結構圖,首先需要說的一點是:數據進入交換機是從圖中的左向右進入的,也就是先從”Preamble"這個起始字段進入,不要理解反了,雖然這個問題很bc,不過我發現確實有人存在這個問題。

下面我來描述一下存儲轉發的過程:首先交換機啟動接收進程,開始收取幀,從"Preamble"字段開始,一直到最后的CRC,當這個完整的幀收取完成之后,交換機開始啟動轉發進程,根據接收幀所示的DMAC,也就是目標MAC地址來決定轉發策略,如果在MAC地址表中存在那么轉發到相對應的端口,如果不存在則泛洪到所有端口。

這樣的一個轉發過程就帶來了一些關於存儲轉發的特征:

1.錯誤檢驗功能

這里先來介紹一下CRC,對於CRC的具體定義我們可以不管,我們只需知道CRC的作用是對前面的數據進行校驗,防止出錯。

由於存儲轉發 只有當收取了整個幀之后才開始轉發進程,所以當收取到CRC字段的時候,可以進行錯誤的校驗,交換機把已經收到的數據進行CRC計算,把計算出來的值同接收到的CRC字段的值進行比較,如果兩者相同則說明數據沒有被破壞,如果不同則說明已經破壞。

2.自動緩存。這個不用多說,主要體現了存儲轉發的存儲功能。

3.策略功能。換句話說也就是ACL訪問控制列表的功能,訪問控制列表主要是通過策略來對數據進行控制,ACL所涉及的控制層面從OSI的第二層到第七層都有,既然存儲轉發把整個幀都存儲下來了,那么可以想像如果交換機擁有了處理多層數據的能力就可以執行ACL了,畢竟ACL所參照的目標在接收的幀中都已經存在了。



以上是存儲轉發的一些特點,可以看到存儲轉發所能提供的特點還是很具有誘惑力的,也很完善,但是存儲轉發有一個致命的弱點就是速度問題。轉發幀的時候先存儲,然后進行處理之后才能放到轉發隊列中,這樣繁瑣的過程會影響響應速度,也就造成了高延遲的現象。



為了解決 存儲轉發 的時間問題,開發出了直通轉發 方法。下面我們繼續來看:

能開發出直通轉發是需要理論基礎的,在前文我已經說過了,二層交換機的轉發是二層轉發,也就是說交換機轉發的策略是基於二層的,是基於MAC地址的,更具體的說是基於目標MAC(DMAC)的。這樣如果想要加快轉發速度我們根本就沒有必要等一個完整的幀收取之后再轉發,理論上最快只需要等收到目標MAC之后就可以開啟轉發進程。





  

這就是直通轉發的基本原理,同時也給它帶來了一些特點:

1.失去了錯誤檢查的能力

由於直通轉發過程根本就沒有接收到完整的數據包就進行轉發了,所以無法進行CRC校驗,也就無法進行錯誤檢查,這個工作只能落在HOST上了。

2.加快了轉發速度,減少了延遲。對比兩種交換原理,不難看出在速度上是有很大提高的。

3.ACL?

上文說了,存儲轉發可以啟用ACL,那么在直通轉發可以嗎?

這個也是可以的。我們要把握這一條:直通轉發是靈活的,這才是直通轉發的精髓,直通轉發最少要檢測到DMAC之后才可以開啟轉發進程,但是也可以多等一段時間,多收取一些數據(IP層,傳輸層)再開始轉發,它是十分靈活的。如果我們要啟用ACL或者是QoS就可以在直通轉發的策略上進行設置。

舉例來說,如果交換機從F0/1接收數據,在這個接口上啟用了基於IP的ACL,這樣直通轉發就會當接收到IP包頭之后才基於ACL啟動轉發進程,決定是否轉發。當然,如果啟動了基於UDP的ACL,這樣直通轉發就會等到接收到UDP頭的時候才啟動轉發進程,決定是否轉發。

如果在接口上沒有設置ACL,直通轉發進程也一般會讀取IP包頭之后才啟動轉發進程。

4.EtherType Field

其實在上面的一段中是有一個問題的,不知道大家發現沒有,那就是如果在f0/1上發送的不是基於IP的包,那么直通進程怎么判別呢?是收到MAC之后就轉發還是多收取一部分數據再轉發?為了解決這個問題就需要EtherType Field,在圖一中可以發現這個區域是幀頭的最后一個,里面記錄了高層(第三層)是什么類型,直通轉發讀取到這一層之后就可以判別了。拿上面的例子來說,如果接收的第三層包不是基於IP的,那么也就不收到IP ACL的限制了。



還有一種轉發方式叫做“無碎片轉發”這種轉發方式其實是和直通轉發一樣的,只是比直通轉發收取了更多的信息之后再進行轉發,無碎片轉發就是收取64字節才開始轉發的,減少了轉發出錯的幾率。



另外我還是再簡單的講一下為什么要把64字節做一個“坎”:在一個正確設計的網絡中,沖突的發現會在源發送64個字節之前發現,當出現沖突之后源會停止繼續發送但是這一段小於64字節的不完整以太幀已經被發送出去了,但是它是沒有意義的,所以檢查64字節以前就可以把這些“碎片”幀DROP掉。這也是“無碎片轉發”名字的由來。



其實在直通轉發中還有許多特性,但是這所有特性都是一種基於策略的,比如ChannelPort的負載均衡可能根據SMAC,DMAC或者DIP, SIP,甚至是UDP,TCP來決定的,把這些數據經過散列計算之后出現的數值來進行不同端口的發送,而要實現這一功能需要的就是SMAC,DMAC, SIP,DIP,UDP,TCP這些信息,而直通轉發只要多等一段時間收集信息之后就可以了,本質上跟上文舉出的特點是一樣的。



不過,由於現在網絡速度的加快和內部CPU處理速度的增強,直通轉發和無碎片轉發的速度優勢已經不那么明顯了,它們不能檢驗錯誤的弱點逐漸明顯。



另:如果在兩個不同的媒體介質上傳播數據,必須使用存儲轉發方式。



參考資料:Cisco Documents NO.C11-465436-00 04/08

《Cisco Press LAN Switching》 Clark.2002

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM