張俊芳
摘要:網絡設備為應對網絡攻擊報文對設備控制面的沖擊,通常會對業務報文做限速以保護正常業務,每種業務報文通常有個默認的限速值,但是當前面臨的問題是,默認的限速值通常不能滿足不同業務場景需求,經常需要人工調節報文的限速值。本文提出了一種系統動態調整業務報文限速值的方法,可以匹配不同的場景,自動調整報文限速值,減少人工干預。
關鍵字:網絡攻擊;動態調整;報文限速;設備丟包
引言
隨著網絡技術的不斷發展,網絡攻擊者們對網絡中的設備進行攻擊的成本極大降低。網絡攻擊的事件時時發生,其中拒絕服務即常說的DoS(Deny of Service)會對設備系統和資源進行攻擊,以達到破壞正常服務的目的。為了保護設備控制平面的安全,基本網絡中各個路由設備都具備一定的防攻擊能力,其中根據業務報文類型對上送報文進行限速是比較常見的一種,每種報文類型都會根據經驗設置默認的限速值。
但是應用在網絡中,經常會遇到默認的設置不能夠滿足現網要求,需要人工進行調節的情況。比如某類業務丟包嚴重,導致業務嚴重受損,需要人工調高報文限速值;或者控制面繁忙,為防止業務報文對系統的攻擊,需要人工調低報文限速值;或者不同接口的限速值比較低,但是疊加后設備總的報文速率很高,導致控制面繁忙,需要人工調低限速值等等。不同的場景需要不同的操作,非常不智能,而且非常考驗設備管理員的經驗。這種依賴人工的操作,及時性無法保證,一旦沒有及時發現設備異常,就會導致不同情況下的業務受損或者設備處理異常。
為了解決人工干預調節帶來的及時性和易用性問題,設備動態調整業務報文限速值的方案應運而生。動態調整報文限速值是參考人工調節的模式,代替人工對設備進行報文限速值的調整。根據設備的運行情況,自動識別和計算報文限速值,自動進行調節。
動態調整業務模型:
動態調整業務報文限速值,是有一個調整中樞負責監測各種報文的丟包情況以及相關進程的CPU運行情況,根據策略對報文理想的限速值進行計算,判斷是否需要調整,如果需要調整,則動態調整當前報文的限速值,系統按照調整之后的限速值生效。
動態調整準備:
1、劃分報文優先級
將各種報文類型根據業務的重要程度劃分為三種優先級:高優先級、中優先級、低優先級。重要不能受損的業務報文優先級為高優先級,次重要可以輕微受損業務的報文優先級為中優先級,可以受損業務的報文優先級為低優先級。不同優先級的報文制定不同的處置策略。在設備處理能力有限的時候,優先降低低優先級報文的限速值,保證高優先級報文的處理。
2、劃分進程狀態等級
將進程的運行狀態根據CPU的利用率情況劃分為三個等級。分別為安全狀態、預警狀態和危險狀態。CPU空閑,可以承接更多的業務處理時,進程狀態為安全狀態;CPU較忙,盡量不再承接更多的業務處理時,進程狀態為預警狀態;CPU繁忙,已經快到處理能力的極限,需要減壓時,進程狀態為危險狀態。
可以設定預警閾值和危險閾值,CPU利用率未到達預警閾值,進程狀態為安全狀態;當CPU的利用率達到預警閾值時,進程狀態為預警狀態;當CPU的利用率達到危險閾值,進程狀態為危險狀態。為防止狀態震蕩,進程狀態向更安全狀態躍遷時,應設置防震蕩閾值調整。當進程CPU利用率從危險狀態下降到預警狀態時,不立馬進行狀態躍遷,而是再下降一個防震蕩調整值后再進行狀態躍遷。從預警狀態到安全狀態的躍遷也一樣。如下圖所示。
調整中樞實時監測各個進程CPU的利用率情況,根據進程不同的狀態執行不同的調整策略。對于進程的狀態監測,可以采用多次采樣然后取平均值的方式來減少擾動。
3、繪制報文路徑圖
針對每一種報文類型,繪制一張報文路徑圖,監測報文路徑上的每一個進程的運行狀態。
動態調整策略:
(1)進程危險狀態
當控制面處理繁忙時,需要對業務報文限速值進行降低,保障進程安全,同時保障高優先級報文能夠正常處理以保障重要業務不受損。對于任何一個進程繁忙時,查詢報文路徑圖,對于流經該路徑的所有報文執行CPU保護策略,調整中樞根據報文優先級動態調整這些報文的限速值。
進程處于危險狀態時,高優先級報文應以默認限速值放行保障業務,中優先級報文稍微降低限速值,低優先級報文調低限速值給高優先級報文讓行。
但是如果某種報文類型有持續丟包,則認為此種報文類型存在攻擊情況,導致了CPU沖高,應將此種報文類型的限速值調低,保障控制平面安全。
(2)進程預警狀態
當進程處于預警狀態時,如果高優先級的報文有丟包,可以調高限速值以保障業務,中優先級報文調整為默認值,低優先級報文限速值微降以保障控制平面安全。
(3)進程安全狀態
當進程處于安全狀態時,如果報文有丟包,可以適當調高報文的限速值,來保障業務正常運行。高優先級、中優先級和低優先級報文都可以調高限速值。
業務報文有丟包時,取最近時間段的丟包計數和當前的限速值,根據PID算法,計算報文理想速率,動態調高業務報文的限速值,盡量減少丟包帶來的業務影響。但是需要設置調高的最大值限制,避免限速值過大。
如果連續多次的采樣,業務報文都沒有丟包,并且進程都處于安全狀態,就沒有必要維持調整的值,需要逐步回歸系統設定的默認值。
(4)死區調節和防震蕩
由于數學運算結果下,即使發生較小的偏差也會對報文限速值進行重新計算和更新,但是報文的限速值實際上是不希望頻繁進行更新的。所以需要設定調整的幅度,在計算出來的報文限速值變化較小未超過設定幅度時,不進行調整,防止報文限速值頻繁進行更新。
由于丟包導致報文限速值需要調高,或者持續沒有丟包需要將報文限速值恢復默認值時,為防止報文限速值驟變影響業務或者影響進程狀態,限速值的調節需要謹慎一些。對報文限速值的向上和向下調整均采用步進調節的方式,在每個調整周期控制調整幅度,一步一步平穩調整到計算的值,防止限速值突然變化很大對系統或者業務的沖擊。
(5)人工干預
動態調整是模擬人工代替人工調節的模式,對于有的報文類型有人工配置了限速值的場景,則不進行動態調節,優先使用人工配置的數值,保證配置的數值可以生效。
動態調整報文限速值主要有如下優勢:
(1)盡量保證業務正常
網絡中經常有某類業務由于限速丟包,導致業務受損。動態調整報文限速值,可以在CPU資源有空余的時候,自動識別各類報文的丟包情況,根據報文的優先級,動態調高報文限速值,保障某類報文突發增長時,不因為報文限速原因造成報文丟棄而影響該業務的正常運行。
(2)高優先級業務得到保障
對于某些特殊場景,比如業務割接,突然有大量新業務接入,導致設備CPU沖高,影響到已經在線業務時,可以根據不同業務報文的優先級,動態調低新業務的報文限速值,保障已在線業務的正常運行。
(3)保障控制平面安全
可以實時監測控制面各個進程的運行情況,將控制面的狀態進行等級劃分,根據不同的狀態等級,執行不同的策略,調整影響該進程運行的報文的限速值,以減輕控制面的處理壓力,防止控制面異常。
(4)設備調整更實時
實時監測并動態調整設備各種業務報文的限速值,應對不同的業務場景或者攻擊手段,設備可以做到自適應。減少人工干預,而且可以更及時的發現并處理各種異常,保障異常情況下系統和業務的正常運行。
結語
動態調整設備的業務報文限速值,通過監測系統運行狀態與業務受損狀態,利用PID算法,計算出業務報文的理想速率,根據業務的重要程度,采取不同的策略,將設備的業務報文限速值自動調整到既保證控制面安全,又保障業務正常的參數。并且可以在設備狀態以及業務穩定的場景,自動回歸默認設置。
通過設備的動態調整機制,從整體上提高了系統的可靠性和穩定性,解決了設備的默認限速值參數無法滿足所有場景的問題。一方面能夠保證攻擊場景下設備控制面的正常運行,另一方面能夠在保證設備控制面正常的情況下識別業務受損場景,通過調節業務報文的限速值,保障業務報文的通行,使業務盡量不受損。
系統的自動調節也讓設備更智能,將自身調整到最合適的運行狀態,降低了不同業務場景對人工的依賴,也讓設備能夠更及時的應對各種攻擊以及異常。