在计算机科学中,一个重要的概念是可扩展性或者,随着任务规模的增加,处理某个任务的方式保持不变。例如,当你需要跟踪十几个电话号码时,在纸屑上写电话号码效果很好:只需要十秒钟就可以找到给定的电话号码。但对于拥有10万人口的城市来说,现在需要十万秒(大约一天)才能找到一个号码。对于人口为100,000的城市使用电话簿,需要大约半分钟才能找到具有给定名称的电话号码。最大的好处不在于使用一本书比使用单个纸片要快得多,而是在将问题的大小加倍时,你不会将解决它的工作量增加一倍:通过电话搜索那本书只有两倍大的书只花了几秒钟:是我的名字 我在下半场上半场寻找?它不需要两倍的时间,因此电话簿是可扩展的,但废话不是。路由可扩展性将可扩展性概念应用于交付问题通过Internet将数据包发送到正确的目的地。
数据路由中的可伸缩性
路由可伸缩性包括两个问题:管理平面和数据平面。
数据平面是集中式或分布式模块在一个路由器接收传入的数据包并在到达目的地的路上将它们转发到下一个路由器。该功能必须为每个转发的数据包找到转发表中的下一跳。这样做的两个主要机制是TCAM,一个内置硬件支持的专用内存,用于搜索它,以及使用高级算法搜索的常规内存。随着表格大小的增加,查找速度不会下降。但是,TCAM或内存大小呈线性增长(或者比多级查找快一点),这会增加成本和功耗。此外,随着每秒转发表查找次数的增加,必须使用更昂贵且耗电的技术。随着接口速度的提高,这种增加是不可避免的,
在2006年在阿姆斯特丹举行的互联网架构路由和寻址研讨会期间,有人认为所需的内存速度增加超过了现成组件的性能提升,特别是现在单独的SRAM不再广泛使用。以前,计算机使用高速SRAM作为内存缓存,但是现在这个功能都包含在CPU中因此,SRAM不再是一个容易获得的商品芯片了。这意味着最高端路由器的成本将比目前为止快得多。然而,在IAB路由和寻址研讨会之后,一些路由器供应商已经出现并在会话和邮件列表中说明此问题目前不是立即存在,并且在可预见的未来,目前预测水平的增长不会造成问题。
边界网关协议
管理平面由执行BGP路由协议的路由处理器和必须由路由器执行以能够创建转发表的相关任务组成。BGP是ISP和其他一些网络用来告诉对方哪些IP地址的协议在哪里使用,因此可以正确转发发往这些IP地址的数据包。BGP可扩展性受到需要进行通信更新,将其存储在路由器中并进行处理的影响。此时,传播更新的带宽根本不是问题。实际上,存储越来越大的BGP表的内存需求可能会带来问题,这通常是由于商用路由器的实现限制,而不是因为固有的技术问题。路由处理器基本上是通用计算机,现在可以使用16千兆字节或更多RAM轻松构建。目前,路由视图公共路由服务器以1 GB RAM运行,并且具有大约40个完整BGP馈送,每个馈送大约560,000个前缀(2015年12月数字)。
但是,这留下了处理。BGP所需的处理量取决于BGP更新消息的数量和每条消息的前缀数量。由于每个更新消息的前缀数量相当少,我们将忽略该方面,只查看更新的数量。据推测,除了任何自主增长之外,更新的数量与前缀的数量呈线性增长。BGP更新的实际处理非常有限,因此瓶颈是访问内存以执行更新所需的时间。此外,在IAB路由和寻址研讨会期间,提供的信息表明DRAM速度的增长非常有限,并且无法跟上路由表的增长。
转发表同步
除了单独的转发和数据平面问题之外,还存在在更新后将转发表与BGP /路由表同步的问题。根据转发表的体系结构,更新它可能相对耗时。BGP通常被描述为“路径向量” 路由协议,与距离向量协议非常相似。因此,它实现了Bellman-Ford算法的略微修改版本,理论上至少需要等于节点数量的迭代次数(在BGP的情况下:外部自治系统以及内部iBGP路由器) )在图中减去一个以收敛。在实践中,收敛发生得更快,因为在网络中的两个位置之间使用尽可能长的路径不是可行的设计。但是,由于乘法效应,在单个事件之后,必须处理必须处理的不同更新形式的大量迭代。例如,在两个AS在两个位置互连的情况下,第一个AS中的一个更新将通过每个互连链路传播两次到第二个AS。这导致以下可能的选择:
许多人都没有明确认识到BGP的这一方面,尽管诸如Route Flap Damping等研究加剧了互联网路由融合,但确实解决了由此产生的行为。
考虑到上述情况,我们可以得出结论,BGP存在一些扩展问题:协议和实现它的路由器没有为互联网做好准备,因为互联网可能需要管理500万个,当然还需要5000个单独的前缀。但是,IPv4的当前增长相对稳定,每年约为16%,因此没有理由立即引起关注。对于IPv6来说尤其如此,IPv6目前在BGP中只有25,000个前缀