基於BGP協議的廣域網流量排程SDN控制器在銀行業的部署實踐

老魚筆記發表於2018-06-13

作者:王遜

摘要:SDN作為網路自動化(Network Automation)一種應用場景,從2009年Openflow的提出後在近幾年已經進入到快速發展、現網部署階段。SD-WAN實際上就是將SDN和網路自動化的思想和技術進行了封裝以產品或者服務的形式提供給終端使用者,具體的實現主要有基於雲和企業私網兩種方式的例如Viptela(被Cisco公司收購)以及VeloCloud(被Vmware公司收購)。在實際使用者環境下部署SD-WAN的解決方案往往會遇到以下幾個問題:

  需要採購新的硬體或者軟體CPE,雖然這筆開銷相比採購傳統裝置有了一定程度的節省,但是隨之而來的人員培訓、系統整合等費用還是一筆不小的開支

  如何充分利用現有網路資源保護已有的裝置投資?

  在編排器或者SDN控制器失效的情況下如何充分利用現有網路資源提供逃生通道?

  本文介紹了一種基於BGP協議的流量排程SDN控制器(BGP TE controller)。BGP TE controller融合了SDN理念,針對企業、銀行流量排程的特點和需求進行了優化;通過BGP Flowspec協議傳送流量排程策略,將流量排程到相關的設埠,通過BGP Segment Routing Policy優化流量穿行網路的路徑。底層網路可以是使用者現有網路裝置通過軟體升級支援FlowSpec和Segment Routing即可。該控制器已經在國內某銀行骨幹網路成功部署,實現網路和特定業務的流量排程。

  背景

  可程式設計的網元裝置作為SDN網路的基本組成要素,需要提供不同層面的API介面(控制平面和管理平面);SDN控制器通過這些API介面收集網路拓撲、資源資訊、流量資訊,基於這些資訊SDN控制器就可以對網路進行抽象、模擬、排程和監控。網路自動化編排系統通過SDN控制器的北向API介面操縱網路模型,從而完成對網路業務的編排工作。可程式設計裝置的基本模型如下圖所示:  

廣域網流量排程SDN控制器在銀行業的部署

  如上圖所示,我們把BGP也作為的網路裝置的API介面之一。BGP協議版本4於1994年正式釋出,是構建現代Internet路由系統的最重要的基礎元件,它的穩定性、靈活性、擴充套件性已經得到了Internet的嚴酷考驗,並且得到了幾乎所有裝置製造廠商的廣泛支援。在SDN大行其道的今天,BGP作為駕馭Internet 20多年的“老司機”是否能找到其新的定位呢?答案是肯定的,近幾年來BGP以其靈活的協議設計結構已獲得了長足的發展,首先通過傳統的路由協議實現的功能已逐步被BGP收到囊中,例如:在資料中心網路設計中,傳統的IGP結構的設計已經慢慢被BGP結構取代,典型的代表是OTT大型資料中心的設計中,用BGP替代IGP已經形成了潮流;其次通過對BGP協議的不斷擴充套件,基於LDP、PIM等協議搭建的MPLS 二層VPN(或VXLAN)已經完全被基於BGP 的EVPN所取代 等等。在設計、部署BGP TE controller 實現廣域網流量排程方面主要使用了以下幾個功能:

  •   BGP Flowspec

  如果需要根據IP包的七元組(源、目標IP地址,源、目標埠號、協議號、QOS標記、介面索引)確定如何轉發流量,傳統的做法是通過在路由器埠上配置PBR(Policy Based Routing)來實現。Flowspec是BGP IPv4地址族中的一個擴充套件地址族,可以實現將使用者的策略:需要匹配的流量資訊(例如IP包的七元組)以及匹配後採取什麼動作(限流、重定向、更改QOS標記 等)打包後通過BGP傳送給目標裝置,從而通過Flowspec實現PBR功能而不需要對裝置進行配置,具體功能詳見RFC5575[1]。

  •   BGP SR-Policy

  SR(Segment Routing)是近年來湧現出的基於MPLS新技術,SR Policy(基於SR的流量工程,又叫做SR TE用於替代了傳統的RSVP TE)將一個資料包在網路中轉發的路徑資訊嵌入到資料包的包頭,這樣資料包就可以完全按照使用者指定的路徑穿過一個網路,例如:使用者需要資料包穿過網路中的某個鏈路、某個節點(交換機或路由器)、某個網路平面、某個BGP peer,這些需求都可以轉化為相關的SR Label然後嵌入到資料包的包頭,在這個資料包經過網路中的每一跳時,網路裝置就會檢查相關SR標籤然後把資料包轉發到相應的鏈路、節點、平面以及BGP peer,實現了資料包的轉發控制。BGP SR-Policy是BGP IPv4地址族中的一個擴充套件地址族,可以將SR Policy打包後通過BGP傳送給目標裝置,從而實現了在網路裝置中部署SR TE策略的功能,具體功能詳見draft-filsfils-spring-segment-routing-policy-05[2]。

  •   BGP Link-state

  要實現流量排程首先需要控制器能夠了解到網路拓撲資訊(網路節點、鏈路互聯關係)、網路資源資訊(節點、鏈路頻寬以及其他相關屬性)。這些資訊通過IGP(OSPF/ISIS)協議進行傳播,控制器要取得相關資訊就需要加入到IGP域中或者通過命令列登入到裝置上收集,這些方法不僅時實現起來較為複雜、而且時效性差。BGP Link-state是BGP協議中的一個新的地址族,可以將IGP協議中的實時網路拓撲、資源資訊打包通過BGP 傳送到控制器,具體功能詳見RFC7752[3].不僅如此,另一個新的rfc draft[4]可以將每條SR-Policy的執行狀態通過BGP Link-state 傳送給控制器

  通過以上三個協議的擴充套件,使用單一BGP協議已經可以做到網路、資源資訊的收集,流量排程策略的分發以及策略執行狀況的反饋。不僅如此,使用BMP協議(BGP Monitoring Protocol)可以通過帶內或者帶外網路對裝置中的BGP執行狀態進行實時監控。再加上20多年網際網路對BGP協議穩定性、擴充套件性、多廠商互操作性的考驗,現代的BGP已經可以完全擔當起SDN底層控制協議重任。

  國內某銀行廣域網流量排程需求及挑戰

  某銀行廣域網網設計有兩地三個資料中心、自建骨幹網,區域中心通過三條廣域網鏈路就近連線到骨幹網的接入節點,傳輸鏈路租用國內三個運營商的線路,如下圖所示:

  

  簡化以後的骨幹及分行組網方式如下圖所示:

 

  骨幹網設計有三個邏輯平面,每個平面由多臺核心以及接入路由器通過廣域網線路互聯組成,平面間有若干條廣域網線路互聯;骨幹網執行OSPF協議,通過OSPF metric的調整正常執行條件下避免流量穿越平面;分行網路通過三臺路由器就近連入骨幹網,分行路由器間執行OSPF,與骨幹網之間執行eBGP協議,通過eBGP協議的路由策略調整,三臺路由器的到DC1,2,3的流量分別穿越平面1,2,3。

  該使用者的流量排程需求如下:

  •   靈活的流量排程

  DC、分行層面:可以根據IP包的七元組制定策略,將流量分佈到不同的上聯鏈路(平面)上;可以檢測到裝置、鏈路層面故障,及時地調整排程策略

  骨幹網層面:根據網路資源使用情況(如拓撲、頻寬、通訊資費等)計算並調整流量排程策略,如:最小時延路徑、符合頻寬要求的路徑等;充分利用網路中等價路徑(ECMP)以及非等價路徑(UCMP),做到最大化利用網路資源

  使用者指定業務的上、下行流量在骨幹網中走相同的路徑:DC到分行的上、下行流量需要穿越相同的網路路徑,包括相同的平面、鏈路、網路裝置

  •   易學、易用、可控

  儘量使用使用者熟悉的網路技術,最大程度上降低使用者學習曲線;同時需要有良好的使用者操作介面,使得運維人員容易上手操作;排程策略的執行狀態、效果應當清晰可見,方便運維人員管理控制,在控制器發生故障的情況下,需要利用現有網路協議作為逃生通道,避免因控制器脫網導致流量異常轉發或者黑洞。

  •   最大化保護現有投資

  儘可能基於現有的網路裝置實現流量排程工作,避免或少量採購新裝置。

  在銀行廣域網路中部署SDN控制器有如下挑戰:

  •   設計、部署難度大

  該使用者骨幹網裝置型別和數量較多,諸多新型協議棧如Openflow、Netconf、PCEP等,需要對現網裝置進行硬體更新、軟體升級才能支援。而且SDN發展迅猛,新技術層出不窮,協議版本快速迭代,對裝置的相容性、互操作性要求很高。

  由於部分廣域網鏈路租用了運營商的MSTP,MSTP線路會出現抖動的狀況,因此控制器不僅需要快速感知網路拓撲的變化,而且要有效的處理鏈路抖動的場景;但如果完全依靠SDN控制器對實時的網路拓撲變化進行策略的調整,網路的執行對控制器的壓力、依賴性會很大,控制器本身很夠可能就變成了效能瓶頸,因此要充分的利用網路裝置本身的處理能力與控制器各司其職;

  上、下行流量走相同的路徑這個需求比較挑戰性,眾所周知網路裝置是按照逐跳轉發的機制處理每一個IP包並不會識別某一對通訊端點的上下行流量,需要生成雙向的流量排程策略才可以保證上、下行的流量走相同的網路路徑,並且不能只按照基於目的地址的方式排程而是需要按照源、目的地址組合的方式進行流量排程

  為了提供逃生通道,當控制器線上時,控制器傳送的排程策略在目標裝置上需要有最高的優先順序,一旦控制器失聯則網路裝置需要刪除控制器傳送的策略並轉換成為按照裝置的路由錶轉發的方式,在這種方式下控制器的作用是對網路資源使用的優化,即:控制器的集中控制和網路裝置分散式控制結合的方式,而不是類似Openflow的方式將控制器變成了網路的神經中樞。

  •   運維體系壓力大

  網路運維體系是保證網路服務質量的關鍵, 運維體系由人、工具、流程三個元素組成。SDN控制器引入了程式語言、API、DevOps等元素,對於傳統運維人員來講,知識更新會是較大的挑戰;新技術的引入會對現有OSS體系形成較大沖擊,需要引入新的工具、流程,積累新的運維經驗。因此在SDN技術選型的時候需要充分考慮現有的運維人員的網路知識、裝置運維經驗的儲備以及當前OSS系統的支撐能力。在技術選型方面,儘量做到選用多廠商支援、相容性較好、運維人員熟悉的技術,做到SDN系統上線後,只需要對相關人員進行簡單的培訓便可以上手操作並且能簡單的整合到使用者現有的OSS系統當中。

  控制器部署實踐

  基於以上的需求,我們設計並開發了BGP TE controller該控制器是行業內第一款支援通過SR-Policy方式實現原生的SR-TE流量工程的控制器。之所以選用BGP作為控制協議,在背景介紹小節已經說了不少了,這裡不再重複,另外一個主要原因是該銀行運維的BGP網路有一段時間了,已經熟悉BGP協議原理、操作以及積累了不少運維經驗,同時BGP Flowspec、SR-Policy、link-state的擴充套件已經將拓撲收集、資源資訊收集、策略分發、策略管理整合於一身,極大程度上簡化了網路設計降低了運維人員學習門檻。

  控制器和網路連線如下圖所示:

  

  控制器通過iBGP 會話連線到PE以及分行網路裝置(圖中只畫出了控制器與平面1和分行1網路裝置的連線),共有三類iBGP會話:

  •   與骨幹網BGP RR(Route-reflector)的會話,啟用了BGP Flowspec地址族,用於實時收集骨幹網拓撲、資源資訊

  •   與分行的iBGP 會話,只啟用了BGP Flowspec 地址族,根據IP的7元組將流量排程到與骨幹網互聯的廣域網鏈路

  •   與骨幹網PE的iBGP會話,啟用了BGP Flowspec以及SR-Policy地址族,將使用者流量排程到不同SR-TE的路徑上,從而實現按照使用者指定SLA(時延、頻寬、鏈路費用)穿越骨幹網的需求

  BGP TE控制器的基礎使用場景如下圖所示:

  

  使用者需要將分行1(IP地址a.a.a.0/24)R1路由器上到DC1的業務流量(IP地址b.b.b.0/24 應用埠:ccc)從平面1排程到平面2,業務需求走最小時延的網路路徑。為了讀者看清策略工作的原理,以下說明中對策略進行了一定的簡化:

  1. 控制器生成並下發兩條SR-Policy策略

  控制器通過BGP-LS收集網路拓撲和資源資訊,並且按照使用者的策略配置計算出從PE2到PE4的雙向SR-TE Policy同時計算出位於平面2的保護路徑,通過BGP SR-Policy將該策略下發到PE2和PE4當中(圖中綠色粗線條),這樣一旦在平面2中的主路徑發生故障,路由器可以將流量快速的切換到保護路徑上

  2. 控制器生成並下發兩條Flowspec 策略:

  a. 策略1:匹配流量(源IP:a.a.a.0/24, 目標IP:b.b.b.0/24,目標埠:ccc),將流量重從定向到PE2。該策略通過Flowspec傳送給R1

  b. 策略2:匹配流量(源IP:b.b.b.0/24,源埠:ccc,目標IP:a.a.a.0/24),流量重從定向到PE2。該策略通過Flowspec傳送給PE4

  當流量進入R1當中,路由器根據Flowspec策略對IP包進行檢查,如果不匹配Flowspec的條件則按照路由表進行轉發,如果匹配了Flowspec的條件則將該資料包轉發給PE2;資料包到達PE2後則進入SR-TE Policy通道到達PE4;在PE4上IP包按照本地路由錶轉發到DC1內部相關的路由器;下行流量與上行流量基本相同,這裡就不再重複了。

  由於雙向的SR -TE Policy是通過控制器計算出來的,並且在流量入網的兩端通過Flowspec限制了只有符合策略要求的流量才可以進入到相關的Policy,保證了雙向流量穿行相同的網路路徑。

  當骨幹網拓撲發生變化(如:廣域網鏈路中斷,或者路由器離線等)的處理:

  通過BGP-LS控制器可以收集到實時的網路拓撲,控制器可以根據最新的網路拓撲計算並更新已經發布的Policy

  當出現鏈路抖動的時,控制器會抑制策略更新的時間,在檢測到鏈路穩定一段時間後再將新策略傳送給相關路由器,從而避免了鏈路抖動對策略的穩定性帶來的影響

  當路由器收到了Flowspec、SR-Policy策略時,該策略是否能對流量生效還看該策略是否能通過路由器的有效性檢查,例如:在上面例子中的Flowspec策略1,如果重定向的目標IP地址(PE2)無效的話(例如:分行連線PE2的鏈路中斷、PE2下線 等),該策略就不能通過路由器的有效性檢查,這個策略也就不會對流量產生任何影響。充分利用了這個機制的,控制器就不需要對任意網路的事件實時作出響應,如上例所示,如果當Flowspec策略1剛剛下發時PE2是有效的,策略1通過了路由器的有效性檢查於是就可以對穿過路由器的流量進行排程;當網路執行一定時間後,由於故障導致PE2不可達,路由器會第一時間檢測出這個事件的發生並且立刻將策略1變為無效狀態,此時流量到達R1後會按照路由表進行轉發,從而把網路的變化對流量的影響降低到了最低;而控制器檢測到該事件的發生的時間會滯後於路由器幾秒鐘,控制器會重新計算相關的策略然後將新策略下發給相關裝置;

  BGP-TE控制器通過雙向控制體現了SD-WAN的靈活性,實用性,必要性。不僅僅基於IP,而是可以基於應用埠的流量控制是很多金融行業客戶的實際需求。目前市場上很多基於策略的SD-WAN解決方案,如IWAN,VIPTELA,VECOLOUD等需要通過策略實施逐跳控制,在存在核心網等多跳環型組網下,策略的配置和維護複雜。基於BGP協議的SD-WAN解決方案完美的將接入側基於應用識別的策略控制和核心網MPLS TE技術結合,非常簡潔的實現了金融使用者複雜的流量控制需求。

   結束語

  SDN的部署可以助力銀行網路加快業務創新,提高網路資源利用率,優化業務體驗,增強市場競爭力,逐步實現從運維到運營的演進。本文介紹的BGP TE controller利用SDN思想,充分利用BGP協議的多種擴充套件技術(如:BGP Flowspec、Segment Routing Policy),在保護原有網路投資、最大限度保持原有運維體系基礎上成功實現了廣域網流量排程功能,是國內銀行廣域網流量排程SDN部署的一次有益實踐。

參考文獻

[1]  BGP Flowspec RFC  https://tools.ietf.org/html/rfc5575


[2] Segment Routing TE Policy RFC draft https://tools.ietf.org/html/draft-filsfils-spring-segment-routing-policy-06


[3]BGP-Link-state RFC  https://tools.ietf.org/html/rfc7752


[4]BGP Link-state擴充套件支援SR Policy執行狀態  draft-ietf-idr-te-lsp-distribution-08

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11310314/viewspace-2156122/,如需轉載,請註明出處,否則將追究法律責任。

相關文章