本节书摘来自异步社区《BGP设计与实现》一书中的第2章,第2.1节,作者【美】Randy Zhang , Micah Bartell,更多章节内容可以访问云栖社区“异步社区”公众号查看
第2章 理解BGP的构件块
BGP设计与实现
本章涵盖以下主题:
- 比较控制层面和转发层面;
- BGP进程和内存使用;
- BGP路径属性;
- 理解内部BGP;
- 路径决策过程;
- BGP的能力;
- BGP-IGP的路由交换;
- 路由选择信息库;
- 交换路线。
本章的内容将为本书后面的内容打下基础。本章并不试图涵盖BGP所有的基
础内容,而着重地强调一些基本的BGP构件和概念,以便给你一些适当的观点。在适当的地方,也会提供一些更新的信息。特别地,这一章将尽力达到以下一些目标:
- 概览了BGP的Cisco实现,例如IOS中的BGP进程。在本章的结尾,将提供一个关于如何在Cisco路由器中评估BGP内存使用的案例研究。
- 回顾BGP的基本组件,例如,BGP的属性、BGP的决策过程、BGP的能力交换、路由选择信息库(RIB)等。
- 讨论BGP的一些基本概念,例如iBGP、BGP和IGP的路由交换等。
- 概览了Cisco IOS软件中可用的主要交换路经,以及在资源竞争的情况下,它们是如何与BGP的性能和路由器的性能相关联的。
2.1 比较控制层面和转发层面
BGP设计与实现
路由器由两种逻辑组件组成:控制层面和转发层面。控制层面(control plane)负责创建RIB,而转发层面(forwarding plane)可以用RIB来分类和转发数据包。
路由器的性能和这两个层面的性能,以及它们相互协调的有效程度是紧密相关的。在路由选择体系结构的设计中,理解这两个层面关于数据包的转发与资源竞争的相互作用是非常重要的。
控制层面和转发层面的相互作用,以及由此对BGP性能产生的影响可以通过下面的例子来说明。BGP协议数据包的处理涉及到大量的计算和数据操作,特别是在路由收敛过程中。因而,BGP将会和路由器上运行的其他进程竞争CPU时间。减少被路由器进程交换(一种CPU密集(CPU-intensive)的操作)的穿越数据包(不直接指向该路由器的数据包)的数目能够改进BGP的性能,特别是在初始化的收敛期间。这是因为此时BGP有更多的CPU周期可用。
路由器可以使用很多信息资源来创建它的RIB。在像Internet这样大型的互连网络环境中,路由选择信息可以通过多种动态路由选择协议来交换,例如内部网关协议(IGP)或者外部网关协议(EGP)。在整个网络中及时地分发正确的路由选择信息,是组建一个可靠网络的主要成分。后面的章节将在收敛性、策略控制和扩展性等方面讲述多种优化BGP路由选择架构的技巧。
转发层面有两个主要的功能:数据包分类和数据包转发。数据包分类(Packet Classification)是指把RIB精简到转发信息库(Forwarding Information Base,FIB)中的过程。典型的FIB是根据目的地前缀来组织的,每一条前缀都和一个下一跳地址、出站接口(outgoing Interface)等相关联。实际的数据包转发由转发层面的交换组件来执行。特别是,路由器将把前缀作为主键(key)来执行查找操作,从而产生下一跳地址、出站接口和第2层帧头,这里的第2层帧头是根据出站接口的类型来确定的。