stp可以切掉交換乙太網的環路,然而如果你真的不能容忍任何環路,必須使能所有交換機的stp協議,目前很多的本地乙太網都是任意組建的,宗旨在於能用即可,而且很多低端的交換機並不支援stp協議...除了環路問題之外,還有乙個比較隱蔽的問題更容易引入很奇怪的現象,畢竟很多乙太網並不會連成環路,不需要冗餘熱備的情況下,幾乎沒有人故意將網路連成有環的吧。本文考慮這個問題,首先看乙個拓撲:
該拓撲之所以連線乙個環路,是為了雙鏈路熱備,任何時候只有「鏈路1」和「鏈路2」中的一條處在工作狀態,這是通過vrrp來完成的(本文並不討論),問題是,vrrp選中的一條鏈路必須也是stp選中的鏈路,這需要vrrp和stp協商的聯動(本文不討論),在本拓撲中,sw3和sw4使能stp,sw1和sw2比較低端,不支援stp協議,pc的預設閘道器指向r0。現象是這樣的:
pc起初可以通過r0正常訪問外網,然而當鏈路切換之後,pc將不能訪問外網,要等待一段時間後才可以。
為什麼會這樣的,按照常理分析,我們知道當pc訪問外網時,首先會封裝目的位址為r0的mac位址的以太幀,因為r0是下一跳。然而為何資料幀到不了r0呢?明明鏈路是通的啊!?
問題恰恰就在sw1和sw2不支援stp。stp協議說了,當拓撲改變時,所有參與stp協商的交換機都會將其「埠-位址」對映表的壽命設定為乙個很短的時間,使所有的埠-位址對映在拓撲穩定之前全部過期。雖然sw1和sw2不支援stp,但畢竟它們也是標準的乙太網switch,而不是hub,這就說明sw1和sw2也分別有一張對映表,由於它們都不支援stp,因此對映表內容並不受stp的影響,stp會認為sw1和sw2只是一根導線(雙絞線),因此sw1和sw2的對映表並不過期。
起初,假設鏈路1是工作鏈路,此時r0的mac位址在sw2上對應的埠是port1,此時發生了切換,sw4成為根交換機,sw4的port1和port2均成為forwarding狀態,而sw3的乙個埠將blocking,此時pc機發包了,由於pc機的arp表中的r0對應的mac位址並未過期,因此pc機直接發包,目的mac為r0的mac,此資料幀到達sw2後,由於埠-位址對映表還是原來的,所以資料幀從port1發出,資料幀在sw3被丟棄...只有待到pc的arp表的r0項到期或者sw2的埠-位址對映表的r0項過期,資料才會通過鏈路2。sw2的對映表過期自然不必說,如果沒有對應的表項,廣播之。如果pc的arp對應項過期,需要重新arp,而arp請求本來就是廣播的,待到arp回應從鏈路2回來時,sw2將重新學習到r0對應的埠為port2,至於arp回應如何能在sw1到達sw1的port2,是因為arp請求中已經經過了鏈路2到達sw1的port2,pc的mac已經被sw1如此學習到了。
實現乙個簡單的眾籌(ICO)合約
代幣的 在我的另一篇文章 這裡的眾籌合約需要結合代幣合約,乙個非常典型的眾籌專案是eos,大家可以去搜一下。實現乙個眾籌合約需要分為以下幾步 設定眾籌的時間,目標金額,兌換的 指定受益人 實現以太幣和代幣的轉換 受益人,一般是合約建立者 提款或者 投資者 退款 pragma solidity 0.4...
需要乙個證明自己的機會
如果這次沒有找到想要的工作的話,我想我也不會停止學習。工作也好,考試也好,對於目前的我而言,都是急需的鼓勵和證明。也不是證明給別人看,而是給自己乙個交代,給當初的選擇乙個判斷。累了倦了的時候會想,考個博士再回去逍遙幾年算了。可是生活真是由奢入簡難,估計現在過不了不買小熊的生活了。困得腦袋有點兒混,其...
乙個Java程式設計師需要了解的幾個開源協議
今天工作的任務要寫一些跟開源協議相關的約定說明,所以在網上搜尋了一些資料以供參考,下面列出了幾個比較常見的開源協議,如果想要了解其他的協議和詳細了解這些協議,我個人推薦這個 http www.opensource.org licenses mozilla public license apache ...