專利名稱:一種網絡接入設備lan側環路檢測與控制方法
技術領域:
本發明涉及局域網技術領域,特別涉及網絡接入設備LAN側環路檢測與控制方法。
背景技術:
網絡接入設備一側是WAN側,另一側是LAN側,它是將LAN與WAN連接的設備,將網絡接入設備的WAN側為上行側,LAN側為下行側,LAN 一側的端口稱為下行端口。在用戶多臺網絡接入設備組成的網絡拓撲中,下行端口一旦連線不當極容易在設備之間產生環路,如果設備處于環路狀態,報文將會不斷地在設備中循環接收與轉發,從而必將導致環路風暴,而一旦環路風暴形成,設備的CPU將疲于接收與轉發少則數萬每秒多則數百萬每秒的數據報文,而無暇處理正常通信的網絡報文。兩種常見的會導致網絡接入設備環路的網絡拓撲包括
設備端口自環,其中端口可以是同一個端口,或者是同一個設備下的兩個不同端口。同一個端口導致的自環一般是由于設置了設備芯片的寄存器導致,在日常應用中用戶一般不會涉及到此專業類操作。而不同端口的自環則可以輕易做到,如一根網線將設備不同的兩個下行A與B端口對接起來。即設備從A端口發出去的數據報文又原封不動的通過B端口收上來。設備下掛交換機或者集線器自環,這種環路是最常見的,另外這種環路還存在隱蔽性,不輕易被發現。如果設備下掛的交換機自身沒有環路風暴隔離的功能,而剛巧下掛的交換機或者集線器本身已經產生環路了,對于設備來說,從某一端口發出去的數據報文在交換機或者集線器HUB中繞了一周再從同樣端口進來。以上兩種環路情況從某個端口收上來的數據包,如果不加以判斷且沒有相關措施的限制與防范,同樣的數據報文將還會通過前一次的方法以及途徑轉發出去,結果是同樣的數據報文從相同或者不同的端口再次被接收,如此循環即導致環路風暴,影響正常網絡通信。
發明內容
為解決目前網絡拉入設備LAN側端口可能環路帶來的環路風暴,影響正常網絡通信的不足,本發明提供一種網絡接入設備LAN側環路檢測與控制方法。本發明為了完成其技術目的所采用的技術方案是一種網絡接入設備LAN側環路檢測與控制方法,包括以下步驟,
A、設備初始化時將被檢測的網絡接入設備的所有下行端口設置成相同的MAC地址,在系統運行過程中,所有下行端口的MAC地址保持一樣不做改變;
B、每隔設定時間TME1,由應用層進程即時產生的環路探測報文經由網絡接入設備任一下行端口向LAN廣播發送環路探測報文;
C、系統內核鏈路層通過循環檢查每一個達到系統網絡協議棧的以太網報文,若發現該以太網報文的源MAC地址為下行端口的MAC地址則認為設備處于環路之中,內核中鏈路層轉入步驟D,否則對所接收報文不做處理,內核鏈路層繼續負責所有端口數據報文的收發工作,應用層進程轉向步驟B ;
D、內核鏈路層將所有收到環路探測報文的端口和發送環路探測報文的端口關閉,關閉后繼續負責其他未關閉端口數據報文的收發工作,應用層進程轉向步驟E ;
E、關閉端口即切斷設備的環路狀態,應用層進程等待設定時間TIME2后,將關閉的端口重新打開,跳轉到步驟B。本發明通過由網絡接入設備從LAN側的任一下行端口廣播環路探測報文,然后通過檢測所有的下行端口是否收到該探測報文來判斷是否存在環路,當存在環路時有效地將環路狀態進行屏蔽,可以基本杜絕網絡接入設置LAN 側陷入到環路風暴的危險。下面通過結合具體實施例和附圖對本發明進行進一步的說明。
附圖I是本發明實施例I流程圖。
具體實施例方式如圖I所示,本實施例是在網絡接入設備中,對LAN側是否存在環路進行檢測,并對如果存在的環路進行控制的方法。該方法依賴特定的以太網網絡協議報文和平臺及其配套軟件程序指令完成。環路檢測與控制程序包括網絡應用層發報文模塊與網絡鏈路層環路檢測與屏蔽模塊。其中LAN側即設備下行方向側檢測與控制環路的步驟設備硬件初始化過程將設備多個網絡下行端口設置相同的MAC地址,以后每隔一段特定時間由網絡應用層程序產生特定的具有廣播特性的環路探測報文后,經由設備每個不同的網絡下行端口發送出。I、設備每隔一段特定時間由環路檢測控制程序網絡應用層模塊產生一個特定的具有廣播特性的環路探測報文(以下簡稱報文),經由設備上不同網絡下行端口發送出去。2、根據每個網絡下行端口是否收到之前由設備本身其他網絡下行端口發送出的數據報文或者自己本身端口發送出去的環路探測報文,以判斷運行此系統的設備是否處于環路狀態。3、如果檢測到設備處于環路狀態,則控制屏蔽環路狀態。在環路檢測與控制程序啟動之前,為保證有效檢測與控制環路,先將設備所有網絡端口關閉,即設備上所有網路端口在關閉狀態時無法發送與接收以太網報文。用于探測的報文由網絡應用層模塊發出,設備判斷與控制環路狀態由鏈路層模塊完成。應用層模塊發送的探測報文經設備的其中一個網絡端口發送出去后,如果再次被設備網絡端口接收,環路探測報文將在鏈路層模塊判斷識別。步驟3中,如果檢測與控制環路應用層模塊SOCKET接收套接字沒有收到任何報文,則進程阻塞在接收SOCKET上,直至超時進入下個循環。環路檢測與屏蔽模塊中判斷是否環路標準是分析數據報文的發送源是否與設備的下行端口一致,該數據報文接收端口是否在設備的上下行端口中切換。本方法適用于大多網絡接入設備平臺,能夠有效檢查與排除網絡接入設備下行一側網絡環路狀態。其工作的步驟如下
I:設備通電,裝載相應的操作系統。2:初始化相應的外設,包括設備所有的下行端口,網絡初始化完畢后需要立即將設備所有下行端口禁用,準備加載環路監控相應模塊,防止在環路監控模塊運行之前產生環路。3 :啟用環路監控鏈路層模塊, 應用層模塊。4 :重新激活所有下行端口,以便環路監控應用層模塊能通過下行端口發送環路探測報文。5 :判斷是否需要退出環路監控?原因有用戶刻意取消環路監控功能;任務退出
坐寸o6:如果當前有關閉的下行端口,應用層進程等待特定時間TIME2后,應用層進程重新激活標記為禁止的下行端口。如果當前沒有關閉的下行端口,應用層進程等待時間TIMEl0其中TMEl表示在沒有檢測到環路的情況下,應用層進程發送環路探測報文的間隔時間。TIME2表示在檢測到存在環路檢測的情況下,應用層進程重新打開激活之前被關閉的端口并發送環路探測報文的間隔時間。TMEl和TME2根據需要可以在應用過程中設定,可以是毫秒極或者秒級,且TMEl和TME2可以相等地,也可以不等。總之TMEl和TME2可以在實際應用中設定的。7:應用層進程通過向所有下行端口發送環路探測報文后,進程阻塞在網絡接收套接字上。8 :如果應用層進程阻塞超時,應用層跳轉到步驟6執行。9 :如在第8步等待超過過程中,在鏈路層中如果接收到環路探測報文,即判斷設備收到該報文的端口的已經處于環路鏈路中,如果端口處于環路,則此端口必須關閉以阻止環路風暴的產生,并且此端口需要標記為禁止的下行端口,以便在第6步中能被再次激活。
權利要求
1.一種網絡接入設備LAN側環路檢測與控制方法,其特征在于包括以下步驟, A、設備初始化時將被檢測的網絡接入設備的所有下行端口設置成相同的MAC地址,在系統運行過程中,所有下行端口的MAC地址保持一樣不做改變; B、每隔設定時間 ΜΕ1,由應用層進程即時產生的環路探測報文經由網絡接入設備任一下行端口向LAN廣播發送環路探測報文; C、系統內核鏈路層通過循環檢查每一個達到系統網絡協議棧的以太網報文,若發現該以太網報文的源MAC地址為下行端口的MAC地址則認為設備處于環路之中,內核中鏈路層轉入步驟D,否則對所接收報文不做處理,內核鏈路層繼續負責所有端口數據報文的收發工作,應用層進程轉向步驟B; D、內核鏈路層將所有收到環路探測報文的端口和發送環路探測報文的端口關閉,關閉后繼續負責其他未關閉端口數據報文的收發工作,應用層進程轉向步驟E ; E、關閉端口即切斷設備的環路狀態,應用層進程等待設定時間TIME2后,將關閉的端口重新打開,跳轉到步驟B。
2.根據權利要求I所述的網絡接入設備LAN側環路檢測與控制方法,其特征在于所述的環路探測報文是由系統應用層模塊產生帶有“LOOPBACK”內容的UDP協議的IP報文,所述的環路探測報文的目的MAC地址以及IP地址均為廣播地址。
全文摘要
本發明提供了一種網絡接入設備LAN側環路檢測與控制方法,此方法依賴特定的以太網網絡協議報文和支持TCP/UDP協議棧的操作系統平臺及其配套軟件程序指令完成。具體內容包括了系統加載,腳本加載,設備硬件初始化,軟件程序初始化,以及檢測環路過程,發現環路過程,控制屏蔽環路過程。設備硬件初始化過程將設備多個網絡下行接口設置相同的MAC地址,以后每隔一段特定時間由網絡應用層程序產生特定的具有廣播特性的環路探測報文后,經由設備每個不同的網絡下行接口發送出。
文檔編號H04L12/26GK102769553SQ20121027890
公開日2012年11月7日 申請日期2012年8月7日 優先權日2012年8月7日
發明者王志波, 鄧永堅, 郭小東, 黎海文 申請人:深圳市共進電子股份有限公司