BGP选路之Preferred value

原理概述
当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由,然后将该最优BGP路由与去往同一目标网络的其他协议路由进行比较,从而决定是否将该最优 BGP路由放进路由表中。注意,路由器最终是根据路由表进行实际报文转发的。在对BGP路由属性进行比较时,BGP会遵循一定的先后次序进行比较,直到确定出一条最优路由为止。在 BGP路由属性的比较过程中,首先要比较的就是路由信息首选值PreferredValue,也简称为PrefVal。
路由信息的首选值Preferred Value的取值范围是0~65535,取值越大,优先级越高。缺省情况下,Preferred Value取值为0;通过修改Preferred Value 的值,可以很方便地实现对路径选择的控制。Preferred Value属性不会发送给任何BGP邻居,仅作为本地路由器用来选择最佳BGP路径之用。
实验目的
理解 BGP路由信息首选值Preferred Value的作用

掌握修改Preferred Value 属性的方法
掌握通过修改Preferred Value属性来实现流量分担的方法实验内容

本实验包含了4台路由器,R1、R2、R3属于AS 100,R4属于AS 200。R1、R2、R3之间运行 RIPv2协议,同时,所有路由器都运行BGP协议,并通过各自的Loopback 0接口建立BGP邻居关系。R4通告自己的Loopback 1和Loopback 2两个接口所在的网络到BGP进程中,R3通告自己的Loopback 1接口所在的网络到BGP进程中。最后,通过修改Preferred Value的值,使得R3的 Loopback 1接口去往R4的 Loopback 1和Loopback 2接口的报文分别通过R1与R2讲行转发,从而实现流量分担,并互为备份。

 

 边界路由器从EBGP的对等体中学习到的路由,在传递的过程中下一跳地址为边界路由器对等体的出接口地址。导致IBGP中除了此边界路由器外,其他路由器学到的此路由的下一跳均为边界路由器对等体的出接口地址;只有配置了next-hop-local后,其他路由器学到的此路由的下一跳改编为边界路由器的ip地址

1、基本配置
R1:
sys
sysname R1
int loop 0
ip add 10.0.1.1 32
int g0/0/0
ip add 10.0.13.1 24
int g0/0/1
ip add 10.0.14.1 24
q
rip 1undo summaryversion 2network 10.0.0.0
ip route-static 10.0.4.4 255.255.255.255 10.0.14.4
bgp 100router-id 10.0.1.1peer 10.0.2.2 as-number 100peer 10.0.2.2 connect-interface LoopBack0peer 10.0.3.3 as-number 100peer 10.0.3.3 connect-interface LoopBack0peer 10.0.4.4 as-number 200peer 10.0.4.4 ebgp-max-hop 255peer 10.0.4.4 connect-interface LoopBack0#ipv4-family unicastundo synchronizationpeer 10.0.2.2 enablepeer 10.0.2.2 next-hop-localpeer 10.0.3.3 enablepeer 10.0.3.3 next-hop-localpeer 10.0.4.4 enable
#R2:
sys
sysname R2
int loop 0
ip add 10.0.2.2 32
int g0/0/1
ip add 10.0.23.2 24
int g0/0/0
ip add 10.0.24.2 24
q
rip 1undo summaryversion 2network 10.0.0.0
ip route-static 10.0.4.4 255.255.255.255 10.0.24.4bgp 100peer 10.0.1.1 as-number 100peer 10.0.1.1 connect-interface LoopBack0peer 10.0.3.3 as-number 100peer 10.0.3.3 connect-interface LoopBack0peer 10.0.4.4 as-number 200peer 10.0.4.4 ebgp-max-hop 255peer 10.0.4.4 connect-interface LoopBack0#ipv4-family unicastundo synchronizationpeer 10.0.1.1 enablepeer 10.0.1.1 next-hop-localpeer 10.0.3.3 enablepeer 10.0.3.3 next-hop-localpeer 10.0.4.4 enableR3:
sys
sysname R3
int loop 0
ip add 10.0.3.3 32
int loop 1
ip add 10.0.33.33 32
int g0/0/0
ip add 10.0.13.3 24
int g0/0/1
ip add 10.0.23.3 24
q
rip 1undo summaryversion 2network 10.0.0.0
bgp 100router-id 10.0.3.3peer 10.0.1.1 as-number 100peer 10.0.1.1 connect-interface LoopBack0peer 10.0.2.2 as-number 100peer 10.0.2.2 connect-interface LoopBack0#ipv4-family unicastundo synchronizationnetwork 10.0.33.33 255.255.255.255peer 10.0.1.1 enablepeer 10.0.2.2 enableR4:
sys
sysname R4
int loop 0
ip add 10.0.4.4 32
int loop 1
ip add 10.0.44.44 32
int loop 2
ip add 10.0.55.55 32
int g0/0/0
ip add 10.0.14.4 24
int g0/0/1
ip add 10.0.24.4 24
q
bgp 200peer 10.0.1.1 as-number 100peer 10.0.1.1 ebgp-max-hop 255peer 10.0.1.1 connect-interface LoopBack0peer 10.0.2.2 as-number 100peer 10.0.2.2 ebgp-max-hop 255peer 10.0.2.2 connect-interface LoopBack0#ipv4-family unicastundo synchronizationnetwork 10.0.44.44 255.255.255.255network 10.0.55.55 255.255.255.255peer 10.0.1.1 enablepeer 10.0.2.2 enable
#
ip route-static 10.0.1.1 255.255.255.255 10.0.14.1
ip route-static 10.0.2.2 255.255.255.255 10.0.14.1

 验证一下配置的情况

 

 

 可以看到,在R3的BGP路由表中,去往10.0.44.44/32和10.0.55.55/32网络的路由条目各有两条,但是最终R3优选的都是下一跳为10.0.1.1的路由。这两条BGP路由信息的下一跳不同,但路由信息首选值PrefVal、本地优先级LocPrf、路由生成方式、AS_Path属性、Origin属性、MED属性、BGP对等体类型(IBGP邻居或EBGP邻居)等都是相同的,所以最终BGP选择了Router-ID较小的路由器R1发布的路由作为最佳路由。R1和R2的BGP路由表中,去往10.0.44.44/32和10.0.55.55/32网络的路由也各有两条,但是最终优选的都是下一跳为10.0.4.4的路由。这两条BGP路由信息的下一跳不同,但路由信息首选值 PrefVal、本地优先级LocPrf、路由生成方式、AS_Path属性、Origin属性、MED属性等都是相同的,但是 BGP对等体类型不同,所以最终R1和R2都选择了从EBGP邻居R4那里接收到的路由作为最佳路由。另外,无论是通过EBGP邻居还是IBGP 邻居学习到的BGP路由条目,在 BGP路由表中 PrefVal都显示为缺省值0。

 可以看到,R3的确是通过R1去往AS 200的,R2没有分担任何流量。接下来,在R3上进行Preferred Value值的修改,使得R2分担从R3去往10.0.55.55/32的流量。

route-policy 1 permit node 10
 if-match ip-prefix 1
 apply preferred-value 100
#
route-policy 1 permit node 20
#
ip ip-prefix 1 index 10 permit 10.0.55.55 32

bgp  100

  peer 10.0.2.2 route-policy 1 import

 

 可以看到,R1和R2的BGP路由表在修改了R3上的 Preferred Value值之后没有发生变化,说明了Preferred Value值只是作为本地路由器用来选择最佳BGP路由之用,并不会传递给任何BGP邻居。

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

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

相关文章

fastadmin 批量上传图片

1.自定义按钮 <button type"button" id"faupload-local" class"btn btn-primary btn-danger faupload" data-input-id"c-local" data-multiple"true" data-preview-id"p-local" data-url"{:url(ajax/upl…

OAuth2.0 or Spring Session or 单点登录流程

1.社交登录 2.微博社交登录 第三方登录 1.登录微博 2.点击网站接入 3.填写完信息&#xff0c;到这里&#xff0c;写入成功回调 和 失败回调 是重定向&#xff0c;所以可以写本地的地址 3.认证 分布式Session spring-session 域名不一样 发的 jSessionId 就不同&#xff0c…

自定义element主题

说明&#xff1a;这里使用的是vue3做的demo&#xff0c;所以使用的是element-plus&#xff0c;不同版本大同小异 一、安装element-plus npm install element-plus --save二、在main.ts中引入 import ElementPlus from "element-plus"; import "element-plus/d…

如何使用Python的http.server模块(或Flask/Django的简化版本)实现一个简单的HTTP服务器,能够处理GET和POST请求

使用Python的http.server模块实现HTTP服务器 http.server模块是Python标准库中的一部分&#xff0c;它提供了一个非常基础的HTTP服务器实现。虽然这个服务器主要用于测试和开发目的&#xff0c;但它确实能够处理GET和POST请求。不过&#xff0c;请注意&#xff0c;http.server…

MySQL-视 图

视 图 创建视图 视图是从一个或者几个基本表&#xff08;或视图&#xff09;导出的表。它与基 本表不同&#xff0c;是一个虚表。 语法&#xff1a; create view 视图名 【view_xxx/v_xxx】 说明&#xff1a; • view_name 自己定义的视图名&#xff1b; • as 后面是这…

【web]-反序列化-easy ? not easy

打开后看到源码 <?php error_reporting(0); highlight_file(__FILE__);class A{public $class;public $para;public $check;public function __construct(){$this->class "B";$this->para "ctfer";echo new $this->class ($this->para…

Kubernetes学习指南:保姆级实操手册03——规划部署

Kubernetes学习指南&#xff1a;保姆级实操手册03——规划部署 一、部署节点规划 Hostnameiprolesk8s-master0110.255.210.1masterk8s-master0210.255.210.2masterk8s-master0310.255.210.3masterk8s-node0110.255.210.4worker nodek8s-node0210.255.210.5worker nodek8s-nod…

【深度学习】LDA线性判别分析

date:2024/07/23 author:sion tag:Deeping Learn LDA(线性判别分析) 文章目录 LDA(线性判别分析)1.LDA是什么LDA是一种解决二分类问题的线性方法。它描述&#xff0c;对于给定样例集&#xff0c;将样例点投影到一条直线上&#xff0c;这条直线能使异样的样例相距远&#xff0c;…

为Jetson Xavier NX安装合适版本的pytorch(解决torch not compiled with cuda enabled)

Jetson Xavier NX 上我的环境是torch2.3.1 cuda 11.4 cuDNN8.4.1 sudo jtop和 nvcc -V都正常显示 有cuda11.4 环境变量路径也配置了 但是我print(“CUDA available:”, torch.cuda.is_available())输出为False 运行torch.cuda.current_device() 报错是torch not compiled wi…

【日常介绍】—pycharm2024.1变化

目录 一、性能提升 二、代码编辑与导航 三、重构与版本控制 四、调试与测试 五、集成工具与云服务 六、用户界面与体验 七、其他新特性 一、性能提升 项目加载时间优化&#xff1a;改进了项目索引机制&#xff0c;使得初次加载时间更快。代码分析引擎优化&#xff1a;提…

Linus: vim编辑器的使用,快捷键及配置等周边知识详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 vim的安装创建新用户 adduser 用户名Linus是个多用户的操作系统是否有创建用户的权限查看当前用户身份:whoami** 怎么创建设置密码passwdsudo提权(sudo输入的是用户…

Golang | Leetcode Golang题解之第275题H指数II

题目&#xff1a; 题解&#xff1a; func hIndex(citations []int) int {n : len(citations)return n - sort.Search(n, func(x int) bool { return citations[x] > n-x }) }

数驭未来,景联文科技构建高质大模型数据库

国内应用层面的需求推动AI产业的加速发展。根据IDC数据预测&#xff0c;预计2026年中国人工智能软件及应用市场规模会达到211亿美元。 数据、算法、算力是AI发展的驱动力&#xff0c;其中数据是AI发展的基石&#xff0c;中国的数据规模增长速度预期将领跑全球。 2024年《政府工…

go语言day15 goroutine

Golang-100-Days/Day16-20(Go语言基础进阶)/day17_Go语言并发Goroutine.md at master rubyhan1314/Golang-100-Days GitHub 第2讲-调度器的由来和分析_哔哩哔哩_bilibili 一个进程最多可以创建多少个线程&#xff1f;-CSDN博客 引入协程 go语言中内置了协程goroutine&#…

Python实现图片相似度比较之SSIM

Python实现图片相似度比较之SSIM 解读 SSIM 数值 结构相似性指数 (SSIM) 是用来衡量两张图像相似度的指标&#xff0c;范围从 -1 到 1&#xff1a; 1 表示完全相同。0 表示没有任何相似性。负值 表示图像之间的差异超出了正常范围&#xff08;通常是因为两张图像的内容差异非…

【qiankun微前端】已有工程改造微前端

最初接触微前端有种高大上的感觉&#xff0c;细细研究了一下&#xff0c;其实也不难&#xff0c;本文就不介绍iframe&#xff0c;single-spa之类的东西了&#xff0c;直奔主题。 当前系统有横向一级顶部路由和竖向二级侧面路由&#xff0c;点击一级路由会触发二级路由的切换&a…

积木报表-自定义报表

文章目录 一、springboot初始项目集成积木报表二、springboot正式项目集成积木报表注意点注意点1&#xff1a;依赖下载失败原因&#xff1a;Maven私服设置注意点2&#xff1a;dependency在【springboot初始项目集成积木报表】情况下不要放在根目录的pom里&#xff0c;放子模块的…

前端实现自定义表单组件开发

1、组件介绍 自定义表单,表单上的字段、输入控件、验证规则、数据结构等可动态设置。 2、接口数据介绍 [{"condition_type":13,"condition_name":"发送者匹配模式","setting":{"base_filed":{"fields":[{&quo…

代码随想录训练营第四十七天 647回文子串

第一题&#xff1a; 原题链接&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; dp[i][j]的含义&#xff1a;表示从i到j之间的子串是否是回文子串。 那么考虑三种情况: 在s[i] s[j]的前提下&#xff1a; 如果i j说明当前是一个元素&a…

【Python系列】详解 open 函数:文件操作的基石

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…