BGP小实验

光只是知道理论还不行,还是要多动手练练,就练一个bgp实验吧,梳理一下做题思路

实验要求:

大体要求就是:R1的环回可以ping通R2-R5的环回,R5同理

思路:

基础配置:

第一步先把地址环回先都配了

[r1]int g 0/0/1
[r1-GigabitEthernet0/0/1]ip add 12.1.1.1 24
[r1]int lo0
[r1-LoopBack0]ip add 1.1.1.1 24

第·二步就是在AS2内起OSPF协议,让AS内互通

[r2]ospf 1 router-id 2.2.2.2
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]dis this
[V200R003C00]
#
 area 0.0.0.0 
  network 2.2.2.2 0.0.0.0 
  network 23.1.1.1 0.0.0.0 
#

--------------------------------------------------------------------------------------------------------------------

[r3]ospf 1 router-id 3.3.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]dis this
[V200R003C00]
#
 area 0.0.0.0 
  network 3.3.3.3 0.0.0.0 
  network 23.1.1.2 0.0.0.0 
  network 34.1.1.1 0.0.0.0 
#

---------------------------------------------------------------------------------------------------------------------
return
[r4]ospf 1 router-id 4.4.4.4
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]dis this
[V200R003C00]
#
 area 0.0.0.0 
  network 4.4.4.4 0.0.0.0 
  network 34.1.1.2 0.0.0.0 
#

BGP配置

第三步就是配EBGP和IBGP(在同一个as内的配IBGP,不在一个as的配EBGP)

1) 直连的EBGP邻居关系建立

[r1]bgp 1 启动BGP协议,启动时需要键入AS号;没有多进程概念

[r1-bgp]router-id 1.1.1.1 建议配置RID;若不配置将自动生成—规则同OSPF相同

[r1-bgp]peer 12.1.1.2 as-number 2 对端IP地址,及对端所在的AS编号

[r2]bgp 2
[r2-bgp]dis this
[r2-bgp] router-id 2.2.2.2
 [r2-bgp]peer 3.3.3.3 as-number 2 ,对端所在AS号
 [r2-bgp]peer 3.3.3.3 connect-interface LoopBack0 对端环回接口ip地址
 [r2-bgp]peer 4.4.4.4 as-number 2 
 [r2-bgp]peer 4.4.4.4 connect-interface LoopBack0
 [r2-bgp]peer 12.1.1.1 as-number 1 

[r3]bgp 2
 [r3-bgp]router-id 3.3.3.3
 [r3-bgp]peer 2.2.2.2 as-number 2 
[r3-bgp] peer 2.2.2.2 connect-interface LoopBack0
[r3-bgp] peer 4.4.4.4 as-number 2 
 [r3-bgp]peer 4.4.4.4 connect-interface LoopBack0

[r4]bgp 2
[r4-bgp] router-id 4.4.4.4
[r4-bgp] peer 2.2.2.2 as-number 2 
 [r4-bgp]peer 2.2.2.2 connect-interface LoopBack0
 [r4-bgp]peer 3.3.3.3 as-number 2 
[r4-bgp] peer 3.3.3.3 connect-interface LoopBack0
[r4-bgp] peer 5.5.5.5 as-number 3 
 [r4-bgp]peer 5.5.5.5 connect-interface LoopBack0

[r5]bgp 3  AS3区域
[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 LoopBack0

可能有好奇的小明问?为什么不用它实际的物理链路地址如23.1.1.1呢,而是用环回如3.3.3.3?

答:在实际的网络中,这里的环回相当于用户,我们真正做的是用户之间能互相通信,同时,在一个AS内部,拓扑正常较为复杂 ,两个路由器之间不可能只有一个物理链路,还会有备份链路,所以我们只需要用户能互通,不用管是走的哪个链路。

EBGP邻居间存在多条物理链路时如R4-R5,也建议使用环回接口地址来建立

第四步:IP可达,建议静态路由

[r4]ip route-static 5.5.5.5 255.255.255.255 45.1.1.2
[r4]ip route-static 5.5.5.5 255.255.255.255 54.1.1.2

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

正常环回做为源、目ip地址建立邻居关系

第五步:默认IBGP邻居间数据包的TTL值为255,EBGP邻居间TTL为1;故一旦使用环回建立ebgp邻居关系,必须修改TTL值,否则无法建立

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

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

当建邻配置完成后,邻居间通过三次握手,建立TCP的会话

[r2]display tcp status

当TCP会话建立后,邻居间BGP协议将正常收发一次open报文,建立BGP邻居关系;生成邻居表:

[r2]display bgp peer

BGP local router ID : 2.2.2.2

Local AS number : 2

Total number of peers : 1 Peers in established state : 1

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv

12.1.1.1 4 1 8 8 0 00:06:36 Established 0

表格最后的数值,标识本地从该邻居处学习到的路由条目的数量;

第六步:BGP的宣告;

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

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

[r1-bgp]network 1.1.1.0 24

[r2-bgp]network 2.2.2.0 24

[r3-bgp]network 3.3.3.0 24

[r4-bgp]network 4.4.4.0 24

[r5-bgp]network 5.5.5.0 24

旦进行宣告配置,条目将加载于本地的BGP表中;--装载本地发出及接收到的所有路由信息

[r1]display  bgp routing-table 查看BGP表
​BGP Local router ID is 1.1.1.1 
​Status codes: * - valid, > - best, d - damped,
​
•               h - history,  i - internal, s - suppressed, S - Stale
​
•               Origin : i - IGP, e - EGP, ? - incomplete
​Total Number of Routes: 1
​
•      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
​*>   1.1.1.0/24            0.0.0.0          0                       0        i

状态 目标网络号 属性

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

本地的其他BGP邻居)

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

优秀的条件:1、同步问题(默认不关注) 2、下一跳可达

基于AS-BY-AS规则,条目在一个AS内部传递时将不修改条目属性;导致通过IBGP邻居学习到的BGP路由可能出现下一跳不可达;导致条目不优;

第七步:改下一跳为本地

[r2-bgp]peer 3.3.3.3 next-hop-local 将BGP路由传递给本地的邻居3.3.3.3时修改下一跳地址为本地与3.3.3.3建立邻居关系的源ip地址

[r2-bgp]peer 4.4.4.4 next-hop-local

[4-bgp]peer 2.2.2.2 next-hop-local

[r2-bgp]peer 3.3.3.3 next-hop-local

当路由条目传递给本地的EBGP邻居时,属性将自动发生变化,包括下一跳地址;

最后,由于R5是静态路由配置的,我们需要把掩码改一下

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

结果:

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

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

相关文章

二叉树练习day.7

530.二叉搜索树的最小绝对差 链接:. - 力扣(LeetCode) 题目描述: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1&…

【记录】Prompt模板|作为甲方怎么清晰专业地描述自己的需求(又名“乙方,给你的甲方扔个GPT解放自己吧”)

这篇Prompt摘抄并修改自朋友送给我的书的第49页5.2.3让ChatGPT构建提示,质量挺不错,支持一下她的博客:【好书推荐2】AI提示工程实战:从零开始利用提示工程学习应用大语言模型。 书长这样: 不啰嗦了,正文如…

多张图如何制作一图一码?图片批量转二维码的制作方法

二维码现在经常被用来作为图片的载体,将图片生成二维码之后通过扫描二维码的方式来查看图片信息,那么如果遇到需要将几十张图片分别单独制作二维码的需求时,有什么方法能够一次性批量建码呢,相信有很多的小伙伴对这个问题的解决方…

arm64位系统中编译ffmpeg

大致过程仍然和x86平台一致: ./configure xxxxmakemake install 所需要变化的是需要在 ./configure xxxx 后面多加几个编译选项 cd ffmpeg ./configure (x64下的依赖配置:......)--prefixbin --archaarch64 --target-oslinux --enable-cross-compile …

高并发高性能接口中,异步打印并采集业务日志的实现方案

一、背景 高并发接口中,为了提高接口的高性能,在需要保存审计及操作记录的时候,往往有以下常见方案: 保存到redis数据库异步保存到mysql/mongodb/es等数据库logger打印业务日志,采集与展示则交由elk模块 对于第一种…

OpenLayers6实战,OpenLayers实现鼠标拖拽方式绘制平行四边形

专栏目录: OpenLayers实战进阶专栏目录 前言 本章介绍如何使用OpenLayers在地图上使用实现鼠标拖拽方式绘制平行四边形。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用: vue项目…

初学SSRF总结

什么是SSRF SSRF是由攻击者构造通过服务端发起请求的安全漏洞。通常情况下,SSRF的攻击对象是外部无法访问的内网(因为是由服务端发起的请求所以攻击能够访问到内部系统) 由于服务端提供了从其它服务器获取数据的功能,但是有没有…

SPLD论文笔记

SLPD论文笔记 题目:SLPD: Slide-Level Prototypical Distillation for WSIs 摘要 提高特征表示能力是许多全玻片病理图像 (WSI) 任务的基础。最近的工作在病理特异性自我监督学习(SSL)方面取得了巨大成功。然而&…

C++初阶:反向迭代器

reverse_iterator的封装实现 Reverse_Iterator.h namespace xx {// 所有容器的反向迭代器// 迭代器适配器template<class Iterator, class Ref, class Ptr>struct Reverse_iterator{Iterator _it;typedef Reverse_iterator<Iterator, Ref, Ptr> Self;Reverse_iter…

Vue中如何使用Tailwind CSS样式?多次引用不成功?具体步骤怎么做?

一、安装Tailwind CSS和依赖 在你的Vue项目中安装Tailwind CSS及其依赖。你可以使用npm或yarn来安装。 npm install tailwindcsslatest postcsslatest autoprefixerlatest # 或者yarn add tailwindcsslatest postcsslatest autoprefixerlatest 二、初始化Tailwind CSS np…

Linux系统中MySQL数据库大小写敏感

问题描述 最近把网站向一台新的CentOS服务器中做迁移&#xff0c;把MySQL数据库和前后端站点全都部署完成后&#xff0c;网站启动之后一直在报表名不存在的错误。 开始略微疑惑&#xff0c;以为是做数据库备份的时候漏了表&#xff0c;检查后发现并不是这么回事。 略一思索&a…

ETL工具-nifi干货系列 第九讲 处理器EvaluateJsonPath,根据JsonPath提取字段

1、其实这一节课本来按照计划一起学习RouteOnAttribute处理器&#xff08;相当于java中的ifelse&#xff0c;switch case 控制语句&#xff09;&#xff0c;但是在学习的过程中遇到了一些问题。RouteOnAttribute 需要依赖处理器EvaluateJsonPath&#xff0c;所以本节课我们一起…

一天300收入打底,​一个适合任何人的创业项目!

共享旅游卡项目&#xff0c;一天300收入打底&#xff0c;一个适合任何人的创业项目&#xff01; 只要你不懒&#xff0c;生活总过得不会太差。只要你不贪&#xff0c;就算不能大富大贵&#xff0c;至少不会负债累累。 人性最难戒掉的两个字&#xff1a;一个是懒&#xff0c;另…

编译原理 学习笔记

1、代码&#xff1a; (1 2) * 3 2、词法解析&#xff1a; 3、抽象语法树&#xff1a; 4、语法树递归下降求值&#xff1a; 先Current_Node是根节点乘号&#xff0c;乘号&#xff0c;是中缀运算符&#xff0c;找左子节点&#xff0c;是加号&#xff0c;加号是中缀表达式&…

220 基于matlab的考虑直齿轮热弹耦合的动力学分析

基于matlab的考虑直齿轮热弹耦合的动力学分析&#xff0c;输入主动轮、从动轮各类参数&#xff0c;考虑润滑油温度、润滑油粘度系数等参数&#xff0c;输出接触压力、接触点速度、摩擦系数、对流传热系数等结果。程序已调通&#xff0c;可直接运行。 220直齿轮热弹耦合 接触压力…

MATLAB有限元结构动力学分析与工程应用-徐斌|【PDF电子书+配套Matlab源码】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

【fiddler】弱网测试

目录 一、测试目的 二、步骤 2.1打开弱网模式 ​ 2.2设置网络参数 &#xff08;1&#xff09;打开Rules→Customize Rules&#xff1b; &#xff08;2&#xff09;找到下面框出的代码&#xff0c;在这里设置弱网参数值&#xff1b; &#xff08;3&#xff09;设置完成后&a…

软件行业之选:CRM系统如何赋能业务增长?

“CRM系统从整合营销渠道、自动化营销流程、强化客户全周期管理、增强服务能力、完善企业内部流程、开展数字化决策六个方面赋能软件行业。” 软件行业由于存在较高的技术壁垒&#xff0c;很多时候销售与客户沟通不顺畅&#xff0c;实施与客户沟通有难度&#xff0c;售后服务周…

Java代码基础算法练习-统计学生成绩-2024.04.11

任务描述&#xff1a; 编写程序&#xff0c;输入n个(0<n<50)学生的成绩(输入-1结束)&#xff0c;要求统计并输出优秀(大任务描述:于85)、及格(60~84)和不及格(小于60)的学生人数。(成绩取值范围0~100) 任务要求&#xff1a; 代码示例&#xff1a; /*** 这个程序用于统计…

android 11修改通知栏电池信息的字体颜色

如图为红色。 对应文件为BatteryMeterView loadPercentView之后执行&#xff1a; mBatteryPercentView.setTextColor(Color.RED);