BGP

BGP是一种不同自治系统的路由设备之间进行通信的外部网关协议。
一、基本概念
  1.每一个AS(自治系统)都有一个标识号,范围1-4294967295。
  2.BGP使用TCP协议作为传输协议,端口号179.
  3.运行BGP的router称为speaker,两个speaker之间称为peer(对等体)。
  4.BGP中的下一跳是一个AS.
  5.IBGP:有相同AS号建立的BGP连接,管理距离200.所以在AS内部一般由内部网关协议作为通信协议。
  6.EBGP:不同的AS号建立的BGP连接,管理距离20.

二、BGP路由反射机制
  1.按 BGP 路由通告原则,缺省情况下 IBGP 邻居学习到的路由不会再通告给下一个 IBGP 邻居。因此在同一 AS 域内部,要求运行 BGP 协议的设备必须实现全连接(即 Full-Mesh)。当 AS 内部的 BGP 设备较时,实现全连接会给网络部署带来较大困难,此时可以通过路由反射解决问题。
  2.将一台 BGP Speaker 设置为路由反射器,其将本自治系统内的 IBGP 对等体分为两类:客户端和非客户端。
  3.在 AS 内实现路由反射器,其规则如下:
    ①配置路由反射器,并指定其客户端,路由反射器和其客户端形成一个群。路由反射器和客户端之间将建立连接关系。
    ②一个群内路由反射器的客户端不应该同群外的其他 BGP Speakers 建立连接关系。
    ③在 AS 内,非客户端的 IBGP 对等体之间建立完全连接关系,这里的非客户端的 IBGP 对等体包括以下几种情况:一个群内的多个路由反射器之间;群内的路由反射器和群外不参与路由反射器功能的 BGP Speaker(通常这些 BGP Speaker 不支持路由反射器功能);群内的路由反射器和其他群的路由反射器之间。
  4.路由反射器接收到一条路由的处理规则如下:
    ①从 EBGP Speaker 接收到的路由更新,将发送给所有的客户端和非客户端;
    ②从客户端接收到的路由更新,将发送其他客户端和所有非客户端;
    ③从 IBGP 非客户端接收到的路由更新,将发送给其所有客户端 。
  其实只有记住:非客户端的路由更新不能通过反射器传给非客户端即可,即“非非不传”。

三、BGP联盟
  1.联盟是另一种减少自治系统内 IBGP 对等体连接数量的方法
  2.将一个自治系统划分为多个子自治系统,并通过设置一个统一的联盟 ID(即联盟 AS 号)将这些子自治系统组成一个联盟。对联盟外部来说,整个联盟仍然认为是一个 AS,且只有联盟的 AS 号对外可见。在联盟内部,子自治系统内部的 BGP Speakers之间仍然建立完全 IBGP对等体连接,子自治系统间的 BGP Speaker之间建立 EBGP连接。虽然在子自治系统的 BGP Speakers之间建立的是 EBGP 连接,但交换信息时,对于 NEXT_HOP、 MED 以及 LOCAL_PREF 等路径属性信息仍然保持不变。
  路径属性会在后面的内容讲到,现在只需要记住BGP联盟是不会影响BGP路径属性即可。

四、BGP的报文类型
  1.open:TCP会话建立后,发送open报文,发现和建立邻居关系
  2.keepalive:收到邻居的open报文,发送keepalive报文,维护邻居关系,更新时间60s
  3.update:通告路由信息
  4.notification:检查到差错发送该报文,并关闭BGP连接

五、BGP的邻居状态机
  1.idle:尝试BGP连接
  2.connect:发TCP包,TCP建立成功则进入opensent,失败则进入active。
  3.actvie:发TCP包,TCP没有建立成功,反复尝试TCP连接
  4.opensent:发open包,参数协商成功则peer建立,存在差错发送notification包,没有差错进入openconfirm状态。
  5.openconfirm:发keepalive包,参数、特性等协商成功,将发送keepalive包,同时等待对方的keepalive包,收到则进入established状态。
  6.established:发update包,已经收到keepalive包,双发能力特性一致,使用update通告路由信息。

六、BGP选路规则
  1.优选权重最大的。
  2.若权重相同,则优选local-pref值最大的路由。
  3.若local-pref相等,则优选本地生成的路由。
  4.若local-pref相等且没有本地发起的路由,则优选AS-PATH最短的路由。
  5.若AS-PATH相等,则优选origin最小的路径,IGP>EGP>Incomplete。
  6.若origin相同,优选MED值最小的路由。
  7.若MED相等,优选EBGP路由,次选联盟EBGP路由,最后选IBGP路由。
  8.若此时路由仍相同,选择到达下一跳的IGP metrc小的路由。
  9.若此时路由仍相同,且来自同一AS,则在loc-rib中安装所有等价路由。
  10.若此时路由仍相同,且都为EBGP路由,选择最早接收到的路由。
  11.若此时路由仍相同,优选router ID 最小的。
  12.若此时路由仍相同,且使用了路由发射机制,优选CLUTER-LIST最短的路由。
  13.若此时路由仍相同,优选邻居IP地址最小的路由。

七、路径属性

  1.origin
  公认必遵属性,指定路由的来源,有三种来源途径:
    ①i-igp:通过BGP network 从IGP学到的,因为BGP network的路由必须是IGP路由表里有的。
    ②e-egp:学自外部网关协议。(EGP已经废除,现网中不会有这个类型)
    ③?-incomplete:学自其它渠道,重分发的路由都是这个标记。
  2.AS_PATH
  公认必遵属性,描述到达目标网络要经过AS序列。作用是防止环路,仅当update消息发往其他AS(EBGP)peer时,才会在AS-PATH中添加自己的AS号,如果BGP peer发现update消息的AS-PATH有本地的AS号,说明可能出现环路,则忽略该路由更新。
AS-PATH有两种类型:
    ①AS_SET:一个去往特定目的端的路径的无序AS号列表。
    ②AS_SEQUENCE:是一种有序的AS号列表。
  3.NEXT_HOP
  公认必遵属性,描述了到目的地的下一跳,在BGP中,一个AS就是一个下一跳。
  规则如下:

    ①如果BGP路由通过EBGP传递,那么这条路由的NEXT_HOP是通告者的接口IP地址。
    ②如果BGP路由通过IBGP传递,且路由描述的是外部AS的目的地,则NEXT_HOP是外部通告者的接口ip。
    ③如果BGP路由通过IBGP传递,且路由描述的是同一AS内的目的地,那么NEXT_HOP是通告该路由的peer的ip。
  4.LOCAL_PREFERENCE
  公认自决属性。LOCAL_PREF即本地优先级,只在AS内部IBGP之间传递,不会传递给EBGP邻居。
  当一个BGP peer收到两条去往相同目的地的路由时:根据LOCAL_PREF来决定优选哪条路由,优先级高的优选。
  5.COMMUNITY
  可选传递属性,用于简化策略路由的执行。
  将多条路由分配一个特定的community属性,之后就可以基于community值而不是每条路由进行BGP属性设置。community属性要对邻居起作用必须指定需要将community发送给邻居。
  community值设置方式:

  十进制 1-4294967200之间的数
  AA:NN格式:AA为1-65535之间的AS号,NN为1-65440之间的任意数。例如:400:50,AS号400,编号50.


  6..MED(可以认为是metric)
  可选非传递属性,一般用于AS之间影响路由。
  7.WEIGHT
  可选非传递属性,思科私有,作用范围是本地路由器(不传递),该属性值不会包含在update消息中,也不会传递给任何BGP peer。权重值也大越优先。
  本地network产生的路由weight是32768.
  本地重分发的直连、静态路由的weight为32768.
  本地汇总产生的BGP路由weight为32768.
  路由学自邻居的weight为0。

八、BGP多路负载均衡
  多路负载均衡,是指到达同一网络存在多条路径,那么数据报文会从这些路径中均衡转发,即路由表中一条路由有多个下一跳,这些下一跳都是最优的即负载均衡。
  1.EBGP负载均衡:从EBGP邻居得到的路由实现负载均衡
  2.IBGP负载均衡:从IBGP邻居得到的路由实现负载均衡
  当到达同一网络路径在BGP表中存在多条时,BGP会通过路由规则得到一条最优的路由。如果多条路由优先级相等,BGP仍会通过规则选出一条最优的路由;启动负载均衡后,BGP除了会计算出一条最优的路由外,会将优先级相等的路由列为等价路由,这样路由表中就会有多个下一跳,从而实现负载均衡。
路由等价的条件是路由基本属性相同,优先级相同,即按照BGP最优路径选择规则,进行router-id比较之前,路径优先级相同。

九、BGP定时器

十、BGP防环机制
  1.EBGP防环:当向EBGP peer发送update时,会携带本地AS号,一旦在update消息中出现本地AS号,表示此报文此前已经在本地转发过,出现环路,将此报文丢弃。
  2.IBGP防环:因为只有向EBGP发送报文时才会携带本地AS号,那么IBGP就没有EBGP的防环能力。所以IBGP为了防环,speak不会将从IBGP学习到路由再通告给其他的IBGP peer,也就是说,IBGP关系的两台路由器是可以互相学习到对方的路由,但是不会再把这些学习到路由转发给第三个路由器。
  3.同步:从IBGP学到一条路由后是不启用的,必须再从IGP中学习到相同的路由才启用,换句话说:IBGP学习到的路由必须由OSPF、RIP等宣告过的。

posted @ 2020-09-26 13:14  驴行者  阅读(1325)  评论(0)    收藏  举报