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

BGP协议笔记

一、BGP协议(边界网关协议)

是一种用于自治系统间的动态路由协议,是一种外部网关(EGP)协议。负责在不同自治系统(AS)之间交换路由信息,目的是实现大规模网络的可扩展性、策略控制和稳定性。

自治系统AS:一组被进行统一管理,运行同一个IGP协议的路由器组成的网络范围。通常使用相同的路由策略。

查看AS编号:www.cidr.report

二、BGP特性

路径向量协议:记录路由的完整AS路径(AS-Path防环机制),而非跳数,避免环路;

TCP连接:使用TCP 179端口,建立可靠的单播连接(邻居(peer)无需直连);

增量更新:仅传播变化的路由,减少带宽消耗;

策略驱动:支持基于AS路径、前缀、团体属性等灵活控制路由;

策略优先:支持丰富的路由策略(如路由过滤、属性修改);

支持IPv4/IPv6:通过MP-BGP扩展支持多协议(如VPNv4、EVPN)。

三、BGP基本术语

   BGP Speaker:运行BGP协议的路由器称为BGP发言者

   BGP Peer:相互之间在TCP连接、相互交换路由信息的BGP发言者之间互称为BGP对等体

BGP邻居可以直连,也可以非直连

BGP邻居类型:

 IBGP(内部BGP);建立在同一AS内,无需直连;用于企业内部分分支路由同步。

 EBGP(外部BGP);建立在不同AS间,默认要求直连;用于运营商之间互联。

四、BGP规划问题(路由黑洞)

产生原因:由于IBGP邻居之间有没有运行BGP协议的路由器,无法获得BGP的路由,从而导致数据包进入路由器被丢弃。

解决方法:

(1)BGP引入IGP

(2)在黑洞路由器上配置目的网段的静态路由

(3)IBGP全连接  ----IBGP防环机制:IBGP水平分割:从IBGP邻居学习到的路由不会传递给其他IBGP邻居

4)BGP路由反射器(无视IBGP的防环机制,可以减少邻居关系的数量)

(5)BGP联盟(可以减少邻居关系的数量,IBGP水平分割限制)

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

1、EBGP水平分割(AS_PATH)

通过AS_PATH属性防环,在学习到的路由中,若有本地AS号,则拒绝学习,防止环路

2、IBGP水平分割

当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。

六、BGP消息种类(数据包可抓包看)

(1)BGP头部信息:

标记(Marker):该字段被保留下来用于解决协议兼容性问题,没有其他含义

长度(length):指示BGP报文的长度(字节数)

类型(Type):该字段指示了BGP报文的类型,就是前面提到的BGP5种数据包类

(2)数据包种类

Open:用于建立BGP对等体之间的连接关系,正常收发一次即可;携带route-id

Hold time:保持时间,该字段表示路由器在收到Keepalive消息或者Update消息之前等 待的最长时间,默认180s,如果邻居双方的保持时间不一致,将以较短的时间作为双 方可接收的保持时间。

可选参数长度:指示了BGP报文中可选参数的长度

可选参数:Open包中包含多个可选参数,主要用于宣告及协商BGP对等体的某些 能力特征。

Keepalive:周期性的向BGP对等体发出Keepalive(周期保活)消息,用于保持连接 的有效性,在默认情况下每60秒发送一条Keepalive消息,或者以已协商一致的保 持时间的1/3为周期发送Keepalive消息。默认60s超时180s

Update:携带的是路由更新(删减、增加)信息

Notfication:当BGP检测到错误状态时,就向对等体发出notfication消息,之后BGP 连接会立即被关闭(邻居关系结束了)

Router-refresh:用于在改变路由策略后,要求对等体重新发送指定地址族的完整路由 表信息;只有支持路由刷新能力的路由器才会响应router-refresh报文。

七、BGP邻居建立条件

IBGP:

物理口建邻:

  建议使用直连接口地址(物理地址)来指定IBGP邻居;

环回口建邻:

 对方接口要有IP地址,TCP可达(需要具有到达对方IP地址的路由),建议使用环回口地址来指定IBGP邻居

更新源地址必须和指定的邻居地址一致,需要修改更新源为环回;

[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0

 IBGP邻居关系不需要直连;

EBGP:

物理口建邻:

建议使用直连接口地址(物理地址)来指定EBGP邻居;

环回口建邻:

对方接口要有IP地址,TCP可达,

可通过修改EBGP最大跳数来使EBGP非直连;

更新源地址必须和指定的邻居地址一致;

注:当一个路由器既有EBGP邻居,又有IBGP邻居的时候,需要对IBGP邻居修改下一跳本机,否则会造成BGP的路由信息传递失败。

BGP与IGP的对比

区别:

BGP

OSPF/RIP

协议类型

路径向量(AS级路由)

链路状态/距离向量(域内路由)

收敛速度

慢(策略复杂)

快(触发更新)

适用场景

跨AS路由(如IS互联)

企业内部网络

八、BGP配置

基础配置:

1.基础eBGP对等体建立

  # bgp 65001   #进入BGP视图,AS号为65001# router-id 1.1.1.1   #手动指定Router ID# peer 203.0.113.2 as-number 65002   #指定对端IP和AS号# peer 203.0.113.2 connect-interface 10   #指定与对等体建立会话时使用的本地 源接口# peer 203.0.113.2 ebgp-max-hop [hop-count]   #修改最大跳数(默认255)# ipv4-family unicast   #进入IPv4单播地址族# peer 203.0.113.2 enable   #激活对等体

  2.路由引入与聚合

  # import-route ospf 1   #引入OSPF路由# aggregate 172.16.0.0 255.255.0.0 detail-suppressed   #手动聚合路由(抑制明细)

  3.策略控制(基于Community)

##设置路由策略# route-policy BGP_OUT permit node 10# apply community no-export   #标记路由不导出到其他AS##应用策略# peer 203.0.113.2 route-policy BGP_OUT export

高级特性配置:

1.路由反射器(RR)

##解决iBGP全互联问题# peer 10.1.1.3 reflect-client   #配置路由反射器客户端

  2.BGP Confederation(联盟)

##将大AS划分为多个子AS,内部使用eBGP规则:# confederation id 65000   #对外显示的统一AS号# confederation peer-as 65001 65002   #声明子AS号

  3.BGP路由衰减(Dampening)

  ##抑制频繁震荡的路由# dampening   #启用衰减

查看BGP对等体状态:

# display bgp peer

检查BGP路由表:

# display bgp routing-table

# display ip routing-table protocol bgp

验证路由属性:

# display bgp routing-table 192.168.1.0

调试BGP报文:

# debugging bgp packet

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

相关文章:

  • 6_基于深度学习的火灾检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • 腾讯前端面试真题
  • 锯床自动长度检测与参数闭环补偿系统
  • 坚鹏:AI智能体辅导是知行学成为AI智能体创新应用引领者的保障
  • 计算机网络:到底什么是可变长子网掩码VLSM?
  • Linux初级阶段性练习
  • 移动端开发中类似腾讯Bugly的产品推荐与比较-5款APP异常最终产品推荐-卓伊凡|bigniu
  • A100用transformers推理gpt-oss
  • 第六章第四节 PWM驱动LED呼吸灯 PWM驱动舵机 PWM驱动直流电机
  • 校招秋招春招小米在线测评小米测评题库|测评解析和攻略|题库分享
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘huggingface_hub’问题
  • Numpy科学计算与数据分析:Numpy高效数据处理与优化
  • Mac 电脑放在环境变量中的通用脚本
  • 免费PDF批量加密工具
  • 从零掌握 Java AWT:原理、实战与性能优化
  • 【沉浸式解决问题】pycharm关闭科学模式
  • 杰理ac791 [Info]: [LL_S]Recv - LL_CHANNEL_MAP_REQ
  • Python从入门到精通计划Day07: Python数据卷轴术:文件魔法与防御结界全指南
  • nlp-语义分析
  • 在 Vue 中使用 ReconnectingWebSocket实现即时通讯聊天客服功能
  • Java 使用 SSHJ 执行 SSH 命令和 SFTP 文件上传和下载
  • 【前端后端部署】将前后端项目部署到云服务器
  • Redis(④-消息队列削峰)
  • 吴恩达 深度学习笔记
  • Coze Studio 概览(九)--插件管理
  • 配电线路故障定位在线监测装置的技术解析与应用价值
  • 应急响应流程
  • 基于 C++ 的湍流数值模拟理论报告
  • 从零构建桌面写作软件的书籍管理系统:Electron + Vue 3 实战指南
  • 中小业务遭遇网络攻击,防护能力不足的解决办法​