BGP支持多种路径属性(PA)。有些PA仅作为BGP最佳路径算法中选项的一部分而存在,一些与BGP最佳路径算法无关,而有些影响最佳路径算法并被使用。用于其他目的。
例如,存在从本地AS的角度来看,本地优先PA可以控制单个AS的出站路由。相反,BGP Next_Hop PA为BGP提供了列出路径的下一跳IP地址的位置,但是它没有为工程师提供有用的方法来设置不同的值以影响最佳路径选择。
术语BGP最佳路径算法是指单个路由器上的BGP检查其BGP表中竞争的BGP路径(路由)的单个前缀,并选择一个路由作为最佳路由的过程。最佳路径算法有许多步骤,但是最终会导致为每个前缀选择一条路由,作为该路由器的最佳BGP路径。本文研究了BGP最佳路径算法使用的BGP PA。
BGP最佳路径算法概述
BGP最佳路径算法遵循下表中以简写形式显示的步骤。该表列出了步骤0到8,简短的描述性短语以及关于一个值比另一个值更好的标准的注释。
从第0步开始可能看起来很奇怪,但它有助于对这一步列出的逻辑提出一个重要的观点。一些BGP最佳路径引用将此步骤中的逻辑包括为最佳路径步骤,而某些BGP只是将这些相同信息列为旁注。
无论如何,“第0步”概念很重要。对于步骤0,路由器查看BGP路由,并将Next_Hop IP地址与IP路由表进行比较。
如果该路由器没有与BGP路由的Next_Hop IP地址匹配的IP路由,则该路由器将不知道如何使用该特定路由转发该特定前缀的数据包。
为了避免使用此类路由,在步骤0,BGP最佳路径算法将此类路由从考虑中删除。然后,BGP按顺序使用以下八个步骤,直到为给定前缀选择了一条最佳路由。
如果路由器在完成步骤8时仍未确定最佳路由,则路由器将采取其他几个小步骤来打破平局。在这一点上,竞争的路线被认为是彼此一样好。
但是,与IGP不同,BGP需要选择一条和唯一一条最佳路由,部分原因是BGP仅向其邻居通告最佳路由。在这种情况下,BGP会通过以下其他步骤来打破束缚,这些步骤将被视为步骤9-11:
- 步骤9:最早(已知最久)的eBGP路由
- 步骤10:最低邻居BGP RID
- 步骤11:最低邻居IP地址
BGP对整个最佳路径算法有更详细的了解,首先从为给定前缀选择已知的最早路由作为最佳路由。然后,它使用同一前缀的下一条最长已知路由,并使用最佳路径算法比较两条路由。
路由器最终选择两条BGP路由之一作为最佳路径(路由)。如果存在相同前缀的其他路由,则路由器将使用先前比较的获胜者和新路由来重复此过程,并选择其中一个作为更好的路由。
该过程将继续进行,直到考虑了所有路由为止,其中一个路由在BGP表中被列为最佳路由。
八个最佳路径的核心观点
某些BGP最佳路径步骤故意为工程师提供了一种影响最佳路径选择的工具,而其他步骤则具有不同的目的,通常只是某些BGP功能的副作用。
因此,当工程师开始构建BGP实施计划时,只需考虑以下八个BGP最佳路径核心步骤的子集,如下所示:
- 权重(步骤1)(思科私有)
- Local_Pref(第2步)
- AS_Path长度(第4步)
- MED(通常称为Metric开销)(步骤6
本文在最佳路径选择的背景下更深入地介绍了这四个功能。但是,在关注这四个项目之前,先了解一下其他步骤的含义可能会有所帮助,这有助于您记忆BGP最佳路径算法中的步骤。
步骤3比较从中将路由添加到BGP表的源。当BGP最佳路径算法在此步骤比较两条路由时,如果一条路由是本地注入的,而另一条路由不是(从BGP对等体获悉的),则路由器会选择本地注入的路由。
第13章“将路由注入到BGP中以通告给ISP”描述了在本地注入这些路由的两种方法,网络命令和从IGP进行重新分发。
步骤5指的是BGP Origin PA。原始PA尝试识别来自外部BGP的源,路由从该外部BGP注入到BGP。三个原始代码值是:
- i:从IGP注入(使用网络命令)
- e:从外部网关协议(EGP)注入
- ?:不确定
步骤7指的是邻居类型:iBGP或eBGP。请记住,BGP一次比较两条路由,如果一条是通过eBGP获悉的,另一条是通过iBGP获悉的,则路由器会选择最佳的eBGP路由。
使用此功能影响最佳路径选择将很困难,因为路由器所在的ASN由BGP设计固定。
最后,步骤8将IGP度量标准引用到Next_Hop地址。在此步骤中,路由器会比较每个Next_Hop IP地址的IP路由度量,并选择IGP度量值较低的BGP路由为其Next_Hop。如果未使用通过IGP学习的路由(例如,如果两者均使用连接的路由),则BGP会考虑度量标准。
可以想象,工程师可能会调整IGP来操纵BGP的最佳路径选择,但是这一步骤已经进入算法的范围,因此,更早更灵活的设置将是更好的选择。
BGP路径属性:权重
思科路由器可以在该单个路由器上使用BGP权重来影响该路由器对出站路由的选择。
为此,当路由器接收到BGP更新时,该路由器可以使用路由映射表针对每个路由选择性地设置权重,或者针对从单个邻居学到的所有路由来设置权重。然后,路由器的最佳路径算法会检查竞争路由的权重,选择权重较大的路由。
在单个路由器上配置的思科专有权重设置只能影响一个路由器,因为权重无法传达给其他相邻的BGP路由器。
因此,要使用权重,必须将路由器配置为检查传入的更新以设置权重。无法简单地在收到的更新中了解权重,因为该更新消息不支持在其中传达权重设置的字段。
表14-6总结了有关BGP管理权重的一些关键事实。
BGP路径属性:本地优先级
BGP本地优先级(Local_Pref)PA为单个AS内的路由器提供一个值,该值可以按路由设置并发布给AS内的所有iBGP路由器,以便AS中的所有路由器都同意哪台路由器是最佳出口点用于发往该前缀的数据包。
根据设计,当路由器使用入站路由映射接收eBGP路由时,可以设置Local_Pref。然后,路由器在iBGP更新中发布Local_Pref。结果,同一AS中的所有路由器都可以对哪个路由最好做出相同的选择,就每个前缀使用哪个路由器退出AS达成一致。
下表总结了Local_Pref的一些关键功能,如后续页面所示
使用AS_Path前缀增加AS_Path的长度
BGP最佳路径算法的第4步检查AS_Path PA的长度。AS_Path的长度似乎很明显:只需添加AS_Path中列出的ASN数量。但是,本书范围之外的某些BGP功能实际上也会影响AS_Path长度的计算。但是,出于本书的目的,AS_Path长度只是AS_Path中列出的ASN的数量。
AS_Path前置工具为工程师提供了一种通过将ASN添加到AS_Path来增加AS_Path长度的方法,同时又不影响AS_Path PA的环路保护角色。通过增加AS_Path的长度,路由不太可能成为最佳路由。
通过添加特定路由的AS_Path内部已经存在的ASN,此功能不会由于防止AS_Path循环而无意间阻止了路由被忽略。
上图显示了企业路由器如何在AS_Path之前添加路由器E2从ISP3(即路由器I3-1)接收的路由的机制。专门查看185.0.0.0/8的路由,在这种情况下,I3-1并未更改AS_Path并使用AS_Path(3,1855)通告了该路由。
在步骤2中,路由器E2将ASN 3设置为两倍(使AS_Path长度为4)。在步骤3中,E2将路由通告给其iBGP对等体(对等体),该对等体现在可能更喜欢通过路由器E1为此前缀添加其他路由。
使用MED影响企业的入站路由
企业对其出站IP路由具有相当好的控制。工程师可以配置BGP来设置Weight,Local_Pref和AS_Path长度并对其做出反应,从而操纵BGP来选择不同的传出链接或不同的路由器,以将数据包转发到Internet。企业对入站路由的控制要少得多:入站路由返回企业的路由。
首先,这些入站路由存在于企业不拥有的路由器上。即使企业的工程师可以说服一个ISP或一组ISP使其通往企业的路线采用特定路径,技术问题也可能阻止设计的实现。
特别是,如果汇总了企业的公共IP地址范围,则使用该范围内地址的公司可能会有相互竞争的目标。结果,无法应用任何策略来影响最佳路线。
但是,存在一些工具,可以对ISP及其企业客户之间的最后一个ASN跃点进行一些控制。本文研究了一种称为多出口鉴别器(MED)的工具,该工具最初用于 双宿主设计,即使用单个ISP,但具有指向该ISP的多个链接。
MED后来扩展到支持双多宿主设计(2个以上的ASN,2个以上的链接),这取决于ISP可以协同工作的概念。本节使用单个ISP研究双宿主情况。
BGP路径属性:MED
实际上,多出口鉴别器这个名称在很大程度上描述了其功能。采用双宿主设计,企业与其ISP之间至少存在两个链接。企业可以向ISP公布一个值(MED),该值告诉ISP进入企业的最佳路径。结果,ISP可以区分从该ISP到企业的多个出口点。
因为MED允许企业ASN仅告诉相邻的ASN使用哪个链接进入企业,所以工程师通常在发布企业的公共IP地址空间时使用MED。
从ISP进入企业的那些入站路由通常由一个或几个公共IP地址范围组成。例如,考虑下图所示的新网络设计。企业仅连接到具有四个物理链路和三个BGP邻居的ASN 1。
MED使用最小就是最佳。结果,该图显示了一种设计,其中企业工程师更喜欢顶部BGP邻居作为用于入站路由(MED 10),下一个中间链接(MED 20)和最后一个底部连接(MED 30)的最佳路径。 )。遵循图中的步骤:
- E1和E2通告128.107.0.0/19,使用出站路由图将MED设置为各种设置:E1发送给MED 10到I1-1,E1发送给MED 20到I1-4,以及E2发送给MED 30到I1 -4。
- I1-1和I1-4具有iBGP连接,因此他们可以互相学习对方的路由并就基于MED的路由获胜达成一致。
- I1-1和I1-4还会告诉ISP1内部的其他路由器,从而导致所有入站流量都向路由器I1-1集中。
请注意,此示例中的路由器I1-1和I1-4可以根据所有较早的最佳路径步骤选择更好的路由。但是,对步骤的简要分析告诉我们,除非有人努力消除MED的影响,否则这些路由器的最佳路径算法将使用MED。
假设企业和ISP同意依赖MED,则较早的最佳路径步骤将无关紧要。上表总结了有关MED的关键点。