BGP-边界网关协议

BGP(Border Gateway Protocol边界网关协议)

  • 无类别路径矢量EGP协议;
  • 基于AS进行工作;
    AS(自治系统):一个独立的管理域,内部可以运行多种IGP协议,但半径不易过大;
    为区分不同的AS,使用编号:0-65535
    公有:1-64511 私有:64512-65535

IGP和EGP协议的区别

IGP协议在工作时:

  1. 收敛快
  2. 占用资源少
  3. 选路佳

EGP协议在工作时:

  1. 可靠性:控制更新量,仅做增量更新—仅触发、无周期
  2. 可控性:不是简单的依赖度量值,而是大量可被人为修改的属性来进行选路
  3. AS-BY-AS:以一个AS为一跳

1. BGP特点

  1. 无类别路径矢量:距离矢量的升级版,AS-BY—AS,共享路由表
  2. 使用单播更新来发送所有信息;基于TCP 179端口工作
  3. 触发、增量更新,仅触发,无周期
  4. 具有丰富的属性来取代IGP中度量进行选路
  5. 可以在进项和出项对流量实施强大的策略
  6. 默认不被用于负载均衡,通过各种选路规则仅仅产生一条最佳路径
  7. BGP支持认证和聚合(汇总)

2. BGP的数据包

BGP所有的数据均基于TCP会话传递,由TCP来进行邻居的发现及所有数据包的ACK;

  • Open :邻居关系的建立,正常仅收发一次,携带RID,生成方式同OSPF一致;hold time;
  • Keepalive:保活,周期保活BGP邻居关系,实际保活TCP会话;hello time 60s,hold time 180s;
  • Update:更新 携带路由条目=目标网络号+属性(各种参数)
  • Notification:报错 用于故障报错
  • Refresh:路由刷新,不是所有厂商都有

3. BGP的工作过程

  1. IP可达:BGP承载于IGP之上
  2. 建立TCP会话:基于179端口,目标端口必须为179;
  3. 使用open报文建立BGP的邻居关系,生成邻居表
  4. 邻居关系建立后使用update共享路由信息,装载BGP表中,本地发出及接收到的所有路由信息
  5. 根据选路规则将BGP表中最优路径加载于路由表;
  6. 邻居建立后,一直使用keepalive周期保活TCP会话
  7. 若出现拓扑结构变化,直接使用update触发更新即可
  8. 若出现错误的配置产生故障参数时,将使用notification进行报错
  9. 结构突变
    1. 新增:最先学习到新增网段的BGP设备,使用update包共享条目即可
    2. 断开:最先知道断开网段的BGP设备,使用update包共享信息即可
    3. 无法通讯:hold time到时时,断开邻居关系和TCP会话;然后删除所有从该邻居学习到的信息

注:所有的BGP信息均基于TCP会话传输,可靠保障;


4. BGP中名称讲解

  • EBGP邻居关系:处于不同的AS间的BGP设备建立的邻居关系,通过这种邻居关系学习到的路由条目,其管理距离为20;
  • IBGP邻居关系:处于同一AS内部的BGP设备建立的邻居关系,通过这种邻居关系学习到的路由条目,其管理距离为200;
  • 对等体(peers):在BGP中因为可以非直连建邻;故邻居也被称为对等体;

5. BGP的路由黑洞问题

产生条件

  1. BGP路由基于TCP会话单播传递,传递过程中可以正常经过未运行BGP的设备;
  2. BGP由于基于IGP运行,故路由正常均需要递归查询;
  3. BGP仅生成唯一路径,但若递归到IGP上,实际可延多条路径传输;

当BGP协议单播传递路由时,穿越了中未运行BGP的设备时,出现控制层面可达,但数据层面在未运行BGP的设备上不可达,最终导致路由黑洞;
BGP-边界网关协议_第1张图片


解决方案

  1. 物理链路全连:所有BGP设备间直连,不能非直连建邻;
  2. 邻居关系全连:所有设备运行BGP;
  3. 将BGP路由条目重发布到IGP;(只能在实验中完成,现实中由于BGP的路由条目数量远大于IGP,故将BGP发布到IGP的话会导致IGP路由器卡死)
  4. 最佳方案:MPLS多协议标签交换;

6. BGP的破环机制:水平分割

  1. EBGP水平分割:针对EBGP环路
    AS-PASH:BGP的一种属性,BGP的路由条目在传递过程中将记录所有经过的AS号,若接收到的路由条目中存在本地的AS号,将拒绝接收该条目;

  2. IBGP水平分割:针对IBGP环路
    一台设备若从一个IBGP邻居处学习到了路由条目,不得传递给下一个IBGP邻居;
    BGP-边界网关协议_第2张图片
    该机制可以限制IBGP环路的出现,但同时也导致全网所有BGP设备间均需要建立邻居关系,配置量极大
    路由反射器、联邦可以有条件打破IBGP水平分割


7. BGP配置

r1(config)#router bgp 1  启动时需要定义真实的AS号;无多进程概念;
r1(config-router)#bgp router-id 1.1.1.1   配置RID;

在BGP协议中,邻居关系的建立和路由条目的宣告是分开配置的;

  1. 建立邻居关系

    1. 使用物理接口建立普通的EBGP邻居关系
    r1(config-router)#neighbor 12.1.1.2 remote-as 2
               对端的IP地址及所在AS号
    
    1. 建立IBGP邻居关系,正常在一个AS内部为保障网络的稳定性,设备一定存在大量的备份链路,建议使用环回接口来作为建立邻居关系的源、目标地址(稳定)
    r2(config)#router bgp 2 
    r2(config-router)#neighbor 3.3.3.3 remote-as 2
    r2(config-router)#neighbor 3.3.3.3 update-source loopback 0
    
     切记:使用环回建立邻居关系时,必须同时更新源地址;
    
    1. EBGP邻居间存在多条直连路径时,也建议使用环回建立
      1. IP可达,建议使用静态
      r4(config)#ip route 5.5.5.0 255.255.255.0 45.1.1.2
      r4(config)#ip route 5.5.5.0 255.255.255.0 54.1.1.2
      
      1. 建立邻居关系
      r4(config)#router bgp 2
      r4(config-router)#neighbor 5.5.5.5 remote-as 3
      r4(config-router)#neighbor 5.5.5.5 update-source loopback 0
      
      1. 默认IBGP邻居间数据包的TTL为255,而EBGP邻居为1;故使用环回地址来建立EBGP邻居关系时,需要修改该参数
      r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ?
        <1-255>  maximum hop count
              255
      
      建邻配置完成后,邻居间开始建立TCP的会话
      r1#show tcp brief
      TCB       Local Address           Foreign Address        (state)
      64280044  12.1.1.1.179            12.1.1.2.13413         ESTAB
      
      当TCP会话建立,BGP协议使用open包和对端建立BGP的邻居关系,生成邻居表
      r1#show ip bgp neighbors 查看邻居表---该表过大不易查看
      
      r1#show ip bgp summary  查看简表
      BGP router identifier 1.1.1.1, local AS number 1
      BGP table version is 1, main routing table version 1
      
      Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
      12.1.1.2        4     2       7       7        1    0    0 00:03:13        0
      

状态处的数字标示该邻居处学习到的路由条目数量;该处为数字也标示了已经和该设备建立邻居关系;

  1. 邻居关系建立,进行宣告来共享路由条目;
    本地路由表中任何路由条目均可宣告到BGP协议中来,不关注这些条目的获取方式;
    BGP在进行宣告配置时,由管理员在本地路由表逐一选择性宣告;
r1(config)#router bgp 1 
r1(config-router)#network 1.1.1.0 mask 255.255.255.0   

宣告时,条目的内容必须和路由表的记录完全一致 ;
切记:BGP协议只能逐条宣告本地路由表中的内容(不关注条目的产生方式);
宣告时必须和表中的记录完全一致;

当宣告配置完成后,路由器将发出和接收到update,学习路由条目,加载本地BGP表中;
该表用于记录所有本地发出及接收的条目;

r1#show ip bgp 查看BGP表;
BGP table version is 2, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24         0.0.0.0                  0         32768 i
状态  目标                      属性
  • *标示条目是可用的:可以被加载到路由表中;
    不可用时,*被其他的符号取代掉;
  • r 标示不装载:本地路由表中已经通过更好的方法学习到该条目
  • s 为抑制:人为限制该条目的传输;但本地可以加表;
  • >标示条目优秀:1. 可以被加载到路由表中;2. 可以被传递到邻居处;

优的条件:

  1. 同步问题:若本地通过BGP学习到一条条目时,同时也必须通过IGP学习到它;
    该规则设计的原因为解决BGP的路由黑洞,当今网络均无法负荷该条目,故建议关闭该规则
r3(config)#router bgp 2 
r3(config-router)#no synchronization

IOS 版本12.2(8)T以上默认关闭

  1. 下一跳可达;因为AS-BY-AS规则,故条目在AS内部传递时其属性不得变化;下一跳默认不变,若将条目传递给EBGP邻居时,下一跳会自动修改为本地;
r2(config)#router bgp 2
r2(config-router)#neighbor 3.3.3.3 next-hop-self 

在将路由条目传递给3.3.3.3该邻居时,将下一跳修改为本地地址;

使用字母i标识通过IBGP邻居学习的路由;

总结:
*和>均存在时才可以加表;
仅>存在即可传递,除出现s时;
条目必须即优也可用才能加表;
仅优即可传递,前提为不能被S抑制;


8. BGP在MA网络的下一跳问题

在MA网段中,ICMP重定向将帮助BGP学习到最佳的下一跳;

R1#debug ip bgp updates  动态查看BGP更新包
R1#clear ip bgp *  硬重启   重启本地所有邻居间的TCP会话
R1#clear ip bgp * soft  软重启  仅和本地所有邻居间重新收发路由,不断开任何关系
R1#clear ip bgp 3.3.3.3   仅和3.3.3.3邻居进行硬重启
R1#clear ip bgp 3.3.3.3 soft   仅和3.3.3.3邻居进行软重启
R1#clear ip bgp 3.3.3.3 soft ?  软重启
  in   Soft reconfig inbound update  收路由
  out  Soft reconfig outbound update  发路由
R1#show ip bgp neighbors 123.1.1.2 advertised-routes  
仅查看本地发送给邻居123.1.1.2的路由信息

R1#show ip bgp neighbors 123.1.1.2 received-routes 
% Inbound soft reconfiguration not enabled on 123.1.1.2
仅查看本地从123.1.1.2 的接收到的路由,默认没有专用的存储空间来装载
R1(config-router)#neighbor 123.1.1.2 soft-reconfiguration inbound 
配置存储空间,建议查看完后删除该空间

9. BGP的宣告问题

BGP协议在宣告路由时,将携带本地路由表中到达目标的度量值下一跳

  • 度量值:可以让本地EBGP邻居,判定那台EBGP设备离目标最近;
    当本地从一台IBGP邻居处学习到的路由,需要传递给本地的EBGP邻居时,度量值清除;
    注:为保障路径的优秀,建议所有存在EBGP邻居的BGP路由器均需要本AS的路由;

  • 下一跳:接收到的路由条目中,若下一跳地址为本地,那么条件不优;
    该条件必须在打破水平分割、没有修改下一跳为本地时才能有意义;
    意义在于迫使管理员让所有存在EBGP邻居的BGP路由器均宣告本地AS路由;


10. BGP的自动汇总

自动汇总的命令不针对普通的BGP路由;仅针对从IGP重发布到BGP的路由;

r2(config-router)#redistribute ospf 1 

auto-summary   不携带原有的掩码、度量值、下一跳
no auto-summary 携带原有的掩码、度量值、下一跳

在BGP协议中的逐条宣告,可以理解为逐条将其他协议产生的路由重发布到BGP协议中;
在BGP协议中进行重发布,可以理解为批量的将其他协议产生的路由宣告到BGP协议中;
携带原有的度量和原有的下一跳地址其规则、目的同上面的宣告问题一致;

总结:无论在BGP协议中是宣告,还是重发布都应该在所有存在EBGP邻居关系的BGP路由器均进行配置;

注:重发布进入BGP的路由和宣告进入BGP的路由其属性中,起源属性不同;


11. BGP的聚合(汇总)

1. 利用了BGP的宣告特点:

本地路由表中任何形式产生的路由均可宣告
先在本地配置一条到达汇总地址的空接口防环路由,然后再在BGP协议中宣告这种汇总路由

r5(config)#ip route 5.5.4.0 255.255.252.0 null 0
r5(config)#router bgp 3 
r5(config-router)#network 5.5.4.0 mask 255.255.252.0

为精确的选路,AS间常常在发送了聚合路由条目后,还需要酌情发送部分的明细路由,来保障选路;
在这种聚合配置下,只要需要再逐一的宣告有需求的明细路由即可;


2. BGP的标准聚合

先逐条宣告明细路由,然后再在更新源上进行聚合配置

r5(config)#router bgp 3
r5(config-router)#network 5.5.5.0 mask 255.255.255.0
r5(config-router)#network 5.5.6.0 mask 255.255.255.0
r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 
默认所有的明细和聚合条目同时发送
r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 summary-only 
仅发送汇总路由,所有的明细路由被S-抑制传输;

标准的聚合配置将自动产生空接口防环路由;


精确选路

为精确的选路,AS间常常在发送了聚合路由条目后,还需要酌情发送部分的明细路由,来保障选路;


抑制列表

必须在进行标准聚合配置才能使用
```
r5(config)#ip prefix-list ss permit 5.5.5.0/24

r5(config)#route-map ss permit 10
r5(config-route-map)#match ip address prefix-list ss

r5(config)#router bgp 3 
r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 suppress-map ss
r5(config-router)#end

r5#clear ip bgp * soft 
```

注:这种做法是route-map 中允许的流量反而被抑制;


Route-map

```
r5(config)#ip prefix-list xx permit 5.5.5.0/24
r5(config)#route-map xx deny 10 
r5(config-route-map)#match  ip address prefix-list xx
r5(config-route-map)#exit
r5(config)#route-map xx permit 20
r5(config-route-map)#exit
r5(config)#router bgp 3
r5(config-router)#neighbor 4.4.4.4 route-map xx out   控制层面方向
r5(config-router)#end
r5#clear ip bgp * soft 
```

分发列表

r5(config)#access-list 1 deny 5.5.5.0
r5(config)#access-list 1 permit any

r5(config)#router bgp 3 
r5(config-router)#neighbor 4.4.4.4 distribute-list 1 out 
r5(config-router)#end
r5#clear ip bgp * soft 

前缀列表直接作为分发列表

```
r5(config)#ip prefix-list qq deny 5.5.5.0/24
r5(config)#ip prefix-list qq permit 0.0.0.0/0 le 32

r5(config)#router bgp 3 
r5(config-router)#neighbor 4.4.4.4 prefix-list qq out 
r5(config-router)#end
r5#clear ip bgp * soft
```

聚合出环

汇总地址不处于更新源AS时,默认聚合条件将回流到更新源AS,导致黑洞路由流量必须到汇总的AS来丢弃;

利用EBGP水平分割:路由条目在传递时将记录所有经过的AS编号,接收到的条目中若存在本地的AS号将拒绝接收;
解决方法:将明细路由上的AS-pash属性附着于汇总条目上

r4(config)#router bgp 2 
r4(config-router)#aggregate-address 5.5.4.0 255.255.252.0 summary-only as-set 

12. 有条件的打破IBGP水平分割:AS-BY-AS

为避免IBGP环路,存在IBGP水平分割机制,在该机制下为实现全网的路由正常传递,必须全连的邻居关系(本AS内所有的BGP路由间均需要存在IBGP邻居关系),建邻数量成几何上升;

所谓有条件的打破,是指在打破水平分割机制时,必须保证无环;


反射器

存在客户端、非客户端、RR(反射器)三种角色;
构成一个簇(组);
客户端、非客户端在一个组内数量不限制客户端必须至少一台,所有的客户端、非客户端与RR间必须为IBGP邻居关系;


规则:

  1. RR从一台EBGP邻居处学习到的路由,可以传递给本地客户端、非客户端、EBGP邻居
  2. RR从客户端学习到的路由,可以传递给本地的其他客户端、非客户端、EBGP邻居
  3. RR从非客户端学习到的路由,可以传递给本地的其他的客户端/EBGP邻居,当不能传递给其他的非客户端;
r3(config)#router bgp 2 
r3(config-router)#neighbor 2.2.2.2 route-reflector-client 
2.2.2.2成为本地的客户端,同时本地成为RR;

切记:反射器仅反射优的路径,因为只有优的路径存在传递性;
若在真机上,一台设备成为RR或者客户端,那么在这个设备配置修改下一跳为本地后无效;模拟器上均生效;

r2(config-router)#neighbor 3.3.3.3 next-hop-self 

可以在真机上使用route-map来替代:

r2(config)#route-map nex permit 10
r2(config-route-map)#set ip next-hop peer-address 
r2(config-route-map)#exit
r2(config)#router bgp 2 
r2(config-router)#neighbor 3.3.3.3 route-map nex out 
r2(config-router)#end
r2#clear ip bgp * soft 

联邦

在一个真实的AS中,逻辑的划分出多个小AS;
小AS间为联邦内的EBGP邻居关系,这种关系可以向EBGP关系一样传递路由,当不能修改属性;

  1. 所有配置均基于小AS号进行—启动、建邻、策略
  2. 联邦内所有BGP设备声明自己所在的大AS号
r2(config)#router bgp 64512
r2(config-router)#bgp confederation identifier 2
  1. 小AS间互指peer
r3(config)#router bgp 64512
r3(config-router)#bgp confederation peers 64513

总结:实际工程中,以上两种技术将被结合使用;


12. 属性

各种参数,存在排序;修改属性可以直接干涉BGP的选路;

  • 公认必遵:Origin,AS-path,Next-hop
  • 公认可遵:local-pref,auto-aggregate
  • 可选传递:aggregator,community
  • 可选非传递:MED,Originator-ID,cluster-list,weight

weight

Weight 传播范围 默认数值 大优或小优
Cisco私有属性 不传播 本地32768,邻居0( 0-65535)

BGP-边界网关协议_第3张图片

全局修改

r4(config)#router bgp 2
r4(config-router)#neighbor 3.3.3.3 weight 1    
r4(config-router)#end
r4#clear ip bgp * soft 
本地所有从3.3.3.3学习的路由,权重值修改为1;

负载分担:

基于不同的目标选择不同的最佳路径;

r4(config)#ip prefix-list w permit 2.2.2.0/24
r4(config)#route-map w permit 10
r4(config-route-map)#match ip address prefix-list w
r4(config-route-map)#set weight 1
r4(config-route-map)#exit
r4(config)#route-map w permit 20
r4(config-route-map)#exit
r4(config)#router bgp 2
r4(config-router)#neighbor 3.3.3.3 route-map w in
r4(config-router)#end
r4#clear ip bgp * soft 
注:调用时只能在本地的控制层面入向,因为该属性不传播;

route-map优于filter-list优于neighbot weight


本地优先级(Local-preference)

Local-preference 传播范围 默认数值 大优或小优
公有属性 IBGP邻居关系间 100(0-255)

最常用于干涉IBGP邻居关系选路;本地出口在多个路由器上的场景

BGP-边界网关协议_第4张图片

BGP-边界网关协议_第5张图片

全局修改:

r3(config-router)#bgp default local-preference 101
r3(config-router)#end
r3#clear ip bgp * soft 
本地发送给所有IBGP邻居的路由,优先级均修改为101;

负载分担:

基于部分的路由进行修改,可以在控制层面流量的入或出接口上修改;
必须为IBGP邻居关系;

r4(config)#ip prefix-list l permit 2.2.2.0/24
r4(config)#route-map l permit 10
r4(config-route-map)#match ip address prefix-list l
r4(config-route-map)#set local-preference 101
r4(config-route-map)#exit
r4(config)#route-map l permit 20
r4(config-route-map)#exit
r4(config)#router bgp 2
r4(config-router)#neighbor 3.3.3.3 route-map l in 
r4(config-router)#end
r4#clear ip bgp * soft 

即使在EBGP邻居使用route-map 配置了在出方向也是没用的,因为发给EBGP对等体的update根本不会携带这个属性,所以这样配置没有意义


next-hop

  1. 将IBGP邻居学习到的路由传递给EBGP邻居时,next-hop为建立EBGP邻居的更新源地址。
  2. 将EBGP邻居学习到的路由传递给IBGP邻居时,next-hop不发生改变;传递个其他EBGP邻居时下一跳为建立EGBP邻居的更新源地址。

BGP-边界网关协议_第6张图片

   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.0/24          0.0.0.0                  0    100      0 1 i
*  i                 1.1.1.1                  0    100      0 1 i

AS-PASH

条目在传递过程中记录经过的AS编号;优选经过数量最少的路径;
AS的增加只能在EBGP邻居关系间进行;
管理员可以策略在EBGP邻居关系间增加AS的数量,不能减少;
虽然只能在EBGP邻居关系间修改,当依然可以干涉到IBGP关系下的选路;
由只能增加,故修改A路径,优选B路径;

BGP-边界网关协议_第7张图片

r1(config)#ip prefix-list as permit 2.2.2.0/24
r1(config)#route-map as permit 10
r1(config-route-map)#match ip address prefix-list as
r1(config-route-map)#set as-path prepend 3 4 5 
r1(config-route-map)#exit
r1(config)#route-map as permit 20
r1(config-route-map)#exit
r1(config)#router bgp 2 
r1(config-router)#neighbor 12.1.1.2 route-map as in 
r1(config-router)#end
r1#clear ip bgp * soft 

注:只能在EBGP邻居间的控制层面干涉选路;
入向调用—3 4 5 x,X为真实经过过的编号
出向调用—X 3 4 5 ; 最前端AS为最新经过的编号;

注:AS-pash属性还用于EBGP水平分割,若人为添加的AS号,在网络的后方真实存在,那么这些路由将无法进入这些AS;可以重复添加已经经过的AS号;或者添加私有的AS号;

r1(config)#route-map as permit 10
r1(config-route-map)#set as-path prepend 1 1 1 

BGP-边界网关协议_第8张图片
在as4上的水平分割会干扰选路

解决方法:

nei X.X.X.X allowas-in 允许和具有自己相同的AS的路由进入本AS (接收者)

nei x.x.x.xas-override 把具有普和其他AS相同AS号的路由放入这个AS (发送者)

起源属性(origin)

Origin codes: i - IGP, e - EGP, ? - incomplete
所谓起源属性,及条目是通过什么方式进入到BGP协议来的;
使用i标识network --管理员宣告条目
使用e标识通过早期的EGP协议学习后,重发布到BGP来的
使用?标识通过IGP学习,重发布到BGP协议

规则:i优于e优于?

r1(config)#ip prefix-list o permit 2.2.2.0/24
r1(config)#route-map o permit 10
r1(config-route-map)#match ip address prefix-list o
r1(config-route-map)#set origin egp 2     修改为e,数字为对端邻居所在AS编号
r1(config-route-map)#exit
r1(config)#route-map o permit 20
r1(config-route-map)#exit
r1(config)#router bgp 2 
r1(config-router)#neighbor 4.4.4.4 route-map o out 
r1(config-router)#end 
r1#clear ip bgp * soft 

MED(多出口鉴别属性)

度量值

BGP协议不存在度量值,当管理员可以人为去赋值,来干涉选路;

可用于干涉EBGP/IBGP邻居下的选路,当最常用于干涉EBGP邻居间的选路;

BGP-边界网关协议_第9张图片
它被典型的用在AS间的链路上,以区分到达相同的邻居AS的多个出口点

如果到同一个目的地的两条路由来自不同的AS,此时BGP路由选路时不进行比较MED,MED只对单一的AS有意义
我们可以强制让它们比较bgp always-compare-med

MED 传播范围 默认数值 大优或小优
公有属性 相邻AS之间 0

例:AS1干涉AS2对AS1的选路

r2(config)#ip prefix-list med permit 2.2.2.0/24   
r2(config)#route-map med permit 10
r2(config-route-map)#match ip address prefix-list med
r2(config-route-map)#set metric 1
r2(config-route-map)#exit
r2(config)#route-map med permit 20
r2(config-route-map)#exit
r2(config)#router bgp 1 
r2(config-router)#neighbor 12.1.1.1 route-map med out 
r2(config-router)#end
r2#clear ip bgp * soft 
使用扩展ping来进行检测:
r2#ping 
Protocol [ip]:     
Target IP address: 4.4.4.4
Repeat count [5]: 
Datagram size [100]: 
Timeout in seconds [2]: 
Extended commands [n]: y
Source address or interface: 2.2.2.2
Type of service [0]: 
Set DF bit in IP header? [no]: 
Validate reply data? [no]: 
Data pattern [0xABCD]: 
Loose, Strict, Record, Timestamp, Verbose[none]: r  

社团属性(Community)

GP协议除了基本属性外,还存在大量的扩展属性;

但默认各家厂商的BGP协议不识别、不传递该属性;

公有社团属性(well-known)

Internet        所有属于这个社团属性的路由都有一个缺省值,可以自由地公布属于这个团体的路由,换句话说这个社团的前缀通告没有任何限制
local-AS        接收到的条目中携带该属性,不得将该条目再传递给其他小AS
no-advertise    接收到的条目中携带该属性,不得将该条目再传递给其他邻居
no-export      接收到的条目中携带该属性,不得将该条目再传递给其他大AS
若没有小AS,local-AS和no-export作用一致;

私有社团属性(Private)

有网络管理员自己定义的社团属性,它的主要目的是为前缀附加管理标记,以便制定合适的策略。

例:关于条目传播范围的几种社团属性

r1(config)#route-map com permit 10
r1(config-route-map)#set community no-advertise 
r1(config-route-map)#exit
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 route-map com out 
r1(config-router)#end
r1#clear ip bgp * soft 
注:因为默认的不传播社团属性,故添加社团数据后,必须开启传递性;
r1(config)#router bgp 1 
r1(config-router)#neighbor 12.1.1.2 send-community 

auto-aggregate

用来警告下游路由器路由聚合后产生的路由路径丢失。
BGP支持向BGP邻居传递重叠路由,可以选择多种方式:

  1. 明细和粗略的都公布 aggregate-address 10.0.0.0 255.0.0.0
  2. 只公布明细 aggregate-address 10.0.0.0 255.0.0.0 suppress-map
  3. 只公布没有重叠的 aggregate-address 10.0.0.0 255.0.0.0 sunnary-only as-set
  4. 公布聚合后的路由 aggregate-address 10.0.0.0 255.0.0.0 sunnary-only
  5. 明细和粗略都不公布

Aggregator

用来通告汇总路由的汇聚路由器BGP_ID(Cisco)和聚合路由的路由器的AS号。


Originator-ID

路由反射器使用该属性,不接收与自己相同的起源者ID的路由,防止环路。

路由反射器:反射非客户端间不能传递路由BGP-边界网关协议_第10张图片

出环

BGP-边界网关协议_第11张图片


Cluster-list

路由反射器使用该属性,不接收与自己相同的簇列表的路由,防止环路。
BGP-边界网关协议_第12张图片BGP-边界网关协议_第13张图片


14. BGP选路规则

比较前提:同步被关闭、下一跳可达;均可优

  1. 首先比较weight 大优–不传递 ,Cisco私有 EBGP/IBGP
  2. 比较本地优先级,默认100;仅IBGP邻居传递,大优 IBGP
  3. 优选本地下一跳
  4. 比较as-pash,经过的AS数量少优,EBGP邻居可增添 EBGP/IBGP
  5. 起源码最小 i-igp=0 e-egp=1 ?-incomplete=2 EBGP/IBGP
  6. MED值最小 EBGP/IBGP
  7. 普通的EBGP邻居优于联邦内EBGP邻居优于IBGP邻居
  8. 优选最近的IGP邻居(IGP度量小)
  9. 优选最先建立EBGP邻居
  10. 最小BGP邻居的RID
  11. 优选最小的RR list 列表
  12. 若收到到达同一目的地两条均可优的EBGP路由,可以人为实现负载均衡
   r2(config)#router bgp 1
   r2(config-router)#maximum-paths 2

15. peer-group

r1(config)#router bgp 1 
r1(config-router)#bgp router-id 1.1.1.1

r1(config-router)#neighbor xxx peer-group  创建名为xxx的peer-group
r1(config-router)#neighbor xxx remote-as 2   定制内容
r1(config-router)#neighbor xxx update-source loopback 0
r1(config-router)#neighbor xxx ebgp-multihop 
r1(config-router)#neighbor 2.2.2.2 peer-group xxx
r1(config-router)#neighbor 3.3.3.3 peer-group xxx
r1(config-router)#neighbor 4.4.4.4 peer-group xxx

注:一旦和某个邻居调用了peer-group,那么之后与该邻居的大部分命令就是必须在peer-group中完成;


16. 认证

r1(config-router)#neighbor 2.2.2.2 password cisco

注:邻居的密码是以MD5值发送的;

因为使用passwrod字符,故在running-config中可以使用密码加密服务来加密显示

r1(config)#service password-encryption 

17. AS欺骗

修改自己路由器的对外通告AS
改变本地AS号
对外欺骗还是原来的AS
这样原来相连的AS就不用改变

BGP-边界网关协议_第14张图片


18. 浮动惩罚

启动翻动路由的惩罚机制(默认不启动)
R4(config-router)#bgp dampening

缺省情况,每次翻动会分配惩罚值1000,如果累计超过2000,路由会被抑制直到降低至750。
减少的速率是按照每15分钟减少一半的速率(半衰期)。

为了防止惩罚值太大被一直抑制,有一个最大的抑制时间,通常为半衰期的4倍,默认半衰期是15分钟,那么最大抑制时间为60分钟。
这些默认值可以进行修改
R4(config-router)#bgp dampening 15 750 2000 60


各个位置的含义

15:半衰期时间,单位分钟

750:重用阀值,没有单位

2000:抑制阀值,没有单位

60:最大抑制时间,单位分钟

BGP-边界网关协议_第15张图片

如果被抑制,BGP路由前面会打d ,如果是打h,代表曾经发生过翻动,但未达到惩罚值。

R4#show ip bgp dampening flap-statistics
可以查看打d和h的路由

R4#show ip bgp dampening dampened-paths
可以查看正被抑制的路由


假如翻动的路由已经被修复,可以使用以下命令进行立即解封
R4#clear ip bgp dampening
立即清除已经被抑制的路由,使它们恢复可用

R4#clear ip bgp flap-statistics
不单可清除被抑制的路由,还可以清除所有惩罚值
后面还可以跟正则表达式来指定相应的路由

例如:R4#clear ip bgp flap-statistics regexp _30_可以清楚所有包含AS 30的翻动的路由的惩罚值。
也可以跟filter-list


19. 默认路由

精确式下发

精确下发默认路由给特定的邻居

R4(config)#router bgp 100
R4(config-router)#neighbor 45.1.1.2 default-originate

粗放式下发

没有具体的邻居,发给所有的邻居

R4(config)#router bgp 100
R4(config-router)#default-information originate

必须有的三个必要条件是:

  1. 创建静态默认路由

  2. 将静态默认路由重分发进bgp进程

  3. 设置BGP命令default-information originate

你可能感兴趣的:(BGP-边界网关协议)