当前位置: 首页 > news >正文

BGP 笔记

一、BGP产生背景

BGP(Border Gateway Protocol,边界网关协议)用于自治系统间的动态路由协议,是一种外部网关协议。
自治系统AS:一组被进行统一管理,运行同一个IGP协议的路由器组成的网络范围。通常使用相同的路由策略。
自治系统编号:
2字节AS编号:取值范围0-65535,其中0和65535保留
公有AS:1-64511
私有AS:64512-65535
4字节AS编号:2的32次方的编号数量
公有:65536–4199999999
私有:4200000000–4294967294

二、路由协议的分类

IGP:RIP、OSPF、IS-IS
EGP:BGP

三、BGP协议特性

1、BGP负责把路由从一个AS传到另一个AS;从其他AS传递过来的路由在本AS内部的扩散依靠IGP;

2、BGP是路径矢量协议,一跳是一个自治系统;
当一条路由传入某个AS,该路由的下一跳会变为上个AS的出接口的IP地址;当一条路由在某个AS内部的路由器之间传递时,下一跳不变。

3、AS防环机制:路径矢量路由协议,从设计上避免了环路的发生,
当一条路由每从一个AS传出,会把该AS的编号按照从右至左的顺序依次记录在AS_PATH属性中;
一个路由器从其他AS收到一条路由通告,会检查本路由器的AS标号是否出现在该路由条目的AS_PATH属性中,如果出现了则该条目不学习;
4、BGP基于TCP协议传输,端口号179;必须手动配置邻居;
5、BGP在第一次网络收敛的时候发送完整的路由表,后续只发送增量更新;
6、BGP有多种属性可以控制路由选择。
7、支持路由聚合;
8、路由过滤和路由策略;

四、BGP环路问题(水平分割)

1、EBGP水平分割(AS_PATH)
通过AS_PATH属性防环,在学习到的路由中,若有本地AS号,则拒绝学习,防止环路
2、IBGP水平分割
当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。

五、BGP状态机

Idle:空闲状态,停留30秒,初始化开始准备TCP连接并监视远程对等体,启动BGP时,同时建立邻居关系。
connect:TCP连接中状态,本端为TCP被动连接方,若连接建立失败则进入Active状态,反复尝试连接;
Active:活跃状态,本端为TCP主动连接方,TCP连接没建立成功,反复尝试连接;
open-sent:开始发送状态,成功建立TCP连接,发出open报文,open报文中携带参数协商对等体的建立,正在等待接受对方open报文;
open-confirm:开始确认状态,收到open报文,发出Keepalive报文,等待第一个Keepalive报文;
established:已连接状态,收到Keepalive报文,最终成功建立邻居;

六、BGP路由选路原则(13条)

1、首先丢弃下一跳不可达的路由;
2、优选Preferred-value值最大的路由;默认为0;
Preferred-value:定义:首选项。
属性值:默认为0,取值范围是 0~65535,取值越大,优先级越高。
3、优选本地优先级(LOCAL_PREF)最高的路由;
4、依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;
5、优选AS路径(AS_PATH)最短的路由;
6、依次选择ORIGIN属性为IGP、EGP、Incomplete的路由;
7、优选MED值最低的路由;
8、依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;
9、优选下一跳度量值最低的路由;
度量值:一般指通过IGP协议到达下一跳地址的度量值
10、优选CLUSTER_LIST长度最短的路由;
11、优选ORIGINATOR_ID最小的路由;
12、优选Router ID最小的路由器发布的路由。
13、优选IP地址最小的对等体发布的路由。

七、BGP路由的发布策略

只将最优路由发布给对等体。如果配置了active-route-advertise命令,则BGP发布IP路由表中的最优路由;否则,发布BGP路由表中的最优路由。
比较优先级:OSPF 优先级:10和150 ,BGP优先级255。在整个IP路由表中,选择通过OSPF学到的路由。

只把自己使用的路由发布给对等体(自己选的最优路由);
从EBGP获得的路由会向它所有BGP对等体发布;
从IBGP获得的路由不向它的IBGP对等体发布;(IBGP水平分割)
从IBGP获得的路由发布给它的EBGP对等体;
BGP连接一旦建立,BGP发言者将把满足上述条件的所有BGP路由发布给新对等体。之后,BGP发言者只在路由变化时,向对等体发布更新的路由。

五、属性控制的选择建议

1.如果希望影响下游所有路由器的路由选择,建议使用AS-PATH
2.如果只希望影响本AS内部的某个路由器选择,建议使用Local-preference
3.如果希望只影响下游某一个AS的路由器选择,建议使用MED
4.如果希望只影响某一台路由器的路由选择,建议使用preferred-value

四、BGP路由聚合

作用:减小路由表规模
1、自动聚合:
只能对引入的IGP的路由进行聚合;
只能将明细路由汇总到主类,这会造成路由黑洞;
华为设备默认关闭自动聚合功能;
只能在始发路由器上进行配置;

2、手工聚合:
可实现精确汇总:[R1-bgp]aggregate 172.16.0.0 16
可以在任何路由器上对BGP路由进行聚合;
出现问题:明细路由依然被通告,有形成环路的隐患
解决方法:[R1-bgp]aggregate 172.16.0.0 16 detail-suppressed  //抑制明细路由,此命令不通告明细路由;

五、路由反射器

1、定义:BGP反射器能把从IBGP邻居学习的路由反射给其他IBGP邻居
2、作用:用于替代IBGP全连接,减少IBGP邻居数量;解决BGP路由黑洞问题;
RR(router reflect):路由反射器
反射器角色:
client:RR客户机
非客户机
3、反射规则
从非客户机端接受的路由,仅反射给客户端;
从客户端接受到的路由,反射给所有客户端和非客户端,路由始发者除外;
从EBGP接收的路由,反射给所有的客户端和非客户端;
4、反射集群:由反射器和客户端组成的网络范围;
如果存在多个反射器,配置相同的cluster_id

5、路由反射存在问题:使得IBGP水平分割原则失效,会导致环路的产生
6、解决方法:
通过两个路径属性来避免环路
(1)cluster_list(集群列表):
类似AS_PATH,每个RR都有一个Cluster id,默认为路由器的router id,可手工修改;
同一个AS内的Cluster id必须相同,才能有防环作用。
路由传递过程中,把经过的反射器的Cluster_id依次记录在Cluster_list中;
Cluster_list用于反射器防环,当反射器收到BGP路由时,如果本机的Cluster_id出现在Cluster_list中,则丢弃该路由;

(2)originator_ID:起源ID
由路由器反射器反射一条路由时产生,会在反射出去的路由中增加originator_ID,它就是本地AS内路由始发者的router-id;
即使这条反射路由经过多个RR,当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。
originator_ID用于路由优选,短的优先

7、总结BGP的防环机制
(1)AS_PATH:解决AS之间的环路问题
(2)IBGP的水平分割:解决一个AS内部IBGP邻居之间环路问题
(3)Cluster-list防环:当一个反射群中存在多个反射器时,通过Cluster-list防环,
(4)originator_ID:在多个反射群之间,通过originator_ID防环

http://www.lryc.cn/news/615679.html

相关文章:

  • Python 中的 Mixin
  • 第4章 程序段的反复执行2 while语句P128练习题(题及答案)
  • 【动态数据源】⭐️@DS注解实现项目中多数据源的配置
  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • 深度学习入门Day8:生成模型革命——从GAN到扩散模型
  • pytorch llm 计算flops和参数量
  • Busybox编译、制作initramfs,并在QEMU中运行
  • 束搜索(Beam Search):原理、演进与挑战
  • Java -- 日期类-第一代-第二代-第三代日期
  • NLP:Transformer输出部分
  • 第十九天-输入捕获实验
  • AI编程工具 | Trae介绍
  • Linux高级编程-文件操作
  • SpringBoot 集成 MapStruct
  • Vue 3.6 Vapor模式完全指南:告别虚拟DOM,性能飞跃式提升
  • 使用GTX ip core + SDI IP core实现SDI设计
  • Vue3 路由
  • C++算法练习:单词识别
  • 决策树技术详解:从理论到Python实战
  • 【ref、toRef、toRefs、reactive】
  • 多级缓存详解
  • 《励曼旋耕》Liman Rotary Tillage
  • Python如何合并两个Excel文件
  • 花生4CL基因家族鉴定及对干旱与盐胁迫响应分析--文献精读157
  • 本地进行语音文字互转
  • CVPR中深度学习新范式:通用性、鲁棒性与多模态的创新突破
  • 分布式事务Seata TCC模式篇
  • Linux网络转发系统框架分析
  • 【密码学】7. 数字签名
  • orcad的操作(1)