BGP(边界网关路由协议)小实验

news2024/11/16 17:34:17

目录

  • 实验要求
  • ospf协议启动
  • 关于BGP基本知识点
  • BGP关系建立的配置
  • BGP的宣告

实验要求

如下实验拓扑,各个自治系统区域和网段已经标注
基本的ip配置,环回配置就不再展示。

要求:除了R5的环回外,其他环回均可以互相访问
在这里插入图片描述

ospf协议启动

该协议就只在as2中启动就好
命令不再解释

对R2
[r2]ospf 1 router-id 3.3.3.3
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[r2-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255

对R3
[r3]ospf 1 router-id 3.3.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[r3-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 34.1.1.0 0.0.0.255

对R4
[r4]ospf 1 router-id 4.4.4.4
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[r4-ospf-1-area-0.0.0.0]network 34.1.1.0 0.0.0.255

到这里as2之间是可以互通了,接下来让整个AS通

关于BGP基本知识点

1,属于无类别的路径矢量协议,EGP协议中最流行的技术,工作在AS(自治系统)之间
2,BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目
3,AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路等

一,BGP特点:

1)无类别路径矢量 -----距离矢量的升级版---AS--BY--AS
2)使用单播更新来发送所有信息;基于TCP 179端口工作
3)增量更新--仅触发无周期
4)具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
5)可以在进项和出项对流量实施强大的策略--可控性
6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
7)BGP支持认证和聚合(汇总)

二,BGP数据包:
基于TCP的179端口工作,故BGP协议中所有的数据包均需要在tcp会话建立后,基于TCP的会话来进行传输及可靠性的保障。
过程:

1,TCP的三次握手来寻找到邻居
Open       仅负责邻居关系的建立,正常进收发一次即可;携带route-id;
Keeplive    保活 周期1min查询邻居关系是否存在;实际保活TCP会话;hold time 默认3min
Update     携带路由条目 目标网络号+各种属性
Notification   出现错误数据时收发;

三,BGP工作过程:

1、配置完成后,邻居间单播TCP三次握手,目标端口179,建立TCP的会话;之后所有的BGP协议数据包基于该会话进行传输
2,会话建立后,邻居间正常收发一次open报文建立BGP的邻居关系,生成邻居表
3,邻居关系建立后,默认每1min,使用keeplive周期保活邻居关系(周期保活TCP会话)
4,2、邻居关系建立后,管理员选择性将本地路由表中通过任意来源获取的路由条目,向BGP协议中进行宣告;使用updata数据包进行邻居间路由共享;之后生成BGP表
5,收敛完成,仅keeplive周期保活即可
6,若出现错误信息,邻居间将使用Notification报文进行报错操作

四,概念名词

邻居---直连  因为BGP协议中存在非直连邻居的需求,故BGP邻居称为毗邻关系;
EBGP邻居关系 ----  外部BGP邻居关系,建邻的两台设备处于不同的AS中
IBGP邻居关系  ---- 内部BGP邻居关系,建邻的两台设备处于相同的AS中

五,BGP的路由黑洞问题

非直连建邻到达控制层面路由条目可传递,递归计算路由可达,而实际数据层面流量在经过没有运行BGP协议的路由器时无法通过,最终有去无回
解决办法:

1、	物理、逻辑拓扑全连 --  物理链路直连、或者vpn
2、	邻居关系全连 – 网络中所有设备运行BGP 
3、	BGP重发布到IGP(LAB中使用的)
4、	MPLS 多协议标签交换--- 推荐做法

六,BGP的防环机制 –水平分割
1、EBGP水平分割是为了解决EBGP环路;
依赖了BGP路由条目中的一种属性来进行防环;
BGP协议在传递路由条目的过程中,将记录所有经过的AS的编号;
本地从一个IBGP邻居处学习到的路由条目,不得传递给本地的其他IBGP邻居;
AS-BY-AS在一个AS内部条目传递的过程中,默认不会修改任何的属性;

解决办法
在IBGP水平分割的限制下,虽然避免了IBGP的环路产生,但同时也使得AS内部为了能够传递路由条目,必须两两间建立IBGP邻居关系,邻居关系成指数上升,配置量巨大;
后期可以依赖打破水平分割的机制来解决: 联邦、路由反射器

BGP关系建立的配置

图中可以看出,R1和R5为EBGP

对EBGP R1
[r1]bgp 1    启动bgp协议,as号为1 
[r1-bgp]router-id 1.1.1.1 建议写一个router-id
[r1-bgp]peer 12.1.1.2 as-number 2   宣告邻居并且说明它所在的as号

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

对EBGP R5
[r5]bgp 3
[r5-bgp]peer 45.1.1.1 as-number 2
[r5-bgp]router-id 5.5.5.5

对iBGP R4
[r4]bgp 3
[r4-bgp]peer 45.1.1.2 as-number 3

IBGP邻居关系建立,在一个AS内部,拓扑正常较为负载;建议使用环回接口地址作为源、目标ip地址
为了避免BGP路由黑洞的产生,as2中所有的设备均运行bgp协议,为了让传入的路由为优秀可以传递和加表,需要修改下一跳。

R2与R3和R4建邻
[r2-bgp]peer 3.3.3.3 as-number 2
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 说明连接的源接口为环回口
[r2-bgp]peer 4.4.4.4 as-number 2
[r2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r3-bgp]peer 2.2.2.2 as-number 2
[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[r4-bgp]peer 2.2.2.2 as-number 2
[r4-bgp]peer 2.2.2.2 connect-interface LoopBack 0

R3和R4建立邻居
[r3-bgp]peer 4.4.4.4 as-number 2
[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r4-bgp]peer 3.3.3.3 as-number 2
[r4-bgp]peer 3.3.3.3 connect-interface LoopBack 0

这里所有的bgp邻居配置完成了
当建邻配置完成后,邻居间通过三次握手,建立TCP的会话,如图R2 上面看到的与其连接的tcp状态
当TCP会话建立后,邻居间BGP协议将正常收发一次open报文,建立BGP邻居关系;生成邻居表
在这里插入图片描述

BGP的宣告

运行BGP协议的路由可以宣告本地路由表中通过任何协议获取到的路由条目—静态、IGP、直连; 而本地通过BGP协议学习到的路由,只要在本地依然优秀,将继续将本地的其他BGP邻居传输;
注意:宣告时,宣告的条目必须同本地路由表中的记录完全一致
一旦进行宣告配置,条目将加载于本地的BGP表中—装载本地发出及接收到的所有路由信息

对R1宣告

[r1]bgp 1
[r1-bgp]network 1.1.1.1 24

这时可以在R1上查看bgp表情况,如下图在这里插入图片描述
这一条路由显示为 *> 说明这一条路由可以传递并且入表,说明R2是可以接受到,这时又在R2上面继续查看发现可以看到任然为优秀,所以还可以传,到R3上面看发现这一条路由前面显示的是 i ,为不优秀,所以不能加表和继续传输。原因在于下一跳的问题,2个as间传递路由时下一跳将会自动改,而as之间的传递就不能自动改下一跳。

这个实验中R1和R2在不同的as,R1将路由传给R2时,R2会自动将下一跳改为 12.1.1.1 ,而在R2,R3之间是同一个as,则R3上不能自动改下一跳,R3不认识12.1.1.1这一网段,所以不优秀,不能继续传递和加表。

这个时候就要手动在路由器上面修改下一跳为本地

对R2
[r2]bgp 2
[r2-bgp]peer 3.3.3.3 next-hop-local

对R3
[r3]bgp 2
[r3-bgp]peer 4.4.4.4 next-hop-local

最后宣告各个路由器的直连网段即可R1环回ping通R5的环回

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

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

相关文章

C语言进阶——自定义类型——位段、枚举、联合

结构体 目录 一. 位段 1.概念 2.位段的内存分配 3.位段的跨平台问题 4.位段的应用 二. 枚举 1.枚举类型的定义 2.枚举的优点 3.枚举的使用 三. 联合(共用体) 1.联合类型的定义 ​编辑 2.联合的特点 3. 联合大小的计算 一. 位段 1.…

Git 合并多条commit

文章目录修改前开始修改第一种方式: 命令行第二种方式: Android Studio遇到冲突的解决办法第一种:修改到底,干就完事了第二种:回滚吧,有点慌修改前 开始修改 第一种方式: 命令行 git rebase -i 01fc32484fb2d2229aa20 // 这里对应的是init的…

osg fbo(四),将颜色缓冲区图片中的牛通过shader变绿

osg fbo&#xff08;三&#xff09;中&#xff0c;把整个屏幕变绿了&#xff0c;因为是把shader添加到了颜色缓冲区图片上了。如果只想把牛变绿&#xff0c;就需要把shader添加到原始场景根中。 即 osg::ref_ptr<osg::StateSet> statset_SceneRoot sceneRoot->getOr…

一、Java框架之Spring配置文件开发

文章目录1. 基础概念1.1 Spring Framework1.2 核心概念产生背景IoC、Bean、DI2. 入门案例2.1 普通Maven项目2.2 IoC入门案例2.3 DI入门案例3. bean配置3.1 bean基础配置bean的基础配置bean的别名配置bean的作用范围3.2 bean实例化实例化方法1&#xff1a;构造方法实例化方法2&a…

Chrome浏览器http访问跨越问题与解决方法

一、Chromium 内核&#xff08;<93版本&#xff09;跨越问题解决方法 设置Chrome浏览器的 disable-web-security, 实现跨域访问后端的接口。这个参数可以降低chrome浏览器的安全性&#xff0c;禁用同源策略&#xff0c;利于开发人员本地调试。 解决办法&#xff1a; 新建一…

【区间合并】AcWing 803. 区间合并

803. 区间合并 文章目录题目描述输入格式&#xff1a;输出格式&#xff1a;数据范围输入样例输出样例方法&#xff1a;区间合并解题思路代码复杂度分析&#xff1a;题目描述 给定 nnn 个区间 [li,ri][l_i,r_i][li​,ri​]&#xff0c;要求合并所有有交集的区间。 注意如果在端…

按键精灵免字库本地识别OCR

按键精灵免字库识别—基于百度飞桨PaddleOCR的RapidOCR前言为什么为什么有大漠了还要使用其它OCR为什么要使用RapidOCR开发PaddleOCR介绍PaddleOCR使用衍生项目版——小白方案按键精灵post调用图片转base64方法转json方法post调用JVM版改为mavenOcrEngine路径idea Run配置网页版…

Hudi系列7:使用SparkSQL操作Hudi

文章目录一. SparkSQL连接Hudi1.1 Hive配置1.2 SparkSQL连接Hudi二. 创建表2.1 常规的建表2.2 CTAS三. 插入数据四. 查询数据五. 更新数据5.1 普通5.2 MergeInto六. 删除数据七. Insert Overwrite参考:一. SparkSQL连接Hudi 1.1 Hive配置 我们需要将Hive 的 metastore服务独立…

【Ubuntu18.04系统开启防火墙】

【Ubuntu18.04系统开启防火墙】1 查看防火墙状态2 开启防火墙3 关闭防火墙4 允许开启防火墙时&#xff0c;ssh连接和22端口许可4.1 允许tcp 22端口通过防火墙4.2 允许SSH服务4.3 防火墙规则重启4.4 验证端口号是否开启1 查看防火墙状态 sudo ufw status2 开启防火墙 sudo ufw…

如何重装windows10系统(超详细图文版)

目录1.&#xff08;制作装机盘&#xff09;准备好装机U盘2. (下载驱动软件&#xff09;(※这步很重要&#xff09;3.&#xff08;下载镜像&#xff09;准备好要安装的新操作系统镜像4.&#xff08;查询bios快捷键&#xff09;查询你的主板品牌&#xff0c;找到你主板品牌进入bi…

医用球囊和导管制造中的精确压力控制

摘要&#xff1a;在医用导管和球囊成型过程中对压力控制有非常严格要求&#xff0c;如高精度和宽量程的控制能力&#xff0c;需具备可编程、自动手动切换和外接压力传感器功能&#xff0c;还需具备可用于球囊泄漏、爆破和疲劳性能测试的多功能性。本文介绍了可满足这些要求的压…

连Pycharm都不知道怎么用,学什么Python?(doge))

python初始设置日常使用一、设置Python 解释器1.1 远程配置2、调整字体及其大小2.1 调整编辑器字体及其大小2.2 调整控制台的字体及其大小3、设置编码4、修改文件背景颜色5、设置Git 和Github5.1 配置git5.2 配置github5.3 下载仓库内容6 、新建.py文件时默认添加信息7、恢复代…

[ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

Demo演示:ARM+FPGA主流嵌入式架构板卡-HDMI显示摄像画面

各位工程师小伙伴们&#xff0c;大家好&#xff0c;ARMFPGA 作为一种主流的嵌入式系统的处理架构。相对于单纯的的ARM开发或单纯的FPGA开发&#xff0c;ARM加FPGA能够带来功耗、性能、成本等组合优势。 米尔新推出的MYD-JX8MMXA7开发板基于ARMFPGA架构&#xff0c;集成i.MX 8M…

多线程理解之3

1.怎么解决多线程并发访问临界资源的产生的问题&#xff1f; 用锁 pthread_mutex_t mtx解决。 2.mtx锁的作用具体是什么&#xff1f; 先把临界资源锁起来&#xff0c;再把它打开&#xff0c;这样一来&#xff0c;多个执行流想要同时执行临界资源就不可以了&#xff0c;只能一个…

[C++]string的使用及模拟实现

&#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录一、stri…

Android Compose——Paging3

Paging3效果视频简述HiltRetrofit访问接口网络实例PagingSourceViewModelView效果视频 简述 本Demo采用HiltRetrofitPaging3完成&#xff0c;主要为了演示paging3分页功能的使用&#xff0c;下列为Demo所需要的相关依赖 //retrofitimplementation com.squareup.retrofit2:retr…

多线程之内功精修

文章目录一、常见的锁策略&#xff08;一&#xff09;悲观锁和乐观锁&#xff08;二&#xff09;读写锁和互斥锁&#xff08;三&#xff09;重量级锁和轻量级锁&#xff08;四&#xff09;挂起等待锁和自旋锁&#xff08;五&#xff09;公平锁和非公平锁&#xff08;六&#xf…

nerdctl容器管理工具

nerdctl容器管理工具nerdctl简介nerdctl的两个版本安装nerdctl1.配置nerdctl自动补全2.将nerdctl设别名为dockernerdctl使用方法1、运行/计入容器2、容器管理3、镜像管理4、镜像构建nerdctl简介 k8s1.22版本及以上强制安装containerd,要求卸载Docker. 虽然Docker能干的事Conta…

嗨格式数据恢复的 10 种最佳替代方法

当您意识到自己删除了错误的文件时&#xff0c;您是否有过那种恐惧和无助的感觉&#xff1f;或者&#xff0c;也许您的计算机在一项重要任务到期的前一天死机了——您所有的辛勤工作突然消失了。 嗨格式数据恢复是一款流行的数据恢复软件应用程序&#xff0c;它为找回这些文件…