<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 工業(yè)以太網(wǎng)冗余原理分析及解決機制

          工業(yè)以太網(wǎng)冗余原理分析及解決機制

          作者: 時間:2012-04-08 來源:網(wǎng)絡 收藏

          1、引言

          在一個橋接的局域網(wǎng)里,為了增強可靠性,必然要建立一個冗余的路徑,網(wǎng)段會用冗余的網(wǎng)橋連接。但是,在一個透明橋橋接的網(wǎng)絡里,存在冗余的路徑就能建立一個橋回路,橋回路對于一個局域網(wǎng)是致命的。它會帶來如下問題:

          A.廣播風暴
          B.同一幀的多份拷貝
          C.不穩(wěn)定的MAC地址表

          因此,在交換網(wǎng)絡中必須有一個來阻止回路。

          2、生成樹協(xié)議

          生成樹協(xié)議就是IT界中常用的.生成樹協(xié)議是一種橋嵌套協(xié)議,在IEEE 802.1d規(guī)范里定義,可以用來消除橋回路。它的工作是這樣的:生成樹協(xié)議定義了一個數(shù)據(jù)包,叫做橋協(xié)議數(shù)據(jù)單元BPDU(Bridge Protocol Data Unit)。網(wǎng)橋用BPDU來相互通信,并用BPDU的相關機能來動態(tài)選擇根橋和備份橋。但是因為從中心橋到任何網(wǎng)段只有一個路徑存在,所以橋回路被消除。

          在一個生成樹環(huán)境里,橋不會立即開始轉發(fā)功能,它們必須首先選擇一個橋為根橋,然后建立一個指定路徑。在一個網(wǎng)絡里邊擁有最低橋ID的將變成一個根橋,全部的生成樹網(wǎng)絡里面只有一個根橋。根橋的主要職責是定期發(fā)送配置信息,然后這種配置信息將會被所有的指定橋發(fā)送。這在生成樹網(wǎng)絡里面是一種,一旦網(wǎng)絡結構發(fā)生變化,網(wǎng)絡狀態(tài)將會重新配置。

          當選定根橋之后,在轉發(fā)數(shù)據(jù)包之前,它們必須決定每一個網(wǎng)段的指定橋,運用生成樹的這種算法,根橋每隔2秒鐘從它所有的端口發(fā)送BPDU包,BPDU包被所有的橋從它們的根端口復制過來,根端口是接根橋的那些橋端口。BPDU包括的信息叫做端口的COST,網(wǎng)絡管理員分配端口的COST到所有的橋端口,當根橋發(fā)送BPDU的時候,根橋設置它的端口值為零。然后沿著這條路徑,下一個橋增加它的配置端口COST為一個值,這個值是它接收和轉發(fā)數(shù)據(jù)包到下一個網(wǎng)段的值。這樣每一個橋都增加它的端口的COST值為它所接收的BPDU的包的COST值,所有的橋都檢測它們的端口的COST值,擁有最低端口的COST值的橋就變?yōu)榱酥付ǖ臉颉碛斜容^高端口COST值的橋置它的端口進入阻塞狀態(tài),變?yōu)榱藗浞輼颉T谧枞麪顟B(tài),一個橋停止了轉發(fā),但是它會繼續(xù)接收和處理BPDU數(shù)據(jù)包。

          IEEE 802.1D規(guī)范包括了生成樹算法(Spanning Tree Algorithm,STA),這是一種確保轉發(fā)循環(huán)永遠不會發(fā)生的機制。 STA使用網(wǎng)橋協(xié)議數(shù)據(jù)單元(Bridge Protocol Data Units,BPDU),自動配置網(wǎng)橋上處于轉發(fā)或阻塞狀態(tài)的獨立端口。BPDU是網(wǎng)橋發(fā)送到一個已保存的多播MAC地址(對于,這個地址是01-80-C2-00-00-00)的消息,所有透明網(wǎng)橋都會偵聽該地址。在阻塞狀態(tài)下,端口不會獲悉或轉發(fā)已接收到的幀。STA的最終結果是一個無循環(huán)的橋接環(huán)境,不管局域網(wǎng)網(wǎng)段拓撲結構是否改變,這個環(huán)境總是一直存在。生成樹算法,決定了網(wǎng)絡鏈路故障恢復時間,最少不低于15秒。

          生成樹的狀態(tài):

          運行生成樹協(xié)議的交換機上的端口,總是處于下面五個狀態(tài)中的一個:

          阻塞:所有端口以阻塞狀態(tài)啟動以防止回路,由生成樹確定哪個端口切換為轉發(fā)狀態(tài),處于阻塞狀態(tài)的端口不轉發(fā)數(shù)據(jù)幀但可接受BPDU。
          監(jiān)聽:不轉發(fā)數(shù)據(jù)幀,但檢測BPDU(臨時狀態(tài))。
          學習:不轉發(fā)數(shù)據(jù)幀,但學習MAC地址表(臨時狀態(tài))。
          轉發(fā):可以傳送和接受數(shù)據(jù)數(shù)據(jù)幀。
          禁用:通常由于端口故障或交換機配置錯誤引起.

          3、Supreme-Ring協(xié)議

          Supreme-Ring協(xié)議是在使用的冗余機制。Supreme-Ring協(xié)議和生成樹協(xié)議有點相似,Supreme-Ring協(xié)議也定義了一種數(shù)據(jù)包,稱為HELLO包,又稱為WD包(Watch Dog Packets)。交換機之間用HELLO包通信,在主交換機上動態(tài)選擇主鏈路和備份鏈路。但是因為從中心橋到任何網(wǎng)段只有一個路徑存在,所以橋回路被消除。

          冗余環(huán)網(wǎng)網(wǎng)絡環(huán)境里,交換機不會立即開始轉發(fā)功能,主交換機(Local)由手動指定,選擇主鏈路和備份鏈路建立一個指定路徑,由Supreme-Ring協(xié)議自動指定。一個冗余環(huán)網(wǎng)網(wǎng)絡里面只能有一個主交換機(Local)。主交換機(Local)會定期發(fā)送配置信息,這種配置信息將會被所有的從交換機(Remote)發(fā)送。一旦網(wǎng)絡結構發(fā)生變化,網(wǎng)絡狀態(tài)將會重新配置。

          當指定主交換機(Local)之后,在轉發(fā)數(shù)據(jù)包之前,所有端口都以阻塞方式啟動。運用Supreme-Ring算法,主交換機(Local)選擇最低COST值的端口作為主鏈路,另一條COST值高的端口作為備份鏈路。備份鏈路不轉發(fā)數(shù)據(jù),只接收和處理HELLO包,處于熱備(Hot Standby)狀態(tài)。從交換機(Remote)沒有主鏈路和備份鏈路的區(qū)別。Supreme-Ring協(xié)議是一種簡潔高效的冗余協(xié)議,能夠保證環(huán)網(wǎng)在鏈路故障時,在300ms之內恢復網(wǎng)絡通信。

          Supreme-Ring的狀態(tài):

          運行Supreme-Ring協(xié)議的交換機上的端口,總是處于下面四個狀態(tài)中的一個:

          阻塞:所有端口以阻塞狀態(tài)啟動以防止回路,處于阻塞狀態(tài)的端口不轉發(fā)數(shù)據(jù)幀但可接受HELLO包。
          熱備:不轉發(fā)數(shù)據(jù)幀,但學習MAC地址表,在主鏈路故障時,在300ms之內,立刻進入轉發(fā)狀態(tài)。
          轉發(fā):可以傳送和接受數(shù)據(jù)數(shù)據(jù)幀。
          禁用:通常由于端口故障或交換機配置錯誤引起。

          4、結束語

          工業(yè)網(wǎng)絡環(huán)境需要快速反應冗余機制,生成樹協(xié)議的15秒恢復時間,不能滿足工業(yè)環(huán)境要求。只有采用Supreme-Ring協(xié)議才是工業(yè)網(wǎng)絡環(huán)境的最佳冗余機制。

          本文引用地址:http://www.ex-cimer.com/article/155114.htm


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();