理解4字节自治系统号

对于我在这个博客上做的所有关于IPv4地址耗尽和需要为IPv6做好准备的反复讨论,还有另一个数字资源也正在迅速耗尽,这是我以前没有写过的:2字节自治系统号(asn)。

一个16位的数字空间给你65,536个可能的数字(AS数字0 - 65535)。其中,IANA保留了1,026个:64512 - 65534用于私有的、可重用的asn(类似于私有RFC1918 IPv4地址)和其他一些地址,比如0和65535,还有一个对本文很重要的地址,23456。目前已经从公共池中分配了49,150个asn . n,因此还有15,360个可用asn . n:约23.8%的公共池。

分析2字节asn的分配率显示可用的游泳池将在2011年年中耗尽。离IPv4地址耗尽的日期非常近。

幸运的是,关于ASN耗尽的令人担忧的原因远远不如IPv4耗尽,有两个原因:

  • 与IP地址不同,任何想要连接到IP网络的人所必需的,只对运行BGP的网络时,自动系统号码物质。

  • 正如IPv6创建以解决IPv4问题,通过提供大小的地址大小,已创建4字节ASN以解决2字节ASN耗尽问题。但是,由于IPv4和IPv6之间缺乏互操作性,到IPv6的过渡可以复杂,但过渡到4字节ASN的转换更简单。

这篇文章描述了4字节ASN的格式,它如何与2字节ASN互操作,以及您需要做什么(如果有的话)为他们准备网络。

4字节ASN格式

4字节asn提供232或4294967296自治系统号,取值范围为0 ~ 4294967295。关于这些数字要注意的第一件事是,它们包括所有旧的2字节asn号,0到65535。这极大地帮助了使用2字节asn和使用4字节asn的自治系统之间的互操作性。(一个经常听到的关于IPv6的抱怨是,如果保留43亿个IPv6地址作为现有IPv4地址的代表,那么就可以更容易地支持与IPv4的互操作性,但那是另一回事。)

0到65535之间的4字节ASN称为A可映射ASN,因为它可以用2个字节表示;前16位在任何情况下都是零。

由于担心32位asn可能难以编写和管理,有三种表示4字节asn的方法

·asplain是ASN的简单十进制表示,从0到4294967295。

·asdot +将数字分解为低阶和高阶16位值,用一个点分隔。所有旧的2字节asn都可以用低阶值表示,高阶值设置为0。例如,65535等于0.65535。再多一个,65536,超出了仅在低阶范围内可以表示的值,因此表示为1.0。65537是1.1,65680是1.144,以此类推。您可以通过从中减去65,536的倍数来计算低阶和高阶值asplain表示ASN,高阶值表示65536的倍数。那么,ASN 327700是5.20:5倍65536再加上20。最大的ASN 4294967295是65535.65535:65535乘以65535,再加上65535。

·asdot是asplain和asdot+的混合物。0 - 65535的2字节范围内的任何ASN都用plain表示(因此65535被写成“65535”),而在该范围以上的任何ASN都用asdot+表示(因此65536被写成“1.0”)。

asplain显然是理解新ASN的最直接的方法,尽管较大的数字可能会令人不安地写作,因此在书面文档或路由器配置中易于打印错误。

Asdot+写起来要简单得多,但要用简单的十进制数来计算就困难得多。如果您经常使用这种格式,那么编写一个简单的脚本来进行转换以防止计算错误可能是值得的。

Asdot似乎用处有限。毕竟,写“0.3657”并不比写“3657”更难,当你超过65535时,需要做一些计算;阿斯多对你毫无帮助。然而,这有一个微妙之处。区域号码分配部门-区域互联网注册机构,或rir——区分一个16位的数字,是一个老2字节ASN,可用图表示的4字节ASN(再一次,32位的集合ASN前16位的都是0),所以“3657”是一个2字节ASN,和“0.3657”是一个4字节的ASN。

当然,这使我们能够在RIRS的策略用于分配4字节ASN的情况下简要介绍。

ASN分配政策

所有五个RIR(AFRINIC,APNIC,ARIN,LACNIC和成熟NCC)对4字节ASN具有相同的分配策略:

·自2007年1月1日以来已有4字节ASN。如果您要求ASN,则为默认分配,如果您为您提供2字节ASN,并且只有特定请求,只会分配4字节ASN。

·从2009年1月1日开始(是的,大约从现在起一个月!),这一策略将被逆转:一个4字节的ASN将成为默认值。您仍然可以得到一个2字节的ASN,但只有在您明确请求它的情况下。

·一年后,在2010年1月1日,所有ASN分配将是4字节。你收到的ASN形式可能是0。XX(其中高阶16位都是0,低阶16位不是),但rir将不区分这些数字和任何其他4字节ASN。虽然它不会以任何方式影响你的网络,但在rir看来,你已经使用了多年的16位ASN可能是一个可映射的32位ASN。例如,Level3 Communications的AS3356在2010年初被rir称为0.3356。

这些政策提出了几个问题:

·如果您计划在2009年开始申请新的ASN分配,您需要做什么来准备它?

·新的4字节ASN如何使用2字节ASN与旧的自治系统互操作?

·如果你有一个现有的2字节ASN,有什么变化吗?

ASN在BGP中的角色

简要介绍如何BGP.使用自治系统号将有助于理解新格式对BGP网络的影响。大多数人已经知道BGP的基础知识;如果你有,可以跳过。

与IGP (OSPF、is - is、EIGRP和RIP)不同,BGP的目的是在具有独立管理控制的域之间进行路由,也就是说,系统之间是自治的。如果你要在这些自治路由域之间进行路由,你需要某种方式来识别单个as。这个标识符就是自治系统号。

ASN在BGP中有两个重要功能:

首先,它有助于BGP确定目的地的最短路径。当BGP在更新消息中向邻居发出路由时,它会附加几个路径属性到路线。当路由器向同一目的地学习多个BGP路由时,BGP决策过程在优先顺序中评估路由的路径属性以确定最优选的路由。(可以在所有各种方法中添加,删除或更改BGP路径属性以影响BGP决策过程。这是BGP路由策略的基础。)连接到每个BGP路由的这些属性之一称为AS_Path。当路由器在其自己的邻居中向邻居宣布到另一个邻居时,它将其本地ASN放在AS_Path中。随着路由向后续自治系统宣传,每个边区路由器将其自己的ASN添加到属性。然后,AS_Path成为将路径返回到目标的ASN列表。路由器可以通过选择AS_Path中列出的最少ASN的路由来选择最短路径。

第二ASN函数是一个非常简单的循环避免机制。因为路由器在另一个循环的路由向邻居广告路由之前将其ASN添加到AS_PATH上 - 即,随后向其宣传返回相同的路由,因此通过检查AS_PATH可以轻松检测到与之宣传返回相同。如果路由器在邻居发布的路由的AS_PATH中列出了自己的ASN,则它会丢弃路由。

ASN也出现在称为AGGREGATOR的路径属性中。当大量路由被聚合时,路由的详细信息可能会丢失。可以在聚合路由上添加AGGREGATOR属性,表示进行聚合的路由器的Router ID和ASN。这个属性不会影响BGP的决策过程,但它对于跟踪聚合路由的问题很有用。

使用ASN的第三个属性是社区.这个可选属性帮助您管理应用于大量路由的路由策略;使用多种方法,您可以为前缀分配一个或多个COMMUNITIES属性,然后将路由策略应用到团体而不是单个路由。例如,您可以定义一个名为Cust_Routes的COMMUNITES属性,然后将该属性添加到所有客户发布到AS中的所有路由中。然后在你的网络,你需要的政策适用于所有客户的路线,你可以应用的政策路线Customer_Routes属性,而不必识别每个前缀(并可能改变你所有的前缀列表添加或删除任何时候客户路线)。

COMMUNITES属性是一个32位值,它的前16位是ASN,后16位由您任意分配,以具有您想要的任何含义。

然而,这里的重要点并不是那么多的聚合器或社区的函数,但它们类似于AS_Path,格式化以携带2字节ASN;因此,必须调整这些属性的格式以携带较大的32位ASN。

除了这三个路径属性,BGP Open消息还引用了ASN,在一个名为My Autonomous System的16位字段中。BGP运行在邻居之间的TCP会话之上;TCP会话建立后,邻居使用Open消息协商BGP会话。每个邻居都表示它的Router ID、ASN、它正在运行的BGP版本(在现代网络中总是version 4)、它的保持时间(它期望在关闭会话之前等待邻居的Keepalive的时间)以及可能的一些可选参数。

除此之外,还有很多关于BGP的内容。对于这个讨论来说,重要的是有四个携带asn的BGP数据实体:

·AS_PATH属性;

·聚合器属性;

·COMUNITES属性;和

·打开的消息

必须考虑到这些实体中的每一个,不仅可以将它们调整为4字节ASN,而且还要使用旧的BGP实现可互操作的适配,该实现仅了解2字节ASN。

邻居的互操作性

为了简单起见,我们将调用支持4字节asn的BGP实现New_BGP和仅支持2字节asn Old_BGP的传统BGP实现。

新_BGP实现的第一个要求是发现邻居是否是new_bgp或old_bgp。它通过使用来实现这一点边界网关协议功能的广告打开BGP会话时。除了向新_BGP广告本身之外,它还包括其在能力广告中的4字节ASN。

如果邻居响应它也是新的扬声器,则邻居在其自己的能力广告中包括其4字节ASN。因此,两个新姓名邻居可以在不使用打开消息中的2字节我的自主系统字段中互相通知其4字节ASN。(如果邻居是new_bgp但具有2字节的ASN或含有4字节ASN,它们仍然可以在电容广告之外仍然可以将ASN放在我的自主系统字段中。)

当邻居是Old-BGP时,邻居要么响应不支持4字节ASN能力,要么根本不响应capability通告。在这种情况下,New_BGP邻居仍然可以和Old-BGP邻居建立会话,但不能发布自己的4字节ASN。邻居不会理解的。相反,New_BGP使用一个保留的2字节ASN, 23456,称为AS_TRANS (AS_TRANS很容易记住,因为它的2-3-4-5-6序列)。这个AS号被添加到Open消息的My Autonomous System字段中。因为AS_TRANS是保留的,所以没有Old_BGP speaker可以使用它作为自己的ASN;只有New_BGP speaker可以使用。

由于New_BGP speaker“知道”它的邻居是Old_BGP speaker,因此可以实现互操作对等体;Old-BGP speaker只是继续使用遗留的BGP规则。

路径属性互操作性

因为New_BGP发言者知道其邻居是否是New_BGP或Old_BGP,它知道在向邻居广告路由时要遵循哪些规则。

12 第1页
第1页共2页
SD-WAN采购商指南:要询问供应商(和您自己)的关键问题