尽管我在这个博客上反复强调IPv4地址的耗尽以及为IPv6做准备的必要性,但还有另一种数字资源也在迅速耗尽,这是我以前没有写过的:2字节自治系统编号(asn)。
16位的数字空间给你65,536个可能的数字(AS数字0 - 65535)。其中,IANA保留了1026个:64512 - 65534个私有的、可重用的asn(类似于私有的RFC1918 IPv4地址),还有一些其他的,比如0和65535,以及对本文很重要的一个,23456。目前公共池中已经分配了49150个asn,所以还有15360个可用的asn:约占公共池的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位在每种情况下都是0。
由于担心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,是6535.65535:65535乘以65535,再加上65535。
·asdot是asplain和asdot+的混合物。任何在2字节范围(0 - 65535)内的ASN都被写成asplain(因此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位不为0),但rir将不区分这些数字和任何其他4字节ASN。尽管它不会以任何方式影响您的网络,但是您已经拥有多年的16位ASN在rir看来,将是一个可映射的32位ASN。例如,Level3 Communications的AS3356在RIRs眼中是2010年初的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,在一个16位的字段称为My Autonomous System。BGP运行在邻居之间的TCP会话之上;TCP会话建立后,邻居使用Open消息协商BGP会话。每个邻居都表示它的Router ID, ASN,它运行的BGP版本(在现代网络中总是版本4),它的保持时间(它期望在关闭会话之前等待邻居的Keepalive的时间)和可能的一些可选参数。
除了这里所描述的,BGP还有很多。对于这个讨论来说,重要的是有4个BGP数据实体携带asn:
·AS_PATH属性;
·聚合器属性;
·COMUNITES属性;和
·打开的消息
必须考虑到这些实体,不仅要使它们适应4字节的asn,还要使这些适应与仅理解2字节asn的旧的BGP实现互操作。
邻居的互操作性
为简单起见,我们将调用支持4字节asn的BGP实现New_BGP和仅支持2字节ASNs 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,它知道在向邻居广告路由时要遵循哪些规则。