1.BGP建邻基本配置

1. EBGP对等体关系直连建邻
  [r1]bgp 1 ----启动BGP进程----后面的1不是进程号,而是配置路由器所在AS的AS号
  [r1-bgp]router-id 1.1.1.1 ----配置RID
  [r1-bgp]peer 12.0.0.2 as-number 2 ----手工指定对等体关系
  [r1]display bgp peer ----查看BGP邻居表的命令
2. IBGP对等体关系之间的环回建邻
  由于IBGP邻居处于同一个AS中,一般情况下,一个AS中存在大量的备份路径,若使用物理接口建立邻居关系,将浪费这些备份或者负载均衡资源,故建议使用环回接口来进行IBGP对等体关系的建立。
  [r2-bgp]peer 3.3.3.3 as-number 2
  [r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 ----指定在给3.3.3.3发包时使用的源IP地址为环回接口0的IP地址。
  注意:在使用环回接口建立对等体关系时,一定要修改发送接口。

3. EBGP对等体关系之间的非直连建邻
  注意:在EBGP对等体关系之间,一般是不具备非直连建邻的路由基础的,所以,需要先保证地址可达才行。

  [r4-bgp]peer 5.5.5.5 as-number 3
  [r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
  [r4-bgp]peer 5.5.5.5 ebgp-max-hop 2 ----因为EBGP对等体之间一般是直连建邻,所以,数据包中的TTL值设置为1,要想非直连建邻,则需要将这个值改大。
  [r5-bgp]peer4.4.4.4 ebgp-max-hop ----如果后面不跟参数,则代表将TTL值修改为最大值255

2.发布路由

1.network

network----在BGP中只能用来发布路由条目信息

注意:只要是路由表中存在的路由条目信息,BGP都可以通过Network来进行发送。

[r1-bgp]network 1.1.1.0 24 ----目标网段信息及掩码必须和路由表中的完全一致才行。

[r1-bgp]display bgp routing-table----查看bgp表

BGP邻居关系 bgp邻居关系配置_BGP邻居关系

Network    NextHop  MED  LocPrf   PrefVal Path/Ogn
*>1.1.1.0/24  0.0.0.0    0    0    i

  Network ----目标网段信息及掩码信息
  NextHop ----BGP的一个路径属性----谁发的路由信息,下一跳就是谁,如果是自己发的,则下一跳为0.0.0.0。

 状态码
  " * " 代表可用----设备每收到一跳路由信息,都会检查其下一跳的可达性。即根据下—跳在路由表中递归查询,只要可达,则改路由信息可用。

  " > "代表优选----当收到到达相同网段存在多条路由信息时,BGP将在其中根据属性优选出一条加载到路由表中。这条优选路由将赋予这个标记。

  注意:只有一条路由条目是可用且优选的,他才能够被加到路由表中,也才能够被传递给其他的BGP对等体。

  1.1.1.0/24 EBGP 255----通过EBGP对等体学到的BGP路由信息,其标记为EBGP,默认的优先级为255。

  I----状态码l ----代表BGP路由信息是从自己IBGP对等体处学到的
  i 1.1.1.0/2412.0.0.1 ----因为在AS内部存在AS-BY-AS规则,所以,默认情况下传递的属性信息是一致的,因为这个下一跳也属于路径属性之一,默认情况下也不会传递,则将可能导致路由可用性校验失败。

  [r2-bgp]peer 3.3.3.3 next-hop-local ----在给3.3.3.3传递路由信息是将下一跳属性改为本地
  1.1.1.0/24 IBGP 255 ----通过IBGP对等体学到的BGP路由信息,其标记为IBGP,默认的优先级为255。
  路由表中的NextHop直接使用的是BGP属性中的下一跳,因为之前进行过可用性校验,所以,可以保证能够递归查找找到这个下一跳。

2. 重发布
  [r2-bgp]import-route ospf 1 ----将OSPF的路由信息导入到BGP当中。

OGN ----起源码----l,e,? ----用来标识路由条目的起源
  l----代表该路由信息起源于IGP协议(不局限于IGP协议,包括静态,直连),代表该路由条目起源于AS内部----通过network发布出来的路由信息其起源码为l
  E----代表该路由信息起源于EGP协议---- EGP指的是BGP之前使用的外部网关协议
  ?----通过除了以上两种方式学习到的路由----重发布导入的路由起源码都是?

3.BGP的路由聚合

自动聚合

缺点:

1,该方法只能针对重发布发布的路由信息生效。

2,自动聚合的路由只能按照主类进行聚合,将造成巨大的路由黑洞。

        1.抓取流量
        [r1]ip ip-prefix aa permit 172.16.0.0 22 greater-equal 24 less-equal 24
        2.做路由策略
        [r1]route-policy aa permit node 10
        lnfo: New Sequence of this List.
        [r1-route-policy]if-match ip-prefix aa
        3.在重发布过程中调用路由策略
        [r1-bgp]import-route direct route-policy aa
  [r1-bgp]summary automatic ----开启自动聚合的方法
  Info: Automatic summarization is valid only for the routes imported through theimport-route         command.

  *>172.16.0.0 127.0.0.1 ----通过自动聚合会发布一条新的汇总路由,他是不携带子网掩码的,因为按照主类汇总,则子网掩码取主类默认值。而且通过聚合发布的路由信息其下一跳属性为127.0.0.1

  注意:自动聚合之后,发布的汇总路由信息将在本地路由表中产生一条指向汇总的空接口,自动防环。

  状态码:5---- suppressed ----抑制----抑制路由条目的传递

手工聚合
  因为自动聚合存在两个缺陷,所以,如果需要对汇总进行精准把控时,手工聚合将是更理想的方案。
  [r1-bgp]aggregate 172.16.0.0 22 ----手工聚合
  *> 172.16.0.0/22 127.0.0.1 ----手工聚合后发布的路由条目将携带掩码信息,并且下一跳也是指向127.0.0.1,则其也会自动生成一条到达汇总网段指向空接口的路由进行防环。

手工聚合的问题:

  1. 发布聚合路由的情况下,不会抑制明细路由,导致汇总操作并没有减少路由条目数量,反而增加了。
  2. 在进行汇总的时候,发布的汇总路由不会继承明细路由的属性,尤其是AS_PATH,则将导致汇总路由部分属性缺失,甚至可能出现环路。

为了避免以上两个问题的产生,我们必须在配置过程中增加命令来完成。

[r4-bgp]aggregate 172.16.0.0 22 detail-suppressed ----在发布汇总路由条目的同时将抑制所有的明细路由

但是,因为BGP协议的一些特殊性,我们往往不能将其所有的明细路由全部抑制。只能够抑制部分的路由信息----所以我们需要使用到suppressed - policy。
       1. 抓取流量,使用前缀列表
                [r4]ip ip-prefix aa permit 172.16.1.0 24
        2.使用路由策略匹配流量
                [r4]route-policy aa permit node 10
                lnfo: New Sequence of this List.
                [r4-route-policy]if-match ip-prefix aa
        3.使用抑制策略调用路由策略
                [r4-bgp]aggregate 172.16.0.0 22 suppress-policy aa

对于第二个问题,我们专门设计了一个AS_SET关键字,如果在配置命令的时候,将这个关键字激活,则BGP在汇总路由时,将携带上明细的AS_PATH属性,来进行防环。
[r4-bgp]aggregate 172.16.0.0 22 suppress-policy aa as-set
*>  172.16.0.0/22  127.0.0.1  0  {1 4}? ----如果明细路由携带的AS_PATH属性不一样,则在激活了AS_SET属性后,汇总路由将会把明细路由的AS号都携带上并且用大括号括起来,之后,在进行防环的时候,里面所有AS号都将生效,都不能回传。但是,在使用AS_PATH属性进行选路的时候,当作一个AS来看待。

因为聚合后的路由信息存在属性丢失问题,所以,这样的汇总路由需要格外的关注。为此,我们为BGP专门引入了两个属性---- ATOMIC_AGGREGATE,AGGREGATOR
ATOMIC_AGGREGATE ----纯粹预警属性----只有在抑制全部明细路由时才会携带
AGGREGATOR ----将携带汇总者的RID以及其所在的AS号
Aggregator: AS 2,Aggregator ID 4.4.4.4,Atomic-aggregate

[r4]display bgp routing-table 172.16.0.0 ----查看一条路由的详细情况
 

4.路由反射器

Router Reflector----路由反射器----RR----我们可以通过配置,将某些设备在一定的条件下设置为路由反射器,之后,该设备将可以反射所学习到的IBGP路由信息。

BGP邻居关系 bgp邻居关系配置_学习_02

 

我们在指定一台路由器称为路由反射器(RR)的同时,必须在他的IBGP对等体关系中选择一个或者多个设备称为他的客户(client),RR和客户之间所构成的系统我们称为反射簇(Cluster)。每一个反射簇都将使用RR的RID作为簇ID。其余没有称为RR客户的IBGP对等体关系,我们将称其为非客户。

路由反射器的反射规则:

  1. 当路由反射器从自己客户处学习到一条路由,则他将会把这条路由信息反射给自己所有的客户以及非客户
  2. 如果路由反射器从自己的非客户处学习到一跳路由、则他将把这条路由信息反射给自己所有的客户但是不能反射给非客户。“非非不传”
  3. 当路由器执行路由反射时,他只将自己使用的最优的BGP路由进行反射。
  • 因为IBGP水平分割是为了防止环路的产生,而路由反射器将路由反射之后就打破IBGP的水平分割,就可能造成环路的出现。所以,路由反射器为了防止环路的出现,又引入了两个属性---- Originator_ID(起源者ID),Cluster_list(簇列表)
  • 起源者ID---- Originator_ID ----当一条路由信息来到路由反射器时,反射器需要将这条路由信息反射,反射前将在该路由信息中添加这个属性,这个属性的值为该反射器收到这条路由信息的通告者的RID,之后,别的路由反射器收到一条路由信息如果其中包含Originator_ID,则他将不会改变这个属性。如果一台设备收到一条路由条目其中起源者ID为自己本地的RID,则将不再学习这条路由信息,起到防止环路的效果。

BGP邻居关系 bgp邻居关系配置_BGP邻居关系_03

 

BGP邻居关系 bgp邻居关系配置_网络协议_04

 

如果在一个AS当中,存在多次反射,则一定存在多个反射簇,则每个RR在反射路由信息时都会在其中簇列表属性中添加本地的簇lID。当一个设备收到一条反射的路由信息后,其中的簇列表属性中包含本地簇ID,则将不再学习该路由,防止环路的产生。

  [r3-bgp]peer 2.2.2.2 reflect-client ----指定R2作为反射客户,则同时R3自动成为RR