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.pswp.cn/diannao/94812.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ⅹ—6.计算机二级综合题27---30套

第27套 【填空题】 给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据依次移至数组的前部,大于等于平均值的数据依次移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。 …

GDB 调试全方位指南:从入门到精通

在程序开发中,调试是定位和解决问题的核心环节。GDB (GNU Debugger) 作为一款功能强大的命令行调试器,是Linux环境下C/C开发者的必备利器。本文将系统讲解GDB的使用方法,涵盖基础操作到高级技巧,助你高效排错。一、基础准备&#…

Python:从元类到多态的实战指南

Python 作为一门灵活且强大的编程语言,其高级特性为开发者提供了极大的创造力和代码优化空间。本文将围绕元类、序列化、抽象类与多态等核心高级特性展开,结合丰富的实战代码示例,从原理到应用进行全方位解析,帮助你更深入地理解 …

LLM实战(三)——昇腾300i duo推理卡(NPU)大模型推理记录

npu推理环境配置:https://ascend.github.io/docs/sources/ascend/quick_install.html llama-factory适配的NPU说明:https://llamafactory.readthedocs.io/zh-cn/latest/advanced/npu_inference.html 一些CANN命令: 与cuda的对应关系 # 查看NPU信息 npu-smi info = nvidia-s…

【原创】锐捷AM5532宿舍AP接口状态智能巡检实战:Python脚本+Excel报表+QQ自动推送,某高校落地案例

⚡ 项目已稳定运行 180+ 天,累计巡检 14 万接口,邮件告警 0 漏报 📊 CSDN 质量分 5.0 标准:代码 + 图表 + 可落地 + 可复制, 欢迎收藏、点赞、评论三连! 一、背景 某 高校学生宿舍采用锐捷 RG-AM5532 系列交换机下挂无线 AP,高峰期 2.4 万终端并发。 网络中心痛点: …

用户、组和目录的磁盘配额

一、XFS_quota限制用户和组的容量(block)与文件数量(inode);限制block就限制了用户可以使用的磁盘容量,限制inode就可以限制用户新建的文件数量限制某一目录的最大磁盘配额(directory project&a…

[GESP202506 五级] 最大公因数

题目描述 对于两个正整数 a,ba,ba,b,他们的最大公因数记为 gcd⁡(a,b)\gcd(a,b)gcd(a,b)。对于 k>3k > 3k>3 个正整数 c1,c2,…,ckc_1,c_2,\dots,c_kc1​,c2​,…,ck​,他们的最大公因数为: gcd⁡(c1,c2,…,ck)gcd⁡(gcd⁡(c1,c2,……

实现一个进程池(精讲)

目录 写进程池前的理论扫盲 进程池的实现 写进程池前的理论扫盲 父进程创建子进程,父子俩都看见同一片资源,这片资源被俩进程利用,用来通信,这片资源就是管道,如图所示,能很好地诠释管道。 那么什么是进程…

【tips】css模仿矢量图透明背景

就像棋盘格background-image: linear-gradient(45deg, #f0f0f0 25%, transparent 25%), linear-gradient(-45deg, #f0f0f0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #f0f0f0 75%), linear-gradient(-45deg, transparent 75%, #f0f0f0 75%);background-…

visual studio 历史版本安装

visual studio 历史版本安装 链接:Visual Studio 版本路线图 说明:该页面提供历史版本的发布说明及下载链接(需滚动至页面底部查找相关版本)。例如,2022 版本可能包含 17.0 至 17.14 等子版本,用户可根据需…

微软推出“愤怒计划“:利用AI工具实现恶意软件自主分类

微软周二宣布推出一款能够自主分析并分类软件的人工智能(AI)代理系统,旨在提升恶意软件检测能力。这款基于大语言模型(LLM)的自主恶意软件分类系统目前仍处于原型阶段,被微软内部代号命名为"愤怒计划&…

SOLIDWORKS Electrical:实现真正意义上的机电协同设计

随着市场的发展,企业面临两个方面的挑战:从业务和市场方面来看,为了在竞争中取得更大优势,需要更高质量的产品,较低的成本并缩短产品上市周期;从设计和技术方面来看,产品的集成度越来越高&#…

MySql_忘记了root密码怎么办

《MySql_忘记了root密码怎么办》在忘记root密码的时候,可以按以下步骤处理(以windows为例)。_1) 关闭正在运行的MySQL服务。_2) 打开DOS窗口,转到mysql\bin目录。_3) 输入mysqld –skip-grant-tables 回车。–skip-grant-tables 的…

wstool和catkin_tools工具介绍

好的,我们来详细介绍一下 python3-wstool 和 python3-catkin-tools 这两个在 ROS (Robot Operating System) 开发中非常重要的工具,以及它们之间的关系。 首先,python3- 这个前缀表示这些是针对 Python 3 的软件包版本,这在现代 R…

吴恩达 深度学习笔记

最近在看吴恩达深度学习系列课程,简单做一个基本框架笔记。 如感兴趣或了解更多内容,推荐看原课程 以前也做过一些与机器学习和深度学习有关的笔记,过分重复的就一笔带过了。 01 第一门课 神经网络和深度学习 1.1 第一周:深度学习…

2025数字马力一面面经(社)

2025数字马力一面面经(社) 日常自我介绍js数据类型有哪些(报完菜名后简单分析了一下使用引用类型)谈谈对const、var、let的理解(变量提升、let和const的主要区别、使用const命名引用类型的时可以对引用类型进行操作&am…

PyQt 中 pyqtSignal 的使用

目录 基本用法 示例代码 关键特性 常见用途 一、信号的定义规则 二、完整用法步骤 1. 导入必要模块 2. 定义带信号的类 3. 定义接收信号的槽函数 4. 连接信号与槽 5. 发射信号 6. 断开连接(可选) 三、高级特性 1. 跨线程通信 2. 信号连接方式 3. 信号与匿名函数 4. 信号转发 …

使用Python验证常见的50个正则表达式

什么是正则表达式?正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。此处的Regular即是规则、规律的意思,Regular Expression即“描述某种规则的表达式”之意。本文收集了一些常见的正则表达式用…

Redis是单线程性能还高的原因

Redis是单线程Redis单线程是指Redis的网络IO和键值对读写是由一个线程完成的,其他功能还是使用多线程执行Redis主干业务使用单线程的原因Redis本质就是一个大的共享资源,共享资源是需要对其进行并发控制的,即使增加了线程,大部分线程也是在等待互斥锁,并行变串行,而且还需要进行…

若依前后端分离版学习笔记(七)—— Mybatis,分页,数据源的配置及使用

一 Mybatis 1、Maven依赖 在ruoyi父项目的pom文件中有一个分页插件的依赖 <!-- pagehelper 分页插件 --> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version&…