BGP协议解析(白话版)

news/2025/2/12 22:14:40/

之前一直没搞明白BGP有啥用,加了跟没加没啥区别,专门查资料写了这篇《BGP协议解析》。

下面使用eNSP模拟器演示!

IBGP与EBGP的区别

BGP分为两种:IBGP与EBGP。

两个路由器的BGP号相同,建立邻居关系叫IBGP,BGP号不相同就是EGBP,BGP的号就是自制区域号(AS)。 

IBGP

IBGP之间一般使用逻辑接口建立邻居关系(比如各个分总司之前的路由器运行BGP,因为他们属于一个大公司,或者说属于一个自治区域AS)。

IBGP之间一般使用逻辑接口建立邻居关系的好处:IBGP一般是在同一个公司内部使用,公司网络往往有可靠性的规划,可能会有多种路径可以走,如果其中一条线路断了,只要能ping通,当前的邻居状态就不受影响。

EBGP

EBGP之间一般使用物理接口建立邻居关系(比如两家不同公司之间的路由器运行BGP,因为他们不属于同一个公司,之间一般是用一条专用线路通信,或者说他们不属于一个自治区域AS)。

EBGP有报文跳数的限制,默认为1跳,报文跳数可以更改。

BGP的邻居

 BGP的主要目的不是发现邻居或者自动发现路由,BGP的邻居是手动指定的,它的邻居是可以跨网段的(前提条件是:得有路由才能建立邻居),也可以是不直接相连的(比如:两条路由器之间隔了好多路由器的情况)。

BGP一般不是用来发现底层路由的作用,而是用他来作为传递路由的载体(所以一般部署BGP之前会先部署OSPF

BGP往往是不发现底层路由和底层邻居的一个角色,往往是传递路由用的,比如用于:在复杂的要跨越多个公司,跨越多个区域的场景。

BGP大多配置下底层都会有IGP(如OSPF)的配置,,在此之上进行配置BGP的邻居关系。

BGP邻居表与BGP路由表

BGP路由表,当network自己的网段之后,就可以通过BGP路由表来查看被广播出来的网段是哪个BGP路由器的,最前面的符号:* 表示可以通,< 表示最优路径,什么也没有表示不通

不通的情况,例如:

 AR5广播出自己的网段(10.1.1.0)后,AR7可以收到广播出的网段,但是显示时不通的,因为AR5到AR7之间是通过AR6来进行传播的(AR5与AR6运行的EBGP,不是同一个自治区域的),AR广播出自己的网段,R7收到后,自身的BGP路由表还是记录的10.0.1.1 : 10.1.1.0。然而,R7并不知道10.0.1.1是谁,怎么走(因为不在同一个自治区域内)。这时候需要AR6进行转发BGP路由信息的时候,把10.0.1.1 : 10.1.1.0中的10.0.1.1改成自己的id(10.0.2.2)。

BGP邻居表

state下显示的是Idel是没有建立成功,显示的是Established是已经建立成功了。

配置好之后,建立的过程需要一分钟左右。

其它

N个运行IBGP之间相互建立邻居关系,需要设置N(N-1)/2个邻居关系(一个路由器要与另外N-1个路由器建立关系)。

华为路由器BGP常用配置代码:

bgp 100  #自身编号route-id 6.6.6.6  #id,一般为loopback 0的地址peer 1.1.1.1 as-number 100               #邻居的地址和AS号peer 1.1.1.1 connect-intface loopback 0  #邻居的loopback 0的地址network 192.168.10.0 24                  #把这个网段广播到BGP中#运行IBGP与EBGP的路由器,向这个邻居转发BGP路由时下一条写自己的地址peer 1.1.1.1 next-hop-local             dis bgp peer              #查看bgp邻居表
dis bgp router-table      #查看bgp路由表


http://www.ppmy.cn/news/40479.html

相关文章

C#读写CSV文件帮助类

使用CsvHelper类库实现读取CSV文件到对象列表 using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using CsvHelper; using CsvHelper.Configuration; na…

使用 ChatGPT 和 React 创建一个惊艳的3D卡片(一)

本系列文章将使用 ChatGPT、React 和 CodeSandbox 处理错误、图像占位符和协作&#xff0c;来探索如何创建一个惊艳的 3D 卡片&#xff0c;利用鼠标位置创建光照效果。这种设计在现代网站布局中非常常见。我们将深入了解如何使用网络技术创建这种动态效果&#xff0c;并利用 Ch…

Mybatis和hibernate的区别

相同点 Hibernate与MyBatis都是ORM&#xff08;Object Relational Mapping&#xff09;框架&#xff08;对象关系映射框架&#xff09;&#xff0c;都是可以通过SessionFactoryBuilder由XML配置文件生成SessionFactory&#xff0c;然后由SessionFactory生成Session&#xff0c…

冒泡排序(Java)

文章汇总归纳整理于&#xff1a;算法竞赛学习之路[Java版] 冒泡排序是交换排序中的一种所谓交换&#xff0c;是指根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。 默认排序后的数据&#xff0c;从小到大进行排列 冒泡排序的基本思想 从后往前&#xff08…

Vue3 + TypeScript 实现自动打字、打字机动画、动画打字工具(TypeIt)

一、介绍 &#x1f475; &#x1f475; TypeIt是一个JavaScript库&#xff0c;用于创建简单而流畅的打字效果和动画效果。它可以用于网页开发中的很多场景&#xff0c;例如创建动态文字效果、制作页面过渡动画、增强用户体验等。 我们还可以利用它进行一些后端日志的回显&…

【CSDN|每日一练】运输石油

目录 运行结果题目描述输入描述:输出描述:示例代码结语运行结果 题目描述 某石油公司需要向A、B两地运输石油。 两地的需求量不同,而一辆车只能装载一定量的石油。 经过计算A地需要a辆车,B地需要b辆车运输才能满足需求。 现在一共有n辆车分布在各地,每辆车前往A、B两地…

使用 postMessage 解决 iframe 跨域通信问题

父窗口给子窗口发送消息的方式:iFrame.contentWindow.postMessage(‘MessageFromIndex1’,‘*’); 其实就是在父窗口中操作子窗口发消息&#xff0c;然后让子窗口接收自己刚才发的消息。子窗口给父窗口发送消息的方式&#xff1a; parent.postMessage( {msg: ‘MessageFromIfra…

第九天springboot篇

目录 一、什么是springboot? 二、springboot的核心功能 三、springboot、springmvc和spring的区别 四、SpringBoot的配置文件加载优先级 五、springboot有哪几种读取配置的方式&#xff1f; 六、springboot自动装配流程 七、springboot启动流程 一、什么是springboot?…