它是一个路径矢量路由协议,也就是说,它的工作就是在自主系统间交换路由信息,以便发现访问互联网某处数据的最有效路径。每个 BGP 路由器通过邻居声名与周边的一个或多个路由器连接。一旦建立了邻居关系,这些 BGP 路由器之间就会相互交换路由信息。据我最近一次统计,整个互联网上有大约 12.5 万个路由信息,因此要配备一个强大的路由器才能将所有 BGP 路由信息接收下来。
什么是 BGP 最佳路径选择算法 ?
  由于整个互联网的 BGP 路由表有超过 20 万个路由,同时一个 BGP 路由器可能从多个来源收到多份的路由表,因此肯定会有一种方法可以比较不同的 BGP 路由表,并从中选择最佳的路由方案。这种方法就是 BGP 最佳路径选择算法。
  可能你会注意到, Cisco BGP 路由器会将应用权重 (weight) 作为 路由表的第一标准,而其它品牌的路由器则不是这样。 Cisco 的官方 BGP 最佳路径选择算法文档 中详细列明了所参考的各项标准。接下来我会列出每种标准并给出解释和范例。
  默认情况下, BGP 最佳路径都是基于最短自治系统 (AS) 的原理得出的。不过很多时候,诸如 weight local preference 以及 MED 这样的标准都是网络管理员自行设定的。
  接下来我们就按照 BGP 选择最佳路径的参考顺序将这几项标准介绍一下:
   #1 Weight 权重是 Cisco 为本地路由器设定的自定义参数,并不随路由器更新而变化。如果指向某一 IP 地址的路径有多条 ( 这很常见 ) ,那么 BGP 会寻找权重最高的路径。设定权重的参考因素很多,包括邻居命令, as-path 访问列表,或者路由镜像等。
   #2 Local Preference 本地出口优先级参数会告知 AS 哪条路径具有本地优先,数值越高优先级越高。默认为 100 。比如:
   bgp default local-preference 150
   #3 Network or Aggregate 这个参数会选择本地发起的网络或聚合作为路径。将特定的路径加入路由中,会让路由更有效率,同时也节省了网络空间。更多有关聚合的信息,可以参考 Cisco 的文章 “Understanding Route Aggregation in BGP.”
   #4 Shortest AS_PATH — BGP 只有在 weight, local preference locally originated 相当接近的时候才使用这个参数。
   #5 Lowest origin type 这个参数处理 Interior Gateway Protocol (IGP) 协议的优先级低于 Exterior Gateway Protocol (EGP) 协议。
   #6 Lowest multi-exit discriminator (MED) 较低的 MED 值要优于较高的 MED 值。
   #7 eBGP over iBGP 类似于 #5, BGP AS Path 更倾向 eBGP 而不是 iBGP
   #8 Lowest IGP metric 这个参数倾向于采用最低 IGP 作为 BGP 下一跳。
   #9 Multiple paths 这个参数决定是否要在路由表中装入多个路径。可以参考 BGP Multipath 获取更多信息。
   #10 External paths 当所有路径都为外部路径时,选择首先接收到的路径 ( 较老的路径 )
   #11 Lowest router ID 选择来自具有最低路由器 ID BGP 路由器的路径。
   #12 Minimum cluster list 如果多个路径的 originator 或路由器 ID 相同,选择 cluster 列表长度最短的路径。
   #13 Lowest neighbor address 这是指最低邻居地址传来的路径。
  有些命令需要不断的用到 BGP 参数,它们是 show ip bgp show ip bgp summary 。实际上,我更喜欢给这两个命令创建别名,以便能更快捷的使用它们 ( 参考我的文章《 Cisco 命令别名更有效的输入命令》 ) 。这些命令可以让你快速获取 BGP 以及与路由器的关系。下面是使用 show ip bgp 命令后的情况范例:
   RTA# show ip bgp
   BGP table version is 14, local router ID is 203.250.15.10
   Status codes: s suppressed, d damped, h history, * valid, > best, i -internal
   Origin codes: i - IGP, e - EGP, ? - incomplete
   Network Next Hop Metric LocPrf Weight Path
   *>i128.213.0.0 128.213.63.2 0 200 0 200 i
   > 192.208.10.0 192.208.10.5 0 300 0 300 i
   *>i200.200.0.0/16 128.213.63.2 200 0 200 400 i
   >i203.250.13.0 203.250.13.41 0 100 0 i
   *>i203.250.14.0 203.250.13.41 0 100 0 i
   *> 203.250.15.0 0.0.0.0 0 32768 i
  带星号的是 BGP 最佳路径选择算法选出的最佳路径。
  
  不论你是使用 BGP 的网管,还是只是为了 CCIE CCNP 考试学习 BGP 的学员,懂得这方面的知识都是非常有益的。正如上面看到的,使用参数和命令行的方式,确实可以快速实现所需功能。
  更多信息,可以查阅 Cisco 官方 BGP 最佳路径算法 文档以及 Cisco 配置 BGP 文档。