据外媒报道,部分地区的网民于 8 月 25 日遭遇网络连接性故障,其网速缓慢或部分网络无法访问。然而此次事故影响最大的是日本网民。
当网络出现故障,想必大多数网友都会以为是自己电脑或运营商(也就是电信、联通等)出问题,但怎么也想不到是Google引起的。
有的朋友开玩笑说,是不是谷歌AlphaGo的人工智能要开始统治地球了?
言归正传,接下来我们大致讲下是如何引起这次的故障的,由于运营商和Google之间直接建立BGP邻居,这样运营商和Google之间可以直接传输路由。这时候Google的工作人员把错误的路由发布到BGP中,而运营商又学习了Google的路由,然后运营商传至其他运营商,造成大范围网络故障。
1.首先为什么运营商要和Google建立BGP邻居呢?
正常情况下公司不会把公网的路由导到自己的网络设备上,因为把公网中五十多万条路由导到公司的网络设备上对设备的负载非常大(很多小公司支持不了这么多路由)。
那为什么Google要和运营商建立BGP的邻居关系呢?
比如PC1访问公网,默认情况下是往ISP电信线路出去,对于正常公司说,电信主用,联通备用。现在公司的内网有台PC1访问联通的站点服务器,PC1→公司出口→ISP电信→ISP联通→联通的站点服务器
正常情况下:
这里电信到联通肯定有延迟,有什么办法能够让目的是联通的走联通线路,目的是电信的走电信线路。公司设备和运营商设备间建立BGP邻居。
PC1→公司出口→ISP联通→联通的站点服务器
2.运营商要和Google建立BGP邻居.
在这种情况下只要运营商更新路由,Google立即能学到最新路由,如果,Google更新路由,运营商也立即能学到最新路由。
这次事故就是因为一个粗心的网络工程师在Google设备上发布了Google自己不存在的路由,运营商学习到路由,日本刚好在用这个网段。这时候大家要访问或者回程的路由都指向Google,数据包发送至Google之后,Google也不存在这个网段,直接进行丢包。
3.如何防止这种情况.
很多同学说以上情况在国内有某防火墙可以有效的防止,其实跟某防火墙没有半毛钱关系,只是刚好Google发布的网段不是和国内的网段重合而已。
如果要防止这种情况再次发生,运营商要多一个从其他公司接收路由的控制,比如Google公司发送的路由运营商要在BGP的in的方向默认不全部接收所有路由,如果需要接收Google的路由需要在运营商写对应的接收策略。
那么说的通俗一点,想要防止这类情况,就要借鉴具有我们中国特色的处理方式即颗颗红心涌向党,祖国发展我成长,将谷歌发送给运营商的路由,要有运营商审批后接受就可以完全避免这种情况。