ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

⭐️全网最全❤️BGP详解❤️你值得拥有⭐️

2021-10-17 21:33:48  阅读:256  来源: 互联网

标签:IBGP h3c 最全 BGP 详解 邻居 路由 属性


文章目录

BGP基础

定义

  • 边界网关协议,用于在自治系统之间传递路由

自治系统

  • 一组被统一管理,运行同一个IGP协议的路由器组成的网络范围

自治系统编号

  • 公有AS:1-64511
  • 私有AS:64512-65534

BGP协议特性

  • BGP只负责把路由从一个AS传递到另外一个AS;从其他AS传递过来的路由在本AS内部的扩散要依靠IGP
  • BGP是路径矢量协议,一跳是一个自治系统;当一条路由传入某个AS,该路由的下一跳会变为上个AS的出接口的IP地址;当一条路由在某个AS内部的路由器之间传递时,下一跳不变
  • AS防环机制:当一条路由每从一个AS传出,会把该AS的编号按照从右至左的顺序依次记录在AS_PATH属性中;一个路由器从其他AS收到一条路由通告,会检查本路由器的AS编号是否出现在该路由条目的AS_PATH属性中,出现了则该路由条目不学习
  • BGP基于TCP协议传输,必须手动配置邻居关系;源端口1024以上随机;目的端口179
  • BGP第一次发送完整的路由表,后续只发送增量更新
  • BGP有多种属性可以控制路由选择

BGP相关术语

BGP Speaker

  • BGP发言者,运行了BGP的路由器

BGP对等体

  • BGP邻居,IBGP(同一个AS内部的BGP对等体),EBGP(跨AS之间的BGP对等体)

BGP路由黑洞问题

产生原因

  • 由于IBGP邻居之间没有运行BGP协议的路由器无法获得BGP的路由,而导致的数据包进入该路由器被丢弃

解决方案

  1. BGP引入到IGP
  2. 在黑洞路由器上配置目的网段的静态路由
  3. IBGP全连接:IBGP防环机制,从IBGP邻居学习到的路由不会传递给其他IBGP邻居
  4. BGP路由反射器
  5. BGP联盟

BGP报文

  • Open报文:用于建立邻居关系,里面有 Rouid As编号 Parameter.Value (各种协商能力的列表)
  • Keepalive报文:保活报文,用于维持邻居关系
  • Update报文:发送路由更新
  • Notification报文:用于通告BGP错误
  • Route-refresh报文:用于重新发送完整路由表

BGP状态机

  • Idle:空闲状态,初始化时,此状态停留32秒
  • Connect:连接中状态,本端为TCP连接发起方
  • Active:活跃状态,本端为TCP连接被动方
  • Open-sent:开始发送状态,成功建立了TCP连接发出了Open报文,正在等待接收对方Open报文
  • Open-confirm:开始确认状态,收到Open报文,等待第一个Keepalive报文
  • Established:已连接状态,收到Keepalive报文,成功建立邻居

BGP邻居建立条件

  • IBGP

    对方的IP地址TCP可达(需要具有到达对方IP地址的路由):建议使用环回口地址来指定IBGP邻居
    更新源地址必须和邻居指定的IP地址一致:需要配置修改更新源为环回口
    IBGP邻居关系不需要直连
    
  • EBGP

    对方的IP地址TCP可达,且需要直连:可通过修改EBGP最大跳数来使EBGP非直连,建议使用直连接口地址来指定EBGP邻居
    更新源地址必须和邻居指定的IP地址一致
    

BGP路由优选规则

  1. 丢弃下一跳不可达的路由
  2. 优选Preferred-value最大的路由
  3. 优选Local-pref最大的路由
  4. 依次优选network产生的路由、Import-route引入的路由、聚合路由
  5. 优选AS-path最短的路由
  6. 依次优选Origin属性为IGP、EGP、Incomplete的路由
  7. 优选MED最小的路由
  8. 依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学习的路由
  9. 优选下一跳度量值最低的路由
  10. 优选Cluster_list最短的路由
  11. 优选Originator_id最小的路由
  12. 优选Router-id最小的路由器发布的路由
  13. 优选IP地址最小的邻居发布的路由

BGP路由发布规则

  • 只将本机最优路由发布给邻居:配置了advertise-rib-action命令则发布IP路由表中的最优路由(优先级比BGP高)
  • 只将自己使用的路由发布给邻居
  • 从IBGP学习的路由不向其他IBGP邻居发布

BGP负载分担

  • BGP无法产生等价路由
  • 可通过路由策略手动对不同流量实现负载分担

常用命令

[h3c]bgp 'as-number'                                      //创建BGP进程,进入BGP协议视图
[h3c-bgp]router-id 'router-id'                            //配置Router-id
[h3c-bgp]peer 'ip-address' as-number 'as-number'          //配置邻居
[h3c-bgp]peer 'ip-address' connect-interface 'interface'  //修改更新源
[h3c-bgp]address-family ipv4 unicast                      //进入IPv4单播地址族视图
[h3c-bgp-ipv4]peer 'ip-address' enable                    //启用邻居
[h3c-bgp-ipv4]peer 'ip-address' next-hop-local            //变更下一跳为本机
[h3c-bgp-ipv4]network 'network' 'mask'                    //宣告路由
BGP会在本机路由表中对宣告的网段和掩码进行精确匹配,被匹配的路由会放入BGP路由表并向邻居发布
可以宣告任意来源的路由
[h3c]display bgp peer ipv4                                //查看BGP邻居
[h3c]display bgp routing ipv4                             //查看BGP路由表

BGP属性控制

属性分类

公认必遵属性

  • 定义:BGP发布的路由必须携带的属性
  • 属性:
    AS_path
    Next-hop
    Origin

公认可选属性

  • 定义:所有路由器都识别,但不是必须携带的属性
  • 属性:
    Local-preference
    Atomic-preference

可选传递属性

  • 定义 :路由器可以不识别该属性,但会继续向下传递该属性
  • 属性 :
    Community
    Aggregator

可选非传递属性

  • 定义 : 路由器可以不识别该属性,且不识别时,不会继续向下继续向下传递
  • 属性:
    Med
    Cluster-list
    Originator-id

AS_path

  • 定义:AS路径属性,记录路由传递过程中经过的AS编号

  • 作用:AS防环,路由优选,AS_path短的优先

  • 注意:

    增加AS_path长度来控制选路时,建议增加已经真实经过的AS编号,防止AS防环机制导致路由无法学习

Next-hop

  • 定义:下一跳属性
  • 注意:
    1.路由发布给EBGP邻居,下一跳变更为本路由器出口IP
    2.路由发布给IBGP邻居,下一跳不变,仍保持为上一个AS出口的IP地址
    3.对IBGP邻居发布的路由通过命令更改下一跳为本机

Origin

  • 定义:源属性,标识该路由来源

  • 属性值:

    IGP:
    来源于network宣告、聚合的路由,显示为i
    EGP:
    来源于引入的EGP协议路由,显示为e
    Incomplete:
    来源于引入IGP协议或静态路由,显示为?

  • 优选顺序:IGP>EGP>Incomplete

Local-preference

  • 定义:本地优先级,用来通告IBGP邻居离开AS(不一定离开as 本as内IBGP之间传递也可以)的最优路径
  • 注意:默认值100,大的优先,只对IBGP邻居传递,不对EBGP邻居传递

MED

  • 定义:多出口鉴别器
  • 属性值:Network的路由,默认值0,引入的路由,默认值为原IGP协议中的cost,小的优先
  • 注意:MED属性会被传递至IBGP邻居和EGBP邻居,但不会传递至下下个AS;默认情况下,路由器只会对同一个AS的EBGP邻居传递的路由对比MED

Preferred-value

  • 定义:首选项
  • 属性值:默认0,如果是本地始发路由器,默认值是32768 ,大的优先
  • 注意:私有属性,只对本地有效

属性控制的选择建议

  1. 如果希望影响下游所有路由器的路由选择,建议使用AS-Path
  2. 如果希望只影响本As内部路由器的路由选择,建议使用Local-Preference
  3. 如果希望只影响下游某一台AS的路由器的路由选择,建议使用MED
  4. 如果希望只影响某一台路由器的路由选择,建议使用Preferred-value

属性控制方法

​ 路由策略使用位置:

  • 对邻居传出或传入的方向调用:对匹配的路由使用apply子句修改属性,其他路由使用空节点正常放行
  • 宣告网段时调用:直接使用apply子句修改属性,不需要配置空节点
  • 引入路由时调用:对匹配的路由使用apply子句修改属性,其他路由使用空节点正常放行

AS路径列表

  • 定义:针对路由经过的AS路径设置的匹配条件
  • 典型举例:
    ^$ 匹配本AS始发的路由
    .* 匹配所有路由
    ^100 匹配最后经过的AS是100开头的路由
    ^100$ 精确匹配只经过AS100的路由
    100$ 匹配从AS100始发的路由

常用命令

[h3c-bgp-default]peer 'ip-address' route-policy 'policy-name' 'import/export'
//对邻居调用路由策略
[h3c-bgp-default-ipv4]network 'network' 'mask' route-policy 'policy-name'
//宣告路由时调用路由策略
[h3c-bgp-default]import-route 'protocol' route-policy 'policy-name'
//引入路由时调用路由策略

BGP增强配置

大规模部署BGP的问题

  • BGP对等体众多,配置繁琐,管理难度大
  • BGP路由表庞大,路由查询效率低
  • IBGP全连接,应用和管理BGP难度增加
  • 路由变化频繁,导致路由更新频发

对等体组

定义

  • 具有某些相同属性的对等体的集合

作用

  • BGP邻居太多时,可以极大简化配置

分类

  • EBGP对等体组
  • IBGP对等体组

相关命令

[h3c-bgp-default]group 'group-name' internal                //创建IBGP对等体组
[h3c-bgp-default]group 'group-name' external                //创建EBGP对等体组
[h3c-bgp-default]peer 'group-name' as-number 'as-number'    //设置对等体组AS编号
[h3c-bgp-default]peer 'ip-address' group 'group-name'       //向对等体组加入邻居

BGP路由聚合

作用

  • 减小路由表规模

分类

  • 自动聚合:自动聚合为主类网段,默认关闭,只能对引入的IGP的路由进行聚合,只能在始发路由器上进行配置
  • 手动聚合:可以对任意BGP路由进行聚合,可以在任何路由器上进行配置

相关命令

[h3c-bgp-default-ipv4]summary automatic     //开启BGP自动聚合
[h3c-bgp-default-ipv4]aggregate 'network-address' 'mask' detail-suppressed
//配置BGP手动聚合,detail-suppressed 指不发布明细路由

BGP反射器

定义

  • BGP反射器能够把从IBGP邻居学习的路由反射给其他IBGP邻居

作用

  • 用于替代IBGP全连接,减少IBGP邻居数量
  • 解决BGP路由黑洞问题

反射规则

  • 从非反射客户端接收的路由,仅反射给客户端
  • 从反射客户端收到的路由,反射给所有客户端和非客户端,路由始发者除外
  • 从EBGP接收的路由,反射给所有的客户端和非客户端

一个反射群里的所有反射客户机都只需要与反射器建立IBGP关系

反射集群

  • 由反射器和客户端组成的网络范围
  • 如存在多个反射器,配置相同的Cluster_id

Cluster_list

  • 类似AS_path
  • 路由传递过程中,把经过的反射集群的Cluster_id依次记录在Cluster_list中
  • Cluster_list用于反射集群防环,如果本集群的Cluster_id出现在Cluster_list中,则不再反射
  • Cluster_list用于路由优选,短的优先

Originator_id

  • 由路由反射一条路由时产生,使用AS内路由始发者的Router-id来标识
  • Originator-id用于防环,当路由器收到BGP路由时,对比本机的Router-id和该路由的Originator-id,一致则丢弃路由
  • Originator_id用于路由优选,小的优先

注意:反射路由无法使用策略去更改路由属性

相关命令

[h3c-bgp-default-ipv4]peer 'group-name/ip-address' reflect-client
[h3c-bgp-default-ipv4]reflector cluster-id 'cluster-id'

BGP联盟

定义

  • 将一个AS划分为若干个子AS,子AS内部IBGP邻居建立全连接,子AS之间建立EGP邻居,原AS称为联盟AS

作用

  • 用于替代IBGP全连接,减少IBGP邻居数量
  • 解决BGP路由黑洞问题

注意点

  • 子AS使用私有AS编号
  • 内部路由器的BGP运行在子AS中
  • 其他AS的路由器仍然和联盟AS建立EBGP邻居

相关命令

[h3c]bgp 'as-number'//BGP AS编号为子AS编号
[h3c-bgp-default-ipv4]confederation id 'as-number'//配置联盟AS编号
[h3c-bgp-default-ipv4]confederation peer-as 'as-number'//指定联盟中其他AS编号

BGP团体属性

定义

  • 一组有相同特征的目的地址的集合

公认团体分类

  • Internet:路由可以被发布至所有BGP邻居,默认团体属性
  • No-export:路由不能被发布到本AS之外,如果存在联盟,则不能发布到联盟之外,但可以发布到其他子AS
  • No-advertise:路由不能通告给其他任何BGP邻居
  • No-export-subconfed:路由不能发布到本AS之外,也不能被发布到联盟中的其他子AS

注意:路由器默认不传递团体属性,需要使用命令开启团体属性传递

相关命令

[h3c-bgp-default]peer 'ip-address' advertise-community
//配置允许向其他邻居传递团体属性

BGP路由衰减

作用

  • 解决BGP路由震荡

相关参数

  • half-life-reachable:可达路由半衰期,路由可达时,惩罚值减半需要的时间
  • half-life-unreachable:不可达路由半衰期,路由不可达时,惩罚值减半需要的时间
  • reuse:解除抑制状态的惩罚值阈值
  • suppress:路由进入抑制状态的惩罚值阈值
  • ceiling:惩罚值上限

相关命令

[h3c-bgp-default-ipv4]dampening 'half-life-reachable half-life-unreachable reuse suppress ceiling' 
-default]peer 'ip-address' advertise-community
//配置允许向其他邻居传递团体属性

标签:IBGP,h3c,最全,BGP,详解,邻居,路由,属性
来源: https://blog.csdn.net/wuhan_aaa/article/details/120816256

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有