设为首页收藏本站language 语言切换
查看: 2077|回复: 10
收起左侧

[原创] BGP基础笔记

[复制链接]
发表于 2022-10-12 10:20:13 | 显示全部楼层 |阅读模式
BGP:AS边界网关协议(路径矢量路由协议)
        动态路由协议
                IGP:内部网关路由协议,运行在AS内的路由协议(默认15跳)
                        RIP:工作在4层,属于应用层协议,采用UDP进行封装,端口号520,距离矢量路由协议
                        OSPF:工作在网络层,封装在IP协议之上,协议号89,链路状态路由协议
                        ISIS:工作在数据链路层,采用IEEE802.3帧进行封装,链路状态路由协议               
                EGP:外部网关路由协议,通常是运行在AS间的路由协议
                        EGP:最老的外部网关路由协议,现在已经被淘汰
                        BGP:工作在4层,属于应用层协议,传输层采用TCP进行封装,端口号为179,增强型的距离矢量路由协议

        AS:自治系统
                由同一组织或管理机构,选用统一的选路策略的一组路由器的集合
                不同的AS之间使用AS号来区分,
                        AS(AS number):2B,取值范围0-65535
                                公有:1-64511
                                私有:64512-65534

BGP概述:
        作用:运行在AS与AS之间来传递路由信息,同时还携带丰富的属性,可以为BGP在对路由灵活的实现优选,过滤,控制
        应用场景:超巨型的网络
        特点:
                1、路由承载能力超强
                2、可靠性高(传输层使用TCP进行封装)
                3、增强型的距离矢量路由协议(AS号,默认255跳)
                4、稳定性高:增量更新,减轻BGP在链路上传输路由信息所占用的带宽
                5、支持CIDR,路由聚合
                6、无环路:AS内的,AS间的
                7、路由属性丰富
                8、拓展性好(BGP使用TLV进行信息的传递)
        BGP触发式更新,非周期更新
        基于TCP(端口号179)
        只传递路由信息,不暴露拓扑信息
        能够承载大批量的路由信息,支撑大规模网络
        提供了丰富的路由策略,灵活的选路,指导对等体按策略发布路由
        提供了路由聚合和路由衰减防止路由震荡
        不支持邻居发现功能

BGP相关术语:
        BGP speaker:BGP的发言者(允许了BGP协议的路由器)
        BGP peer:BGP对等体(BGP邻居)
        router-id:BGP网络中设备的唯一标识符,可以手工配置,也可以自动生成

BGP的邻居关系类型:
        IBGP邻居关系:运行在同一AS内的BGP路由器之间建立的邻居关系
                一般使用环回口建立邻居关系,也可以使用直连接口建立邻居关系
                如果使用环回口建立邻居,需要指定更新源地址为环回口
        EBGP邻居关系:运行在不同AS间的BGP路由器之间建立的邻居关系
                一般使用直连接口建立邻居关系,也可以只有环回口建立邻居关系
                如果使用环回口建立邻居关系,需要指定更新源地址两端可达,需要配置EBGP的多跳(默认的TTL为1)
        更新源地址:用于建立BGP邻居关系的地址,必须保证更新源地址可达,并且不能宣告进BGP(peer后面跟着的就是更新源地址)

BGP的五种报文:
        BGP的报文格式:
                通用头部:
                        Marker:全1,16B
                        length:2B,表示通用头部+数据部分的总长度
                        type:用来标识不同的BGP报文
                Open报文:用来协商BGP参数,建立对等体信息(版本,AS号,hold time,RID),
                        TCP连接建立完成后,发送Open报文用来确认BGP邻居关系能否建立
                        格式:
                        version:版本,现在BGP版本为4,向下兼容
                        My AS:本地的AS号(发送者的AS号)
                        hold time:保持时间,用来协商后续BGP邻居关系保持的时间,可以不一致,协商后选择时间小的一方,默认180s
                        BGP ID:本地路由器的RID
                        Opt Parm Len:用来可选参数的长度
                        Optional parameters:填充,可选参数的能力值(多协议的支持,支持路由刷新,支持4字节的AS号)
               
                Update报文:用来更新(增加或删除)及交换路由信息,包含可达性信息的路由属性,还包含不可达的路由信息(即被撤销的路由信息)
                           格式:
                        Unfeasible routes length:标明不可达信息的长度
                                Withdrawn routes:不可达的路由前缀的列表
                        Total path attribute length:标明Path attributes和NLRI两部分的长度
                                Path attributes:携带的路由属性
                                NLRI:包含网络的可达性路由信息

                Keepalive报文:用于保活机制,用来标志对等体建立,周期维护BGP对等体,周期发送,发送时间间隔为60s,保持时间默认为180s

                Notification报文:用于通告邻居路由器错误信息,通知对方解除邻居关系,报告错误信息,终止对等体关系
                            格式:
                        error code:错误代码
                                1、消息头错误
                                2、open消息错误
                                3、update消息错误
                                4、保持时间超时
                                5、状态机错误
                                6、终止
                        error stubcode:错误子代码
               
                Route-refresh报文:用于请求对等体重新发送一份完整的路由信息,或将自己的路由信息发送给对方
                             格式:只有支持路由刷新能力的BGP设备会发送和响应该报文
                        AFI:地址族标识(ipv4)
                        re:保留
                        SAFI:子地址族标识(unicast)
信息的应用:
        1、TCP连接建立完成后,发送open报文,用来确认BGP邻居关系能否建立
        2、连接关系建立后,如果有路由信息需要更新或删除,则发送update报文
        3、BGP稳定后,周期性的发送Keepalive报文,用于维护BGP对等体关系
        4、当本地BGP运行时发现错误,则发送notification报文通知对等体解除邻居关系
        5、route-refresh用于请求对等体重新发送路由信息

BGP的六种状态机:
                  Idle:BGP的初始状态,该状态下不会回应任何设备的TCP连接请求,被start事件触发时,
                尝试发起TCP连接,进入到connect状态
                  Connect:开始建立TCP连接,同时启动重新连接定时器,
                如果建立成功,发送open报文进入opensent状态,同时清除计时器;
                如果建立失败,则进入active状态;(发起TCP连接的源地址默认为出接口IP)
                如果一直没有得到响应,不断尝试连接,直到重新连接定时器超时,尝
                试与其他的设备建立TCP连接,保持在connect状态,重置定时器
                  Active:TCP建立失败,该状态下一直在尝试建立TCP连接,重新连接定时器超时(32s)
                                   后,若仍建立不成功,则回退到connect状态,如果TCP建立成功,发送
                                   Open报文,清除定时器
                  Opensent:TCP建立成功后,发送open报文协商参数,进入此状态,等待接收到正确的open报文
                若收到正确的open报文(协商成功),则发送Keepalive报文,进入Openconfirm状态
                若收到错误的open报文(协商失败),则发送notification报文,状态回退到idle状态
                  Openconfirm:收到open报文,协商成功,发送keepalive报文,进入此状态,等待接收正确的Keepalive报文
                若收到正确的Keepalive报文(协商成功),则进入Established状态
                若收到错误的Keepalive报文(协商失败),则发送notification报文,状态回退到idle状态
                  Established:收到keepalive报文邻居关系建立完成
                  PS:在这中间任何一个环节出现错误,发送notification报文,一旦收到notification报文,状态立即回退到idle状态

①利用环回接口建立IBGP对等体时,需要指定TCP发起连接的源地址
②利用环回接口建立EBGP对等体时,不仅需要指定TCP发起连接的源地址,还需要修改EBGP的最大跳数

BGP中,向IBGP传递路由时,下一跳默认不改变
路由产生时,默认下一跳为connect地址

BGP路由的生成方式:
BGP自身不会发现并计算产生路由,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体
        Network:在协议视图下配置,只能将本地IP路由表中已经存在的路由通告到BGP路由表中,掩码需要精确匹配
                在BGP路由表中,通过network进入BGP路由表的路由,用“i”标识
        Import:在协议视图下配置,根据不同的路由协议(直连,静态,ospf,ISIS,RIP),将路由通告到BGP中
                在BGP路由表中,通过import进入BGP路由表的路由,用“?”标识
在BGP配置视图中使用aggregate命令,可以实现BGP的手工聚合

BGP的四条通告原则:
        1、仅将本地最优路由发布给BGP邻居(*:表示有效   >:表示最优)
        2、从EBGP学来的路由发布给所有的BGP邻居
        3、从IBGP学来的路由不发布给IBGP邻居(相当于水平分割机制,实现了AS内的防环)
        4、BGP与IGP同步(思科默认关闭,可以开启,华为默认关闭,且不可开启)(同步规则)

如果BGP与IGP同步检测机制开启:
        当收到一条IBGP发布过来的路由时:
                如果该路由也从IGP学习到,才会将此路由发布给邻居
                如果该路由没有从IGP学习到,则不将该路由发布给邻居
如果BGP与IGP同步检测机制关闭:
        当收到一条IBGP发布过来的路由时,将该路由发布给EBGP邻居,不会发布给IBGP邻居
       
如何解决路由黑洞:
                全互联:AS内所有BGP路由器建立IBGP邻居关系
                物理拓扑上实现直连
                RR反射器
                建一条下一跳为此BGP路由器的隧道
                MPLS
               
               
BGP引入外部路由的优先级为255




发表于 2022-12-20 20:03:46 | 显示全部楼层
这个看的有点晕啊
地板 2022-12-20 20:03:46 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-3-5 23:11:19 | 显示全部楼层
BGP引入外部路由的优先级为255
5# 2023-3-5 23:11:19 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-3-5 23:11:29 | 显示全部楼层
BGP引入外部路由的优先级为255
6# 2023-3-5 23:11:29 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-5-13 21:17:00 | 显示全部楼层

感谢楼主提供
9# 2023-5-13 21:17:00 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-5-25 09:12:32 | 显示全部楼层
謝謝樓主分享
11# 2023-5-25 09:12:32 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-1 03:07 , Processed in 0.060279 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表