CCNP 7 BGP

BGP:边界网关路由协议

  • 工作与AS之间;标准的EGP协议;
  • AS:自治系统
  • 0-65535 其中:1-64511 公有 64512–65535 私有
  • EGP协议的特征:

  1. 可控性
  2. 可靠性
  3. AS-BY-AS
  • BGP特点

  1. 无类别路径矢量 -----距离的升级版—AS-BY–AS
  2. 使用单播更新来发送所有信息;基于TCP 179端口工作
  3. 触发、增量更新
  4. 具有丰富的属性来取代IGP中度量进行选路
  5. 可以在进项和出项对流量实施强大的策略
  6. 默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
  7. BGP支持认证和聚合(汇总)
  • BGP的数据包类型:所有的数据包均基于TCP会话传递
  1. open报文—用于建立邻居关系,默认仅发送一次,存在RID–规则同OSPF一样
  2. Keepalive–用于保活邻居关系,60s周期 180s hold time 实际保活TCP会话
  3. Update -----目标网络号+属性
  4. Notification—报错信息
  • BGP的工作过程

  1. IP可达
  2. 建立TCP会话
  3. 使用open 报文建立邻居关系—生成邻居表
  4. 使用update传递路由信息,生成BGP表;之后将BGP中最优路径加载于路由表中
  5. 之后收敛完全,仅keeplive周期保活
  6. 若出现结构变化,进行触发更新,就变化信息发送update即可
  • 名词注解:
    EBGP:不同AS间的邻居关系,通过该种邻居学习到的条目管理距离为20
    IBGP:同一AS内的邻居关系,通过该种邻居学习到的条目管理距离为200
BGP的防环机制----水平分割
  1. EBGP水平分割----条目在传递过程中将记录所有经过的AS号,若接收到条目中,存在本地AS号,将拒绝接收
  2. IBGP水平分割-----从一个IBGP邻居处学习到的条目不能传递给下一个IBGP邻居;
    解决方法:全连邻居关系 或者使用 联邦和路由反射器来解决;
BGP的路由黑洞问题
  • 由于BGP协议可以非直连建邻,故可能出现控制层面可达,数据层面不可达的情况;
    解决方法:
    1、物理全连
    2、邻居关系全连
    3、将BGP路由重发布IGP(LAB)
    4、MPLS (推荐)

配置

r1(config)#router bgp 1 启动协议时,使用真实AS号,不存在多进程概念
r1(config-router)#bgp router-id 1.1.1.1 建议配置RID

建立邻居关系:

  1. 直连EBGP邻居,直接使用物理接口建立

r1(config-router)#neighbor 12.1.1.2 remote-as 2 对端物理接口ip地址及所在AS号

  1. 建立IBGP邻居关系—使用环回建立邻居关系,链路备份和负载均衡等效果

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

【2】建立BGP邻居关系

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
默认IBGP邻居间TTL值设定为255,EBGP邻居为1;
r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ?
<1-255> maximum hop count
255
r4(config-router)#neighbor 5.5.5.5 ebgp-multihop

当建立邻居配置完成后,邻居间将先建立TCP会话:

r1#show tcp brief

TCB       Local Address           Foreign Address        (state)
64289A10  12.1.1.1.179            12.1.1.2.14396         ESTAB

当会话建立后,邻居间使用open报文建立邻居关系,生成邻居表

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      15      15        1    0    0 00:11:25        0

状态处显示数字即为邻居关系已经建立,数字表示从该邻居处学习到的路由条目数量;

路由宣告

  • 无论本地路由表中的条目是通过何种方式获取,均可宣告到BGP协议中;
  • BGP协议可以宣告本地路由表中任何条目,但宣告时必须同本地路由表中的记录完全一致;

r1(config)#router bgp 1
r1(config-router)#network 1.1.1.0 mask 255.255.255.0

宣告完成,将生成BGP表;用于装载所有本地发出和接收到的条目

r1#show ip 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、同步问题---一条条目需要本地通过IGP和BGP同时学习到,为避免路由黑洞;该限制可以关闭,且IOS版本12.2(8)T 以上系列路由器默认关闭该功能
             2、下一跳可达问题---当一条条目传递给EBGP邻居时将自动修改下一跳地
                 址为本地,但若传递给IBGP邻居,将不修改任何参数

r2(config)#router bgp 2
r2(config-router)#neighbor 3.3.3.3 next-hop-self 传递条目到该邻居时,自动修改下一跳为本地

BGP的MA网络下一跳问题:

  • 在MA网络由于ICMP重定向,故BGP可以寻找到最佳下一跳地址;

r1#debug ip bgp updates 查看BGP更新包
r2#clear ip bgp * 硬重启 断开所有邻居间的TCP会话,让后再重新建立
r2#clear ip bgp * soft 软重启,重新收发所有路由信息,不断开邻居关系
r1#clear ip bgp 123.1.1.2 和某个邻居进行硬重启
r1#clear ip bgp 123.1.1.2 soft ? 和某个邻居进行软重启,可选择方向
in ----- Soft reconfig inbound update
out ---- Soft reconfig outbound update
< c r>
r1#show ip bgp neighbors 123.1.1.2 advertised-routes 查看BGP表中本地发送给邻居的条目
r1#show ip bgp neighbors 123.1.1.2 received-routes 查看BGP表中从该邻居处接收到的条目
% Inbound soft reconfiguration not enabled on 123.1.1.2 但默认没有专门的内存用于存在信息
r1(config)#router bgp 1
r1(config-router)#neighbor 123.1.1.2 soft-reconfiguration inbound 创建专门的空间,建议查看后删除

BGP宣告问题

  • 若BGP协议宣告的条目非本地直连,而是通过其他协议学习;那么在将这些路由传递到BGP中时将携带本地到达目标的度量值,及下一跳;

  • 携带原有度量值,多个EBGP邻居将同一路径传递入本AS时,可以通过他们所携带的度量值来优选路径;本地宣告的路由携带度量值后,传递到其他IBGP邻居处,同时该IBGP邻居需要将该条目再传递到它的EBGP邻居时,将度量值修改为0,因为这个度量值不能代表它自己;所有存在EBGP邻居的路由器均应该宣告需要向其他AS传递的路由条目;

  • 原有下一跳地址在传递给EBGP邻居时将自动修改为本地;在传递给IBGP邻居时,默认携带原有下一跳,若接收到的条目中下一跳地址为本地接口某个地址将拒绝接收该条目;

BGP中的 no auto-summary问题:

  • 在BGP协议中针对正常宣告的路由,自动汇总功能无意义;
    在将IGP重发布到BGP时,自动汇总功能存在影响

r2(config)#router bgp 2
r2(config-router)#redistribute ospf 1

auto-summary                              no auto-summary
不携带掩码、度量、下一跳                 携带掩码、度量、下一跳 

度量值和下一跳规则同上一个问题处理方式完全一致,故若需要将IGP重发布BGP时,应该在所有的EBGP邻居上进行;

BGP的认证:仅支持MD5;

r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 password cisco 默认以MD5发出,邻居间需要一致

在run中密码明文显示,可以开启密码密文服务

r1(config)#service password-encryption

BGP的聚合(汇总):

  1. 利用BGP的宣告特点;—BGP可以宣告本地路由表任何方式生成的条目

1)先在更新源路由器上配置到达汇总地址的防环空接口路由

r5(config)#ip route 5.5.4.0 255.255.252.0 null 0

2)然后将该条目宣告的BGP协议中–不用逐一宣告明细路由

r5(config)#router bgp 3
r5(config-router)#network 5.5.4.0 mask 255.255.252.0

  1. BGP的汇聚

1)逐条宣告所有的明细路由
2)再进行标准的BGP聚合配置----更新原上将自动生成空接口防环路由

r5(config)#router bgp 3
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 仅发送聚合条目,其他明细路由被抑制

  • 当在发送聚合条目的同时,还需要发送部分的明细条目,那么可以使用抑制列表来进行干涉:
  1. 定制抑制列表—被抓取的流量反而是需要被抑制的流量

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

  1. 调用

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

注:以上配置适用于被抑制条目较少时;若被抑制的条目较多时,可以在route-map中deny需要传递的路由,然后允许其他所有

  • 另:还可以使用route-map或者前缀列表直接管理发送的条目;
    Route-map:

r5(config)#ip prefix-list yy permit 5.5.5.0/24
r5(config)#route-map yy deny 10
r5(config-route-map)#match ip address prefix-list yy
r5(config-route-map)#exit
r5(config)#route-map yy permit 20
r5(config-route-map)#exit
r5(config)#router bgp 3
r5(config-router)#neighbor 4.4.4.4 route-map yy out

前缀列表:

r1(config)#ip prefix-list ss deny 1.1.1.0/24
r1(config)#ip prefix-list ss permit 0.0.0.0/0 le 32
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 prefix-list ss out

注:当汇总点不在更新源路由器上且不更新源路由器的AS内时也可以进行,但条目将默认被回传至源AS,导致资源的浪费;利用EBGP水平分割规则来解决;
将更新源路由器所在的AS压入聚合条目中,来限制其回传到更新源AS;

r2(config)#router bgp 1
r2(config-router)#aggregate-address 3.3.0.0 255.255.248.0 summary-only as-set

有条件的打破IBGP水平分割:在关闭了IBGP水平分割机制后,保证无环;

  1. 路由反射器 -RR
  2. 存在三个角色:RR、客户端、非客户端
    由三种角色构成一个簇(组)

RR和客户端、非客户端均为IBGP邻居关系;

规则:

  1. 当一个路由器从一个EBGP邻居处学习到路由条目,且本地为RR,那么将该条目发送给客户端、非客户端、EBGP邻居
  2. 当一个路由器从一个客户端(IBGP)处学习到路由条目,且本地为RR,那么将该条目发送给客户端、非客户端、EBGP邻居
  3. 当一个路由器从一个非客户端(IBGP)处学习到路由条目,且本地为RR,那么将该条目发送给客户端、EBGP邻居,不传递给非客户端;

r3(config)#router bgp 2
r3(config-router)#neighbor 2.2.2.2 route-reflector-client
本地成为RR,同时2.2.2.2称为本地的客户端—可以同时多个客户端

  • 在真机上,一旦使用路由反射器技术,那么next-hop-self在rr和客户端将失效;
    使用route-map取代:

r1(config)#route-map xx permit 10
r1(config-route-map)#set ip next-hop peer-address
r1(config-route-map)#exit
r1(config)#router bgp 1
r1(config-router)#neighbor 2.2.2.2 route-map xx out
r1(config-router)#end
r1#clear ip bgp * soft

  1. 联邦–将一个大AS切分若干小AS,小AS使用私有AS号,不对外公开;致使小AS间出现类EBGP邻居关系,最终正常传递路由条目;
    注:正常路由条目在穿越AS时属性将发生变化,但在经过小AS时,属性不变化;

1)启动时使用小号,之后所有的配置均使用小号

r3(config)#router bgp 64512
r3(config-router)#b router-id 3.3.3.3
r3(config-router)#neighbor 2.2.2.2 remote-as 64512
r3(config-router)#neighbor 2.2.2.2 update-source loopback 0
r3(config-router)#neighbor 4.4.4.4 remote-as 64513
r3(config-router)#neighbor 4.4.4.4 update-source loopback 0
r3(config-router)#neighbor 4.4.4.4 ebgp-multihop

2)联邦内所有路由器需要声明自己所在的大AS号

r2(config)#router bgp 64512
r2(config-router)#bgp confederation identifier 2

3)小AS间互指peer

r3(config-router)#bgp confederation peers 64513
r4(config-router)#bgp confederation peers 64512

注:实际应用中将联邦和路由反射器联合使用

Peer-group:

r1(config)#router bgp 1
r1(config-router)#neighbor ccna peer-group
r1(config-router)#neighbor ccna remote-as 2
r1(config-router)#neighbor ccna update-source loopback 0
r1(config-router)#neighbor 2.2.2.2 peer-group ccna
r1(config-router)#neighbor 3.3.3.3 peer-group ccna
r1(config-router)#neighbor 4.4.4.4 peer-group ccna
r1(config-router)#neighbor 2.2.2.2 route-map ccna out
% Invalid command for a peer-group member

注:一但使用模板,那么大部分命令均需要基于模板进行

BGP的属性:

             传播范围              默认值             大、小优
一、Weight    不传递           本地32768(0-65535)      大
                                     邻居0

Cisco私有属性;

r4(config)#router bgp 2
r4(config-router)#neighbor 1.1.1.1 weight 1 从该邻居处接收的条目权重修改为1;
r4#clear ip bgp * soft 只要策略干涉选路,就必须软清

负载分担:基于不同目标使用不同的路径;

r4(config)#ip prefix-list w permit 2.2.3.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可以起到进出限制的作用,调用时必须为入方向,因为权重值不传递;

               传播范围              默认值             大、小优
               IBGP邻居间           100                  大
  1. 本地优先级
    用于干涉IBGP选路最多;

r3(config-router)#bgp default local-preference 101 本地发出的所有条目优先级修改为101;

负载分担:

r3(config)#ip prefix-list l permit 2.2.3.0/24
r3(config)#route-map l permit 10
r3(config-route-map)#match ip address prefix-list l
r3(config-route-map)#set local-preference 101
r3(config-route-map)#exit
r3(config)#route-map l permit 20
r3(config-route-map)#exit
r3(config)#router bgp 2
r3(config-router)#neighbor 4.4.4.4 route-map l out
r3(config-router)#end
r3#clear ip bgp * soft

注:调用时进出方向均可,但仅限于IBGP邻居间;

  1. 优选本地下一跳
*>2.2.2.0/24       0.0.0.0                  0    100      0 1 i
* i               3.3.3.3                  0    100      0 1 i
  • 正常BGP中,本地直连同时本地宣告或重发布,那么条目的下一跳地址才为0.0.0.0;
  1. AS-PATH 条目在传递过程中,将记录所有经过的AS号;AS号只能在条目传递给其他EBGP邻居时写入;----AS的写入只能在EBGP邻居间进行;优选经过AS数量较少的路径;
  • 可以在EBGP邻居间交换路由条目时,人为的添加AS号;
    修改A路径,优选B路径;

r1(config)#ip prefix-list as permit 2.2.3.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邻居;
    若in方向调用结果为 3 4 5 X x为真实经过的AS
    若out方向调用结果为 X 3 4 5 x为真实经过的AS

  • 由于存在EBGP水平分割,故若增添的AS号在后网络中真实存在,那么将被拒绝接收;
    解决方法:
    多次重复真实经过的AS号

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

  1. 起源属性

r4#show ip bgp

BGP table version is 17, local router ID is 4.4.4.4
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
*>i2.2.2.0/24       1.1.1.1                  0    100      0 1 i

起源属性---标示该条目通过何种方式进入BGP域;
i标示network产生的;
e通过EGP学习后重发布进入BGP
?IGP重发布到BGP

i优于e优于?

r1(config)#ip prefix-list o permit 2.2.3.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
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

  1. MED–多出口的鉴别属性
    可以被用干涉EBGP/IBGP邻居间选路,但主要用于EBGP;
    干涉EBGP最多;
    在BGP协议中默认不存在度量值,所谓MED就是人为的添加度量值,最终影响选路;
    多用于AS1干涉AS2对AS1的选路;

r2(config)#ip prefix-list med permit 2.2.3.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来检测最终的结构;

BGP选路规则:比较前提–同步被关闭、下一跳可达;均可优

  1. 首先比较weight 大优–不传递 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

社团属性:BGP中的扩展属性;这些属性不是用于BGP选路;而是用于其他控制;

  • 默认部分厂商的产品是不会主动携带和识别社团属性;CISCO产品默认就不识别和传递,故在使用cisco产品时需要激活识别性。

r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 send-community 开始本地的传输性,和邻居的识别性

-在社团属性中关于传播范围的3大属性:

r1(config)#route-map com permit 10
r1(config-route-map)#set community ?

  local-AS        Do not send outside local AS (well-known community)
  no-advertise    Do not advertise to any peer (well-known community)
  no-export       Do not export to next AS (well-known community)

 no-advertise   若收到的路由信息中携带该属性,将不传递给下一个邻居
 no-export     若收到的路由信息中携带该属性,将不传递给下一个AS
 local-AS      若收到的路由信息中携带该属性,将不传递给下一个小AS;若无小AS那
              么local-as等于no-export;

猜你喜欢

转载自blog.csdn.net/heibaikong6/article/details/87369690
BGP