Facebook昨天发生了一起BGP导致的离线事件。很长一段时间以来,我一直隐隐约约有兴趣了解更多关于BGP的知识,所以我阅读了一些文章。我很沮丧,因为没有一篇文章告诉我如何在我的计算机上实际查找BGP相关信息,所以我写了一条推文询问该工具。与往常一样,我收到了很多有用的回复,因此这篇博文展示了一些可用于查找BGP信息的工具。这篇文章的错误可能比较多,因为我对BGP了解不多。我无法发布BGP路由我从未了解BGP的原因之一是,据我所知,我没有在Internet上发布BGP路由的权限。与大多数网络协议一样,如果需要,您可以非常轻松地自己实现该协议。例如,您可以:颁发您自己的TLS证书编写您自己的HTTP服务器编写您自己的TCP实现为您的域名编写您自己的权威DNS服务器(我现在正在为一个小项目尝试这样做)构建您自己的证书Authority(CA)但是对于BGP,我不认为你可以自己发布路由,除非你有自己的ASN(你可以在你的家庭网络上实现BGP,但是当我在试验的时候,这对我来说有点无聊,我希望他们实际上是在真实的互联网上)。不管怎样,尽管我不能试验它,但我仍然认为它非常有趣,因为我喜欢网络,所以我将向您展示一些我发现的用于学习BGP的工具。首先让我们谈谈一些BGP术语。我打算很快浏览一下它,因为我对工具更感兴趣,并且网络上有很多关于BGP的高级解释(例如这篇cloudflare文章)。什么是AS?我们首先要了解的是AS(“自治系统autonomoussystem”)。每个AS:由一个组织(通常是大型组织,例如您的ISP、政府、大学、Facebook等)所有。控制一组特定的IP地址(例如,我的ISP的AS由247,808个IP地址组成)。有一个数字ASN(例如1403)。以下是我通过一些实验对AS的一些观察:一些相当大的科技公司没有自己的AS。例如,我查看了BGPView上的Patreon,据我所知他们没有自己的AS,他们的主要网站(patreon.com,104.16.6.49)在Cloudflare的AS中。一个AS可以包括来自许多国家的IP。Facebook的AS(AS32934)肯定有新加坡、加拿大、尼日利亚、肯尼亚、美国等国家的IP地址。似乎一个IP地址可以在多个AS中。例如,如果我查找209.216.230.240,它有2个关联的ASN:AS6130和AS21581。显然,当发生这种情况时,更具体的路由将被优先考虑——因此到该IP的数据包被路由到AS21581。什么是BGP路由?互联网上有很多路由器。例如,我的ISP有路由器。当我向我的ISP发送数据包时(例如通过运行ping129.134.30.0),我的ISP的路由器需要弄清楚如何将我的数据包实际发送到IP地址129.134.30.0。路由器执行此操作的方式是它有一个路由表:这是一组IP地址范围(如129.134.30.0/23)的列表,以及它知道到达该子网的路由。以下是129.134.30.0/23(Facebook子网)的真实路由示例。它不是来自我的ISP。1167032934206.108.35.2来自206.108.35.254(206.108.35.254)OriginIGP,度量0,有效,外部社区:3856:55000最后更新:2021年10月4日星期一21:17:33我认为这是在谈论3导致4129通往30.0的一条路径是通过位于其本地网络上的机器206.108.35.2。所以路由器接下来可能会将我的ping数据包发送到206.108.35.2,然后206.108.35.2就会知道如何将它发送到Facebook。前两个数字(1167032934)是ASN。什么是BGP?我对BGP的了解很浅,是公司用来通告BGP路由的一种协议。Facebook昨天发生的事情基本上是他们发布了一个BGP公告,取消了他们所有的BGP路由,所以世界上的每个路由器都丢弃了所有与Facebook相关的路由,没有流量可以到达那里。好了,既然我们已经涵盖了一些基本术语,那么让我们来谈谈您可以用来查看AS和BGP的工具!工具1:使用BGPView查看您的ISP的AS为了使AS的东西不那么抽象,让我们使用一个名为BGPView的工具来查看一个真实的AS。我的ISP(EBOX)有AS1403。这是我的ISP拥有的IP地址。如果我查找计算机的公共IPv4地址,我可以看到它是我的ISP拥有的IP地址之一:它位于104.163.128.0/17块中。BGPView也有这张图显示我的ISP与其他AS的连接。工具2:traceroute-A和mtr-z好吧,我们对AS感兴趣。让我们看看我正在运行哪些AS。traceroute和mtr都有选项可以告诉您每个IP的ASN。选项分别是traceroute-A和mtr-z。让我们看看我在使用mtr前往facebook.com的途中传递了什么!$mtr-zfacebook.com1.AS???LEDE.lan2.AS1403104-163-190-1.qc.cable.ebox.net3.AS???10.170.192.584.AS14030.et-5-2-0.er1.mtl7.yul.ebox.ca5.AS14030.ae17.er2.mtl3.yul.ebox.ca6.AS14030.ae0.er1。151fw.yyz.ebox.ca7.作为???facebook-a.ip4.torontointernetxchange.net8.AS32934po103.psw01.yyz1.tfbnw.net9.AS32934157.240.38.7510。AS32934edge-star-mini-shv-01-yyz1.facebook.com这很有趣,看起来我们直接从我的ISP的AS(1403)转到Facebook的AS(32934),中间有一个“互联网交换”。我不确定什么是互联网交换(IX),但我知道它是互联网极其重要的一部分。但那是以后的事了。我猜,它是互联网的“对等”部分,比方说它是一个带有无限带宽的巨型交换机的机房,许多不同的公司将他们的计算机放在里面,这样他们就可以相互发送数据包。mtr使用DNS查找ASN我很好奇mtr如何查找ASN,所以我使用了strace。我看到它看起来像是在使用DNS,所以我运行了dnspeep,瞧瞧!$须藤dnspeep...TXT1.190.163.104.origin.asn.cymru.com192.168.1.1TXT:1403|104.163.176.0/20|加州|阿林|2014-08-14,TXT:1403||加州|阿林|2014-08-14,TXT:1403|104.163.128.0/17|加州|.com上的txt记录找到104.163.190.1的ASN,如下所示:$digtxt1.190.163.104.origin.asn.cymru.com1.190.163.104.origin.asn.cymru.com。13911INTXT"1403|104.163.160.0/19|CA|arin|2014-08-14"1.190.163.104.origin.asn.cymru.com.13911INTXT"1403|.163.104.origin.asn.cymru.com.13911在TXT“1403|104.163.176.0/20|加州|阿林|2014-08-14》很好!让我们继续。工具3:数据包交换所的窥镜PCH(“数据包交换所”)是一个运行大量互联网交换点的组织。“窥镜”似乎是让您从其他人的计算机运行网络命令的Web表单的通用术语。有些范围不支持BGP,但我只对显示BGP路由信息的范围感兴趣。这是PCH的窥镜:https://www.pch.net/tools/looking_glass/。在网站的Web表单中,我选择了TorontoIX(“TORIX”),因为mtr说我用它来访问facebook.com。操作1:显示ipbgp摘要下面是输出。我修改了其中一些:IPv4单播摘要:BGP路由器标识符74.80.118.4,本地AS编号3856vrf-id0BGP表版本33061919RIB条目513241,使用90MiB的memoryPeers147,使用3003KiBer8ofeps2字节的memoryNeighborVASmsgrcvdmsgsenttblverinqoutqupup/downstate/pfxrcd...206.108.34.24841403484672466938000005W3D03H50...206.108.108.35.201w0d06h38...邻居总数147我的理解是TorontoIX(“TORIX”)直接连接到我的ISP(EBOX,AS1403)和Facebook(AS32934)。操作2:显示ipbgp129.134.30.0这是筛选自showipbgp对129.134.30.0(Facebook的一个IP地址)的输出:BGProutingtableentryfor129.134.30.0/23Paths:(4available,best#4默认)从206.108.35.254(206.108.35.254)向非对等组对等点通告:206.220.231.551167032934206.108.35.2(206.108.35.254)OriginIGP,度量0,有效,外部社区:3856:55000最后更新:10月4日星期一21:17:3320211167032934206.108.35.2来自206.108.35.253(206.108.35.253)OriginIGP,度量0,有效,外部社区:3856:55000最后更新:2021年10月4日星期一21:17:31329342036.308来自35.3(157.240.58.225)源IGP,度量0,有效,外部,多路径社区:3856:55000最后更新:2021年10月4日星期一21:17:2732934206.108.35.2来自206.108.35.2(157.240.58.182)源IGP,指标0、有效、外部、多路径、最佳(旧路径)社区:3856:55000最后更新:10月4日星期一21:17:272021这似乎是说从这个IX到Facebook有4条路线QuebecIX似乎对Facebook一无所知。我也尝试从QuebecIX(“QIX”,因为我住在蒙特利尔而不是多伦多,所以它可能离我更近)做同样的事情。但QIX似乎对Facebook一无所知:当我输入129.134.30.0时,它只是说“%networknotintable”。所以我想这就是为什么我被送到多伦多IX而不是魁北克IX的原因。更多BGPWatchingGlasses以下是一些带窥镜的站点,可以从其他角度为您提供类似的信息。他们似乎都支持相同的showipbgp语法,也许是因为他们运行的是相同的软件?我不知道。http://www.routeviews.org/routeviews/index.php/collectors/http://www.routeservers.org/https://lg.he.net/好像有很多这样的watcher服务,远远超过这3个列表。这是与此列表中的其中一台服务器的示例会话:route-views.routeviews.org。这次我通过telnet而不是Web表单连接,但输出的格式看起来是一样的。$telnetroute-views.routeviews.orgroute-views>showipbgp31.13.80.36BGP路由表条目31.13.80.0/24,版本1053404087Paths:(23个可用,最佳#2,表默认)未通告给任何对等刷新纪元13267129932934194.85.40.15来自194.85.40.15(185.141.126.1)OriginIGP,metric0,localpref100,有效,外部路径7FE0C3340190RPKI状态有效rxpathid:0,txpathid:0RefreshEpoch134.7714.129934来自64.71.137.241(216.218.252.164)OriginIGP,localpref100,valid,external,bestpath7FE135DB6500RPKIStatevalidrxpathid:0,txpathid:0x0RefreshEpoch170117432934137.39.3.55from3.37.359(3.55)OriginIGP,localpref100,valid,externalpath7FE1604D3AF0RPKIStatevalidrxpathid:0,txpathid:0RefreshEpoch1209123257129932934212.66.96.126来自212.66.96.126(212.66.96.126,local)91.126有效的,externalCommunity:3257:80953257:306223257:500013257:539003257:5390420912:65004path7FE1195AF140RPKIStatevalidrxpathid:0,txpathid:0RefreshEpoch176602516129932934203.181.248.168from203.181.248.168(203.181.248.168)OriginIGP,localpref100,valid,externalCommunity:2516:10307660:9001path7FE0D195E7D0RPKIStatevalidrxpathid:0,txpathid:0下面是几个路由选项:32671324993917432934295712295712293293476602516129932934我认为这些有多个AS的原因是,31.13.80.36是Facebook在多伦多的IP地址,所以这台服务器(可能在美国西海岸,我不确定)不能直接连接到它,它需要先去另一个AS所以所有路由都有一个或多个ASN。最短的是6939(“HurricaneElectric”),它是“全球互联网骨干网”。他们也有自己的HurricaneElectric示波器页面。工具4:BGPlay到目前为止,所有其他工具都只是向我们展示了Facebook路由的当前状态,一切都很好,但是第四个工具让我们看到了FacebookBGP互联网灾难的历史。它是一个GUI工具,所以我会附上一堆屏幕截图。该工具位于https://stat.ripe.net/special/bgplay。如果你想尝试一下,我输入了IP地址129.134.30.12(Facebook的IP之一)。首先,让我们看一下一切出错之前的状态。我在10月4日的13:11:28点按了时间线,得到了这个:我最初发现这让人不知所措。发生了什么?但随后有人在Twitter上指出,下一个要看的地方是点击Facebook灾难后的时间线(10月4日18:38)。显然,这张图有问题:所有BGP路由都不见了!不好了!顶部文字显示最后一条FacebookBGP路由消失:类型:W>withdrawal涉及:129.134.30.0/24简短描述:50869、25091、32934路由已被撤销。日期时间:2021-10-0416:02:33收集者:20-91.206.53.12如果我再次点击“快进”按钮,我们会看到BGP路由开始返回。最先声明的是13740932934。不过我觉得其实不是第一个公布的,同一秒有很多路由公布(2021-10-0421:00:40),我觉得是BGPlay里面的排序是任意的。如果我再次按下“快进”按钮,越来越多的路线开始返回,路线开始恢复正常。我发现在BGPlay中观看这个故障真的很有趣,尽管一开始界面很混乱。也许了解BGP很重要?我在这篇文章的开头说过你不能更改BGP路由,但后来我记得在2016年或2017年,有一个Telia路由问题导致我们的工作出现一些小网络问题。当发生这种情况时,了解为什么您的客户无法访问您的网站实际上很有用,即使它完全不受您的控制。我当时并不知道这些工具,但我希望我知道!我认为对于大多数公司来说,要处理由其他人的错误BGP路由导致的中断,您所能做的就是“什么都不做,等待它被修复”,但是能够_自信_什么都不做是非常好的。一些发布BGP路由的方法如果你想(作为爱好者)实际发布BGP路由,这里有一些评论中的链接:GuidetogettingyourownASNdn42seemshaveatestinggroundforBGP(it'snotonthepublicinternet),不过确实还有其他人在上面,这似乎比在家试验BGP更有趣)暂时就这些我觉得BGP工具很多(比如PCH有一堆路由数据的每日快照,看起来很有趣),不过这篇帖子已经很长了,今天还有别的事情要做。我很惊讶作为一个普通人我能在BGP上获得多少信息,我一直认为这是一种“秘密网络向导”之类的东西,但显然有各种公共机器,任何人都可以通过telnet访问并且习惯于查看路由表!没想到!
