新棱镜门时刻,Facebook遭遇双重“背叛”
2021-10-09 15:06:34
  • 0
  • 0
  • 0

来源:Light Techsoho


弗朗西丝·豪根告密前不久,Facebook全线产品突遭长达6小时的大宕机。


这个十一,Facebook无疑是全球舆论的焦点。

10月5日(北京时间),Facebook前产品经理弗朗西丝·豪根(Frances Haugen)出现在参议院商业小组委员会面前,关于Instagram对青少年负面影响的问题研究上,豪根在听证会上当众指证Facebook唯利是图,即便知道信息内容是有害的,却依旧只关心广告利润。据悉,在听证会之前,豪根便公开表示担心Instagram对年轻用户心理健康造成损伤,豪根的告密很快便如棱镜门一样在美国引起轩然大波,越来越多人站出来证明Facebook有罪,马萨诸塞州的参议员爱德华·马基称豪根为"21世纪美国英雄",并补充说"我们的国家欠你巨大的感激之情"。

一波未平一波又起,Facebook还忙着如何回答国会听证会与豪根时,其全线产品(包括Facebook、Instagram、WhatsApp、Messenger、Oculus)又出现长达6小时的全球大宕机,影响全球超35亿用户正常使用。Facebook全线产品的宕机外界给出了两种猜想,第一是Facebook因听证会豪根的泄密正利用这6小时的宕机“毁尸灭迹”,第二种猜想是Facebook近15亿用户资料流出正在寻求补救,不过事后Facebook给出官方原因:Facebook的BGP(边界网关协议)出了问题。

01、什么是BGP

边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议,通俗来讲就是BGP就是网络通讯里面的GPS导航,他的用处便是告诉这条信息“你在什么地方”,“XXX在什么位置”,“怎么去最近最方便”……

BGP诞生的目的是为方便管理规模不断扩大的网络。1982年,外部网关协议EGP(Exterior Gateway Protocol)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。在此背景下,BGP被设计出来取代最初的EGP,不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息,从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性。

你可以把他们想象成岛国——它们是由单一实体控制的网络,它可能是一个ISP,比如像Facebook这样的公司,或者像政府或主要大学这样的其他大组织。建造连接每个岛屿和所有其他岛屿的桥梁是极其困难的,因此 BGP 负责告诉您要到达目的地必须经过哪些岛屿(或自治系统)。

由于互联网总是在变化,地图需要更新,你不希望你的 ISP 带领你走一条不再通往目的地的老路。因为这将是一个巨大的任务,映射整个互联网所有的时间,自主系统共享他们的地图。他们偶尔会与岛上的邻居交谈,查看并复制他们已更新到地图上的任何更新。

使用地图作为框架,很容易想象事情会如何出错。当消费者第一次使用GPS时,总是有笑话说,你开车下到海里与断头路上。同样的事情可能发生在BGP,如果有人犯了一个错误,它最终可能会导致这个错误出现在每个人的地图上,最终造成无法访问的结果。

02、Facebook是如何全线宕机的

BGP有两类常见的问题:第一种是I-BGP的Full-Mesh问题,第二种是更改路由策略时路由振荡的问题。

BGP分为由I-BGP和E-BGP两个部分组成,I-BGP用于自治域内的路由器之间,E-BGP用于自治域间的路由器之间。为了防止产生环回路由,BGP协议要求一个路由器通过I-BGP学到的路由,不再向其他I-BGP邻居广播,所以一个自治域内所有参加I-BGP协议的路由器都要与其他路由器建立会话,从而保证路由信息能够正确地广播到每一个路由器。依照这个原则,一个自治域内总的I-BGP会话数为N×(N-1)/2 (N为运行I-BGP的路由器数),当N不断增大时,这个数字会大得惊人:例如100台路由器,则会话数为4950。这对网络设备而言是个非常大的负担,而且还将使网络的管理与配置变得异常复杂,而骨干网通常由大量的运行I-BGP的路由器组成。因此,这个问题是否能够解决,直接影响到网络规模的大小。

BGP路由协议属于增量更新的路由协议,当有新的路由要发布时,路由器会向邻居发送Update信息,而如果要删除某条路由时,就会发送Withdraw信息。BGP路由的Flap的定义是:当一条路由在被收回(Withdraw)后,又被广播(Update)出来,视为一次Flap。由于任何一条路由的收回和更新都会导致一台路由器整个路由表重新计算,因此当Flap的情况比较多时,对路由器设备的负载将产生巨大的压力。在实际工作中,一般情况下一台高端路由器在计算BGP路由的时候,CPU的负载基本上在80%-90%左右,有时甚至达到100%,占用了几乎所有的CPU资源,虽然目前大部分的高端路由器都将路由计算的模块与转发模块分布在不同的硬件上,来减少主CPU忙导致的路由器性能下降的问题,但是路由表的频繁变化和更新,对整个设备的运行还是有一定的影响的,而且这样的计算会随着路由的收回或广播,继续向自治域内部扩展,使内部的路由器产生同样的问题。

Facebook此次宕机问题属于后者——更改路由策略时路由振荡的问题,停电只是引起策略改变的导火索。据悉,Facebook已经建立了自己的BGP系统,而在Facebook的工程更新中,该公司也表示,这个问题是由“协调我们数据中心之间网络流量的骨干路由器的配置变化”引起的。这导致了"对Facebook数据中心沟通方式的连锁效应,最终使其服务停止。

而Facebook本次宕机长达6小时之久还有一个特殊原因——内部管理混乱。多位Facebook内部工程师事后发布推文表示,由于疫情原因一部分工程师为远程办公状态,而只有极少的工程师在机房中,这部分远程办公的工程师(有能力快速修复BGP故障)没有登录路由器权限,有权限的人不会修也连不上,唯一在机房能物理接触到路由设备的员工没有权限也不会修,更雪上加霜的是此时内部通讯工具也掉线了,内部协作变得更加困难重重了。

6小时后,BGP问题得到修复,但Facebook信任危机仍在发酵。

 
最新文章
相关阅读