BGP基础知识
卖萌控的博客
点击这里进入电脑版页面!体验更好
BGP基础知识
2025-6-26 萌小白


今天海翎光电的小编主要介绍一下BGP的相关基础知识,文章浅显易懂,适合对BGP完全没有了解的同学。



BGP介绍



边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous
System)之间的路由可达,并选择最佳路由的路径矢量路由协议。目前在IPV4环境下主要使用BGPV4,目前市场上也存在BGPV4+,BGPV4+在BGPV4的基础上支持多个地址族,如IPv6。






BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目;AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路



AS-自治系统







BGP原理概述



想要AS之间互相通信,我们可以使用重发布,通过重发布将AS的路由信息导入到其他AS以达到AS间的互通,和重发布类似,BGP也是通过发送AS的路由信息以实现全网可达。那为什么AS间更多的是使用BGP而不是重发布呢?



BGP和重发布的区别








BGP特性











BGP特点总结




BGP的数据包



BGP协议中所有的数据包均需要在tcp会话建立后,基于TCP的会话来进行传输及可靠性的保障。



Open包




这里的RID和OPSF的格式一致,也是由32位二进制构成,并且遵循IP地址的格式。也可以通过两种方法获取,一种是手工配置;另一种是自动获取(先在自己路由器的环回接口中选择最大的IP地址作为RID,如果没有环回接口,则在自己物理接口中选择IP地址最大的作为RID)。



注意:在接收邻居数据包时,其中的源IP地址和手工指定的邻居的IP地址一致才可以正常建立邻居关系。




keeplive包




TCP本身具有确认机制,可以确保传输的可靠性,这里的确认主要是确认OPEN报文中携带的参数,如果认同对方的参数,则将回复Keeplive包进行确认。



Update包




Notification包




Route-refresh包




BGP的状态机



BGP的状态机仅描述BGP对等体建立过程中的状态变化。因为BGP可以做到建立邻居关系和发布路由分开完成。







注意:在建立TCP会话连接时,双方都会尝试建立连接,一方建立成功,则将创建一个双向的TCP会话通道;双方都建立成功,则将会出现两个双向通道。则需要关闭一个TCP通道。后面开始发送OPEN报文,其中会携带RID,双方将比较RID,仅保留RID大的一端发起的TCP连接,RID小的一端发起的TCP连接通道将被断开。








BGP的工作过程




BGP的路由黑洞








解决路由黑洞



AS内的设备全部运行BGP:既然路由黑洞是未运行BGP协议的路由器导致的,那就让AS内所有的设备都运行BGP获取路由信息。但这个方法是不现实的,可以承载越多路由信息的路由器其价格也就越昂贵,每一台运行BGP的路由器需要承载所有AS的路由信息,可以承载世界上几万几十万的路由信息的路由器价格也是上百万的,所以,是不可能让AS内的设备拥有全部路由信息的。











BGP为了防止BGP路由黑洞的产生,提出了BGP同步机制:即当一台路由器从自己IBGP对等体学习到一条BGP路由时,他不能将这条路由通告给自己的EBGP对等体,除非他又从IGP协议中(包含静态路由)学习到这条路由。也就是要求IBGP路由和IGP路由同步。



同步要求将BGP路由重发布到IGP协议中,但我们已经说过这种方法并不现实,所以华为设备默认关闭同步机制。



注意:在目前我们的学习情况下,我们在做BGP实验时都是用第一种方法解决路由黑洞



BGP的防环机制—水平分割



EBGP水平分割








IBGP水平分割
















BGP基本配置






EBGP对等体直连建邻




1 [r1]bgp 1



2 [r1-bgp]




1 [r1-bgp]router-id 1.1.1.1




1 [r1-bgp]peer 12.0.0.2 as-number 2 -- #邻居关系指定是双向的



IBGP对等体环回建邻



由于,IBGP邻居处于同一个AS中,正常一个AS中存在大量的备份路径,若使用物理接口建立邻居关系,将浪费这些备份或者负载均衡的路径;故建议使用环回接口来进行IBGP对等体关系的建立。



1 [r2-bgp]peer 3.3.3.3 as-number 2 --- #指定建邻的IP地址和邻居所在的AS的编号



2 [r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 ---- #指定发送给邻居的数据包的源IP为该接口的IP




EBGP对等体环回建邻



EBGP间使用环回建邻首先要有一条路由可以去往邻居的环回,一般我们使用静态路由



1 [r1]ip route-static 2.2.2.2 32 12.1.1.2




1 [r1-bgp]peer 2.2.2.2 ebgp-max-hop 2 --- #将发往该邻居的数据包的ttl值修改为2



2 [r1-bgp]peer 2.2.2.2 ebgp-max-hop ---- #后面不加数字,相当于将TTL值改为最大值,255。



总结:再建立对等体关系时,建议EBGP对等体间直连建邻;IBGP对等体间建议使用环回接口进行建邻。



发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容