一.引言
网络环境在随着科技的发展和人类的需求越来越庞大,但是问题也随之出现,庞大的网络拓扑环境之间怎么才能适应高强度的资源消耗。如城市甲要和城市乙之间交互信息,那么俩个强大的拓扑之间建立互相学习对方网络就会出现大量的资源占用和浪费。为了解决更高效率传递路由和维护大量的路由信息,BGP协议出现了,他是存在于俩不同的网络环境之间的,用于传递路由信息,网络优化,避免路由环路。
二.误区
1.与重分布区分
俩不同小型的拓扑环境互相学习对方路由的话一般用重分布解决,对于大型城市级网络则用BGP,当然这只是运用上的不同,俩则在原理上就有着本质区别。
BGP协议是将边缘两两网络设备之间分成左右,而重分布这是将边缘网络设备分成左右,如图。
2.BGP协议实现纠错
BGP 设备依次与对等体建立邻居关系,但建立了对等体关系后并不会知道各自的路由信息,只是单纯建立了邻居关系。具体知道各自的路由信息要在邻居的基础上去通告你想要知道路由信息的网段来获取路由。
3.BGP作为EGP与IGP本质区别
BGP不需要计算路由,它只需将以计算好的路由传递给了邻居。作为EGP(外部网关协议)的BGP不同于IGP(内部网关协议),EGP协议只需传递计算好的路由。
所以我们对EGP的可控性、可靠性要求更高
而IGP则更在意的是路由的选路。
三.BGP特点
1.无类别路径矢量协议,距离矢量协议的升级版
2.使用单播形式来发送所有信息
3.有丰富的属性来代替度量值来进行选路
4.默认不开启负载均衡
5.支持认证和汇总
四.专有名词介绍
1.AS号
工作在同一个管理区域下的一组网络设备,一般情况下将一个大型的网络拓扑归为一个AS号之下。BGP就是运行,用于连接在不同的AS号拓扑下的协议。
其中,内部网关协议(IGP)用于同一AS号之下,外部网关协议(EGP)用于不同AS号之间。
范围<0-65535>,0是不可用的,私有AS号,64512-65535
2.BGP Speaker
运行了BGP协议的路由器,叫做BGP发言者。
3.IBGP和EBGP
BGP俩俩之间建立了联系形成对等体,由俩种不同的情况。
一是建立在同一AS号以内,为IBGP对等体,AD值为200。
另一为建立在AS号之间,为EBGP对等体,AD值为20。
4.AS-PATH
记录路由信息在传递的过程中经过的AS号,EBGP对等体之间传递时,需添加AS号,IBGP对等体之间传递时,无需添加AS号 。具体如图所示。
yidong要前往R5的172.5.1.1会环口路由会走R1发往R5(从AS100到AS6500),也会先走到电信再到R2发往R5(从AS100到AS200到AS6500)
具体查看如下
五.报文和状态
五个报文
1.open报文
作用:用于建立对等体关系,建立对等体时发送一次
2.Keepalive报文
作用:用于维持对等体关系,每隔60秒发送一次,死亡时间180s,open报文双方死亡时间不一致,取最小值
3.update报文
作用:用作通告路由信息,并且带上BGP特有的属性
4.notification报文
作用:用于对等体建立是报错使用
5.route-refresh报文
作用:在路由策略发生变化时,用来通告路由信息
七个状态
Idle(空闲状态)
正在尝试查找去往对等体的路由
connect(连接状态)
与对等体进行TCP三次握手,若握手成功则进入发送状态
openset(发送状态)
发送open,但未收到open
openconfirm(openconfirm)
确认open包,参数对比并发送Keepalive
established(建立状态)
接收到Keepalive,对等体建立完成,发送update更新路由信息
active(活跃状态)
在连接状态时,TCP连接失败或其他原因,则会进入该状态
![](https://img-blog.csdnimg.cn/7f6be0c3794e4cb4ab1438c81c8ac7aa.png)
六.BGP拓扑配置常见问题
下一跳问题
解释:从iBGP对等体学习到路由传递个eBGP对等体时,下一跳会发生变化
从eBGP对等体学习到路由传递个IBGP对等体时,下一跳是保持不变(即eBGP邻居的接口地址)
如图所示,R1,R2建立ibgp,R2和R3建立ebgp,R1通告的1.1.1.1路由传到R3上显示的下一跳为192.168.10.1 ,R3不可达,不会写在路由表上,要在R2向R3通告下一跳是R2我自己才能解决问题。
R3(config-router)#neighbor 192.168.30.254 next-hop-self
TTL问题
解释:需要通过非直连建立eBGP对等体关系时会出现的问题,默认情况下,向eBGP对等体发送报文时,TTL=1。
默认情况下,向iBGP对等体发送报文时,TTL=255
如图,R1要和R3建立Ebgp,发送的报文TTL为1,到R2时减为0,无法继续发往R3。因为一般情况下都是边缘设备建立邻居,到达边缘设备时减为0,并回包表示已送达。此时将与R3建立邻居时发送的报文TTL值进行修改即可。
R1(config-router)#neighbor 192.168.30.254 ebgp-multihop 3 //修改eBGP对等体的最大跳数为3
路由黑洞问题
解释:内部IGP设备没有外部的BGP设备的路由
如图R6与R7,R4与R5建立Ebgp,R5与R7建立Ibgp,当R6通告3.3.3.3回环口条目的时候,并在R7上注意到下一跳问题的时候,可以在R4上学习到3.3.3.3路由条目(R6-->R7-->R5-->R4)
但去ping的时候发现并不能通,为什么了,因为R5与R7建立了Ibgp,所以说会传递3.3.3.3的路由并学习,但R8并不知道,所以说虽然R4知道路由条目怎么走,但走到R8的时候还是会因为没有路由条目而丢包。这即为内部IGP设备没有外部的BGP设备的路由
解决方法
1.重分发,通过充分发知道对端怎么走,但一般不用,毕竟和BG冲突了嘛,能用充分发为什么还要用BGP了
2.IBGP全互联,IGP内部设备两两之间建立IBGP对等体关系
3.路由反射器(RR),IBGP全互联升级版,所有设备都与RR建立对等体关系即可,RR将IBGP的路由器传递给其他IBGP设备
R1(config-router)#neighbor 3.3.3.3 route-reflector-client
安全问题
EBGP环路避免
通过AS-PATH来避免环路,当学习的路由的AS路径出现自己的AS号,则认为出现环路,不学习该路由
IBGP环路避免
通过水平分割来避免环路,从IBGP对等体学习到的路由,不会再传递给其他的IBGP对等体
七.基础配置
配置
R3(config)#router bgp 100 //一台路由器只能有一个AS号
R3(config-router)#bgp router-id 3.3.3.3 指定BGP的RID
R3(config-router)#neighbor 192.168.13.1 remote-as 100 //与192.168.13.1建立对等体关系
R3(config-router)#neighbor 192.168.23.2 remote-as 100
R1(config-router)#network 1.1.1.0 mask 255.255.255.0 //只能精准通告,掩码不能乱写
查看
R1#show ip bgp neighbors //查看对等体详细信息
R1#show ip bgp summary //查看对等体简要信息
R1#show ip bgp topology * //查看BGP的拓扑表
R2#show ip route bgp //bgp路由表 (重要)
R2#show bgp //查看bgp通告的路由信息(重要)
清除缓存
R1#clear ip bgp * soft //软清:不会重置BGP对等体关系
R1#clear ip bgp * //硬清:会重置BGP的对等体关系
尾言
BGP的牛逼之处想必大家都知道,作为EGP的御用,三厂商认可的协议,掌握他十分重要,望大家多揣摩揣摩,学完之后有所收获。
本人网络小白一枚,如有知识点或则逻辑不清楚的,望大佬指出,如果大伙有其他问题,留在评论区,我会尽快为大伙解决。