更新mstp鄰居表的方法及裝置的制造方法
【專利摘要】本申請提供一種更新MSTP鄰居表的方法及裝置,所述方法包括:當網絡拓撲發生變化時,記錄狀態發生變化的MSTP端口;為狀態發生變化的MSTP端口設置狀態變化標記;啟動MSTP協議,基于所述MSTP協議清除設置了狀態變化標記的MSTP端口的鄰居表項。在本申請中,因為不再清除拓撲變化中沒有發生狀態變化的端口,因此,可以解決現有技術收斂速度較慢的問題。
【專利說明】
更新MSTP鄰居表的方法及裝置
技術領域
[0001 ] 本申請設及通信技術領域,尤其設及一種更新MSTP(Multiple Spanning Tree Protocol,多生成樹協議)鄰居表的方法及裝置。
【背景技術】
[0002] 在交換網絡中,MSTP可W將環路網路"修剪"成為一個無環的樹型網絡,從而避免 了報文在環路網絡中的增生和無限循環。同時,MSTP還具備鏈路備份功能,當網絡發生拓撲 變化時,原來的備份鏈路可W切換為新的主鏈路,W實現網絡流量的鏈路切換及收斂。
[0003] 在現有技術中,當網絡拓撲發生變化時,網絡設備會清除所有非當前端口的鄰居 表項,然后再重新學習該端口的鄰居表項。因為該端口的鄰居表項中許多端口并沒有發生 狀態變化,因此,現有技術的收斂速度較慢。
【發明內容】
[0004] 有鑒于此,本申請提供一種更新多生成樹MSTP鄰居表的方法及裝置,來解決現有 技術收斂速度較慢的問題。
[0005] 具體地,本申請是通過如下技術方案實現的:
[0006] 根據本申請實施例的第一方面,提供一種更新MSTP鄰居表的方法,所述方法應用 于MSTP設備上,所述方法包括:
[0007] 當網絡拓撲發生變化時,記錄狀態發生變化的MSTP端口;
[000引為狀態發生變化的MSTP端口設置狀態變化標記;
[0009] 啟動MSTP協議,基于所述MSTP協議清除設置了狀態變化標記的MSTP端口的鄰居表 項。
[0010] 可選的,所述記錄狀態發生變化的MSTP端口包括:
[0011] 接收鄰居設備發送的拓撲變化TC報文;
[0012] 基于所述TC報文確定狀態發生變化的MSTP端口。
[0013] 可選的,所述基于所述MSTP協議清除設置了狀態變化標記的端口的鄰居表項包 括:
[0014] 創建用于清除鄰居表項的工作隊列;
[0015] 啟動所述工作隊列,基于所述工作隊列清除MSTP端口鏈表中設置了狀態變化標記 的MSTP端口的鄰居表項;
[0016] 設置了狀態變化標記的MSTP端口的鄰居表項清除完成后,注銷所述工作隊列。
[0017] 可選的,所述創建用于清除鄰居表項的工作隊列包括:
[001引判斷設備是否存在空閑CPU;
[0019] 當存在空閑CPU時,在該空閑CPU上創建用于清除鄰居表項的工作隊列。
[0020] 可選的,所述方法還包括:
[0021 ]當網絡拓撲變化結束時,針對已清除了鄰居表項的MSTP端口重新建立鄰居表項。
[0022] 可選的,針對狀態發生變化的MSTP端口執行鄰居表項清除時所使用的CPU,與針對 已清除鄰居表項的MSTP端口重新建立鄰居表項時所使用的CPU為不同CPU。
[0023] 根據本申請實施例的第二方面,提供一種更新MSTP鄰居表的裝置,所述裝置應用 于MSTP設備,所述裝置包括:
[0024] 記錄單元,用于當網絡拓撲發生變化時,記錄狀態發生變化的MSTP端口;
[0025] 設置單元,用于為狀態發生變化的MSTP端口設置狀態變化標記;
[00%]清除單元,用于啟動MSTP協議,基于所述MSTP協議清除設置了狀態變化標記的 MSTP端口的鄰居表項。
[0027] 可選的,所述記錄單元具體用于:
[0028] 接收鄰居設備發送的拓撲變化TC報文;
[00巧]基于所述TC報文確定狀態發生變化的MSTP端口。
[0030]可選的,所述清除單元包括:
[0031 ]創建子單元,用于創建用于清除鄰居表項的工作隊列;
[0032] 啟動子單元,用于啟動所述工作隊列,基于所述工作隊列清除MSTP端口鏈表中設 置了狀態變化標記的MSTP端口的鄰居表項;
[0033] 注銷子單元,用于設置了狀態變化標記的MSTP端口的鄰居表項清除完成后,注銷 所述工作隊列。
[0034] 可選的,所述創建單元具體用于:
[0035] 判斷設備是否存在空閑CPU;
[0036] 當存在空閑CPU時,在該空閑CPU上創建用于清除鄰居表項的工作隊列。
[0037] 可選的,所述裝置還包括:
[0038] 建立單元,用于當網絡拓撲變化結束時,針對已清除了鄰居表項的MSTP端口重新 建立鄰居表項。
[0039] 可選的,針對狀態發生變化的MSTP端口執行鄰居表項清除時所使用的CPU,與針對 已清除鄰居表項的MSTP端口重新建立鄰居表項時所使用的CPU為不同CPU。
[0040] 本申請提供更新MSTP鄰居表的方法及裝置,MSTP設備通過在網絡拓撲發生變化 時,所述MSTP設備可W為狀態發生變化的MSTP端口設置狀態變化標記,并在基于MSTP協議 清除鄰居表項時,只清除設置了狀態變化標記的MSTP端口的鄰居表項,從而可W解決現有 技術中針對所有端口的鄰居表項均執行清除導致系統收斂速度較慢的問題。
【附圖說明】
[0041 ]圖1是本申請實施例中一種更新MSTP鄰居表的方法的流程示意圖;
[0042] 圖2是本申請更新MSTP鄰居表的裝置所在設備的一種硬件結構圖;
[0043] 圖3是本申請更新MSTP鄰居表的裝置的一個實施例框圖;
[0044] 圖4是本申請更新MSTP鄰居表的裝置的另一個實施例框圖;
[0045] 圖5是本申請跟新MSTP鄰居表的裝置的另一個實施例框圖。
【具體實施方式】
[0046] 運里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述設及 附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。W下示例性實施例 中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附 權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
[0047]在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。 在本申請和所附權利要求書中所使用的單數形式的"一種"、"所述"和"該"也旨在包括多數 形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語"和/或"是指并包 含一個或多個相關聯的列出項目的任何或所有可能組合。
[004引應當理解,盡管在本申請可能采用術語第一、第二、第=等來描述各種信息,但運 些信息不應限于運些術語。運些術語僅用來將同一類型的信息彼此區分開。例如,在不脫離 本申請范圍的情況下,第一信息也可W被稱為第二信息,類似地,第二信息也可W被稱為第 一信息。取決于語境,如在此所使用的詞語"如果"可W被解釋成為"在……時"或"當…… 時"或"響應于確定"。
[0049]參見圖1,為本申請實施例中一種更新MSTP鄰居表的方法的流程示意圖。所述實施 例應用于MSTP設備上,所述MSTP設備可W是路由器、交換機等設備。所述實施例包括了 W下 步驟:
[0化0] 步驟101:當網絡拓撲發生變化時,記錄狀態發生變化的MSTP端口。
[0051] 當網絡拓撲發生變化時,所述MSTP設備可W基于接收到的由鄰居設備發送的TC (Topology化ange,拓撲變化)報文,來獲取狀態發生變化的MSTP端口,并進行記錄。
[0052] 此過程具體可W為:
[0053] MSTP設備可W從TC報文中獲取該報文的源端口信息,然后從當前的MSTP鄰居表中 獲取與該源端口相連的端口信息。當獲取到與該源端口相連的端口信息時,MSTP設備可W 檢測與該源端口相連的端口的當前狀態,并將與該源端口相連的端口當前的狀態與網絡拓 撲發生變化之前的狀態做比較,然后根據比較結果來確定狀態發生變化的端口。
[0054] 當與該源端口相連的端口當前的狀態與網絡拓撲發生變化之前的狀態相同時,可 W確定該端口的狀態沒有發生變化;反之,當與該源端口相連的端口當前的狀態與網絡拓 撲發生變化之前的狀態不同時,可W確定該端口的狀態發生了變化,此時MSTP設備可W將 該記錄作為狀態發生變化的端口進行記錄。
[0055] 在一個示例中,當MSTP設備上的端口使能MSTP時,MSTP設備可W為該端口設置一 個每端口結構體,該每端口結構體中可W保存該端口的信息。例如,該每端口結構體可W保 存該端口的當前狀態。MSTP設備可W使用一個鏈表連接所有開啟MSTP的端口對應的每端口 結構體,該鏈表可W稱為生成樹端口鏈表。
[0056] 當網絡拓撲發生變化時,MSTP設備可W遍歷生成樹端口鏈表中與TC報文的源端口 相連的端口,并檢測該端口當前的狀態。當該端口當前的狀態與生成樹端口鏈表中該端口 的狀態相同時,可W確定該端口的狀態沒有發生變化;反之,可W確定該端口的狀態發生了 變化。
[0057] 在一個示例中,當該端口的狀態發生變化時,可W對該端口進行記錄。其中,可W 將該端口作為狀態發生變化的端口記錄在該端口對應的每端口結構體中,也可W將該端口 作為狀態發生變化的端口記錄在新建的端口狀態變化表中。
[0化引步驟102:為狀態發生變化的MSTP端口設置狀態變化標記。
[0059] 在記錄了狀態發生變化的MSTP端口之后,可W為狀態發生變化的MSTP端口設置狀 態變化標記。
[0060] MSTP設備可W在每端口結構體中預先設置一個狀態變化標記位,當MSTP端口的狀 態發生變化時,可W將該MSTP端口對應的狀態變化標記位置位。
[0061] 在一個假設的示例中,每端口結構體可W表示為:
[0062]
[0063] 當該每端口結構體對應端口的狀態發生變化時,可W將該每端口結構體中的狀態 變化標記位置位,即可W將state_change的值置為1;當該每端口結構體對應端口的狀態沒 有發生變化時,可W不將狀態變化標記位置位,即可W將state_change的值置為0。
[0064] 在另一個示例中,該狀態變化標記可W為一個特定的與發生變化的MSTP端口對應 的標識。
[00化]步驟103:啟動MSTP協議,基于所述MSTP協議清除設置了狀態變化標記的MSTP端口 的鄰居表項。
[0066] 為狀態發生變化的MSTP端口設置了狀態變化標記之后,MSTP設備可W判斷是否存 在空閑CPU,當存在空閑CPU時,可W在該CPU上創建用于清除鄰居表項的工作隊列。
[0067] 然后,MSTP設備可W啟動該工作隊列,并基于該工作隊列清除MSTP端口鏈表中設 置了狀態變化標記的MSTP端口的鄰居表項。
[0068] 此清除過程具體可W為:
[0069] 將MSTP端口鏈表中設置了狀態變化標記的MSTP端口的鄰居表項設置為無效狀態。
[0070] 當設置了狀態變化標記的MSTP端口的鄰居表項清除完成時,可W注銷該工作隊 列。
[0071] 需要說明的是,針對狀態發生變化的MSTP端口執行鄰居表項清除時所使用的CPU, 與針對已清除鄰居表項的MSTP端口重新建立鄰居表項時所使用的CPU可W為不同的CPU。
[0072] 當網絡拓撲變化結束時,MSTP設備可W針對已清除鄰居表項的MSTP端口重新建立 鄰居表項。MSTP設備可W遍歷MSTP端口鏈表中清除了鄰居表項的MSTP端口,發送鄰居請求 報文,重新建立鄰居表項。
[0073] 在本申請中,當網絡拓撲發生變化時,所述MSTP設備可W為狀態發生變化的MSTP 端口設置狀態變化標記,然后,可W基于所述MSTP協議清除所述設置了狀態變化標記的 MSTP端口的鄰居表項,從而可W達到更新MSTP鄰居表的目的。在本申請中,因為不再清除拓 撲變化中沒有發生狀態變化的端口,因此,可W解決現有技術浪費時間的問題。
[0074] 下面通過具體實施例對W上實施例進行詳細說明:
[0075] 當網絡拓撲發生變化時,MSTP設備可W接收鄰居設備發送的TC報文,并可W通過 解析該TC報文獲得該報文的源端口信息,該源端口信息可W包括該源端口的優先級信息。 然后,MSTP設備可W根據該源端口從當前的MSTP鄰居表中獲取與該源端口相連的端口信 息。當與該源端口相連的端口信息獲取成功時,MSTP設備可W從該端口信息中或者從與該 源端口相連的端口的每端口結構體中獲取與該源端口相連的端口的優先級信息,并將與該 源端口相連的端口的優先級與該源端口的優先級進行對比。得到對比結果之后,MSTP設備 可W從生成樹端口鏈表中獲取網絡拓撲變化之前與該源端口相連的端口的優先級與該源 端口的優先級的對比結果。如果當前的對比結果與網路拓撲變化之前的對比結果相同, MSTP設備可W遍歷生成樹端口鏈表中與該源端口相連的端口,并檢測該端口當前的狀態。 當該端口當前的狀態與生成樹端口鏈表中該端口的狀態相同時,可W確定該端口的狀態沒 有發生變化;反之,可W確定該端口的狀態發生了變化。
[0076] 如果當前的對比結果與網絡拓撲變化之前的對比結果不同,MSTP設備可W重新計 算所有端口的當前狀態,當MSTP設備所有端口的當前狀態計算完成時,MSTP設備可W遍歷 生成樹端口鏈表中與該源端口相連的端口,并檢測該端口當前的狀態。當該端口當前的狀 態與生成樹端口鏈表中該端口的狀態相同時,可W確定該端口的狀態沒有發生變化;反之, 可W確定該端口的狀態發生了變化。
[0077] 當確定MSTP設備上端口的狀態發生變化時,可W記錄狀態發生變化的端口。可W 將狀態發生變化的端口記錄在該端口對應的每端口結構體中,也可W新建一個端口狀態變 化表,并將該端口記錄在端口狀態變化表中。
[0078] 在記錄了狀態發生變化的端口之后,可W為狀態發生變化的端口設置狀態變化標 記。MSTP設備可W預先設置一個狀態變化標記位,當MSTP端口的狀態發生變化時,可W將該 端口對應的狀態變化標記位置位。當然,該狀態變化標記也可W為一個特定的與發生變化 的端口對應的標識。
[0079] 為狀態發生變化的MSTP端口設置了狀態變化標記之后,MSTP設備可W先判斷是否 存在空閑CPU,當存在空閑CPU時,可W在該CPU上創建用于清除鄰居表項的工作隊列。
[0080] 當該工作隊列創建成功之后,MSTP設備可W啟動該工作隊列,并基于該工作隊列 將MSTP端口鏈表中設置了狀態變化標記的MSTP端口的鄰居表項設置為無效,從而完成對鄰 居表項的清除。
[0081] 需要說明的是,針對狀態發生變化的MSTP端口執行鄰居表項清除時所使用的CPU, 與針對已清除鄰居表項的MSTP端口重新建立鄰居表項時所使用的CPU可W為不同的CPU。
[0082] 當網絡拓撲變化結束時,MSTP設備可W針對已清除鄰居表項的MSTP端口發送鄰居 請求報文,并重新建立鄰居表項。
[0083] 在W上實施例中,MSTP設備通過在網絡拓撲發生變化時,所述MSTP設備可W為狀 態發生變化的MSTP端口設置狀態變化標記,并在基于MSTP協議清除鄰居表項時,只清除設 置了狀態變化標記的MSTP端口的鄰居表項,從而可W解決現有技術中針對所有端口的鄰居 表項均執行清除導致系統收斂速度較慢的問題。
[0084] 與前述更新MSTP鄰居表的方法的實施例相對應,本申請還提供了更新MSTP鄰居表 的裝置的實施例。
[0085] 本申請更新MSTP鄰居表的裝置的實施例可W應用在MSTP設備上。裝置實施例可W 通過軟件實現,也可W通過硬件或者軟硬件結合的方式實現。W軟件實現為例,作為一個邏 輯意義上的裝置,是通過其所在設備的處理器將非易失性存儲器中對應的計算機程序指令 讀取到內存中運行形成的。從硬件層面而言,如圖2所示,為本申請更新MSTP鄰居表的裝置 所在設備的一種硬件結構圖,除了圖2所示的處理器、內存、網絡接口、W及非易失性存儲器 之外,實施例中裝置所在的設備通常還可W包括其他硬件,如負責處理報文的轉發忍片等 等。
[0086] 請參考圖3,為本申請更新MSTP鄰居表的裝置的一個實施例框圖:
[0087] 該裝置可W包括:記錄單元310、設置單元320W及清除單元330。
[0088] 記錄單元310,用于當網絡拓撲發生變化時,記錄狀態發生變化的MSTP端口;
[0089] 設置單元320,用于為狀態發生變化的MSTP端口設置狀態變化標記;
[0090] 清除單元330,用于啟動MSTP協議,基于所述MSTP協議清除設置了狀態變化標記的 MSTP端口的鄰居表項。
[0091] 在一個可選的實現方式中,所述記錄單元310可W具體用于:
[0092] 接收鄰居設備發送的拓撲變化TC報文;
[0093] 基于所述TC報文確定狀態發生變化的MSTP端口。
[0094] 在一個可選的實現方式中,所述清除單元330可W包括(如圖4所示):
[00M]創建子單元330A,用于創建用于清除鄰居表項的工作隊列;
[0096] 啟動子單元330B,用于啟動所述工作隊列,基于所述工作隊列清除MSTP端口鏈表 中設置了狀態變化標記的MSTP端口的鄰居表項;
[0097] 注銷子單元330C,用于設置了狀態變化標記的MSTP端口的鄰居表項清除完成后, 注銷所述工作隊列。
[0098] 在一個可選的實現方式中,所述創建單元330A可W具體用于:
[0099] 判斷設備是否存在空閑CPU;
[0100] 當存在空閑CPU時,在該空閑CPU上創建用于清除鄰居表項的工作隊列。
[0101 ]在一個可選的實現方式中,所述裝置還可W包括(如圖5所示):
[0102] 建立單元340,用于當網絡拓撲變化結束時,針對已清除了鄰居表項的MSTP端口重 新建立鄰居表項。
[0103] 在一個可選的實現方式中,針對狀態發生變化的MSTP端口執行鄰居表項清除時所 使用的CPU,與針對已清除鄰居表項的MSTP端口重新建立鄰居表項時所使用的WU為不同 CPU。
[0104] 上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的 實現過程,在此不再寶述。
[0105] 對于裝置實施例而言,由于其基本對應于方法實施例,所W相關之處參見方法實 施例的部分說明即可。W上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件 說明的單元可W是或者也可W不是物理上分開的,作為單元顯示的部件可W是或者也可W 不是物理單元,即可W位于一個地方,或者也可W分布到多個網絡單元上。可W根據實際的 需要選擇其中的部分或者全部模塊來實現本申請方案的目的。本領域普通技術人員在不付 出創造性勞動的情況下,即可W理解并實施。
[0106] 在W上實施例中,MSTP設備通過在網絡拓撲發生變化時,所述MSTP設備可W為狀 態發生變化的MSTP端口設置狀態變化標記,并在基于MSTP協議清除鄰居表項時,只清除設 置了狀態變化標記的MSTP端口的鄰居表項,從而可W解決現有技術中針對所有端口的鄰居 表項均執行清除導致系統收斂速度較慢的問題。
[0107] W上所述僅為本申請的較佳實施例而已,并不用W限制本申請,凡在本申請的精 神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。
【主權項】
1. 一種更新多生成樹MSTP鄰居表的方法,其特征在于,所述方法應用于MSTP設備上,所 述方法包括: 當網絡拓撲發生變化時,記錄狀態發生變化的MSTP端口; 為狀態發生變化的MSTP端口設置狀態變化標記; 啟動MSTP協議,基于所述MSTP協議清除設置了狀態變化標記的MSTP端口的鄰居表項。2. 根據權利要求1所述的方法,其特征在于,所述記錄狀態發生變化的MSTP端口包括: 接收鄰居設備發送的拓撲變化TC報文; 基于所述TC報文確定狀態發生變化的MSTP端口。3. 根據權利要求1所述的方法,其特征在于,所述基于所述MSTP協議清除設置了狀態變 化標記的端口的鄰居表項包括: 創建用于清除鄰居表項的工作隊列; 啟動所述工作隊列,基于所述工作隊列清除MSTP端口鏈表中設置了狀態變化標記的 MSTP端口的鄰居表項; 設置了狀態變化標記的MSTP端口的鄰居表項清除完成后,注銷所述工作隊列。4. 根據權利要求3所述的方法,其特征在于,所述創建用于清除鄰居表項的工作隊列包 括: 判斷設備是否存在空閑CHJ; 當存在空閑CRJ時,在該空閑CRJ上創建用于清除鄰居表項的工作隊列。5. 根據權利要求3所述的方法,其特征在于,所述方法還包括: 當網絡拓撲變化結束時,針對已清除了鄰居表項的MSTP端口重新建立鄰居表項。6. 根據權利要求5所述的方法,其特征在于,針對狀態發生變化的MSTP端口執行鄰居表 項清除時所使用的CPU,與針對已清除鄰居表項的MSTP端口重新建立鄰居表項時所使用的 CPU為不同CPU。7. -種更新多生成樹MSTP鄰居表的裝置,其特征在于,所述裝置應用于MSTP設備上,所 述裝置包括: 記錄單元,用于當網絡拓撲發生變化時,記錄狀態發生變化的MSTP端口; 設置單元,用于為狀態發生變化的MSTP端口設置狀態變化標記; 清除單元,用于啟動MSTP協議,基于所述MSTP協議清除設置了狀態變化標記的MSTP端 口的鄰居表項。8. 根據權利要求7所述的裝置,其特征在于,所述記錄單元具體用于: 接收鄰居設備發送的拓撲變化TC報文; 基于所述TC報文確定狀態發生變化的MSTP端口。9. 根據權利要求7所述的裝置,其特征在于,所述清除單元包括: 創建子單元,用于創建用于清除鄰居表項的工作隊列; 啟動子單元,用于啟動所述工作隊列,基于所述工作隊列清除MSTP端口鏈表中設置了 狀態變化標記的MSTP端口的鄰居表項; 注銷子單元,用于設置了狀態變化標記的MSTP端口的鄰居表項清除完成后,注銷所述 工作隊列。10. 根據權利要求9所述的裝置,其特征在于,所述創建單元具體用于: 判斷設備是否存在空閑CHJ; 當存在空閑CRJ時,在該空閑CRJ上創建用于清除鄰居表項的工作隊列。11. 根據權利要求9所述的裝置,其特征在于,所述裝置還包括: 建立單元,用于當網絡拓撲變化結束時,針對已清除了鄰居表項的MSTP端口重新建立 鄰居表項。12. 根據權利要求11所述的裝置,其特征在于,針對狀態發生變化的MSTP端口執行鄰居 表項清除時所使用的CPU,與針對已清除鄰居表項的MSTP端口重新建立鄰居表項時所使用 的CPU為不同CPU。
【文檔編號】H04L12/751GK105939270SQ201610053801
【公開日】2016年9月14日
【申請日】2016年1月26日
【發明人】楚澤彤, 李喻
【申請人】杭州迪普科技有限公司