Edgio的新ShakeAlert提供了更好的网络事件可见性
当运行大型全球分布式网络时,硬件故障,提供商中断和其他行为变化都是经常发生的情况。 因此,能够在出现故障的初步迹象时发出警报的系统可以提醒操作员或自动化系统,并能够更快地采取纠正措施。 为此,我们开发了ShakeAlert,这是一个建立在公开外部数据基础上的警报系统,用于对互联网突然变化发出警报。
ShakeAlert监控从公共收集器观察到的BGP (边界网关协议)更新流,以查找源自CDN的路径。 当更新量急剧增加时,ShakeAlert会发出一个叫做Shake的警报,表示互联网的路由行为可能发生变化,特别是外部网络如何将流量路由到CDN。 利用这些更新的内容,ShakeAlert进一步估计了可能受影响的POP(入网点),提供商和前缀。
该系统以美国地质调查局的地震预警系统命名。 该系统的功能是检测移动速度更快但破坏性较小的P波,并在破坏性较强的S波到达之前提醒居民。 在这里,我们将BGP的控制平面信号视为可能涉及数据平面和最终用户流量变化的预警信号。
背景
为了便于在Internet上自治系统(AS)之间进行路由,网络通过BGP通信它们有路由的前缀。 作为此通信的一部分,当前缀的可达性发生变化时,网络会发送一系列称为”通知”的通知,这些通知指明受影响的前缀以及网络到达这些前缀的路径。
在因特网的正常运行中,在更新路由表时,成千上万条此类消息在网络之间进行交易。 每次这些路由因网络故障,网络之间的新连接或计划维护而发生变化时,都会交换一组新的消息。 这些可能包括源站网络生成的更改(例如,宣布新的IP块)或源站下游发生的更改(例如,转运提供商的连接更改)。
这些消息必然提供了对Internet当前状况的大量洞察,揭示了网络之间连通性的增益和损失。 为了利用此信息,许多组织1运行称为路由收集器的服务,这些服务与许多网络对等,并使收集的更新消息公开可用。
当连接性发生变化时,上游网络会发送BGP更新,这些更新最终会发送给BGP收集器。
为了培养对这些行为的认识,我们考虑了一些初步观察结果。 我们会考虑针对少数不同网络生成的更新馈送。 我们考虑了两个大型CDN网络(CDN A,CDN B),一个内容网络(内容),两个大型ISP (ISP A,ISP B)和一个DNS根信。 每种类型的网络都针对不同的目的而设计,并且可能具有不同的对等策略。 对于每个网络,我们将更新分为1分钟的时段,并考虑在2021年1月1小时内每个时段中的消息数。
上图绘制了该期间每个更新箱的大小。 在这里,我们看到了CDN,它们都具有大型部署功能,许多同行和提供商在几乎整个范围内生成最多的更新,而内容网络则相对落后。 ISP和Root字母生成的更新显著减少。 这些显著的大小差异表明网络的结构,对等方和架构可能会对相应的消息量产生重大影响。 因此,我们必须确保我们的系统能够灵活地适应参数的变化,正如我们在下一节中讨论的那样。
摇晃警报系统
ShakeAlert收听来自21个路线收集器的实时消息,这些收集器是RIPE NCC的路线信息系统(RIS)项目2的一部分。 数据来自这些馈送,并分组到一分钟长的时间箱中。 然后,我们计算每个容器中的更新数量,并使用离群值检测算法来确定容器与最近几分钟相比是否具有异常大的更新数量。 在观察到这样的垃圾箱的情况下,我们会生成一个摇晃。
为此,ShakeAlert维护了最后w容器中看到的更新计数的滑动窗口,使其避免存储的更新信息超过w容器旧的信息。 ShakeAlert建立了w容器的历史记录,并且w+第1容器完成后,它会考虑这个新容器bw+1的计数,相对于上一窗口中的容器。 虽然可以使用一些潜在的异常检测机制(例如修改的z评分和标准差估计值,静态阈值和各种变化检测技术),但我们采用了基于密度的检测机制34。
为了执行基于密度的异常检测,我们考虑半径R和邻居计数k。 如果在最后w分钟内其他容器少于k个,且半径R内的计数围绕新容器的计数中心,则我们的新时间容器bw+1是一个离群值。 形式上,任何离群值在最后w分钟内的bin b i都少于k,这样| b w+1|–|bi| <R。 我们将任何此类离群值称为振动警报或只是振动,以及这些振动的更新计数作为大小。
ShakeAlert的整体检测过程
我们假设的根本基础是,大规模的破坏性Internet路由更改会导致这些事件中最大的事件:许多下游网络和收集器可能会听到承载大量流量的路由。 但是,从根本上讲,许多更改涉及不属于此类别的大量更新计数。 例如,我们撤销Anycast公告的定期计划维护。
可以进一步观察容器中更新的内容,以显示有关网络事件性质的详细信息。 更新中的前缀可用于确定哪些POPS和Anycast区域可能受到相应网络更改的影响。 我们可以进一步检查在更新过程中观察到的路径,并估计最可能受到影响的上游网络。 最后,我们可以根据警报对入站CDN流量的重要性来确定警报的重要性。
在我们的CDN部署中,我们使用360分钟的窗口w和5分钟的窗口,这样我们就可以避免对通常观察到的每小时行为发出警报。 我们还将R作为窗口中观察到的容器大小的第5百分位数和第95百分位数之间的距离。 为了增加操作上下文,我们根据更新中观察到的前缀和路径,进一步将容器细分为特定于POP的时间序列,并分别提醒每个容器。 最后,我们考虑了一些特定的调谐,例如,根据网络观察设置最小警报大小。
ShakeAlert在行动
接下来,我们考虑一个简单的例子来演示震荡是如何出现在野外。 在上面的2022年9月的例子中,我们关注的是特定的CDN流行游戏,注意到沿y轴和线性尺度的更新计数比我们早先的数字要小得多。 在此时间段内,更新计数几乎完全为0,直到它们突然增加,在12:14时生成更大的更新计数,在12:20后不久生成第二个峰值,两者都产生震动。 这些更新是由于与提供商的连接意外中断而导致的。
评价
为了衡量震动是否代表有趣的事件,我们考虑以下分析。 对于2022年夏季超过30天产生的每一个振荡,我们都会在相应的站点检查内部指标,以确定振荡后10分钟内是否观察到异常行为。 对于我们的异常情况,我们会考虑以下几点:路由器重置(例如,路由器重启或脱机),提供者链路上的BGP状态变化(例如,提供者BGP会话退出建立状态),站点公告的变化以及在相应站点与至少五个其他站点之间检测到的数据包丢失。
上图显示了30天内这些事件的细目。 在这里,我们看到所有桶至少有60%的振动发生了相应的事件,平均80%的振动发生了匹配事件。 这些发现证实了最大的震荡与重要且通常影响流量的事件相对应。 然而,它们进一步强调了可能产生这种震荡的事件的广度,从例行维护到严重故障。
结论
ShakeAlert为我们已经丰富的CDN监控提供了一个新的可见性视角。 通过从外部来源提取数据,我们知道它提供了对互联网行为的根本不同见解。 在我们对该系统的持续工作中,我们正在探索如何将数据与内部监控进一步结合,以提高警报的准确性,并实现自动化纠正措施。
特别感谢研究团队,网络可靠性工程团队和所有内部工程团队,这些团队使这项工作成为可能。 还要感谢许多路由数据方面的外部专家,包括Emile Aben,Stephen Strowes和Mingwei Zhang,他们提供了有用的反馈和讨论。
1例如Routeviews,RIS
2系统基本上可以使用任何收集器。 由于WebSocket界面的灵活性,我们在此只关注RIS
3 M. Gupta,J. Gao,C. C. Aggarwal和J. Han. 时间数据的离群值检测:调查。 IEEE Transactions on Knowledge and Data Engineering, 2014.
4 T. Kitabatake,R. Fontugne和H. Esaki。 BLT:用于挖掘BGP更新消息的分类和分类工具。 在Proc中 2018, INFOCOM’18.