您好, 訪客   登錄/注冊

一種實現BFD報文處理的方法

來源:用戶上傳      作者:

  摘  要:隨著網絡速度的不斷提高,對網絡的可靠性和健壯性的要求也越來越高。當鏈路發生故障時,希望能盡快檢測到故障并將業務快速切換到備份鏈路。文章首先闡述了BFD的應用場景,存在的問題及傳統的BFD報文處理過程。然后,針對傳統BFD報文處理過程中存在的缺陷,提出一種實現BFD報文處理的方法。在該方法中,核心思想是對BFD報文進行封裝預處理,并引入雙內核協同處理。
  關鍵詞:BFD;報文封裝;雙內核
  中圖分類號:TP393.0        文獻標志碼:A         文章編號:2095-2945(2019)07-0125-02
  Abstract: With the continuous improvement of network speed, the requirements for the reliability and robustness of the network are getting higher and higher. When the link fails, it is hoped that the failure can be detected as soon as possible and the service can be quickly switched to the backup link. Firstly, this paper describes the application scenario of BFD, the existing problems and the traditional BFD message processing process. Then, in view of the defects existing in the traditional BFD message processing process, a method to realize BFD message processing is proposed. In this method, the core idea is to encapsulate and preprocess BFD packets and introduce dual-kernel cooperative processing.
  Keywords: BFD; message encapsulation; dual kernel
  1 BFD的應用場景及存在的問題
  1.1 BFD的應用場景
  在當前網絡中,如果系統通訊過程中發生故障,需要快速的建立替代通道,并將業務倒換到其他鏈路上。有些鏈路通過硬件檢測信號,但并不是所有的介質都能夠提供硬件檢測,此時,就需要依靠上層路由協議自身的Hello報文機制來進行故障檢測[1]。但是,這種檢測方式的弊端是檢測時間太差。例如OSPF需要2秒的檢測時間,ISI需要1秒的檢測時間。這對于用戶及某些應用來說,都是無法忍受的。隨著網絡速度的不斷發展,線路中斷時間越長,意味著丟包越多,對業務的影響越大。在電信級以太網中,很多業務場景要求,故障發生時業務的切換時間在50毫秒以內。這時,必須通過BFD雙向轉發檢測技術進行檢測。BFD是一種協議無關的IP網絡故障快速檢測機制,能夠提供毫秒級的故障檢測時間,加快網絡路由收斂速度,縮短通信中斷時間,提高IP承載網絡的可靠性和健壯性[2]。BFD通過建立會話的通道周期性地發送檢測報文。如果某個系統在一定時間內沒有收到對端的檢測報文,那么通信鏈路可能發送故障。BFD會話的發送和接收速率可以協商。
  1.2 BFD實現中存在的問題
  在實際應用中,由于對網絡快速檢測的要求越來越高,應用場景也越來越多。隨著網絡數據量的急劇增加,需要的BFD檢測數量也隨著增加。這時,由于芯片處理的能力及策略的不同,導致BFD的整體性能不同。當芯片處理能力達到極限時,BFD就會出現丟包。如果長時間無法收到某一BFD報文,那么BFD就會震蕩。因此,在芯片處理能力有限的情況下,只能在處理的策略上進行調整。
  1.3 傳統的BFD報文處理過程
   下面基于圖1,傳統的BFD報文處理過程解析圖示。對傳統的BFD報文處理過程進行詳細說明。
   首先,對BFD報文進行封裝處理;其次,上送CPU內核處理,將BFD報文不加區分的上送一個隊列進行處理;BFD模塊整合MUX下發的參數并調用驅動寫芯片;最后,完成BFD報文的快速發送和接收檢測、報文或告警上送CPU。該過程中,雖然將BFD報文都上送一個較高優先級的隊列,看似對報文進行了優先處理。但是,隨著BFD的session數量增加時,同時在一個隊列處理的報文也會迅速增加。這樣就會導致傳統的BFD報文處理過程中,某些session的BFD處理過程中丟失或處理不及時等,造成BFD會話震蕩。
  2 一種實現BFD報文處理的方法
  基于這種背景,提出一種實現BFD報文處理的方法。該方法的主要目的是在于提供一種實現BFD報文處理的方法。首先,進行BFD報文封裝的預處理;其次,引入雙內核協同處理。
  2.1 BFD報文處理的技術方案
  為達到上述目的,下面介紹一下該方法的技術方案?;趫D2:改進的BFD報文處理過程解析圖示。一方面,當配置BFD的類型和協商參數后,對BFD報文進行預處理,根據BFD的類型和協商參數對BFD報文進行優先級的區分。另一方面,根據BFD報文操作方式的不同,上送不同的CPU芯片處理。步驟1 進行BFD報文封裝的預處理,根據BFD的類型及協商參數將BFD報文在封裝時添加報文優先級,根據BFD報文被添加的優先級高低決定BFD報文處理的先后順序。   步驟2 進行雙內核的協同處理,首先通過BFD的session判斷該會話是否為新增會話。如果是新增會話,通過CPU內核1處理后,進行下一步處理,同時將該BFD的會話信息拷貝一份到CPU內核2備用;如果不是新增會話,則直接轉到CPU內核2進行查找相關session信息,并進行下一步處理。步驟3 BFD模塊整合MUX下發的參數并調用驅動寫芯片。步驟4 完成BFD報文的快速發送和接收檢測報文或告警上報CPU。與現有技術相比較,該方法將BFD報文進行優先級的處理,并對新增及原有會話進行區分處理,大大降低了BFD報文處理過程中丟包的風險,同時降低了CPU的負荷,保證了BFD會話的穩定性。
  2.2 改進的BFD處理過程的實例解析
  下面結合圖2:改進的BFD報文處理過程解析圖示,圖3:CPU內核2處理細化圖示,對該方法進行說明。假設新增10條BFD會話session 1-10,該BFD為LINK BFD,要求BFD配置的參數如下:interval(發送檢測報文的時間間隔)為10ms,min-rx-interval(接收檢測報文的最小時間間隔)為10ms,multiplier(檢測倍數)為3。新增1條BFD會話session 11,該BFD為VRRP BFD,要求BFD配置的參數如下:interval為50ms,min-rx-interval為50ms,multiplier為3。修改1條BFD會話session 12,該會話為LINK BFD,要求修改BFD配置的參數如下:interval為20ms,min-rx-interval為20ms,multiplier為3。
  步驟1 根據預先約定的BFD類型及協商參數對應表,將session 1-10的BFD報文優先級設置為Priority1,將session 11的BFD報文優先級設置為Priority2。步驟2.1參照圖2,改進的BFD報文處理過程解析圖示,判斷BFD session1-11為新增。步驟2.1.1 上送CPU內核1處理,同時拷貝一份相同的session信息到CPU內核2備用。當CPU內核1將報文轉發后,即清除相應的session信息。后續需要更新或刪除相應的BFD session時,按照BFD session在CPU內核2內進行查找并進行相應的參數更新及刪除操作。步驟2.1.2 參照圖3,CPU內核2處理細化圖示。當BFD報文上送CPU內核2后,解析BFD報文中包含的標志位,此時上述BFD報文不存在標志位,即表示該報文為新增報文,進行BFD session信息的拷貝。步驟2.2 參照圖2,改進的BFD報文處理過程解析圖示,判斷BFD session 12為更新。步驟2.2.1 參照圖示3,CPU內核2處理細化圖示。當BFD報文上送CPU內核2后,解析BFD報文中包含的標志位,此時上述BFD報文存在標志位,即表示該報文為待更新或刪除報文。步驟2.2.2 按照BFD的session號進行查找,查找到相應的表項,進行更新。步驟3 BFD模塊整合MUX下發的參數并調用驅動寫芯片。步驟4 完成BFD報文的快速發送和接收檢測、報文或告警上送CPU。本方法的重點在于步驟1和步驟2。步驟1根據BFD報文的類型及參數劃分優先級,這樣對報文可以區分對待。例如本例中VRRP BFD由于要求協商參數較低,因此,將該報文的優先級設置偏低。這樣使CPU在能力有限的情況下,優先處理協商參數要求高的LINK BFD,確保LINK BFD不會由于處理不及時導致震蕩。同時也可以滿足VRRP BFD的要求。步驟2中將CPU內核1與CPU內核2進行任務分工。當新增BFD session時,首先通過CPU內核1進行處理,并拷貝相應的信息到CPU內核2,這樣后續的更新、刪除操作由CPU內核2進行處理。CPU內核1刪除已拷貝給CPU內核2的內容,以免造成CPU內核1的內容冗余及不必要的處理。同時,在CPU內核2在進行更新、刪除操作時,不再需要同步相應的session信息給CPU內核1處理。這樣通過CPU內核1和CPU內核2的相互協同,在BFD報文的處理上大大降低了BFD報文處理過程中丟包的風險,同時,降低了CPU的負荷,保證了BFD會話的穩定性。
  3 結束語
  總而言之,BFD是實現雙向快速檢測的有效方法。隨著BFD檢測數量的增加,芯片處理能力達到極限時,可能導致BFD震蕩。為解決該問題,根據BFD報文的優先級,通過雙內核協同處理機制,提高網絡的可靠性和健壯性。
  參考文獻:
  [1]張韜,王俊.用BFD技術檢測網絡故障[J].網絡安全和信息化,2017(10):141-145.
  [2]王坦,仝磊,郭學義,等.基于BFD檢測的靜態路由切換研究[J].自動化技術與應用,2015(8):42-46.
轉載注明來源:http://www.hailuomaifang.com/1/view-14800519.htm

?
99久久国产综合精麻豆