天天看点

众元教育H3CSE20200603班---BGP基本原理之二

引入

前面我们了解了BGP的起源背景、几个基本术语、五个消息以及它的一个状态机,现在我们来了解它选路的手段之一以及它的选路规则。

一、BGP路由属性

BGP是通过比较路由携带的属性,来完成路由选择、环路避免等工作的。BGP路由属性基于“TLV”架构,易于扩展,有一下四类:

众元教育H3CSE20200603班---BGP基本原理之二
  1. 公认必遵属性(Well-known mandatory):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中,如果缺少这种属性,路由信息就会出错。
  2. 公认可选属性(Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。
  3. 可选传递属性(Optional transitive):在AS之间具有可传递的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。
  4. 可选非传递属性(Optional non-transitive):如果路由器不支持此属性,该属性会被忽略,且不会通告给其他对等体。

在这四类属性中,有一下几种常见的BGP属性,我们需要了解,并记住该属性的作用。

1.AS_PATH属性

众元教育H3CSE20200603班---BGP基本原理之二

AS_PATH属性为公认必遵属性,该属性域指示出该路由更新信息经过了哪些AS路径,主要作用就是保证AS之间无环路。

特点:

  • 当BGP将一条路由通告到其他AS时,便会把自己的AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所需要经过的AS。
  • 通常情况下,当一个路由更新到达一个AS的边界路由器时,如果边界路由器发现这个AS号在路由的AS路径属性中已经存在,边界路由器会丢弃此路由。
  • AS_PATH属性可用于路由的选择与过滤。在其它因素相同的情况下,BGP会优先选择AS_PATH最短的路由(选择路径最短的)。
  • BGP发现者在向EBGP邻居发送路由更新时修改AS_PATH属性,在向IBGP邻居发送时不修改该属性。

2.NEXT_HOP属性

NEXT_HOP属性为公认必遵属性,它为BGP发言者指示了去往目的地址的下一跳。

众元教育H3CSE20200603班---BGP基本原理之二

其下一跳的属性的取值与IGP的下一跳不一样,分为四种情况:

  • BGP发言者把自己产生的路由发给所有邻居时,将把该路由信息的下一跳属性设置为自己与对端连接的接口地址。
  • BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的下一跳属性,将从EBGP得到的路由的NEXT_HOP直接传递给IBGP邻居。
  • BGP发言者把接收到的路由发送给EBGP对等体时,将把该路由信息的下一跳属性设置为本地与对端连接的接口地址。
  • 对于可以多路访问的网络(如以太网或者帧中继),如果通告路由器和源路由器的接口处于同一网段,则BGP会向邻居通告路由的实际来源。

注意:需将这四种情况对照上图仔细了解

3.ORIGIN属性

ORIGIN属性是公认必遵属性,它指示该条路由的起源,也即这条路由是通过何种方式注入BGP中的。它有三种类型:

  1. IGP:优先级最高,说明路由产生于本AS内。
  2. EGP:优先级次之,说明路由通过EGP学到。
  3. Incomplete:优先级最低,它并不是说明路由不可达,而是表示路由的来源无法确定。例如,引入其他路由协议的路由信息。

这三种类型的来历:

  1. BGP把通过network命令指定注入BGP中的路由的ORIGIN属性设置为IGP。
  2. BGP把通过EGP注入BGP中的路由ORIGIN属性设置为EGP。
  3. BGP把由IGP协议引入BGP中的路由的ORIGIN属性设置为Incomplete。

4.LOCAL_PREF属性

本地优先(LOCAL_PREF)属性是公认可选属性,用于在一个AS有多个出口的情况下,判断流量离开AS时的最佳路由。

众元教育H3CSE20200603班---BGP基本原理之二

特点:

  • 该属性只在本AS内传播,不传递到AS外。
  • 当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,会优先选择LOCAL_PREF属性值较高的路由。
  • LOCAL_PREF的属性值仅仅会影响离开该AS的流量,不会影响进入该AS的流量。
  • 默认情况下,LOCAL_PREF属性值为100。

5.MED属性

MED(MULTI_EXIT_DISC)属性为可选非传递属性。MED属性相当于IGP使用的度量值(Metric),用于EBGP邻居有多条路径到达本AS的情况,告诉EBGP邻居进入本AS的较优路径。

众元教育H3CSE20200603班---BGP基本原理之二

特点:

  • 当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其他条件相同的情况下,将优先选择MED值较小者作为最佳路由。
  • MED值尽仅在相邻的两个AS之间传递,收到此属性的AS不会再将其通告给任何第三方AS。
  • 通常情况下,BGP只比较来自同一个AS的路由的MED属性值,不比较来自不同AS的MED值,若一定要比较,则需要进行特别的配置。

6.Preferred-value属性

首选值(Preferred-value)属性为私有BGP属性。为从不同对等体接收的路由分配不同的Preferred-value值,可以改变从指定对等体学到的路由的优先级。

众元教育H3CSE20200603班---BGP基本原理之二

特点:

  • 系统会给所有从不同EBGP对等体学来的路由分配一个初始Preferred-value值0.
  • 拥有最高Preferred-value值得路由将被选作到达指定网络得路由。
  • Preferred-value属性只在本地有效,不随路由信息传播。

二、BGP的选路规则

a)BGP路由处理流程

众元教育H3CSE20200603班---BGP基本原理之二
  1. 接收路由过滤与属性设置是BGP发言者在对等体接收到路由后的第一部工作。BGP接收到路由后,根据配置的接收策略对接收到的BGP路由进行匹配与过滤(根据路由携带的属性),并对其设置相关的属性。
  2. 完成了接收策略的匹配后,如果有需要,BGP发言者将对路由进行聚合,合并其中的具体路由,依此减少路由表的规模。
  3. 完成了接收策略的匹配具体路由合并后,BGP将对接收到的路由进行优选。对于到达同一目的地址的多条BGP路由,BGP发言者只选择最佳的路由给自己使用,并将此最佳路由安装到IP路由表中,称为有效路由。
  4. 在向BGP对等体发布路由的时候,BGP发言者需要依据一定的发布策略,将对已经安装到自己IP路由表的部分有效路由进行发布。
  5. 同时,BGP路由器需要执行发布路由过滤与属性设置,然后将通过过滤的BGP路由发送给自己的BGP对等体。如果有需要,BGP发言者将对路由进行聚合,合并其中的具体路由,依此减少路由表的规模。

而对于IGP路由,则需要先经过引入策略的过滤和属性设置,将IGP路由表中的有效路由引入BGP路由表中,然后才能进行发布路由过滤与属性设置,并将过滤后的路由发送给自己的BGP对等体。

b)路由优先顺序

  1. 首先丢弃下一跳(NEXT_HOP)不可达的路由。
  2. 优选Preferred-value值最大的路由。
  3. 优选本地优先级(LOCAL_PREF)最高的路由。
  4. 依次选择network命令生成的路由、import-route引入的路由、聚合路由。
  5. 优选AS路径(AS_PATH)最短的路由。
  6. 依次选择ORIGIN属性为IGP、BGP、Incomplete的路由。
  7. 优选MED值最低的路由。
  8. 依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由。
  9. 优选下一跳度量值最低的路由。
  10. 优选CLUSTER_LIST长度最短的路由。
  11. 优选ORIGINATOR_ID最小的路由。
  12. 优选Router ID最小的路由器发布的路由。
  13. 优选地址最小的对等体发布的路由。

有这么多条BGP选择路由的策略可知,BGP协议本身一定能够选出唯一一条达到目的网段的最优路由。

c)路由发布策略

  1. 存在多条有效路由时,BGP发言者只将最优路由发布给对等体,如果配置了advertise-rib-active命令,则BGP发布IP路由表中的最优路由;否则,发布BGP路由表中的最优路由。
  2. BGP发言者只将自己使用的路由发布给对等体。
  3. BGP发言者从EBGP获得的路由会向它所有的BGP对等体发布(包括EBGP对等体和IBGP对等体)。
  4. BGP发言者从IBGP获得的路由不会向它的IBGP对等体发布。
  5. BGP发言者从IBGP获得的路由会发布给它的EBGP对等体。
  6. BGP连接一旦建立,BGP发言者将把满足上述条件的所有BGP路由发布给新对等体。之后,BGP发言者只在路由变化时,向对等体发布更新的路由。

最后,BGP的所有基本原理就都在这里啦,后续还会发布BGP路由器的基本配置,以及控制BGP路由和它的增强配置,希望看客们在这之前可以好好消化一下这基本原理~

继续阅读