一、BGP概述
BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络(如IPv6等)使用的版本是MP-BGP(RFC4760)。
想要华为数通配套实验拓扑和配置笔记的朋友们点赞+关注,评论区留下邮箱发给你!
二、BGP的特点
BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新。
1.BGP能够承载大批量的路由信息,能够支撑大规模网络。
2.BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。
3.BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。
4.BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。
特征:
1.BGP使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
2.运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。
3.两个建立BGP会话的路由器互为对等体(Peer),BGP对等体之间交换BGP路由表。
4.BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)。
5.BGP能够承载大批量的路由前缀,可在大规模网络中应用。
6.BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol)。每条BGP路由都携带多种路径属性(Path attribute),BGP可以通过这些路径属性控制路径选择,而不像IS-IS、OSPF只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式。
三、BGP对等体关系建立
先启动BGP的一端先发起TCP连接,如左图所示,R1先启动BGP,R1使用随机端口号向R2的179端口发起TCP连接,完成TCP连接的建立。
三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立,参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方定期发送Keepalive报文用于保持连接。
1.其中Open报文中携带:
My Autonomous System:自身AS号
Hold Time:用于协商后续Keepalive报文发送时间
BGP Identifier:自身Router ID
BGP对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体。
报文:
状态机:
想要华为数通配套实验拓扑和配置笔记的朋友们点赞+关注,评论区留下邮箱发给你!
四、BGP路由表
BGP路由表的生成:
五、通告原则
BGP通过network、import-route、aggregate聚合方式生成BGP路由后,通过Update报文将BGP路由传递给对等体。
BGP通告遵循以下原则:
1.只发布最优路由。
2.从EBGP对等体获取的路由,会发布给所有对等体。
3.IBGP水平分割:从IBGP对等体获取的路由,不会发送给IBGP对等体。
4.BGP同步规则指的是:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,也就是要求IBGP路由与IGP路由同步。同步规则主要用于规避BGP路由黑洞问题。
想要华为数通配套实验拓扑和配置笔记的朋友们点赞+关注,评论区留下邮箱发给你!