张俊芳
摘要:网络设备为应对网络攻击报文对设备控制面的冲击,通常会对业务报文做限速以保护正常业务,每种业务报文通常有个默认的限速值,但是当前面临的问题是,默认的限速值通常不能满足不同业务场景需求,经常需要人工调节报文的限速值。本文提出了一种系统动态调整业务报文限速值的方法,可以匹配不同的场景,自动调整报文限速值,减少人工干预。
关键字:网络攻击;动态调整;报文限速;设备丢包
引言
随着网络技术的不断发展,网络攻击者们对网络中的设备进行攻击的成本极大降低。网络攻击的事件时时发生,其中拒绝服务即常说的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算法,计算出业务报文的理想速率,根据业务的重要程度,采取不同的策略,将设备的业务报文限速值自动调整到既保证控制面安全,又保障业务正常的参数。并且可以在设备状态以及业务稳定的场景,自动回归默认设置。
通过设备的动态调整机制,从整体上提高了系统的可靠性和稳定性,解决了设备的默认限速值参数无法满足所有场景的问题。一方面能够保证攻击场景下设备控制面的正常运行,另一方面能够在保证设备控制面正常的情况下识别业务受损场景,通过调节业务报文的限速值,保障业务报文的通行,使业务尽量不受损。
系统的自动调节也让设备更智能,将自身调整到最合适的运行状态,降低了不同业务场景对人工的依赖,也让设备能够更及时的应对各种攻击以及异常。