專利名稱:多環網多根交換機的檢測和自愈算法的制作方法
技術領域:
本發明涉及工業以太網中數據鏈路層的多環路多根交換機的檢測和自愈算法,采用主從式架構,可以快速的判斷鏈路是否成環,并在成環后可以快速禁用一個端口阻止成環,在鏈路故障的時候可以打開備用端口,恢復通信。本算法可以檢測數據鏈路檢測是否成環,成環后快速禁用一個特定的交換機端口,并且在鏈路故障后打開禁用的端口使鏈路重新恢復正常。同時本算法中支持鏈路中存在多個環路,每個環路都可以檢測和自愈。
背景技術:
通訊領域中交換機的鏈接一般是樹形拓撲結構,樹形拓撲結構造成一條鏈路故障后網絡的各個部分失去聯系。工業現場中的交換機的拓撲結構經常是環形的,任意交換機之間有2個線路可達。環形的拓撲結構會造風暴,引發交換機的MAC地址表異常,所以在工業通訊領域,需要一套檢測交換機成環,并且成環后可以快速禁用交換機的端口,阻止鏈路成環的算法,同時在鏈路產生故障的時候,可以打開禁用的端口,讓通信回復正常。同時鏈路中的環路不止一條,需要區分和分別加以檢測和自愈。
發明內容
相互連接的交換機如果形成環路,造成一種現象就是A交換機發出的報文,最后會被A交換機接收,此時只需要該環路中的一臺交換機斷開一條鏈路就可以阻止成環。本算法選擇環路中MAC地址最小的交換機,讓該交換機負責禁用自己的一個端口阻止環路。 假設交換機A的1 口,發送的數據,最后回到交換機A的2 口,同時交換機的MAC地址在環路中最小,就決定禁用端口編號大的端口。環路中的MAC地址最小的交換機是根交換機。網絡中存在多個環,就有多個根交換機。每個環中的每個根交換機分別負責自己所在環的鏈路檢測和自愈。通過這種方法,可以把一個大的網絡劃分成幾個獨立的小環。根交換機檢測出成環以后,配置根端口,然后在成環的兩個端口分別發出鏈路成環確認報文,該報文中包括根交換機的MAC地址,鏈路編號,鏈路的深度(初始為0),發送的方向(根端口的報文時正方向,另外一個端口是負方向)。環路中的交換機接收這兩個報文,設置自己的屬性,該屬性包含自己在環路中的向上的端口,向下的端口,鏈路的深度等等。同時這些報文會被接收的交換機進行轉發,轉發時深度加1。在一個環路中交換機的角色和端口的角色是不同的,它們的作用和收發報文的類型也不相同。具體的介紹如下交換機角色和端口角色交換機的角色有兩種,分別是根交換機和普通交換機。1、根交換機在一個成環的網絡中,MAC地址最小的交換機是根交換機,它負責禁用自己的端口,阻止鏈路成環,同時在鏈路故障時,負責打開被禁用的端口。2、普通交換機除根交換機以外的交換機都是普通交換機。根交換機的端口角色四種1、根端口 根交換機中連接成環的端口
2、普通端口 根交換機中非連接成環的端口。3、葉子端口 連接終端設備的端口(需要特別指定)4、阻塞端口 根交換機中被禁用的端口普通交換機的端口角色有四種1、向上端口 向上連接到根交換機中連接成環的端口2、葉子端口 連接終端設備的端口(需要特別指定)3、向下端口 出了 1和2的端口外其他類型的端口。4、待定端口 不是上述三種端口的任何一種環路中的交換機它們的角色不同,它們保留了不同的端口屬性,普通交換機的端口屬性包含根MAC地址,向上的MAC地址,鏈路編號,深度編號(從根交換機到本交換機的中間經過的交換機的個數)。可以根據根MAC和鏈路編號區分出各個不同的環。所有屬性在初始化時都是0,然后收到根交換機發出的鏈路成環的確認報文,進行計算和更新。交換機可能參與了多個環,鏈路編號和深度編號不相等,根MAC地址和向上的 MAC地址不相等。發送報文的類型1、鏈路連上的hello報文交換機的端口打開,相鄰的兩臺交換機之間發送的報文,該報文不會被接受方轉發。該報文包含交換機的屬性。2、鏈路連上通知報文交換機的端口打開,打開的端口發送的報文,該報文會被接受方接受轉發和修改。3、檢測成環確認報文環路檢測出成環以后,根交換機發出確認成環報文,報文包含根MAC地址,鏈路編號和方向等信息。相連的交換機會接收,修改轉發。檢測成環確認報文中有方向字段,方向包含正方向和負方向兩種可能,分別從兩個不同的端口發出來。4、鏈路斷開的通知報文檢測出鏈路斷開的交換機發出,它順著交換機的向上的端口進行轉發,該報文傳到根交換機后,根交換機以前被打開被阻塞的端口。5、請求鏈路斷開報文鏈路成環以后,鏈路中的鏈路連上通知報文,最終會被發送方接受,但是如果接收方的MAC地址不是鏈路中的最小的MAC地址,它沒有權利禁用自己端口,但是它會發送鏈路斷開的請求報文,該報文會被收到并轉發,最終會被環路中的MAC地址最小的交換機接收并處理。檢測成環根據的hello報文和鏈路連上的通知報文確定的。第一種情況是鏈路沒有檢測出成環,根據鏈路連上通知報文判斷,當交換機的端口連上時對自己所有的端口發出鏈路連上通知報文(報文的內容是自己的MAC,連上的端口,最小的MAC,剛開始等于自己的MAC),對端交換機接收以后,根據自己的MAC和最小的MAC比較,修改最小的MAC,然后轉發出去。報文在鏈路中被轉發,如果線路成環,最終該報文會被最開始的發送方接受,此時判斷接收的MAC和自己的MAC是否相等,并且自己的MAC和最小的MAC相等,處理是下面的步驟A的描述。如果接收的MAC和自己的MAC相等,但是自己的MAC不是最小的MAC,參考步驟B的描述。1、步驟A說明環路中最小MAC地址的交換機在接收端口和最開始的發送端口發出檢測成環確認報文(一個正方向的報文,一個負方向的報文),接受交換機根據這兩種報文設置自己的屬性和確認自己的向上的端口和向下的端口,比如收到正方向的報文,轉發負方向的報文,則該端口是向上的端口,反之則是向下的借口,如果只滿足一種,那么該端口沒有參與成環。2、步驟B的說明鏈路檢測出成環了,但是檢測出來的交換機的MAC地址在鏈路環路中并不是最小的,此時它發出鏈路斷開請求報文,該請求報文被轉發,然后被鏈路中MAC 地址最小的交換機收到,它發現自己的MAC和最小的MAC相等,然后它的接收端口發出鏈路連上的通知報文,最后被自己的其他端口收到,處理過程和步驟A完全相同。第二種方法是鏈路成環后,鏈路中的交換機的屬性已經正確設置完成后。環路中的交換機有新的端口加入進來了,新加入的端口和直接相連的交換機之間發送hello報文。可以按照hello中攜帶的交換機屬性信息判斷鏈路是否成環,如果收到的hello報文中根MAC和交換機保存的交換機屬性集合中的根MAC相等同時鏈路編號一樣,那么肯定成環,此時可以禁用最新打開的那個端口。上面兩種檢測的方式看出在最好情況下通過相連的交換機的2次hello報文的發送和接收和一次交換機的內部的比較和判斷,檢測成環的時間程度取決于鏈路掃描的時間間隔。同時在最差情況小,鏈路的連上通知報文需要在鏈路環上循環一周,如果環路中的交換機個數越多則檢測的時間則越長。同時鏈路中的交換機端口每次連上都發出通知報文, 該報文會被轉發的,所以在剛開始是鏈路中會有多個鏈路連上的通知報文在鏈路中傳遞。交換機內部有一個定時線程,它周期性掃描交換機的每個端口,如果發現交換機的某個交換機的端口斷開,進行判斷該端口的角色,如果該端口是個葉子端口(該端口連接的是終端設備),則不作任何處理。否則判斷交換機的在鏈路中的角色,如果交換機是根交換機,而且斷開的端口是根端口,打開交換機的阻塞端口,如果斷開的端口是阻塞端口, 那么可以不作任何處理。如果該端口是普通端口(沒有連接終端,沒有參與成環的端口), 那么發出鏈路斷開的通知報文。上面的檢測斷開的方法是針對的根交換機,針對普通交換機的檢測方法比較簡單掃描發現交換機的端口,如果端口是葉子端口,則不作任何處理,如果是向下的端口,則從向上的端口發送鏈路斷開的通知報文(同時清空MAC地址庫),該報文沿著向上的鏈路轉發,最終轉發到根交換機,然后跟交換機根據報文的內容打開阻塞大端口。根據上面小結的檢測的鏈路端口斷開和自愈的方法,可以使鏈路重新自愈,但是前提是該鏈路以前被檢測出成環,根交換機禁用了引發阻塞的一個端口。它在最好的情況是斷開的端口剛好是葉子端口,此時交換機可以不作任何處理。如果斷開的端口是根交換機的根端口,只需要打開禁用的端口接口,自愈時間很短決定于端口的掃描時間間隔。如果是非根交換機的端口,如果是葉子則不用處理,如果是向下的端口,那么需要沿著向上的端口發送鏈路斷開的更新通知消息,該消息被接收的交換機向上轉發,一直到根交換機,然后根交換機打開以前被禁用的端口,自愈時間由斷開的交換機到根交換機的深度決定,深度越深則自愈時間越長。
圖1環網檢測示圖2交換機的角色和端口角色圖3交換機屬性設置的過程
圖4通知報文判斷鏈路成環的前半部分圖5通知報文判斷鏈路成環的后半部分圖6 hello報文通知判斷鏈路成環圖7根交換機的端口檢測和自愈
圖8普通交換機的的端口檢測和自愈
具體實施例方式兩臺交換機連上首先兩個交換機之間通過hello報文發送自己的交換機的屬性, 收到報文后進行判斷,如果它們的根交換機MAC相等和鏈路的編號相等且兩種都不是零, 它們以前在一個環路中,它們連上則肯定成環,該端口立即被禁用。否則發出鏈路連上通知報文,該報文被交換機進行轉發,最后回到源發送方進行判斷如果它的MAC最小,那么在收到和發出的兩個端口上發出方向相反的鏈接成環確認報文,接收報文的交換機根據報文的內容設置自己的屬性。源發送方接收到自己發送的報文后,禁用端口中編號大的端口。鏈路斷開的時候,交換機判斷自己的角色和端口的角色,如果是根交換機,斷掉的端口是根端口,那個它打開禁用的端口。如果它是普通交換機,斷掉的端口是向下的端口, 它向上發出鏈路斷開通知報文,該報文一直被轉發,同時接收的交換機情況接收端口的MAC 地址庫,直到被根交換機接收到,然后根交換機打開禁用的端口,鏈路恢復正常。
權利要求
1.工業以太網中數據鏈路層的多環路多根交換機的檢測和自愈算法,其特征是采用主從式架構,可快速判斷鏈路是否成環,并在成環后可快速禁用一個端口阻止成環,同時在鏈路故障的時候可以打開備用端口,恢復通信。
2.根據權利要求說明書1所述的多環路檢測和自愈方法,其特征是鏈路成環后,成環鏈路中MAC最小的交換機設成根交換機,由它負責鏈路的檢測和自愈。
3.根據權利要求說明書1和2所述的多環路檢測方法,其特征是如果存在多個環則有多個根交換機,每個單獨的環可以看成一個獨立的系統,鏈路的檢測和自愈在每個獨立的環中進行檢測和自愈,不會涉及到其它的環。
4.根據權利要求說明書1所述的多環路檢測和自愈方法,其特征是根交換機在成環的兩個端口分別發出方向不同的成環確認報文,環路中的交換機收到這兩個報文后,可以設置自己的向上的端口和向下的端口,同時設置交換機的相關屬性。
5.根據權利要求說明書1所述的多環路檢測和自愈方法,其特征是交換機端口接上后,交換機之間交換各自的屬性,根據屬性報文可以快速判斷是否成環,如果判斷出成環則可以禁用剛才接上的端口,否則發出鏈路接上的探測報文,該探測報文被轉發,如果被自己收到則鏈路成環,然后通知鏈路中最小的MAC地址的交換機執行環路檢測和自愈算法。
6.根據權利要求說明書1所述的多環路檢測和自愈方法,其特征是鏈路斷開后,交換機通過向上的端口,發送鏈路斷開報文,該報文通過向上的端口進行轉發,直到被根交換機收到,然后根交換機負責執行自愈算法,打開以前被禁用的端口。
全文摘要
本發明提出一種運行在數據鏈路層的二層以太網交換機之間的環路檢測和自愈算法,用于提供冗余鏈路,支持鏈路備份。該算法包括1、檢測數據鏈路層的是否成環。2、檢測成環后根據策略,斷開鏈路,阻止成環。3、檢測鏈路中的鏈路斷開。4、鏈路端口后,打開備用的鏈路。
文檔編號H04L29/12GK102546346SQ20121000756
公開日2012年7月4日 申請日期2012年1月11日 優先權日2012年1月11日
發明者周厚明, 崔磊 申請人:武漢邁威光電技術有限公司