本节书摘来异步社区《BGP设计与实现》一书中的第2章,第2.1节,作者: 【美】Randy Zhang , Micah Bartell 译者: 黄博 , 葛建立 责编:傅道坤,更多章节内容可以访问云栖社区“异步社区”公众号查看。

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中。

对于每一个网络/路径对,这里收集了对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__= b+ax

其中,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-15 内存使用汇总

当启用了OSPF并处理了442条OSPF路由后,空闲的内存就下降到了86.4MB,如例2-16和2-17所示。

例2-16 IP RIB的内存使用汇总

例2-17 进程的内存使用

在使用的1.1MB(13.4减12.3)的内存中,OSPF直接使用了大约390KB,如例2-18所示。剩下的内存被其他已经存在的进程消耗了。

例2-18 OSPF进程的内存使用

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。

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

  1. SOA 案例研究:SOA 设计

    本文是面向服务的体系结构 (SOA) 系列之一,主要通过名为 JKHL Enterprises (JKHLE) 的虚构公司阐述一个案例研究.本文的案例研究重点是与 SOA 设计(更具体地说是服务和流的 ...

  2. 企业网络设计,看这6个案例就够了

    百度.美团的网络我们都可以称他们为企业网络.因为他们的网络本身是为自己提供服务,不提供网络的接入服务. 企业网主要包括三块内容:园区网.广域网和数据中心.按照网络用途来分,也可以分为办公网和生产网. ...

  3. ux和ui_设计社交餐厅策展应用程序— UX / UI案例研究

    ux和ui Sabor, which translates from "taste" or "flavor" in Spanish, is a concept ...

  4. ux和ui_设计更好的结帐体验-UX / UI案例研究

    ux和ui Plated Cuisine is a food ordering and delivery app for Plated Cuisine Restaurant founded and m ...

  5. 苹果设计思维案例研究,困难期生存的关键

    苹果设计思维案例分析:苹果是一家以其独特的产品和品牌而闻名的领先公司,它是如何实现产品的创新? 让我们深入了解苹果公司的历史,以及它是如何在最关键的时间里生存下来的. 文章目录 1 苹果艰难的阶段 2 ...

  6. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.9 案例研究...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.9节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  7. 2018最新APP界面设计教程---手机ui高级实战案例 视频教程(价值320元)

    课程简介: 适用人群         适合有基础的学员 学到什么         火星人UI设计培训结合大量的实战案例,从ICON的设计构思开始,到APP界面设计,全方面解析UI设计工作流程和设计理论 ...

  8. 苹果风格ui设计_重新设计苹果音乐应用程序ui ux案例研究

    苹果风格ui设计 重点 (Top highlight) TLDR? UI重新设计 (TLDR? UI Redesign) I didn't realise how much I'd written f ...

  9. 案例研究 | 运用设计冲刺,解决俄罗斯家庭暴力问题

    问题 家庭暴力是一个困扰全球的问题,运用设计冲刺能帮我们解决它吗? 在俄罗斯,每5名妇女就有1名遭受到丈夫或伴侣的虐待,而这种情况在2017年国家将家庭虐待定为非刑事罪后更是急剧恶化. 于是,俄罗斯的 ...

  10. 案例研究 | 你真的在你的团队中实现过设计冲刺吗?

    你能想象活在一个机器人服务的世界?是否有些诡异?谷歌风投主导的一次设计冲刺案例中,Savioke成功推出了不会给客户造成惊吓的酒店机器人.谷歌风投的Jake Knapp向我们展示了他们是如何做到的.一 ...

最新文章

  1. 研究生扩招,数据发现清华北大本科生毕生后几乎没人找工作!
  2. Active MQ 双主 和 mysql双主 方案测试
  3. DDCTF-2018-writeup(5misc)
  4. NBA帧同步网络优化
  5. Qt Creator使用FakeVim模式
  6. python打开360浏览器_python selenium使用360浏览器出现新皮肤设置怎么办?
  7. USACO Training Section 1.2 [USACO1.2]回文平方数
  8. 2018-2019-1 20165227 20165228 20165237 实验五 通讯协议设计
  9. X Window Bitmaps And Pixmaps
  10. [SinGuLaRiTy] 二分图匈牙利算法
  11. ElementUI:使input自动聚焦的两种方法
  12. 【笔记】《活法》(稻盛和夫)
  13. 小程序开发——页面背景色设置
  14. Android 一个简单的音乐播放器
  15. 在ubuntu20.04中设置锁屏背景(亲测有效)
  16. 考研英语十附双语阅读:按点下班惹非议?一点小花招让你看起来超努力(纯阅读,有些方法不普适)
  17. 河南出版团体召开宣扬工作会议
  18. 网站改版更换服务器seo,网站改版、更换域名、换空间如何通知百度 | 衡水SEO老刘...
  19. 如何使用cocos2dx3.0制作基于tilemap的游戏:第二部分
  20. 洛谷P1010(幂次方)

热门文章

  1. Atitit  数据库的事件机制--触发器与定时任务attilax总结
  2. Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net j
  3. 《私募证券投资基金业绩报酬指引(征求意见稿)》
  4. Rust : wasm尝试 与wasmtime库
  5. 无公式无数学内容下,如何理解加密与解密知识?
  6. 降本增效利器!趣头条 Spark Remote Shuffle Service 最佳实践
  7. 自带公网IP上阿里云 | 凌云时刻
  8. micoolcoder 验证码 for php v1.0 全字符版,Micoolcoder 验证码 for PHP v1.0 全字符版
  9. scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化
  10. java怎么分组查询_JAVA8 分组统计