haima  Lv1
发布文章:6篇
发表评论:2条

自有BGP之路(1)BGP入门

我们访问的每一个网页或者程序,都有一个唯一的IP与唯一的服务器进行连接。一些大型网络内容服务商,通常在全球都有自己的服务器,那么就会有一个问题,要确保你访问的服务器是最佳的(通常是离你最近的服务器),否则可能会影响用户的访问速度。通过Anycast(任播),将一个相同的IP分配给全部的服务器,然后通过Internet BGP(边界网关协议),将用户流量指向到“最近”的服务器。

不过,这个“最近的服务器”不一定是地理位置最近,而是“网络上的离您最近”(AS-PATH)。
虽然anycast并不是新名词,但使用它来提高网络的性能,却是近年来的一种趋势,例如LinkedIn(领英,最大的职业社交网站)、Cloudflare(知名CDN服务商)等一些网站正在使用这项技术。

如果您想要查看anycast的运行情况,请单击此处查看Samir Jafferali的网络路由
(这里我吐槽一下,国内用户应该都路由到了美国pop,我只能说这个是受限于CHN的网络运营商)

本文适用于想要构建”Hello World” Anycast网络的技术人员和系统管理员类型。如果您不是技术人员,可以考虑浏览一下以了解如何建设互联网隧道。运行您自己的网络不仅有趣,而且也有学习和教育含义,并将为您带来很多好处,例如网络中立性、审查和IPv6等核心主题。

由于您将与其他组织进行交互,管理上的步骤将花费几个星期的时间,技术上的步骤需要几个晚上的时间来启动和运行,如果您决定从中进行科学研究,则需要更多的时间。
已完成的网络跨越六大洲的20个Points of Presence(PoP),并通过试用Catchpoint帐户进行查看:
图1:跨越六大洲的完整网络以及20个PoP

1. 在区域互联网注册机构注册(Regional Internet Registry)注册

区域互联网注册机构(RIR)是分配子网和自治系统等构建块的机构。 您的服务地点、预算以及对流程熟悉的程度将决定如何选择RIR。 我比较喜欢RIPE NCC,因为它的可操作性和成本是最佳组合。(至少创建普通账户是免费的)

图2:RIPE数据库搜索字段的屏幕截图

话题1:你一般根据什么选择RIR?欢迎在评论区留言。

2.获得/24和/48

BGP上广播的最小子网单位是有限制的,IPv4为/24,IPv6为/48,因此您需要至少有一个最小单位的地址块。获取IPv6空间相对容易,因为IPv6的数量非常多,很多服务商可以免费给你。(比如我2333)
IPv4并不是必须要有的,如果您的预算不足或者只是学习,那么只使用IPv6即可。
如果您要或许IPv4地址块,目前来说有两种选择:
通过成为RIR的会员,或者从其他人手中购买或租用。

由于许多原因,获得地址块变得更加复杂,即使您从RIPE NCC收到/22的地址块,您仍会面临高昂的RIR每年会员费用。
对于本次项目和指南的其余部分,我将介绍租用地址块,因为租用具有更低的前期成本。(对于初学者来说是个不错的选择)
如果你需要IPv4,你可能需要到处看看,寻找出售地址块的商家,我比较推荐webhostingtalk和lowendbox这两个社区,如果你不懂英文的话,V2EX也是不错的选择,如果你有更好的推荐,请在评论区补充。

关于如何免费获取IPv6地址,我将在另一篇文章写出。以后会在这里引用

您对获取IPv4和IPv6地址有什么更好的建议吗?欢迎在评论区与我讨论。

3.申请ASN(Autonomous System Number)

自治系统编号(ASN)用于识别众多路由器上的网络(如果你不理解请往后看)。 此步骤在技术上是可选的。 你可以将私有ASN与其他具有公共ASN的服务商一起发布IP空间,您可以在没有公共ASN的情况下,在互联网广播您的IP地址块。 但是,如果没有公共ASN,您将无法与其他ISP对等或使用高级流量管理(如prepending和communities)。 如果您不需要ASN跳转到第4步。

在这里我同样以RIPE NCC举例,一般来说只要您得到了RIPE NCC(LIR)的成员的赞助,ASN是免费的。
(由于申请ASN并不是一件简单的事情,通常情况下都会收取一些费用)
还要注意一点,RIR为避免资源浪费,申请ASN需要声明,你至少有两个transit提供商的对等许可(请参阅下一步)。
我在RIPE数据库中的aut-num对象
获得ASN后,您可以在RIPE中创建IPv4和IPv6路由对象,以便transit提供商可以在没有LOA(授权书)的情况下自动将prefixes(前缀)加入白名单。

4.获取提供Transit的VPS

此部分内容我也将在其他文章详细写出,以后会在这里引用。
https://bgp.he.net/AS138211

5.在PoP广播你的IP

如果你已经完成了准备工作,那么是时候向全世界广播(announce)你的IP了。
首先你需要一个BGP客户端,比如exabgp、bird、quagga等,我使用的是bird,下文也将以bird作为讲解。

安装bird的教程也会在以后补充,很快!
并且在以后,我会汉化一份常用的bird文档和指令,目前有什么问题可以在评论区提问,或者来ASN交流TG群组,我看到后也会第一时间回复。

这是bird6的示例配置文件(配置IPv6 BGP会话)

protocol bgp xxx(名称) { local as 138211(你的ASN); source address xxxx:xxxx::xxxx(连接到对端所使用的网卡IP,如果你只有一块网卡,填写主要IP即可); import none;(路由传入规则) export all;(路由传出规则) graceful restart on; multihop 2; neighbor yyyy:yyyy::yyyy as 64515;(填写对端IP和AS号,通常你的服务商都会给你提供) password “123abc”;(MD5密码,如果没有删除本行即可) } protocol static { route 2402:28c0:fff4::/48 via xxxx:xxxx::xxxx; (如果你有多个BGP会话的话,可用于区分广播给哪个会话) }

bird有两个非常常用的指令,那就是:

birdc show route

birdc show proto all

如果是IPv6会话(bird6)则是:

birdc6 show route

birdc6 show proto all

在多个PoP地点广播你的IP

和单节点一样,您只需将配置文件复制到其他机器,并稍作修改即可。
当你完成之后,你可以使用任何地点的ping或者traceroute工具来验证。
推荐IPIP所提供的工具,支持IPv4和IPv6。
https://tools.ipip.net/traceroute.php?v=6

8.路由问题的修正

如果你完成了上面的全部内容,已经广播你的IP到多个PoP,你可能会发现问题,如果你没有发现,下面我将说一下可能会出现的问题。

虽然说Anycast路由提供了一种基于路由策略和最短AS-PATH(AS路径)的连接方式,但它也有一些缺陷,比如说:

  1. BGP不知道延迟
  2. 不知道QoS
  3. 不知道服务器负载

很多公司管理的大型Anycast DNS中,也会存在非优国家或地区,或者是服务器负载不均衡等网络性能减退的情况。
我将介绍如何进行抽检,以确保路由至少在某种程度上是正常的。因为Internet是不断变化的,所以真正的anycast网络需要不断调整。

这部分暂时咕了…因为我也没找到好的办法QAQ

上一篇:
:下一篇
注意:留言时请遵守您当地的法律法规与风俗

2 条评论

gravatar

  1. chenchuan Lv1
    小白

    签到成功!签到时间:01:20:52每日打卡,生活更精彩哦~

  2. haima Lv1
    小白
    [博主]

    签到成功!签到时间:上午1:32:24每日打卡,生活更精彩哦~

当前页面评论被关闭,原因如下: