BGP :边界网关路由协议
AS与AS之间使用的EGP协议;外部网关路由协议;
AS
AS:自治系统 --控制IGP协议的工作半径,涉及到管理域(管理者)
As编号 : 标准16位 0-65535 其中1-64511公有 64512-65535私有 扩展32位
IGP和EGP的特点
IGP:收敛快 选路佳 资源少
EGP:
- 可控性(多协议间共享路由,必然选路不佳,越强的可控性也容易进行选路干涉)
- 可靠性(更新量巨大,只能增量更新—仅触发,无周期;基于TCP工作—单播,手工建立邻居关系;非直连建立邻居关系-peer(对等体)-- EGP承载于IGP之上 )
- AS-BY-AS(基于一个AS为一跳)
BGP特点
1)无类别路径矢量 -----距离矢量的升级版—AS–BY–AS
2)使用单播更新来发送所有信息;基于TCP 179端口工作
3)增量更新–仅触发无周期
4)具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
5)可以在进项和出项对流量实施强大的策略–可控性
6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
7)BGP支持认证和聚合(汇总)
BGP的数据包
所有数据包均基于TCP会话之上进行传递,故BGP协议自己不设计确认机制;
- TCP的三次握手建立会话,相当于完成了BGP的邻居发现功能
- Open报文邻居邻居关系的建立,正常仅收发一次即可;存在hold time (180s) router-id生成规则同OSPF一致=手工-环回最大地址-物理接口最大地址
- Keeplive 周期保活 60s 实际保活的是TCP的会话,自然保活到了BGP的邻居关系
- Update 更新包 路由信息 目标网络号+属性(大量的不同参数,便于干涉选路)
- Notification 报错 错误信息产生时,出现提示 比如AS号配置错误
BGP的工作过程
条件:IP可达 IGP工作完成,路由可达之后BGP才能工作
启动配置完成后,peer间进行TCP会话的建立,3次握手完成邻居会话建立后;
BGP使用open报文建立邻居关系,生成邻居表;正常open报文收发一次即可;
之后BGP使用update来进行路由条目的共享;所有的信息可靠性由TCP保障;
接收到update消息后,BGP将条目存储于BGP表中;–本地发出接收到的所有BGP路由信息
默认将最优路径加载于路由表中;
路由共享结束后,BGP正常仅keeplive周期保活即可,若条目变化进行触发更新;
BGP路由黑洞
EBGP外部BGP邻居关系-不同AS的bgp设备建立邻居关系
IBGP 内部BGP邻居关系—同一个AS内的BGP设备建立邻居关系
BGP路由黑洞— 考虑到实际工程中设备的采购成本,不会一个AS内部所有设备运行BGP协议;
导致BGP协议通过非直连的邻居传递路由条目,使得控制层面可达;但实际数据层面流动时,在流量经过没有运行BGP协议的设备时将被丢弃;
解决方案:
1、物理链路全连
2、邻居关系全连—所有设备运行BGP协议
3、使用VPN在运行BGP协议的设备间构建
4、将BGP协议重发布到IGP协议中
5、MPLS 多协议标签交换技术(最佳方案)
BGP的防环机制—水平分割
- EBGP水平分割—依赖BGP的AS路径属性;BGP协议传递的路由条目,会在传递过程中记录所有经过的AS编号;接收到的条目中存在本地的AS号将拒绝接收;
- IBGP水分分割:基于AS-BY-AS规则,路由条目在一个AS内部传递过程中,属性默认不发生变化;为了避免IBGP环路由;存在IBGP水平分割—从一个IBGP邻居处学习到的路由条目不得传递给下一个IBGP邻居;导致一个as内部所有运行BGP协议的设备间均为IBGP邻居关系;邻居关系的数量成指数增加;—可以使用联邦和路由反射器来打破;
BGP的宣告问题
若通过BGP协议传递的路由条目与本地通过其他协议学习到的条目完全一致,将出现:
1、该路由同时作为与其他BGP邻居建立邻居关系时的底层路由,那么这条BGP路由将不优,不能传递也不能加表
2、该路由不作为建立其他BGP邻居的路由,将在本地不加表,但可以传递,属于优的路由;
重发布
BGP协议宣告的路由,基本是本地通过IGP学习到的本as路由;数量较大,若逐条宣告,配置量很大,但可控性强; 也可以在同时运行BGP和igp的设备,将IGP协议重发布到BGP协议中,来实现批量的路由宣告效果;
宣告相当于逐条的重发布,重发布相当于批量的宣告;两者产生的路由条目,起源属性不同,其他属性默认完全一致;
总结:存在EBGP邻居关系(连接其他的AS)的所有BGP设备均建议重发布IGP到BGP;
自动汇总
自动汇总对于BGP正常通过network宣告产生的路由没有影响;
仅针对从IGP重发布到BGP的路由条目产生影响;— 路由条目以主类长度发送,不携带cost值;
手工汇总-聚合
1)利用了BGP的宣告的特点,本地路由表中任意路由,不关注来源均可以宣告的BGP中;
不用逐一宣告明细路由,先本地手工静态一条指向汇总网段的空接口防环路由,然后再将其宣告到BGP协议中来;从IGP表中宣告到BGP协议中的条目,仅携带目标网络号和度量值;
聚合的缺点是将多个网络号合成一个,导致访问整个聚合网段时,仅存在唯一的路径;
若在多路径建邻的前提下,将无法精确的选路;故在大型的多链路的网络中为了更好控制选路,必然在传递聚合条目的同时,再在最佳路径处传递部分的明细路由;
若需要在传递聚合条目的同时,传递部分明细路由,只需要在宣告的空接口路由后,逐一宣告需要的明细路由即可;
以上做法的缺点是不能携带原有明细路由的cost值,因为宣告的是本地路由表中人为添加那条静态空接口路由;
2)标准的BGP路由聚合—先逐一手工宣告明细,或批量重发布路由;
再进行聚合配置;默认在本地生成空接口防环路由;
[r2-bgp]aggregate 3.3.0.0 21 聚合和所有明细路由均发送
[r2-bgp]aggregate 3.3.0.0 21 detail-suppressed 抑制所有的明细路由,仅发送聚合条目;
以上操作方法:若需要在发送聚合条目的同时携带部分的明细路由,需要使用策略
1、抑制列表
2、使用路由策略在邻居间直接进行收发路由的管理
3、直接使用前缀列表来实现方法的功能
有条件的打破IBGP水平分割
IBGP水平分割,用于避免在一个AS内部由IBGP邻居间产生的环路;
规则:从一个iBGP邻居处学习到的BGP路由不能传递给下一个IBGP邻居;因为BGP的非直连建邻能力,因此可以在一个AS内部建立多个邻居来实现连接关系备份的作用;故正常一台设备只要运行bgp,那么应该处于AS的边界,存在ebgp邻居;
所有运行bgp协议的设备正常都会从其他AS学习到路由条目,然后共享到本地所在的AS,由于IBGP水平分割,导致本地需要和所有本AS内部的BGP设备建立IBGP邻居关系;IBGP邻居关系的数量成指数上升;
所谓有条件的打破是指在打破IBGP水平分割的时候,不能产生环路;–AS-BY-AS
路由反射器
RR(反射器)、客户端、非客户端;
客户端、非客户端必须分别为RR的IBGP邻居关系;三种角色构建为一个簇(组);
一个簇内可以存在多台设备,但至少一个簇内存在一个RR和一个客户端;
规则:
1)RR从一台EBGP邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;
2)RR从一台客户端邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;
3)RR从一台非客户端邻居处学习到的路由可以共享给本地的其他客户端、EBGP;不能共享给其他的非客户端;
注:被反射路由,在反射过程中,其属性不发生任何变化;若RR接收的条目在不能不优,不具备传递性,将不被反射;
联邦
将一个大as逻辑为多个小as;小AS使用私有AS号,小AS间为联邦内的bepg邻居关系,可以像EBGP一样传递路由,但不能修改属性; 对于联邦外的AS,只能看到大AS号;
1)所有的启动,建邻、管理均基于小AS号进行
2)联邦内所有设备需要声明自己所在的大AS号
3)小AS间的ebgp邻居需要互指对端的小as号