计算机网络-BGP基础概念

news2024/11/16 11:54:37

一、BGP的基本概念

BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络(如IPv6等)使用的版本是MP-BGP(RFC4760)。

BGP的特点:

  • BGP使用TCP作为其传输层协议( 端口号为179),使用 触发式路由更新,而不是周期性路由更新。
  • BGP能够承载大批量的路由信息,能够支撑大规模网络。
  • BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。
  • BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。
  • BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。

BGP特征:

  • BGP使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
  • 运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。
  • 两个建立BGP会话的路由器互为对等体(Peer),BGP对等体之间交换BGP路由表。
  • BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)。
  • BGP能够承载大批量的路由前缀,可在大规模网络中应用。

BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol)。

每条BGP路由都携带多种路径属性(Path attribute),BGP可以通过这些路径属性控制路径选择,而不像IS-IS、OSPF只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式。

BGP能够支撑更多的路由表项
BGP能够支撑更多的路由表项
BGP支持丰富的选路规则
BGP支持丰富的选路规则

概况地说就是IGP(OSPF、ISIS)只能与直连链路设备建立邻居关系,因为hello包中TTL值为1,不能跨越设备。BGP只需要能够tcp三次握手成功就能建立邻居,简单说就是ping通就行。BGP支持大量路由表项、拥有丰富的选路规则,是当前用于不同AS之间的主要路由协议。

二、BGP邻居建立

2.1 BGP对等体

与OSPF、IS-IS等协议不同,BGP的会话是基于TCP建立的。建立BGP对等体关系的两台路由器并不要求必须直连。

BGP对等体
BGP对等体

BGP存在两种对等体关系类型:EBGP及IBGP:

EBGP(External BGP):位于不同自治系统的BGP路由器之间的BGP对等体关系。两台路由器之间要建立EBGP对等体关系,必须满足两个条件:

  • 两个路由器所属AS不同(即AS号不同)。
  • 在配置EBGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。

IBGP(Internal BGP):位于相同自治系统的BGP路由器之间的BGP邻接关系。

BGP不单单能用于AS之间也能用于AS内,后面我们学习MPLS、VPN等都会用到。

2.2 BGP邻居建立过程

对等体关系建立
对等体关系建立

1、先启动BGP的一端先发起TCP连接,如左图所示,R1先启动BGP,R1使用随机端口号向R2的179端口发起TCP连接,完成TCP连接的建立。

2、三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立,参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方定期发送Keepalive报文用于保持连接。每60秒发送keepalive报文。

其中Open报文中携带:

  • My Autonomous System:自身AS号
  • Hold Time:用于协商后续Keepalive报文发送时间
  • BGP Identifier:自身Router ID,Router ID大的为主动端。

3、BGP对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体。

BGP Update(更新报文)
BGP Update(更新报文)

BGP建立对等体的对等体都会发起TCP三次握手,所以会建立两个TCP连接,但是实际BGP只会保留其中一个TCP连接,从Open报文中获取对端BGP Identifier之后BGP对等体会比较本端的Router ID和对端的Router ID大小,如果本端Router ID小于对端Router ID,则会关闭本地建立的TCP连接,使用由对端主动发起创建的TCP连接进行后续的BGP报文交互。

2.3 指定TCP连接源地址:

缺省情况下,BGP使用报文出接口作为TCP连接的本地接口。如果使用lookbak接口作为更新源,需要手动配置更新源接口。

在部署IBGP对等体关系时,建议使用Loopback地址作为更新源地址。Loopback接口非常稳定,而且可以借助AS内的IGP和冗余拓扑来保证可靠性。peer x.x.x.x connect lookback 1

在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用Loopback接口建立EBGP对等体关系,则应注意EBGP多跳问题,默认TTL为1,需要手动设置,安全机制认为直连设备较为安全。peer x.x.x.x ebgp-max-hop 3

一般而言在AS内部,网络具备一定的冗余性。在R1与R3之间,如果采用直连接口建IBGP邻居关系,那么一旦接口或者直连链路发生故障,BGP会话也就断了,但是事实上,由于冗余链路的存在,R1与R3之间的IP连通性其实并没有DOWN(仍然可以通过R4到达彼此)。

TCP源地址
TCP源地址

建议IBGP邻居手动指定使用lookback接口保持邻居关系稳定,ebgp邻居使用直连接口进行建立,否则需要手动指定源接口和最大条数TTL。

总结:BGP目前版本为BGP-4。与其它路由协议一致需要经历建立邻居关系、更新报文、保持连接关系等阶段。BGP对等体有IBGP邻居和EBGP邻居。建议IBGP使用lookback接口建立邻居,EBGP直连接口,非直连需要指定跳数。BGP基于TCP三次握手建立邻居关系,使用TCP 179端口。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1705195.html

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

相关文章

【Linux】23. 线程封装

如何理解C11中的多线程(了解) #include <iostream> #include <unistd.h> #include <thread>void thread_run() {while (true){std::cout << "我是新线程..." << std::endl;sleep(1);} } int main() {// 任何语言需要在Linux上实现多线…

【Pandas】深入解析`pd.to_sql()`函数

【Pandas】深入解析pd.to_sql()函数 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1…

【香橙派 AIpro】OrangePi AIpro :教育、机器人、无人机领域的超级AI大脑,华为昇腾处理器驱动的AI开发板新标杆

【OrangePi AIpro&#xff1a;教育、机器人、无人机领域的超级AI大脑&#xff0c;华为昇腾处理器驱动的AI开发板新标杆】 文章目录 一、开箱与初印象1. 初印象2. 上手开机3. 安装和运行 TightVNC 远程桌面3.1. 安装 TightVNC 服务器3.2. 启动 VNC 服务器3.3. 在 Windows 上使用…

RTT UART设备框架学习

UART简介 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;通用异步收发传输器&#xff0c;UART 作为异步串口通信协议的一种&#xff0c;工作原理是将传输数据的每个字符一位接一位地传输。是在应用程序开发过程中使用频率最高的数据总线。 UART串…

免费,Python蓝桥杯等级考试真题--第12级(含答案解析和代码)

Python蓝桥杯等级考试真题–第12级 一、 选择题 答案&#xff1a;B 解析&#xff1a;【0:4】表示取值【1,2,3,4,5】&#xff0c;故答案为B。 答案&#xff1a;B 解析&#xff1a;del lis【2】表示删除列表的元素5&#xff0c;故答案为B。 答案&#xff1a;C 解析&#xff1a;…

基础—SQL—DML(数据操作语言)插入数据

一、介绍 分类全称说明DMLData Manipulation Language数据操作语言。用来对数据库表中的数据进行增删改(插入、删除、修改) 则增、删、改是三个操作也就对应着三个关键字&#xff0c;分别是&#xff1a; 添加数据&#xff1a;&#xff08; INSERT &#xff09;修改数据&#…

数据结构与算法之线性表01

数组是一种线性数据结构&#xff0c;把相同数据类型的元素存储在连续的内存空间中&#xff0c;数组的索引&#xff08;元素在数组中的位置&#xff09;从0开始。 一、常用操作&#xff1a; 1、初始化 # 给定初始值 arr:list[int] [0] * 5 nums:list[int] [1, 2, 3, 4, 5] …

企业微信hook接口协议,ipad协议http,已读消息

已读消息 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信send_userid是long要发送的人idisRoom是bool是否是群消息 请求示例 {"uuid":"1753cdff-0501-42fe-bb5a-2a4b9629f7fb","send_userid":788130255…

旋转矩阵00

题目链接 旋转矩阵 题目描述 注意点 将图像旋转 90 度不占用额外内存空间 解答思路 需要找到将图像旋转90度的规律&#xff0c;为了不占用额外内存空间&#xff0c;可以先将图像上下翻转&#xff0c;然后再将图像沿着主对角线进行翻转&#xff0c;得到的就是旋转90度之后的…

职业探索--运维体系-SRE岗位/CRE岗位/运维岗位-服务心态-运维职业发展方向-运维对象和运维场景

参考来源&#xff1a; 极客时间专栏&#xff1a;赵成的运维体系管理课 极客时间专栏&#xff1a;全栈工程师修炼指南 赵成大佬在鹏讯云社区的文章&#xff08;77篇&#xff09; 有了CMDB&#xff0c;为什么还要应用配置管理 故障没有根因&#xff0c;别再找了 如何理解CMDB的套…

基础—SQL—图形化界面工具的DataGrip使用(2)

一、回顾与引言 &#xff08;1&#xff09; 上次内容&#xff0c;博客讲到了DDL语句的数据库操作、表操作、表字段的操作的相关语法&#xff0c;然而之前都是在MySQL的命令行当中去操作演示的。这种方式可以用&#xff0c;但是使用的话&#xff0c;第一&#xff0c;在我们日常…

JVM 内存布局深度解析,你所不知道的一面

作为Java开发者&#xff0c;想要写出高质量的代码&#xff0c;理解JVM的内存结构是必修课。本文将为您深度解析 Java 虚拟机(JVM)中的内存布局及其细节分析&#xff0c;让你在内存管理的道路上行稳致远。希望通过本文能让你彻底理解其中的奥秘。 一、内存布局概览 在我们深入具…

使用EMQX搭建MQTT服务

简介&#xff1a;EMQX 是一款开源的大规模分布式 MQTT 消息服务器&#xff0c;功能丰富&#xff0c;专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条&#xff0c;单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息&#xff0c;同时保证毫秒…

计算属性与监听属性

【 1 】计算属性 计算属性大致就是这样 # 1 计算属性是基于它们的依赖进行缓存的# 2 计算属性只有在它的相关依赖发生改变时才会重新求值# 3 计算属性就像Python中的property&#xff0c;可以把方法/函数伪装成属性 # 计算属性本质上是一个函数&#xff0c;它们可以通过 get…

国内市场有哪些创意交互性强,重视用户体验的APP/小程序?

在当前互联网时代&#xff0c;随着人口红利的逐渐消退&#xff0c;我们已进入存量用户竞争阶段&#xff0c;用户体验变得尤为关键。优联前端凭借十余年的前端行业经验&#xff0c;始终致力于运用前沿的前端技术、专业的交互设计和细腻的动画视效&#xff0c;为客户提供卓越的用…

LED屏控制卡是如何控制LED屏的?

LED屏控制卡是LED显示屏的关键组件之一&#xff0c;负责将输入的画面信息转换为LED屏能够显示的数据和控制信号。以下是LED屏控制卡的工作原理和功能的详细介绍&#xff1a; 1. LED显示屏控制器概述&#xff1a; LED显示屏控制器是LED显示屏的核心部件之一&#xff0c;也称为LE…

提升PostgreSQL性能的小技巧

提升PostgreSQL性能的技巧可以从多个方面入手&#xff0c;包括硬件配置、数据库配置、查询优化和索引管理。以下是一些实用的技巧&#xff1a; 1. 硬件配置 内存: 增加服务器内存&#xff0c;使更多的数据可以被缓存。 磁盘: 使用SSD硬盘提高读写速度。 CPU: 使用多核CPU&…

华为昇腾310B初体验,OrangePi AIpro开发板使用测评

0、写在前面 很高兴收到官方的OrangePi AIpro开发板测试邀请&#xff0c;在过去的几年中&#xff0c;我在自己的博客写了一系列有关搭载嵌入式Linux系统的SBC&#xff08;单板计算机&#xff09;的博文&#xff0c;包括树莓派4系列、2K1000龙芯教育派、Radxa Rock5B、BeagleBo…

智能电表的演进:提升能源管理的效率与可持续性

近年来&#xff0c;随着智能电表的迅速普及&#xff0c;能源行业经历了重大变革。这些创新设备彻底改变了能源的消费、监测和管理方式&#xff0c;提供了前所未有的精确度、实时数据分析以及对能耗的增强控制。智能电表制造商一直处在这一演进的前沿&#xff0c;不断开发和改进…

智能财务分析软件怎么样?看奥威BI现身说法

随着大数据时代的到来&#xff0c;财务分析已不再是简单的数据汇总和报表制作&#xff0c;而是需要运用先进的智能技术&#xff0c;对数据进行深度挖掘和智能分析&#xff0c;以提供有价值的决策支持。在这一背景下&#xff0c;BI智能财务分析软件应运而生&#xff0c;其中奥威…