如果 IGP 协议满足内部通信的需要,为什么要在自治系统内使用 iBGP

网络工程 路由 路由器 bgp ospf 国际电联
2021-07-22 14:08:57

任何人都可以解释为什么当我们在 AS 内使用 IGP 协议(​​OSPF、RIP)进行内部通信时,为什么我们需要 iBGP 用于路由?

我读了很多文章和书籍,但我找不到答案。

4个回答

当我们拥有用于内部通信的 IGP 协议(​​OSPF、RIP)时,谁能解释一下路由的 IBGP 通信需要什么?

  • 可扩展性1:假设您在多个位置2接收 500,000 条 EBGP 路由,并且您需要影响 AS 中的每个路由出口点。BGP 可以处理的路由比 IGP 协议多得多。因此,除非您愿意重新分发通过 eBGP 学到的所有路由,否则需要 iBGP

  • 加强信任/控制边界:BGP 比 IGP 有更多的方法来过滤对等点(用于控制你广告和接收的内容)。

  • 灵活的数据结构(与之前的项目有些相关):BGP 社区BGP 扩展社区本地首选项等……这些使 BGP 成为在您自己的自治系统中实施自定义路由策略的一种有吸引力的方式(通过使用 iBGP)。

与任何事情一样,都有权衡;您从 iBGP 中获得的可扩展性、控制力和灵活性意味着它是比 IGP(通常)更慢的收敛协议。


尾注:

1 可扩展性

  • 您使用 BGP 是因为您不想在 IGP 中携带整个互联网路由表(即在我的情况下,OSPF)...
  • OSPF 并非旨在处理 Internet BGP 表中的数千条路由……如果您尝试将 OSPF 用于此目的,它将破坏您的网络。以 OSPF 为例,来自 500,000 条路由的 LSA 处理/泛洪要求使用了路由器中的过多资源。命名任何其他 IGP(EIGRP、RIPv1/2、IS-IS、IGRP),同样的故事也是如此。
  • 有一些臭名昭著的实例,其中第 1 层 ISP 意外地将他们的 BGP 表重新分配到他们的 IGP 中(即使 Internet 表只是其当前大小的一小部分)并导致严重中断。现在已经在 IGP 协议中实施了对策(例如 IOS 中的 OSPF),以防止从 BGP 重新分配到 OSPF 导致重大中断。

2 iBGP 路由示例

要了解您可能需要 iBGP 的原因,请考虑此路由条目为 4.2.2.2...

R2>sh ip bgp 4.2.2.2
BGP routing table entry for 4.0.0.0/9, version 3146
Paths: (32 available, best #7, table Default-IP-Routing-Table)
... <!-- extra BGP RIB entries deleted -->
  7660 2516 3356, (aggregated by 3356 4.69.130.4)
    203.181.248.168 from 203.181.248.168 (203.181.248.168)
      Origin IGP, localpref 100, valid, internal, atomic-aggregate
      Community: 2516:1030
  3356, (aggregated by 3356 4.69.130.6)
    4.69.184.193 from 4.69.184.193 (4.69.184.193)
      Origin IGP, metric 0, localpref 100, valid, internal, atomic-aggregate, best
      Community: 3356:0 3356:3 3356:100 3356:123 3356:575 3356:2012
... <!-- extra BGP RIB entries deleted -->

有 32 条路径需要考虑……在这种情况下,BGP 选择通过 4.69.184.193 转到 4.0.0.0/9(注意bestRIB 条目下的 )。在这种情况下,BGP 选择此选项是因为此路由具有最短的 AS 路径列表。但是,并非所有路由都首选通过 AS3356(附加到 R1)。有些可能优于 R3(通过 AS7660)。iBGP 使您能够知道(在 R2 处)采用最短 BGP 路径的方式。

BGP route to 4.0.0.0/9 via                                              
NH: 4.69.184.193 [Path: 3356]                                  
  -------->                                                     

 eBGP w/ AS3356 }{              iBGP inside AS64000          }{   eBGP w/ AS7660

                 S1/0       S1/2   S2/1     S2/3   S3/2    S3/0
Peered w/ AS3356    +------+         +------+        +------+       Peered w/ AS7660
4.69.184.193 <------|  R1  |---------|  R2  |--------|  R3  |-----> 203.181.248.168
                    +------+         +------+        +------+
                                         | S2/0
                                         |
                                        
                                         ^
                                         ^
                                         | Ingress packet to 4.2.2.2
                                         |

R1、R2 和 R3 是完全 iBGP 网状的。当 iBGP 通告路由时,下一跳保持不变这意味着我需要在 OSPF 中携带 4.69.184.193 的子网...

R2>sh ip route 4.69.184.193
Routing entry for 4.69.184.192/30
  Known via "ospf 100", distance 110, metric 65536, type intra area
  Last update from 192.0.2.109 on GigabitEthernet3/1, 1w0d ago
  Routing Descriptor Blocks:
  * 192.0.2.109, from 192.0.2.3, 1w0d ago, via Serial2/1
      Route metric is 65536, traffic share count is 1

R2>

因此,当 4.2.2.2 的数据包到达 R2 时,R2 将其发送出 Serial2/1,因为 iBGP 告诉我们下一跳在那里。

IGP通常是基于链路状态的OSPF或ISIS,这为我们提供了网络的所有信息,每个人都从每个人的角度了解网络,这允许非常有趣的收敛选项和流量工程选项。

BGP 本质上是距离向量,它对整个网络的了解非常有限。BGP 可以很好地处理过滤和修改路由信息。

与距离矢量相比,链接状态协议相当昂贵,将其缩放到 INET DFZ 大小会非常成问题。

所以我们两者兼而有之,是因为在一个特定的网络中,我们有足够低的复杂性来处理它的链路状态协议,这使我们能够获得高度网络知识的所有优势。
但由于它不适合 Internet 规模,我们需要一些其他网络来连接这些许多链接状态孤岛。

您可以在您自己的网络内部携带您的 IGP 中的所有前缀(包括客户),但这会对 IGP 性能产生负面影响,而仅携带核心路由器的环回地址即可获得所有收敛和 TE 优势。将客户前缀添加到 IGP 只会使 IGP 变得不必要地复杂,从而损害您的网络性能。

我经常看到的一个原因是清晰:所有路由都包含在一个路由协议 (BGP) 中,IS-IS、OSPF 或 RIP 仅用于邻接。因此,无需将路由从一种路由协议重新分配到另一种路由协议。

iBGP 并不真正用于内部路由,它被所有 eBGP 路由器用于共享它们的路由。

例如:如果您与其他 3 个网络对等,您希望所有 eBGP 路由器都知道其他路由器接收到的路由,以便它们可以在必要/需要时将该信息传播给对等方(从而打开您的对等方使用传输的可能性)你)