关于中断:互联网中断检测技术窥览与讨论

如其余人造零碎一样,互联网的运行也会出现异常甚至中断。仅在2022年就产生了多起影响重大的互联网中断事件:1月15日汤加火山喷发三个小时后,全国断网,和外界的所有电话与网络分割都无奈接通;3月28日,产生了Twitter的 AS13414被俄罗斯JSC RTComm.RU的AS8342劫持事件;8月2日,某人窜访台湾,其间新浪微博产生断网,导致用户无奈应用;因为俄乌地区问题,乌克兰别离于9月11日、10月10日呈现大规模断网。互联网中断造成的损失通常代价低廉,据福布斯报道,2013年8月19日,亚马逊因为断网每分钟损失66,240美元。因为互联网自治运行的个性以及网络协议的局限性,在应答互联网中断事件时面临许多挑战,包含如何剖析互联网中断、如何检测互联网中断、如何量化中断的影响、如何量化网络的健壮性、如何评估互联网中断的危险、如何在互联网中断下生存下来并加重影响等。所以,检测正在进行的网络中断对于定性和定量地理解破坏性事件的类型、范畴、结果与及时激活缓解和补救流动就显得十分重要。  一、互联网中断的定义及起因分类因为成心或意外事件,位于特定天文区域的一个或多个网络元素不能失常工作或无奈达到时,互联网所处的特定状态,就称为互联网中断。从骨干网络服务商的视角,互联网中断起因包含:  保护:设施或链路的打算停机;路由器相干:包含解体/重启,线卡故障或重置,CPU过载,人为谬误配置;光设施相干:包含光学器件故障和电缆割伤; 其余多重链接:时间重叠且起因不明的故障;单链路高频率:包含因老化或长期测试/降级流动而完结应用的部署;单链路低频:起因不明的繁多故障。从网络故障的潜在触发因素,互联网中断起因包含:1. 大规模劫难(例如地震、飓风、流行病); 社会政治和经济挑战(例如恐怖主义、审查制度);相干故障(例如电力短缺);人为谬误(例如谬误配置);歹意攻打(例如前缀劫持攻打);异样但非法的流量(例如寻找突发新闻信息的人群);环境挑战(例如因为特设网络中节点的移动性);和平等等。后者是一个更宽泛更个别意义上的分类。二、互联网中断检测和剖析技术互联网中断检测和剖析技术分为两类:基于非流量和基于流量。 2.1基于非流量采纳与流量无关的根本技术时,通常查看非结构化数据源、半结构化数据源、结构化数据源。非结构化数据源包含技术博客(如Renesys)、邮件列表(如NANOG)和断网事件归档,以及最终用户收回的警报和通过微博社交网络的服务投诉等;半结构化数据源包含设施应用状况和谬误日志、客户邮件、品质告警、用户流动日志等;结构化数据源,如网络故障单,例如用文本开掘和自然语言解决来剖析中断邮件列表。 2.2基于流量基于流量相干的技术,又称在线中断检测,这些技术能够分为被动监测和被动探测。检测正在进行的网络中断对于定性和定量地理解破坏性事件的类型、范畴、结果与及时激活缓解和补救流动十分重要。无论是在物理中断的状况下(容许辨认和可能更换损坏的网络组件),还是在逻辑中断的状况下(容许网络管理员疾速复原令人满意的运行状态),这些办法都特地有用。检测网络中断通常须要四个步骤: 数据收集和预处理、网络中断检测、故障定位和根因剖析,大多数零碎只执行前两个步骤。这些零碎通过收集数据来继续监测网络,通常联合了被动监测技术或被动探测技术。在此步骤中,还将进行数据过滤和消毒,以便从数据中打消尽可能多的噪声。而后在第二步中,对精细化的数据利用不同的算法,以检测可能与Internet中断相干的大尺度和小尺度事件。 2.2.1被动监测技术大多数应用的被动监测技术都是基于管制立体信息,利用BGP协定收集管制立体数据。也有其余办法依赖于对数据立体流量的剖析,次要基于与停机事件相干的流量变动。 (1)管制立体公开BGP数据存储库对系统中断检测以及特定中断事件的剖析十分有帮忙。在数据收集步骤中从公共存储库(例如,Routeview、RIPE等)系统地爬取可公开取得的BGP数据,如RIB和UPDATE音讯。而后将该数据转换为适合的格局,以便进行后续剖析。BGP数据还可用于定位产生中断的AS。依赖BGP数据系统地检测网络中断时的次要毛病是大量的谬误警报,因为许多非法事件也可能确定门路或源前缀的扭转。基于管制立体检测的办法包含:1.Profile-based检测由Li和Brooks开发的一种用于检测网络中断并评估其影响的工具。其次要思维是对互联网的失常状态进行建模,而后在给定的一段时间内监控网络,以掂量互联网是否以及如何偏离这一状态。数据收集过程齐全基于私有BGP数据,而中断检测依赖于两阶段聚类办法。在BGP失常配置的状况下,将BGP以后属性值与参考值进行比拟。如果在固定的工夫窗口中存在显著差别,则检测到中断。BGP一般配置文件示意为一组一般BGP属性值的集群。当产生中断时,测量的BGP属性会被划分到一个独自的异样集群中。2.基于工夫的变化检测通过汇集与同一BGP事件相干的BGP更新,并将多个边界路由器上的事件关联起来,以便揭示异样,并尝试确定这些异样的根本原因。有两种不同的路径:(1)以互联网为观察点,通过剖析AS-AS的相互作用来跟踪异样;(2)以托管核心为观察点,洞察AS如何受到来自也有几跳之遥的内部AS的异样的影响。3.其余检测办法。如采纳张量合成法检测感兴趣的事件,采纳图论分析方法定位关注事件的源点等。 (2)数据立体这类检测办法不依赖于域间路由数据,而是依赖于其余基于流量的数据源。依据采集点在网络中的地位,这些办法能够分为基于外围(Core-based)的办法,即在直达网络中察看数据流量,以及基于边缘(Edge -based)的办法,即在末端网络或终端主机上察看数据。1.基于外围的办法基于流的连贯跟踪办法(FACT)依赖网络中所有边界路由器输入的流级数据来比拟流入和流出的流量。在数据收集过程中,FACT收集每个近程主机、网络或AS的Netflow记录和聚合流。要害思维是网络中断可能会导致:(1)到近程目的地(网络前缀、AS等)的不胜利单向连贯数量加(2)胜利的双向连贯数量缩小。2.基于边缘的办法该办法通常利用协同网络监测平台提供的多种网络故障排除工具。每个节点监督流和门路品质信息,如吞吐量、失落、提早,以本地检测事件,监督和关联终端用户应用程序的性能,以便裸露包含中断在内的网络事件。上述办法都波及保障用户隐衷的问题。 2.2.2被动探测技术许多其余中断检测零碎在数据采集过程中次要应用被动探测技术:1.依赖Ping和Traceroute从多个无利地位周期性地探测多个目标地址。2.断层扫描办法。这两种办法通常都依赖分布式被动测量平台。 1.基于Ping和Traceroute的办法该办法周期性地用ICMP echo申请(Ping)探测每个IP块,并将响应分为两大类:(1)必定的,如果收到ICMP应答;(2)否定的,如果ICMP应答表明网络不可达,或没有应答。否定的应答可能应答互联网中断2.层析扫描办法二值层析成像是通过发送协调的端到端探针来检测链路故障。网络断层扫描是一个弱小的工具。然而它也有局限性:疾速检测网络中断意味着高探测率,这在事实网络中是不可行的。此外网络动静可能会减弱注入的数据包正在遍历先前察看到的雷同链路的根本假如,同时负载平衡进一步加剧了这个问题。 2.2.3主被动混合办法哈勃(Hubble)零碎依据BGP公共数据在管制立体上存在达到目标网络的路由,但报文没有通过数据立体达到目标网络的办法来检测互联网的可达性问题。数据采集依赖于BGP数据、管制立体变动触发的Ping和Traceroute测量值。PoiRoot实时零碎,帮忙ISP精确定位任何影响其前缀的门路变动的根本原因。该零碎利用了BGP数据,但也联合了Traceroute等测量工具。主被动混合办法多见于学术研究,理论利用中较少应用。 2.2.4探讨依赖被动监控的互联网中断检测零碎十分高效,但容易呈现:(i)虚伪警报和(ii)与隐衷相干的重大问题。基于被动探测的解决方案较为无效,但伸缩性差。被动探测会向网络发送大量探测包,运行商往往不能容忍这种行为。此外,在指标目的地数量和采样周期之间的必要衡量导致中断检测零碎齐全依赖被动探测,可能只报告大型和长时间的网络中断。所以主被动混合办法仿佛是最好的抉择,因为它联合了被动监测和被动探测的长处。

January 16, 2023 · 1 min · jiezi

关于中断:笨叔点滴12面试必考如果在中断处理函数里发生了缺页中断会怎样为什么

“ 小明同学去BAT公司面试。 面试官:叫神马名字 小明:小明 面试官:啥是时钟中断? 小明:就是手表坏了,不跑了 面试官: ???这也行 面试官接着问:如果时钟中断处理程序产生了缺页中断,怎么办? 小明嘟囔:咋手表坏了还会缺液,这啥手表。。。液压手表?要加几号油... 面试官:小明同学,滚。。。 ” 下面是一个段子,然而这是一个面试必考题目,考查大家对中断和异样解决的了解,如果你对中断和异样了解不透彻,很难胜任Linux相干的研发工作的。如果能把这个问题的前因后果想进去,去面试BAT或者其余大公司一点问题都木有。 凑巧,明天在笨叔的VIP奔跑群里,有人问了这样一个问题,在中断处理函数ISR中,能够产生缺页中断吗?产生缺页中断会怎么样? [如果你也想参加到VIP奔跑群里和笨叔进行交换,请点击“浏览原文”订阅旗舰篇] 01 啥是缺页中断? 首先咱们先搞清楚两个事件: 一个是中断 另外一个是缺页中断 他们是否一样都是中断呢? 答案显然是否定的。中断和缺页中断是兄弟,然而不是同一个人。在大部分的体系结构里,缺页中断其实是缺页异样,英文叫做“Page Fault”,笨叔不晓得从哪个教材开始“page fault”都清一色叫做缺页中断,其实翻译成缺页异样会更适合,否则学生还天真的认为缺页中断和一般的外设中断没啥两样。 在ARM32处理器里中断和异样是分的比较清楚的,中断有IRQ和FIQ中断,咱们常说的一般的外设中断就是IRQ中断。而异样,分成data abort、undefine abort、预取异样这几种异样。大家从异样向量表就能够看出,当中断和异样产生的时候,他们的解决的入口是不一样的。 当一个外设中断产生的时候,它的解决步骤是这样的: 跑到IRQ的向量表里 在vector_IRQ汇编函数,保留以后lr和spsr到中断栈 跳转到SVC模式 在SVC模式里,判断中断产生在内核态还是用户态 保留中断产生那个工夫点上下文到过程的内核栈里(SVC模式) 跳转到do_IRQ函数里去执行中断处理函数 判断是否须要抢占 中断返回 下面是笨叔总结的IRQ中断产生,上半部解决要经验的一些事件(咱们这里探讨疏忽了中断下半部)。这次点滴那个小伙伴问的问题是,当在第6步的时候产生了缺页中断。也就是在do_IRQ函数里,拜访的内存不存在,或者页的属性不对,导致产生了一个缺页异样,那怎么办? 通过笨叔下面这么一剖析,咱们就get到了这个问题的实质了。 [对于中断解决的全过程,倡议大家去看《奔跑吧Linux内核》第5.1章内容] 02 不能够哟 假如在中断过程的第6步产生了缺页异样,你拜访了不该拜访的内存,捅了马蜂窝,那会产生什么事件? (在ARM处理器里大略有两种的缺页异样,一种是过程地址空间的缺页异样do_page_fault,另外一种是vmalloc的缺页异样do_translation_fault。后者比较简单,vmalloc缺页中断仅仅是把init_task过程的页表拷贝到以后过程而已,咱们临时思考更为简单的前者)。 首先一点,异样解决的汇编代码局部和中断是差不多的,都是通过异样模式的栈,而后跳转到以后过程的内核栈外面。然而异样模式有一个不一样的中央,就是处理过程是开中断和容许睡眠和调度的。 所以当在外设中断ISR处理过程中产生异样,会呈现上面状况。 如图所示,在产生中断的那个current过程的内核栈里,会呈现一个一个栈框,最下面的是产生中断那个现场点的上下文的栈框,接着是do_IRQ的栈框,接着是具体硬件外设ISR处理函数的栈框。 接下来就是产生异样时候,保留下来的栈框。 因为在异样处理函数里,它是容许开中断的和睡眠的,那“层层嵌套”,套路太深,猴年马月能力返回到 最后那个中断上下文呢? 如图所示,在①这个中央产生了中断A,而后在保留了这个现场的上下文。而后在②这个中央产生了异样,也保留了这个现场的上下文,在异样处理过程③的中央,又产生了中断B,这时候保留产生中断B的上下文。 假如中断B返回的时候产生了调度,那猴年马月能返回到③这个中央呢? 假如在异样解决的时候产生了调度,也是一样的,猴年马月能返回到③这里呢? 下面场景产生的话,中断A啥时候能力返回呢?因为中断控制器还在期待程序媛给他一个吻,这个吻叫做“EOI”,英文叫做“end of interrupt”。兴许望眼欲穿了,也等不到这个吻了。。。 下面场景如果产生在时钟中断里的话,大家想想会有啥结果? 所以,为了避免异样解决产生的套路很深的陷阱,咱们看一下Linux内核做了哪些限度? 在do_page_fault()函数里,有判断以后上下文是否在中断上下文中,通过in_atomic()函数来判断。如果在中断上下文里,就跑到do_kernel_fault里,通常就打印oops谬误了。 那in_atomic()怎么判断以后是否在中断上下文呢? 这里次要是去判断thread_info外面的preempt_count计数。 [这里preempt_count计数是啥意思呢?笨叔在这里就不解释了,倡议大家去看《奔跑吧Linux内核》第3章的图3.2] ...

April 2, 2022 · 1 min · jiezi