《BGP设计与实现》一2.10 案例研究:BGP内存的使用评估

2.10 案例研究:BGP内存的使用评估

BGP设计与实现
本案例研究的目的是为了演示不同组件之间的相互依赖性,这些组件都使用了BGP内存,这里特别关心BGP Router进程。本案例研究也建立了一个简单的方法,即基于一定数量的前缀和路径来评估所需要的BGP内存。这里使用了实验手段,来确定BGP组件与它们的内存耗费之间的种种关系。BGP消耗的总体内存是BGP网络(前缀)、BGP路径、BGP路径属性、IP NDB、IP RDB,以及IP CEF所使用的内存总和。最后将提供一份Cisco的Internet路由器上BGP内存使用的合理评估。

2.10.1 方法

为了模拟BGP内存的使用,将使用Cisco 12012路由器和4个网络仿真工具。GSR是被测试的设备,它运行Cisco IOS版本12.0(15)S1。网络仿真工具能够模拟出BGP和OSPF会话。图2-7显示了测试拓扑图。

GSR运行了OSPF和BGP。它的GRP处理板有128MB的DRAM内存,例2-13和例2-14显示了它的版本和相关的配置。

例2-13 命令show version的输出

例2-14 GSR的运行配置

每个测试工具被分配了不同的AS号,从65001到65004。所有被通告的前缀都有24位的掩码(/24),并含2~6个C类网络。所有其他的BGP配置都用默认设置。

注意:

在这个例子中,没有考虑路由映射、过滤列表、团体,以及路由反射等参数。例如,如果使用了入站温和重配置功能,那么就会消耗更多的内存。
为了在测试结果中提供内存使用的合理分布与前缀数量,模拟了11对BGP网络和路径组合,这显示在表2-4中。

表2-4  测试网络和路径的组合

对于每一个网络/路径对,这里收集了对BGP RIB、IP RIB和IP CEF结构的内存分配,也收集了反映BGP Router进程、IP CEF表、BGP表和IP表中的内存使用情况。对于BGP RIB来说,这些数据反映了BGP网络、BGP路径和路径属性的内存使用情况。对于IP RIB而言,这些数据是有关NDB和RDB的数据。IP CEF的内存数据既包括了FIB结构,也包括了用来存储BGP网络的mtrie。

对于每一个组件,根据相关性,我们对照BGP网络或路径来标出内存使用情况。这里运用了线性回归来获得那个组件的评估模型。线性模型可以表示成下面的形式:

其中,y表示被评估的某种组件的内存使用量,x表示网络表项的数量或路径表项的数量,b表示直线的截距(当x为0时y的值),或者说是本案例中的评估偏差,a表示这条线的斜率,它标志了内存消耗对前缀和路径变化的敏感性。对于每一个线性模型来说,回归计算的结果就是a和b的值。

每个回归相对于实际数据的精确度可以通过R2,即判定系数(coefficient of determination)来表示。从数学上讲,R2是平方和的比率,因为回归是在所有平方的总和之上的。它也被称为相关系数(correlation coefficient)的平方。R2的值在0~1之间,0表示最差的相关性或没有相关性,而1表示最好的相关性或者完美符合。

2.10.2 评估公式

根据前面章节讲述的方法,可以做出多个评估公式。下面的章节将从BGP被启用前内存的使用开始讲述。

1.在BGP被启用前的空余内存
在系统启动后但还没有配置任何路由选择协议前,GRP处理板上128MB的DRAM内存里可自由分配的内存是99.8MB,如例2-15所示。这时的内存主要是由IOS映像文件扩展到DRAM内存中所消耗的。这时,其他的进程使用了12.3MB,而剩下87.5MB的空余内存。

2.BGP网络的内存使用
图2-8显示了在BGP RIB中,用来存储所有BGP网络表项的内存的使用情况。这里根据网络表项(以Actual显示的)的数量绘制了内存使用情况,这些是实际的测量值。通过图中呈现的一条回归线可以直观地比较实际使用的内存量和模型计算出的内存量。这里的回归线就是:

内存(以字节计)= 214196.9 + 114.9网络表项

其中,R2为0.996。在这个例子中,网络表项与路径表项之间的内存使用的相关性是可忽略的(没有显示这个数据;从现在开始,仅仅提及比较重要的回归)。

3.BGP路径的内存使用
图2-9显示了在BGP RIB中,用来存储所有BGP路径属性的内存的使用情况。它的回归线是:

内存(以字节计)= −20726.5+44.0路径表项

其中,R2为1.000。

4.BGP路径属性的内存使用
图2-10显示了在BGP RIB中,用来存储所有BGP路径属性的内存的使用情况。它的回归线是:

内存(以字节计)= 146792.2+6.1路径表项

其中,R2为0.908。

5.IP NDB的内存使用
图2-11显示了NDB使用的内存情况。它的回归线是:

内存(以字节计)= 47765.9+172.5网络表项

其中,R2为1.000。

6.IP RDB的内存使用
图2-12显示了RDB使用的内存情况。它的回归线是:

内存(以字节计)=21148.5+76.1网络表项

其中,R2为0.996。

7.IP CEF的内存使用
图2-13显示了IP CEF使用的内存情况。它的回归线是:

内存(以字节计)= 32469.1+151.9网络表项

其中,R2为0.999。

8.BGP的内存使用总计
BGP Router进程使用的内存总量是所有组件使用的内存总和。利用前面讲述的方程式,你可以评估出每一个组件使用的内存。把所有6个组件使用的内存加在一起,你就可以获得一份总体内存的使用评估。

举一个例子,假设BGP RIB有103 213条网络表项和561 072条路径表项。那么,表2-5就显示了对每一个组件内存使用的估算。因而,BGP Router进程总计使用的内存就是所有这些内存使用估算的总和——81.5MB。

2.10.3 分析

Cisco IOS软件保持了对3种与BGP有关的结构的跟踪:BGP RIB、IP RIB和IP CEF。BGP RIB用来保存通过BGP接收到的前缀,以及与这些前缀相关联的属性,例如团体属性、AS_PATH属性等等。一个BGP宣告者可以有多个BGP会话,这些会话按照iBGP和eBGP对等体来分,因此每条前缀有可能存在多条路径。每一条惟一的前缀被保存在BGP的网络表中,而同一条前缀的所有路径被作为BGP路径表项而保存。每一条前缀(或网络)和路径表项消耗的内存数量根据IOS版本的不同而不同。

命令show ip bgp summary的输出可以提供某个BGP组件的内存使用情况。在Cisco IOS软件版本12.0(15)S1中,每一条惟一的前缀使用129个字节的内存,而每增加一条路径将再消耗36个字节的内存。例如,如果BGP RIB包含100条前缀和200条路径,那么这些表项总计消耗的内存是(100 × 129)+(100 × 36)= 16,500字节。

命令的输出也包含了路径属性、团体属性、缓存等的内存使用情况,这依赖于BGP的配置和从对等体接收到的前缀。注意,这些数量少于所估算的数量(如表2-6所示)。这是因为命令show ip bgp summary输出的内存数量不包含杂项开销。本案例研究的结果是直接从命令show memory中得出的,它包括了所有的内存使用。

如果在路由器本地启用了BGP入站温和重配置功能,那么所有被拒绝的路由依然会被当作仅仅接收(receive-only)的路由而保留,这将导致BGP RIB使用更多的内存。由于仅仅接收的路由被排除在最佳路径选择之外,因而它们不会影响IP RIB和IP CEF的内存使用。从IOS软件版本12.0开始,路由刷新特性就可用了,当入站策略发生变化时,路由器能够动态地更新它的对等体,因此,不再需要入站温和重配置功能了。路由刷新特性在所支持的软件版本中是自动生效的,为了验证是否支持这个特性,可以执行show ip bgp neighbor命令。

这个测试没有考虑缓存路由映射和过滤列表所使用的内存。对于一个典型的拥有10万条路由和6条不同的BGP路径的Internet路由器来说,这部分内存的使用大约接近2MB,而BGP总计使用大约80MB的内存。BGP Scanner、BGP I/O以及BGP Router进程的维护所需要的内存总共大约在50KB以下。

在这个案例研究中,只为BGP估算了静态的内存使用。这里的静态内存指当BGP处于稳定状态时所使用的内存——也就是说,前缀在网络已经收敛后的情形。然后,BGP在收敛期间可能会使用额外的内存。这种类型的内存称为瞬时内存使用(transient memory use)。瞬时内存的大小难以跟踪,而且它会根据一些因素而变化,例如发送和接收更新的方式,BGP Router进程所处的状态以及IOS版本等。比如,对等体组允许复制一份从对等体组引导路由器(peer group leader)来的路由更新,并把它发送给该组的其他成员,因此维持这些消息只需要较少的内存。更新打包(update packing)是另一个减少发送给对等体更新数据包数量的方法。这些方法和其他一些性能调整技巧将在第3章中详细阐述。

根据IOS软件的版本、BGP和路由器状态,BGP Router进程处于以下3种状态之一,越是后面的状态,功能越强,使用的内存越多:

只读(read-only)——BGP从对等体那儿仅仅接受更新。它不计算最佳路径,也不把这些路由安装到路由选择表中。这就减少了瞬时内存的使用。在路由器初始化的启动阶段,BGP典型地就处于这种模式。
计算最佳路径(calculating the best path)——BGP接受更新并运行路径选择进程,这个过程通常会和一些结构的缓存处理相关,因此,会增加瞬时内存的使用。这是典型的过渡模式。
读和写(read and write)——BGP接受更新,计算最佳路径,安装这些路由到IP路由选择表中,并生成更新以发送给它的对等体。这种状态将需要更多的瞬时内存。这种状态是BGP的常规模式。
在规划容量时,最佳实践(best-practice)的指导原则是:为瞬时内存和其他因素而考虑另外增加20%的静态内存使用。需要密切观察的第二个数字是系统中可用的最大DRAM块的最小值。如果这个数字是20MB或更小,那么就需要增加更多的资源。

BGP RIB中所有的最佳网络/路径表项都会被安装到IP RIB表中,由此引起了NDB和RDB结构对内存的使用。如果一个主网络以固定长度或可变长度被划分了子网,那么在IP RIB中就会为这个主网络创建额外的表项。根据IOS版本的不同,每条表项使用1172字节的内存。子网化表项的内存使用在命令show ip route summary中被显示为internal。这个数值是命令show ip route中的表项的总数,这是在前缀被划分了子网或可变子网的情况下。在这个测试中,由于只使用了2~6个主网络,所以在IP RIB中,子网化表项的内存使用小于7KB。

另一个对IP RIB和IP CEF中BGP内存使用有重要影响的因素是BGP负载分担,这个测试中没有考虑它。默认条件下,BGP只会安装一条最佳路径到IP RIB中。如果使用了BGP多径特性,那么每条BGP前缀的多个表项就可能被安装到IP路由选择表中,从而增加了IP RIB和IP CEF的内存使用。

被安装到IP RIB中的BGP前缀还会被安装到FIB表中。给IP CEF分配的内存通常与命令show ip cef summary报告的内存使用是一致的。对于运行dCEF的线卡来说,这只是BGP使用的内存,因为线卡不维护BGP RIB或IP RIB。除了与前缀数量有关外,CEF的内存使用还与前缀长度有关。例如,如果前缀是/16,这条前缀使用的内存就是1KB,紧接着mtrie的根也使用1KB内存。如果前缀是/24,将会再使用另外的1KB。如果前缀长度大于/24,那么再使用1KB。Internet上前缀的分布通常显示9%的前缀长度为/16或更短,83%的前缀长度在/17~/24之间,还有8%的前缀长度大于/24。为了建立一个简单而不失精确性的方法,这个测试所使用的前缀的长度都是/24。

时间: 2024-08-01 21:09:17

《BGP设计与实现》一2.10 案例研究:BGP内存的使用评估的相关文章

《BGP设计与实现》一2.2 BGP进程和内存使用

2.2 BGP进程和内存使用 BGP设计与实现Cisco IOS软件有3种主要的BGP进程: 输入输出(I/O):路由器(Router):扫描仪(Scanner).图2-1显示了3种BGP进程以及在IOS中所有主要的BGP组件之间的相互作用. BGP I/O进程处理读.写和执行BGP消息的任务.它为TCP和BGP之间提供了一个接口.一方面,它从TCP套接字(socket)中读取消息,并把它们放到BGP输入队列(Input Queue,InQ)中,以便被BGP Router进程操作.另一方面,积聚

《BGP设计与实现》一2.3 BGP路径属性

2.3 BGP路径属性 BGP设计与实现BGP路径属性是一组描述BGP前缀特性的参数.由于BGP首先是一个路由选择策略工具,因此BGP在影响路径选择的时候,广泛地使用了这些属性.在设计一个有效率的BGP路由选择体系结构中,有效地利用这些属性是十分关键的.这一节将着重讲述一些通用的BGP属性,而在后面的章节中会作更为深入的讨论. Cisco IOS软件目前支持以下这些属性: ORIGIN(起源):AS_PATH(AS路径):NEXT_HOP(下一跳):MULTI_EXIT_DISC(多出口鉴别):

《BGP设计与实现》一导读

前 言 BGP设计与实现边界网关协议(Border Gateway Protocol,BGP)是今天的网络中最广泛部署的协议之一,也是Internet事实上的路由选择协议.BGP是一种灵活的协议,这在于它具有很多网络设计者和工程师可用的选项.此外,BGP的扩展和软件实现的增强也使它成为一种有力而复杂的工具. 本书的目的超出了基本协议概念和配置,而着重于提供实用的设计和实现的解决方案.在设计和实现复杂的网络方面,BGP被当做一种有用的工具.通过实际的手法,本书提供了Cisco IOS软件的实现细节

《BGP设计与实现》一2.5 路径决策过程

2.5 路径决策过程 BGP设计与实现 BGP经过一个复杂的算法来决定最佳路径并更新BGP RIB和IP RIB.正如前面所提到的,BGP是一个策略工具.它的重要性通过BGP利用属性和其他参数来选择最佳路径的过程最能说明. 当存在多条到达特定目的地的有效的BGP路径时,IOS将会根据收到它们的相反顺序列出这些路径.也就是说,最新的路径将被列在最开始,而最老的路径则被列在末端.在命令show ip bgp的输出中,最新的路径被列在最上面,而最老的路径被列在最下面.对于给定的一个目的地,为了选择最佳

《BGP设计与实现》一2.4 理解内部BGP

2.4 理解内部BGP BGP设计与实现BGP被设计用来在Internet上的一系列自治系统之间提供无环路的路径.确保无环拓扑的机制就是AS_PATH属性.考虑图2-2,其中3个自治系统相互连接.如果AS 65000中的路由器R1通告一条前缀给AS 65001中的R3,那么在它发送前缀给R3时,它会把65000添加到这条前缀的AS_PATH列表前面.如果同样的前缀再次被AS 65000收到,那么边界BGP宣告者就会拒绝它,这是因为它在AS_PATH属性中检测到了环路. 继续考虑图2-2,假设R3

《BGP设计与实现》一第1章 高级BGP介绍1.1 理解BGP的特性

第1章 高级BGP介绍 BGP设计与实现本章涵盖以下主题: 理解BGP的特性: 比较BGP和IGP. 边界网关协议(Border Gateway Protocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议.由于不同的管理机构分别控制着他们各自的路由选择域,因此,路由选择域经常被称为自治系统(Autonomous System,AS).现在的Internet是一个由多个自治系统相互

《BGP设计与实现》一第2章 理解BGP的构件块2.1 比较控制层面和转发层面

第2章 理解BGP的构件块 BGP设计与实现本章涵盖以下主题: 比较控制层面和转发层面: BGP进程和内存使用: BGP路径属性: 理解内部BGP: 路径决策过程: BGP的能力: BGP-IGP的路由交换: 路由选择信息库: 交换路线. 本章的内容将为本书后面的内容打下基础.本章并不试图涵盖BGP所有的基础内容,而着重地强调一些基本的BGP构件和概念,以便给你一些适当的观点.在适当的地方,也会提供一些更新的信息.特别地,这一章将尽力达到以下一些目标: 概览了BGP的Cisco实现,例如IOS中

《BGP设计与实现》一2.11 总结

2.11 总结 BGP设计与实现本章以讨论控制层面与转发层面之间的相互关系作为开始:这两个层面都是路由器的基本功能.作为一种路由选择协议,BGP是控制层面的一部分.但是,转发层面的性能也会影响BGP的性能,因为这两个层面可能会竞争同样的资源,例如CPU和内存.我们讨论了Cisco IOS软件里的BGP进程,特别强调了内存使用和这些进程间的相互作用.案例研究提供了一个简单的方法来估算在Cisco Internet路由器上的BGP内存使用情况.为了给本书余下的章节打下坚实的基础,本章还复习了一些BG

用户体验设计当中的一些可视化信息案例

文章描述:让用户体验设计的前期交付物更加可视化. 本文作者Barnabas Nagy ,译者@C7210.Barnabas是一名拥有六年从业经验的UX设计师.信息架构师,其对用户体验设计的交付提出一点:"你的合作伙伴未必会看懂你的交付". 为了让自己的设计能够让人更容易理解,交付一个优秀可视化的成果是一个不错的选择. 在实际的用户体验设计工作当中,作为设计师,我们的一些产出在信息呈现方式及沟通效果等方面做的其实不算理想,尤其是那些涉及到用户角色定义.信息架构分析.功能流程规划的文档.怎