IP : 边界网关协议(BGP)

实现最优路由和减少 BGP 内存消耗

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

本文说明如何达到高度在企业网络的最佳路由连接对多个互联网服务提供商(ISP),当最小化边界网关协议(BGP)路由器的内存要求时。这达到通过使用接受的于ISP和其直接地连接的自治系统起源的仅路由AS_PATH过滤器,而不是接收从ISP的全双工BGP路由表。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

背景信息

此部分提供一个网络图为例。在示例中,您过滤流入BGP更新在路由器1和Router2接受ISP的路由和直接地连接的自治系统的路由。路由器1接受ISP-A的路由和其直接地连接的自治系统C1。同样地, Router2接受ISP-B的路由和C2。网络的其余,不属于ISP和他们的客户自治系统,跟随指向ISP-A或ISP-B,根据企业路由策略的默认路由。

/image/gif/paws/12512/41a.gif

您能观察存储器利用率如何变化,当路由器1接受大约从其ISP时的100,000个路由完整的BGP路由表,与比较,当您应用在路由器1.时的Inbound AS_PATH过滤器。

注意: 组成一个全双工源前缀的实际数量可能变化。在本文的值服务只为例。路由服务器能提供多少个前缀一个好想法组成一全双工BGP表。(关于路由服务器的更多信息,参考Traceroute.orgleavingcisco.com 。)

BGP 路由器接收完整的 BGP 路由表

这是路由器配置1 :

路由器 1
hostname R1 
! 
router bgp  XX 
 no synchronization 
 neighbor  157.x.x.x  remote-as 701 
 neighbor  157.x.x.x  filter-list 80 out 
! 
ip as-path access-list 80 permit ^$ 
! 
end

show ip bgp summary命令输出显示98,410个前缀从ISP-A接收(BGP邻居157.x.x.x) :

R1# show ip bgp summary
BGP router identifier 65.yy.yy.y, local AS number XX
BGP table version is 611571, main routing table version 611571
98769 network entries and 146299 paths using 14847357 bytes of memory
23658 BGP path attribute entries using 1419480 bytes of memory
20439 BGP AS-PATH entries using 516828 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
5843 BGP filter-list cache entries using 70116 bytes of memory
BGP activity 534001/1904280 prefixes, 2371419/2225120 paths, scan interval 15 secs

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
165.yy.yy.a     4  6xx9   32962  826287   611571    0    0 01:56:13        1
165.yy.yy.b     4  6xx9   32961  855737   611571    0    0 01:56:12        1
165.yy.yy.c     4  6xx9  569699  865164   611571    1    0 01:55:39    47885
157.x.x.x       4   701 3139774  262532   611571    0    0 00:07:24    98410

show ip route summary命令输出显示80,132 BGP路由在路由表里安装:

R1# show ip route summary
IP routing table name is Default-IP-Routing-Table(0)
Route Source    Networks    Subnets     Overhead    Memory (bytes)
connected       0           4           256         576
static          0           1           64          144
eigrp 6         0           5           768         720
bgp  XX         80132       18622       6320256     14326656
  External: 87616 Internal: 11138 Local: 0
internal        854                                 994056
Total           80986       18632       6321344     15322152

此命令显示BGP进程在RAM:占用的内存数量

R1# show processes memory | begin BGP
 PID TTY  Allocated      Freed    Holding    Getbufs    Retbufs Process
  73   0  678981156   89816736   70811036          0          0 BGP Router
  74   0    2968320  419750112      61388    1327064        832 BGP I/O
  75   0          0    8270540       9824          0          0 BGP Scanner
                                 70882248 Total BGP
                                 77465892 Total all processes

BGP进程近似占用内存71 MB。

配置 BGP 路由器使用入站 AS_PATH 过滤器列表

在本例中,您运用Inbound过滤器列表接受ISP-A产生的路由和其直接地连接的自治系统。在示例中, ISP-A通过外部BGP (EBGP)通告默认路由(0.0.0.0),如此不通过过滤器列表跟随默认路由往ISP-A的路由。这是设置的过滤器列表配置:

路由器 1
hostname R1 
! 
router bgp  XX 
 no synchronization 
 . 
 neighbor 157.x.x.x remote-as 701 
 neighbor 157.x.x.x filter-list 80 out 
 neighbor 157.x.x.x filter-list 85 in

!--- This line filters inbound BGP updates.
 
 ! 
ip as-path access-list 80 permit ^$ 
ip as-path access-list 85 permit ^701_[0-9]*$  

!--- The AS_PATH filter list filters ISP and the 
!--- directly connected autonomous system routes.
 
! 
end

show ip bgp summary命令输出显示从ISP-A接收的31,667个前缀(邻居157.xx.xx.x) :

R1# show ip bgp summary
BGP router identifier 165.yy.yy.y, local AS number XX
BGP table version is 92465, main routing table version 92465
36575 network entries and 49095 paths using 5315195 bytes of memory
4015 BGP path attribute entries using 241860 bytes of memory
3259 BGP AS-PATH entries using 78360 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
4028 BGP filter-list cache entries using 48336 bytes of memory
BGP activity 1735069/3741144 prefixes, 4596920/4547825 paths, scan interval 15 secs

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
165.yy.yy.a     4  6319  226694 1787061    92465    0    0 17:31:04        1
165.yy.yy.b     4  6319  226814 1806986    92465    0    0 19:51:53        1
165.yy.yy.c     4  6319 1041069 1822703    92465    0    0 19:44:52    17424
157.xx.xx.x     4   701 14452518  456341    92465    0    0 19:51:37    31667

show ip route summary命令输出在路由表里显示27,129 BGP路由:

R1# show ip route summary
IP routing table name is Default-IP-Routing-Table(0)
Route Source    Networks    Subnets     Overhead    Memory (bytes)
connected       0           4           256         576
static          0           1           64          144
eigrp 6319      0           6           896         864
bgp 6319        27129       9424        2339392     5299332
  External: 19134 Internal: 17419 Local: 0
internal        518                                 602952
Total           27647       9435        2340608     5903868

BGP进程使用的内存近似是28 MB,如显示此处:

R1# show processes memory | include BGP
 PID TTY  Allocated      Freed    Holding    Getbufs    Retbufs Process
  73   0  900742224  186644540   28115880          0          0 BGP Router
  74   0    5315232  556232160       6824    2478452        832 BGP I/O
  75   0          0   39041008       9824          0          0 BGP Scanner
                                 28132528 Total BGP
                                 34665820 Total all memory

排除故障内存相关

要检查BGP进程使用的内存,请使用show processes memory|包括bgp命令。列出得与内存过度使用涉及的多数常见问题此处:

  • 内存分配失败"%SYS-2-MALLOCFAIL"。关于此错误消息的更多信息,参考本文故障排除内存问题

  • 拒绝远程会话。

  • 从一些的输出不显示命令。

  • " Low on memory "错误信息。

  • “无法创建EXEC - no memory or too many processes”控制台信息。

  • 路由器挂起,或者没有控制台响应。欲知更多信息,参考在Cisco路由器的本文故障排除高CPU利用率

  • 如果运行BGP相关调试,它通常导致额外的内存消耗量,能也导致内存错误由于BGP。如果他们没有要求,必须小心地运行BGP的调试并且将避免。

要存储从一个BGP对等体的完整全球BGP路由表,有至少512 MB或1 GB在路由器的RAM是最佳的。如果使用RAM 256 MB,推荐您使用更多路由过滤器。如果使用RAM 512 MB,更多互联网路由在路由表里可以安置用少量路由过滤器。在接收一全双工BGP表的Catalyst 6500/6000上,推荐有与避免Cisco Bug ID CSCdt13244的RAM 256 MB的多层交换特性卡2 (MSFC2) (仅限注册用户)。由BGP路由的内存消耗量取决于属性数量,例如多重通道的支持、软重新配置、对等体数量和AS_PATH。欲了解更详细的信息在BGP内存内存需求,参考RFC 1774leavingcisco.com

Cisco快速转发/交换的分布式Cisco快速转发模式(CEF/dCEF)根据路由表大小浪费内存。有CEF两个主要组件:

  • 转发信息库(FIB)

  • 邻接表

两个表都存储在 DRAM 内存中。保证您的多用途接口处理器或线卡也包含满足的空闲DRAM。"%FIB-3-FIBDISABLE :Fatal error, slot [-]:内存”并且"%FIB-3-NOMEM"错误消息不指示在卡的内存不足。

它是高度推荐的在启用dCEF前检查VIP或线路卡存储器。完成这些步骤确认内存:

  1. 通过发出ip cef命令配置中央CEF在全局配置模式。

    允许FIB表的时刻构件。

  2. 查看中央FIB表的大小用show ip cef summary命令

  3. 确定VIP或线卡是否有存储满足的联机的DRAM一张相似大小的FIB表。

    发出show controller vip [slot-] tech命令,并且检查输出show memory summary命令

当运行完整的互联网BGP路由时,有512 MB或至少1 GB在VIP或线卡的RAM是最佳的。

关于介入CEF/dCEF的故障排除内存相关的更多信息,参考排除故障思科Express与转发有关的错误消息的本文。

结论

此图表通过实现过滤器列表说明内存储蓄:

  前缀编号 浪费的内存
没有过滤 98,410 70,882,248
自治系统过滤器 31,667 28,132,528

当BGP路由器接收其邻居的全双工BGP路由表(98,410个路由),路由器近似消耗71 MB。使用AS_PATH过滤器应用对入站更新, BGP路由表的大小减少到31,667个路由,并且内存消耗量近似是28 MB。在存储器利用率的此降低是超过60百分比用最佳路由。

如果查看Cooperative Association for Internet Data Analysis (CAIDA)编译的leavingcisco.com AS互联网图表,您能看到哪ISP有高度彼此ping通(那些最接近图表的中心)。使用较少彼此ping通,少量路由穿过AS_PATH过滤器,并且BGP内存消耗量更低。然而,请注意,每当AS_PATH过滤器设置,您需要配置默认路由(0/0)。不通过AS_PATH过滤器列表的路由跟随默认路由。


相关信息


Document ID: 12512