边界网关协议(BGP)用于通告,学习和选择全球Internet内的最佳路径。当两个ISP连接时,它们通常使用BGP交换路由信息。世界各地的ISP集体使用BGP交换Internet的路由表。而且企业有时会使用BGP与一个或多个ISP交换路由信息,从而使企业路由器能够学习Internet路由。
将BGP与常规IGP路由协议进行比较时,一个关键区别是BGP的健壮最佳路径算法。BGP使用该算法来选择最佳BGP路径(路由),其使用的规则远远超出了仅选择最低度量标准的路由。
这种更复杂且最佳路径的算法使BGP能够让工程师配置许多不同的设置,这些设置会影响BGP最佳路径选择,从而为路由器选择最佳BGP路由提供了极大的灵活性。
BGP基础
BGP,特别是BGP版本4(BGPv4),是当今流行的一种路由协议,被设计为外部网关协议(EGP)而不是内部网关协议(IGP)。因此,BGP的某些目标与IGP的目标不同,例如开放式最短路径优先(OSPF)或增强型内部网关路由协议(EIGRP),但某些目标保持不变。
首先,考虑BGP与各种IGP之间的相似性。BGP需要像IGP一样发布IPv4前缀。BGP还需要发布一些特定信息,以便路由器可以为给定前缀选择众多路由之一作为当前最佳路由。至于协议的机制,BGP在与邻居路由器交换拓扑信息之前先建立邻居关系。
接下来是差异。BGP不需要将邻居连接到同一子网。取而代之的是,BGP路由器使用路由器之间的TCP连接(端口179)来传递BGP消息,从而允许相邻路由器位于同一子网上或被多个路由器隔开。看到没有连接到同一子网的BGP邻居是相对常见的。
BGP与其他协议的最大区别可能是此路由协议如何选择最佳路由。BGP不仅使用整数度量标准来选择最佳路由,还使用了更复杂的过程,使用了称为BGP路径属性(PA)的各种信息,这些信息在BGP路由更新中交换,就像IGP度量标准信息一样。
下表总结了其中一些关键比较点。
BGP ASN和AS_SEQ路径属性
BGP将路径属性用于多种目的。PA定义有关通过网络的路径或路由的信息。一些BGP PA使用最佳路径算法描述了在选择最佳BGP路由时可能有用的信息。BGP除了选择最佳路径外,还将某些PA用于其他目的。默认情况下,如果未明确设置BGP PA,则BGP路由器在许多竞争路由中选择最佳路由时将使用BGP AS_PATH(自治系统路径)PA。
整数BGP ASN唯一标识一个认为自己独立于其他组织的组织。企业网络连接到Internet的每个公司都可以视为一个自治系统,并且可以为其分配BGP ASN。(IANA / ICANN还分配了全球唯一的ASN。)此外,每个ISP都有一个ASN,或者可能有多个,具体取决于ISP的大小。
当路由器使用BGP通告路由时,前缀/长度与一组PA关联,包括AS_PATH。与前缀/长度关联的AS_PATH PA列出了ASN,这些ASN将是使用BGP获悉的该前缀的端到端路由的一部分。从某种意义上说,AS_PATH包含如下信息:“如果使用此路径(路由),则该路径将通过此ASN列表。”
BGP使用AS_PATH执行两个关键功能:
- 根据最短的AS_PATH(列出的ASN的最少数量)为前缀选择最佳路由。
- 防止路由循环。
AS路径示例
下图仅显示每个ISP中的几个路由器,也没有显示两个公司的许多企业网络。但是,该图确实显示了足够的细节,以演示一些关键的BGP概念。
为了便于讨论,假设路由器之间的每条线代表正在运行的某种物理介质。每个路由器将使用BGP,并且每个路由器将与每个链路另一端的路由器形成BGP邻居关系。例如,ISP1的I1-2路由器将与路由器I1-1和I2-1具有BGP邻居关系。
考虑到这一点,请考虑下图,该图显示了针对其他ASN的前缀192.31.7.32/29的BGP更新的公告。该图显示了四个步骤,如下所示:
- 在ASN 12中,I2在ASN 12外部发布路由。因此,I2在发布路由时将其自己的ASN(12)添加到AS_PATH PA。
- 当在ASN 2外部发布路由时,ASN 2内部的路由器在发布路由时将其自己的ASN(2)添加到AS_PATH PA。他们的广告AS_PATH为(12,2)。
- ASN 3内的路由器I3-1先前已通过AS_PATH(12,2)从ASN 2了解了192.31.7.32/29的路由。因此,I3-1在将其自己的ASN(3)添加到AS_PATH之后将路由发布到ASN 1,从而AS_PATH为(12,2,3)。
- 同样,位于ASN 1中的路由器I1-1将路由通告给ASN3。由于ASN 3是不同的ASN,因此I1-1将其自己的ASN(1)添加到AS_PATH PA,以便AS_PATH列出ASN 12、2和1。
现在,从细节上退后一步,考虑ASN中路由器共同学习的两条替代路由:
- 192.31.7.32/29,AS_PATH(12,2)
- 192.31.7.32/29,AS_PATH(12,2,3)
由于BGP路径选择算法使用最短的AS_PATH,因此假设没有其他PA被操纵,ASN 1中的路由器将使用这两个路径中的第一个,然后将数据包发送到ASN 2,而不使用通过ASN 3的路径。 ,因此请注意,从ASN 1到ASN 11的广告列出了一个AS_PATH,它反映了ASN 1内部路由器的最佳路径选择,并在最佳路由的AS_PATH末尾添加了ASN 1(12 ,2,1)。
BGP路由器还使用AS_PATH中列出的ASN防止路由循环。当BGP路由器接收到更新,并且路由公告列出具有其自己的ASN的AS_PATH时,路由器将忽略该路由。这是因为该路由已经通过本地ASN发布;相信路由然后进一步通告它可能会导致路由循环。
内部和外部BGP
BGP定义了两类邻居(对等体):内部BGP(iBGP)和外部BGP(eBGP)。这些术语使用单个路由器的观点,这些术语指的是BGP邻居是在同一ASN(iBGP)还是在不同ASN(eBGP)中。
BGP路由器的行为根据对等体(邻居)是iBGP还是eBGP对等体而在几种方式上有所不同。区别包括关于在两个路由器成为邻居之前必须满足的规则,关于BGP最佳路径算法选择最佳路由的规则不同,甚至关于路由器如何更新BGP AS_PATH PA的规则也不同。
向eBGP对等体通告时,BGP路由器会更新AS_PATH PA,但向iBGP对等体通告时不会这样做。例如,下图显示了与图1相同的设计和相同的路由公告。但是,在这种情况下,所有BGP连接都被列为iBGP或eBGP。
该图突出显示了从ASN 12到通过ASN 2和3的较低路径的路由通告。请注意,在步骤1,向IBGP对等体通告的路由器I2将其自己的ASN添加到AS_PATH。在步骤2,路由器I2-1向iBGP对等体(I2-2)通告,因此它不会将其自己的ASN(2)添加到AS_PATH。然后,在步骤3中,路由器I2-2将自己的ASN(2)添加到AS_PATH,然后再将更新发送给eBGP对等体I3-2,依此类推。
公共和私人ASN
为了使Internet使用BGP正常工作,IANA就像使用IP地址前缀一样管理ASN的分配。必须将ASN分配为唯一值的一个关键原因是,如果ASN被复制,则BGP环路阻止过程实际上会阻止Internet的某些部分了解路由。
例如,考虑下图,该图具有与前几张图相同的设计,但是这次具有重复的ASN。
在此图中,ISP1和公司1都使用ASN12。该示例的BGP更新如图2和3所示开始,其中公司1发布了其前缀。ISP1中的路由器接收BGP更新,该更新列出了公司1使用的相同前缀,但是两个更新都列出了包含ASN 12的AS_PATH。
因为ISP1认为它使用ASN 12,所以ISP1认为这些BGP更新应作为BGP环路预防过程的一部分而被忽略。结果,ISP1的客户无法到达公司1中路由器通告的前缀。
为防止此类问题, IANA 控制ASN编号空间。使用与IPv4地址相同的通用过程 ,可以将ASN分配给不同的组织。16位BGP ASN表示十进制范围为0到65,535。
前面的表格显示了IANA当前ASN分配约定的一些细节。
专用ASN允许AS内的路由器参与BGP,同时使用与许多其他组织相同的ASN。通常,在AS仅连接到另一个ASN的情况下,AS可以使用专用AS。
在某些情况下,也可以使用专用ASN连接到多个ASN。原因是只有一个连接点到另一个ASN,在BGP拓扑中就不会在该点发生环路,因此在该网络的该部分不再需要唯一的ASN。
由于BGP最佳路径算法背后的逻辑,加上BGP仅通告给定前缀的最佳路径,因此无法发生环路。