HCIP学习--BGP1

news2025/1/12 4:03:07

目录

BGP是什么

AS

EGP协议

IGP协议

EGP和IGP的区别

IGP协议追求

EGP协议的追求

BGP协议

BGP的特性

可靠性

可控性强

AS-BY-AS

具有丰富的属性来取代IGP中度量进行选路

默认不被用于负载均衡

不需要周期更新

无类别路径矢量

BGP数据包

Open

Keeplive

Update

Notification

BGP的工作过程

EBPG和IBGP

 BGP路由黑洞

解决方法

BGP的防环机制

水平分割

EBGP水平分割-针对AS之间的环路

IBGP水平分割-针对AS内部的环路

配置 

建立直连的EBGP邻居关系

建IBGP邻居

多条物理链路时建立EBGP邻居

BGP宣告


BGP是什么

无类别路径矢量型EGP协议、边界网关路由协议

BGP 是唯一一个用来处理像英特网大小的网络的协议,也是唯一能够妥善处理好不相关协议间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策

AS

在互联网中,有一个个自治系统,然后这个自治系统有唯一标识得编号AS

AS标准编号16位二进制 0-65535

1-64511 公有

64512-65535私有

还有扩展编号同样是32位2进制

每一个互联网用户都在AS内,比如说你使用电信,那你就在电信的AS中,然后要和其他运营商的网络通讯那样就会用到BGP

(CIDR Report可以查看AS号的网站)

EGP协议

EGP被称为外部网关路由协议 只有两种协议EGP、BGP,BGP 构建在 EGP 的经验之上。

IGP协议

IGP被称为内部网管路由协议 rip ospf之类的

EGP和IGP的区别

IGP协议追求

无环(选路佳)

收敛快

占用资源少

EGP协议的追求

可控性强

可靠性

AS-BY-AS  

BGP协议

在中国每个运营商都有自己的AS号,那么他们之间要相互沟通,他们之间肯定需要设备保证通讯,这台设备单独属于那个运营商,另外一个运营商都会不满。所以需要解决这个设备的归属问题
这就需要中间放两个设备,一个设备在电信一个设备在联通然后两个设备之间用BGP然后靠BGP传输路由。BGP就可以在两台设备上运行传输相应的路由,注意BGP没有算法,而是转发本地路由表中来自其他协议生成的路由条目;AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路;

BGP的特性

可靠性

BGP协议设备间需要交互大量的路由条目,但又不能选择周期更新来占用链路资源,故只能进行触发更新;且BGP协议工作环境中为节约成本,必然出现非直连需要建立邻居关系,也就是单播邻居。BGP基于TCP工作,这样可以保证BGP的可靠性,tcp只能单播,基于TCP 179端口工作

可控性强

 BGP协议主要负责搬运IGP协议产生的路由,类似多点双向重发布,对选路不做计算所以需要管理员大量手工的干涉选路。所以需要可控性强。BGP承载于IGP上。

AS-BY-AS

BGP里面是一个AS到一个AS。可以类比RIP协议以路由作为一跳,一跳到一跳

具有丰富的属性来取代IGP中度量进行选路

多个参数控制协议(ospf等协议选路考的是度量,BGP没有度量选路靠的是各种属性,不计算路由,是比一些值,直接选)

默认不被用于负载均衡

通过各种选路规则仅仅产生一.条最佳路径(BGP每一个圈都是一个as传输路由对每个as内部的路由有多复杂不知道,所以负载均衡不可取,和ospf和rip不一样他们之间的那个圈都是路由复杂不复杂一下就能看出来,人为可以负载均衡但是要确定路是一样长的)

不需要周期更新

BGP之间不是周期更新,BGP传输的AS之间的路由动辄好多条,次次周期更新太麻烦了,占用资源也高

无类别路径矢量

距离矢量的升级版--AS--BY--AS(共享路由带掩码,公网汇总会汇出超网)

BGP数据包

BGP基于TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp会话建立后

BGP通过TCP的会话来进行传输及可靠性的保障

首先通过TCP的三次握手来寻找到邻居

Open

仅负责邻居关系的建立,正常进收发一次即可;携带route-id;这个rid可以各两个一样,但是还是建议rid全网唯一,他们之间不传拓扑只穿路由

Keeplive

保活

邻居刚建好的时候会很快的发几个,然后才是一分钟一个

周期1min查询邻居关系是否存在;实际保活TCP会话;holdtime默认3min,死亡时间3分种,三分钟没有发数据,会话就断了,邻居也就断了,tcp会话在邻居关系就在

Update

携带路由条目

目标网络号+各种属性

tcp会保证所有包的可靠性

Notification

出现错误数据时收发

(对比一下ospf协议,BGP没有hello包,没有hello包因为靠的是tcp,tcp可以建立就代表可以建立邻居关系,tcp三次握手相当于hello包的发现功能)

BGP的工作过程

BGP没有算法

启动配置完成后,邻居间基于tcp的179端口通过tcp三次握手建立tcp三次会话,(邻居间已知对端单播地址,地址可达,BGP承载于IGP上首先内网要通)会话建立后,所有BGP数据包全部局域TCP会话进行传递和可靠性保障,邻居间正常只收发一次open报文交互RID,相互认识,建立邻居关系,生成邻居表。邻居关系建立后:正常每一分钟发一次Keeplive包周期保活tcp邻居建立后是没有任何路由,是之后管理原根据网络实际需要,选者性将本地路由表中通过任何来源产生的路由条目。宣告到BGP协议,由BGP通过更新包UPDATE共享给所有BGP邻居然后会生成一个BGP表,这个表装载本地发出及接受到的所有BGP路由,仅将本地BGP表中最优(属性最好)路由条目加载于本地路由表中,选路不一定最优,这个选路仅仅基于BGP选路规则;默认不支持负载均衡无周期,只有keeplive保活

EBPG和IBGP

EBPG不同AS之间的BGP

IBGP同一个AS的BGP

下图有例子 

 BGP路由黑洞

 上图做为例子来解释

看C和D他们不运行BGP,F传路由给E,E传给B的时候经过D和C,但是D和C不运行BGP,所以没有去往A的路由,然后F传给A的信息就会被C和D丢掉,C和D就成了黑洞

总结

BGP可以非直连建邻;从所有运行BGP协议的路由器路由表来看,目标可达;

但当流量正在转发时,流量需要经过下一跳转发,中间只要经过未运行BGP的路由,就没有去往目标网段的路由,就会产生路由黑洞

解决方法

BGP之间连接一个物理线

缺点

成本高

B和E之间来一个tunnel

转发效率低

设备所有设备运行BGP

成本高

将BGP的路由重发布一下

也不合适

BGP的路由太多,导入到小路由将会出现问题,实验环境可以尝试,真实环境不建议

MPLS多协议标签交换

下一章内容

MPLSvpn

这个VPN和专线最想的一个

BGP的防环机制

水平分割

EBGP水平分割-针对AS之间的环路

产生环路的条件 

以上面的图片作为例子一号AS的路由传给二号AS再传给三号AS的路由再传回一号路由,这样就成环了。

解决方法水平分割

BGP的路由条目中携带者众多参数,包裹各种BGP属性;其中有一种AS-pash属性

该属性用于记录该路由条目经过过的所有AS编号,然后这个路由从那发出来的再回去是看见AS编号,就会发现这个条路由是自己发过的

该属性用于记录该路由条目经过过的所有AS编号;若BGP协议学习到一条路由,属性中包含了本地的AS号,将拒绝接收

IBGP水平分割-针对AS内部的环路

IBGP路由在AS内部传输时属性不变

本地从一个IBGP邻居处,学习到的路由,不得共享给本地的其他IBGP邻居

以下图作为例子,A传一条路由给B,B传一条路由给D,但是B不可以将这个路由传给E,想传的话B和E需要建立IBGP邻居关系,这样要想正常传输路由的话,就绪要每两个路由之间都要有IBGP邻居关系,这个样子IBGR的邻居关系数量随BGP运行设备的数量指数上升,配置量极大,后期可以有条件的打破IBGP水平分割规则:联邦路由器反射器

配置 

 以这个图作为例子

首先配置好IP,和IBGP

 然后开始配置BGP,BGP邻居关系建立,与路由条目宣告是分开的配置的

建立直连的EBGP邻居关系

R1和R2建立直连的EBGP邻居关系

[r1]bgp 1 这个1是AS号不具有本地意义

[r1-bgp]router-id 1.1.1.1手写rid,建议手写,不手写的话,会自动生成,生成方式和OSPF一样

[r1-bgp]peer 12.1.1.2 as-number 2 告诉要建的邻居接口号,再告诉AS号

要建的话双方都要建下面配置R2

[r2]bgp 2
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 12.1.1.1 as-number 1

 建邻居配置完成后邻居间三次握手开始建立tcp会话

其实不止进行了三次握手,而是六次,是双方都进行了三次握手,总共六次,然后是产生了两条tcp会话,但是两条没有用,所以会断开一条,rid小的对rid大的请求的那条将会被断掉

[r2]display tcp status 查看tcp会话已经出现先了tcp会话 

 会话建立,open报文收发一次,邻居关系建立

[r2]display bgp peer查看bgp邻居

peer字段代表是那个邻居

V代表版本

AS代表这个邻居是那个AS中的

MsgRcvd我从邻居这收了几个包

MsgSent我给这个邻居发过去几个包 

OutQ策略

Up/Down连接建立多长时间

State表示现在的连接状态,只有两种状态建立,或者正在建立中

PrefRcv显示现在这个邻居给我发了几条路由

建IBGP邻居

R2和R3建立IGBP

注意在真实环境中,R2和R3之间的路径会很复杂,不会出现如此简单的一条直线路由,可能会出现很多条路,所以如果只用接口之间的路由是不是就只锁定了一条路,这条路断了就g了,其他几条路也是不是浪费了,所以建议用路由上的环回建IBGP邻居

配置 

[r2]bgp 2
[r2-bgp]peer 3.3.3.3 as-number 2

[r3]bgp 2
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 2.2.2.2 as-number 2

 这个时候邻居关系没有建成

因为R2和R3的环回建邻,目标IP是对方的环回但是源是自己的接口IP,对方回包的时候目标是你的环回,但是源是3的接口IP,对不上,所以要改,源改成环回接口

[r2-bgp]peer  3.3.3.3 connect-interface LoopBack 0 在我和3.3.3.3建立的时候用我的环回0作为源IP

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

多条物理链路时建立EBGP邻居

 同理R3和R4之间也是一样

直连的EDGP上存在多条物理链路时R4和R5之间相连

然后想要使用R4和R5之间的两根线,这个情况和R2、R3之间真实情况一样了,所以也用环回来建邻居,但是首先需要R4的环回和R5的环回是通的,所以需要先配置两条静态路由

[r4]ip route-static 5.5.5.0 24 45.1.1.2
[r4]ip route-static 5.5.5.0 24 54.1.1.2

 [r5]ip route-static 4.4.4.0 24 45.1.1.1
[r5]ip route-static 4.4.4.0 24 54.1.1.1

 然后用环回开始建邻

[r4]bgp 2 
[r4-bgp]peer 5.5.5.5 as-number 3
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0

[r5]bgp 3
[r5-bgp]router-id 5.5.5.5
[r5-bgp]peer 4.4.4.4 as-number 2
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0

 这个配置配置完后它的配置还是不成功,原因是因为,当时设计的时候,这个IBGP的包的ttl是255

EBGP的ttl是1,这个是保障R4和R5之间是直连,你可以在R4和R5之间直接建邻,但是不可以用环回,因为只有1的TTL跳一下就死了。要想用环回建邻,就需要修改TTL

[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2

[r5-bgp]peer 4.4.4.4 ebgp-max-hop 2

BGP宣告

 然后就可以开始宣告问题了

运行BGP协议的路由器可以宣告本地路由表中通过任何协议获取到的路由条目—静态、IGP、直连; 而本地通过BGP协议学习到的路由,只要在本地依然优秀,将继续将向本地的其他BGP邻居传输

(注意:宣告时,宣告的条目必须同本地路由表中的记录完全一致)

宣告1.1.1.0这个网段

[r1-bgp]network 1.1.1.0 24

[r1-bgp]display bgp routing-table 查看BGP路由

状态-- * 可用     >  优秀      *>同时存在—可以加表(路由表) 代表可以传递(传递给

本地的其他BGP邻居)

状态i若出现i代表该条目是本地通过IBGP邻居学习到的

然后查看一下R2的BGP路由表

 

在查看一下3的BGP路由表,发现不优秀,原因有一个同步问题,但是第四版本的BGP已经关了,同步问题:本地通过IBGP邻居学习到的路由,必须本地同时通过IGP也学习到,才能优秀。还有一个IBGP的传递属性不变,然后到了路由R3的时候下一跳不变R3没有去往12.1.1.1的路由。

 配置

[r2-bgp]peer 3.3.3.3 next-hop-local 和2说一声传递路由给的R3的时候下一跳是本地

  然后再给2和4建邻

[r2-bgp]peer 4.4.4.4 as-number 2
[r2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r2-bgp]peer 4.4.4.4 next-hop-local
[r4]bgp 2
[r4-bgp]peer 2.2.2.2 as-number 2
[r4-bgp]peer 2.2.2.2 connect-interface LoopBack 0

然后宣告4和3的环回 

 然后当R5传递给R4还是会出现问题

因为写了一条去往5.5.5.5的静态,然后就是产生了一个悖论,我要和5.5.5.5建邻,所以我写了一条去往5.5.5.0的静态,然后把邻居建立起来以后你又给我传递一条5.0路由

思科解决方案,路由可以传但是不可以,本地加表

华为是不可以传

但是再实际工程中这个问题不需要解决,原因,传递的路由时用户和建邻的接口不同

要是硬想要传5.5.5.5路由那就修改静态将传递过来的路由和自己写的静态不相同

[r4]undo ip route-static 5.5.5.0 24 45.1.1.2
[r4]ip route-static 5.5.5.5 32 45.1.1.2

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

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

相关文章

MIMO-NOMA系统MATLAB仿真实现

非正交多址接入(NOMA)技术可以打破传统的正交多址一个基本资源块由单用户独占的限制,通过在时域和频域的基础上开辟新的功率域维度,在相同的时频资源上通过功率复用技术允许同一个时频资源块由多个用户共享,有效提升了…

树莓派使用 ENC28J60

前言 一些老的、Mini 的 ARM 开发板上没有预留网口,这样在调试升级内核或应用程序时很不方便。纵使有串口下载工具,但其速度也是慢地捉急。这种情况下,使用其它接口来扩展出一个网口无疑是一个比较好的方法。 ENC28J60 就是一个使用 SPI 接口…

软件测试基础篇——MySQL

MySQL 1、数据库技术概述 数据库database:存放和管理各种数据的仓库,操作的对象主要是【数据data】,科学的组织和存储数据,高效的获取和处理数据SQL:结构化查询语言,专为**关系型数据库而建立的操作语言&…

LabVIEW开发图像采集和基于颜色的隔离

LabVIEW开发图像采集和基于颜色的隔离 在当今的工业和工厂中,准确性和精度是决定特定行业生产力的两个重要关键点。为了优化生产力,各行各业正在从手动操作转向自动操作和控制。机器人技术在工业过程中的出现为人类提供了机械辅助。机器视觉在工业机器人…

LinuxC编程——线程的同步与互斥

目录 一、同步的概念二、同步机制2.1 信号量2.1.1基础概念2.1.2 函数接口2.1.3 例子 2.2 互斥锁2.2.1 几个概念2.2.2 函数接口2.2.3 练习 2.3 条件变量2.3.1 步骤2.3.2 函数2.3.3 练习 我们知道,一个进中的所有线程共享进程的资源,所以可以通过在进程中定…

【概念篇】文件概述

✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! 文件概述 1,文件的概念 狭义上的文件是计算机系统中用于存储和组织数据的一种数据存…

大华智慧园区综合管理平台文件上传漏洞复现(HW0day)

0x01 产品简介 “大华智慧园区综合管理平台”是一款综合管理平台,具备园区运营、资源调配和智能服务等功能。平台意在协助优化园区资源分配,满足多元化的管理需求,同时通过提供智能服务,增强使用体验。 0x02 漏洞概述 大华智慧园…

PowerShell 使用SqlScriptDOM对T-SQL做规则校验

对于数据项目来说,编写Sql是一项基本任务同时也是数量最多的代码。为了统一项目代码规范同时降低Code Review的成本,因此需要通过自动化的方式来进行规则校验。由于本人所在的项目以SQL Server数据库为基础,于是本人决定通过使用SqlScriptDom…

静态库和动态库制作

文章目录 前言一、静态库和动态库介绍1、静态库2、动态库 二、静态库的制作及使用1、准备好源码2、编译源码生成 .o 文件3、制作静态库4、使用静态库 三、动态库的制作及使用1、生成位置无关的 .o 文件2、制作动态库3、使用动态库4、指定动态库路径并使其生效 四、对比1、静态库…

初步制作做一个AI智能工具网站,持续更新

文章目录 介绍AI对话AI绘画AI音视频AI图片处理AI小工具体验 介绍 网页有五大部分:AI对话、AI绘画、AI音视频、AI 图片处理、AI小工具。 AI对话 AI对话是指人工智能技术在模拟人类对话交流方面的应用。通过使用自然语言处理和机器学习算法,AI对话系统可…

Flink CDC系列之:基于 Flink CDC 构建 MySQL 和 Postgres 的 Streaming ETL

Flink CDC系列之:基于 Flink CDC 构建 MySQL 和 Postgres 的 Streaming ETL 一、技术路线二、MySQL数据库建表三、PostgreSQL数据库建表四、在 Flink SQL CLI 中使用 Flink DDL 创建表五、关联订单数据并且将其写入 Elasticsearch 中六、Kibana查看商品和物流信息的…

基于Java+SpringBoot+Vue的书籍学习平台设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Chrome

Chrome 简介下载 简介 Chrome 是由 Google 开发的一款流行的网络浏览器。它以其快速的性能、强大的功能和用户友好的界面而闻名,并且在全球范围内被广泛使用。Chrome 支持多种操作系统,包括 Windows、macOS、Linux 和移动平台。 Chrome官网: https://ww…

深度剖析堆栈指针

为什么打印root的值与&root->value的值是一样的呢 测试结果: *号一个变量到底取出来的是什么? 以前我写过一句话,就是说,如果看到一个*变量,那就是直逼这个变量所保存的内存地址,然后取出里面保存的…

Java负载均衡算法实现与原理分析(轮询、随机、哈希、加权、最小连接)

文章目录 一、负载均衡算法概述二、轮询(RoundRobin)算法1、概述2、Java实现轮询算法3、优缺点 三、随机(Random)算法1、概述2、Java实现随机算法 四、源地址哈希(Hash)算法1、概述2、Java实现地址哈希算法…

在Java中对XML的简单应用

XML 数据传输格式1 XML 概述1.1 什么是 XML1.2 XML 与 HTML 的主要差异1.3 XML 不是对 HTML 的替代 2 XML 语法2.1 基本语法2.2 快速入门2.3 组成部分2.3.1 文档声明格式属性 2.3.2 指令(了解):结合CSS2.3.3 元素2.3.4 属性**XML 元素 vs. 属…

c++ 学习系列 -- 智能指针

一 为什么引入智能指针?解决了什么问题? C 程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。但使用普通指针,容易造成内存泄露(忘记释放)、二次释放、程序发生异常时内存泄…

Springboot整合RabbitMq,详细步骤

Springboot整合RabbitMq,详细步骤 1 添加springboot-starter依赖2 添加连接配置3 在启动类上添加开启注解EnableRabbit4 创建RabbitMq的配置类,用于创建交换机,队列,绑定关系等基础信息。5 生产者推送消息6 消费者接收消息7 生产者…

闭环控制方法及其应用:优缺点、场景和未来发展

闭环控制是一种基本的控制方法,它通过对系统输出与期望值之间的误差进行反馈,从而调整系统输入,使系统输出更加接近期望值。闭环控制的主要目标是提高系统的稳定性、精确性和鲁棒性。在实际应用中,闭环控制有多种方法,…

开源代码分享(13)—整合本地电力市场与级联批发市场的投标策略(附matlab代码)

1.引言 1.1摘要 本地电力市场是在分配层面促进可再生能源的效率和使用的一种有前景的理念。然而,作为一个新概念,如何设计和将这些本地市场整合到现有市场结构中,并从中获得最大利润仍然不清楚。在本文中,我们提出了一个本地市场…