BGP之选路MED
原理概述
当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由。BGP路由属性的比较顺序为Preferred Value属性、Local Preference属性、路由生成方式、AS_Path属性、Origin属性、MED属性、BGP对等体类型等。
MED (MULTI_EXIT_DISC)也称为多出口鉴别器,它是一个4字节的整数,取值范围为0~4294967295。缺省情况下,MED 的值为0,但通过命令default med value可对其进行修改。MED的数值越小,表明相应的路由优先级越高,因此MED也常被称为Cost。MED属性的主要作用是用来控制来自邻居AS的流量从哪个入口进入到本AS中。
缺省情况下,只有去往同一目标网络的多条路由均来自同一个邻居AS时,BGP才会比较这些路由的MED值,但是,配置命令compare-different-as-med后,则会比较来自不同邻居AS的目标网络相同的BGP路由的MED值。注意,MED属性只会影响相邻两个AS,收到MED属性的AS不会把此属性再继续传递给别的AS。
实验目的
理解MED属性对BGP路径选择的影响掌握修改MED属性的方法
掌握通过修改MED值实现流量分担的方法实验内容
本实验包含了4个AS,所有的路由器都运行BGP,所有的BGP邻居关系都使用直连物理接口来建立。R1上的Loopback 1、Loopback 2、Loopback 3接口用来分别模拟3个网络172.16.1.0/24、172.16.2.0/24、192.168.1.0/24,这3个网络都被通告进BGP进程。对于通信的需求是:从AS 200去往172.16.1.0/24 的数据流量需经由R1的GE 0/0/2接口进入 AS 100,从 AS 200去往172.16.2.0/24 的数据流量需经由R1的GE 0/0/0接口进入 AS 100,从 AS 400 去往192.168.1.0/24的数据流量需先通过R4,然后经由Rl的GE 0/0/1接口进入AS 100,所有需求都应通过修改MED属性值来实现。
1、基础配置
R1:
sys
sysname R1
int loop 0
ip add 10.0.1.1 32
int loop 1
ip add 172.16.1.1 24
int loop 2
ip add 172.16.2.1 24
int loop 3
ip add 192.168.1.1 24
int g0/0/2
ip add 10.0.12.1 24
int g0/0/0
ip add 10.0.13.1 24
int g0/0/1
ip add 10.0.14.1 24
q
bgp 100router-id 10.0.1.1peer 10.0.12.2 as-number 200peer 10.0.13.3 as-number 200peer 10.0.14.4 as-number 300#ipv4-family unicastundo synchronizationnetwork 10.0.1.1 255.255.255.255network 172.16.1.0 255.255.255.0network 172.16.2.0 255.255.255.0network 192.168.1.0peer 10.0.12.2 enablepeer 10.0.13.3 enablepeer 10.0.14.4 enableR2:
sys
sysname R2
int loop 0
ip add 10.0.2.2 32
int g0/0/2
ip add 10.0.12.2 24
int g0/0/0
ip add 10.0.23.2 24
int g0/0/1
ip add 10.0.25.2 24
q
bgp 200router-id 10.0.2.2peer 10.0.12.1 as-number 100peer 10.0.23.3 as-number 200peer 10.0.25.5 as-number 400#ipv4-family unicastundo synchronizationnetwork 10.0.2.2 255.255.255.255peer 10.0.12.1 enablepeer 10.0.23.3 enablepeer 10.0.23.3 next-hop-localpeer 10.0.25.5 enableR3:
sys
sysname R3
int loop 0
ip add 10.0.3.3 32
int g0/0/1
ip add 10.0.13.3 24
int g0/0/0
ip add 10.0.23.3 24
int g0/0/2
ip add 10.0.35.3 24
q
bgp 200router-id 10.0.3.3peer 10.0.13.1 as-number 100peer 10.0.23.2 as-number 200peer 10.0.35.5 as-number 400#ipv4-family unicastundo synchronizationnetwork 10.0.3.3 255.255.255.255peer 10.0.13.1 enablepeer 10.0.23.2 enablepeer 10.0.23.2 next-hop-localpeer 10.0.35.5 enableR4:
sys
sysname R4
int loop 0
ip add 10.0.4.4 32
int g0/0/0
ip add 10.0.14.4 24
int g0/0/1
ip add 10.0.45.4 24
q
bgp 300peer 10.0.14.1 as-number 100peer 10.0.45.5 as-number 400#ipv4-family unicastundo synchronizationnetwork 10.0.4.4 255.255.255.255peer 10.0.14.1 enablepeer 10.0.45.5 enableR5:
sys
sysname R5
int loop 0
ip add 10.0.5.5 32
int g0/0/2
ip add 10.0.25.5 24
int g0/0/1
ip add 10.0.35.5 24
int g0/0/0
ip add 10.0.45.5 24
q
bgp 400router-id 10.0.5.5peer 10.0.25.2 as-number 200peer 10.0.35.3 as-number 200peer 10.0.45.4 as-number 300#ipv4-family unicastundo synchronizationnetwork 10.0.5.5 255.255.255.255peer 10.0.25.2 enablepeer 10.0.35.3 enablepeer 10.0.45.4 enable
可以看到,R2、R3、R4、R5上都接收到了R1的4个网段的路由信息。仔细观察发现,无论是通过EBGP邻居还是IBGP邻居接收到的路由条目,以及路由器自身产生的BGP路由条目,其MED字段的值均为0。如果接收到的路由条目经过了一个AS进行中转,那么 MED值将会丢失,设置为空。在BGP选择最住路径时,MED值为空实际上等同于值为0。
在,AS 100的管理员要求AS 200访问172.16.1.0/24网络的流量从R1的GE 0/0/2接口进入AS 100,访问172.16.2.0/24网络的流量从R1的GE O/0/0接口进入AS 100。
ip ip-prefix 1 permit 172.16.1.0 24
ip ip-prefix 2 permit 172.16.2.0 24
route-policy 1 permit node 10
if-match ip-prefix 1
apply cost 100
route-policy 1 permit node 20
if-match ip-prefix 2
apply cost 200
route-policy 1 permit node 30route-policy 2 permit node 10
if-match ip-prefix 2
apply cost 100
route-policy 2 permit node 20
if-match ip-prefix 1
apply cost 200
route-policy 2 permit node 30
bgp 100
peer 10.0.12.2 route-policy 1 export
peer 10.0.13.3 route-policy 2 export
在PrefVal属性、LocPrf属性、路由生成方式、AS_Path属性、Origin属性都相同的情况下,BGP会选择最小MED值的路由作为最优路由。可以看到,在R2的BGP路由表中,去往172.16.1.0/24的下一跳为10.0.12.1,MED值为100,也就是选择了R1的GE0/0/2接口作为进入AS 100的入口;去往172.16.2.0/24的下一跳为10.0.23.3,MED值为100,也就是选择了R1的GE O/0/0接口作为进入AS 100的入口。
根据相同的原理,R3选择了去往目标网络172.16.1.0/24的下一跳为10.0.23.2,也就是选择了R1的GE 0/0/2接口作为进入AS 100的入口;去往目标网络172.16.2.0/24的下一跳为10.0.13.1,也就是选择了R1的GE 0/0/0接口作为进入AS 100的入口。
可以观察到,R2和 R3去往172.16.1.0/24 网络的路由都携带了MED属性,而R5去往172.16.1.0/24网络的路由,没有MED值,这说明BGP路由的MED属性只传递给邻居AS,邻居AS不会将收到的MED属性再传递给其他AS。
可以看到,在R5的 BGP路由表中有多条去往192.168.1.0/24网络的路由。我们知道,通过PrefVal属性、LocPrf属性、路由生成方式、AS_Path属性、Origin属性的比较都无法选出最优路由时,BGP将会比较MED属性。但是,在默认情况下,BGP不会比较来自不同 AS 的路由的MED属性,所以R5无法通过比较MED属性选择出去往192.168.1.0/24 网络的最优路由。为此,BGP会继续依次比较邻居类型、到达下一跳的IGP开销值等,最后的结果是,R5选择了Router-ID最小的路由器R2发布的路由作为最优路由。
现在,网络管理员希望AS 400去往192.168.1.0/24网络的流量经由R4,然后通过R1的GE 0/0/1接口进入 AS 100,采用的方法是修改R2、R3和R4 在传递关于192.168.1.0/24的路由信息给R5时的MED属性值。
R2:
ip ip-prefix 1 permit 192.168.1.0 24
route-policy 1 permit node 10
if-match ip-prefix 1
apply cost 200
route-policy 1 permit node 20
bgp 200
peer 10.0.25.5 route-policy 1 export
R3:
ip ip-prefix 1 permit 192.168.1.0 24
route-policy 1 permit node 10
if-match ip-prefix 1
apply cost 200
route-policy 1 permit node 20
bgp 200
peer 10.0.35.5 route-policy 1 export
R4
ip ip-prefix 1 permit 192.168.1.0 24
route-policy 1 permit node 10
if-match ip-prefix 1
apply cost 100
route-policy 1 permit node 20
bgp 300
peer 10.0.45.5 route-policy 1 export
在R5上,配置compare-different-as-med命令,让R5强制比较来自不同AS 且去往同一目标网络的路由的MED属性值。
相关文章:

BGP之选路MED
原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由。BGP路由属性的比较顺序为Preferred Value属性、Local Preference属性、路由生成方式、AS_Path属性、Origin属…...
KunDB4.0:安全能力与Oracle兼容性提升,支持跨系统多租户部署
KunDB是星环科技自主研发的分布式交易型数据库,高度兼容Oracle和MySQL,提供数据强一致、高可用、高性能、高扩展、应用透明等能力,可在云上和物理机上容器化部署运行,一站式解决企业数据存储、管理、计算与安全性问题。 过去半年…...
JVM的 6 种垃圾回收算法
JVM的垃圾回收(Garbage Collection, GC)算法,在面试八股文时偶尔会被问到,了解一些常见的垃圾回收算法有利于面试时吊打面试官。 以下是JVM常见的几种垃圾回收算法的介绍: 1. 标记-清除算法(Mark-Sweep&a…...

【SOC 芯片设计 DFT 学习专栏 -- DFT OCC 与 ATPG的介绍】
请阅读【嵌入式及芯片开发学必备专栏】 请阅读【芯片设计 DFT 学习系列 】 如有侵权,请联系删除 转自: 简矽芯学堂 简矽芯学堂 2024年01月18日 09:00 陕西 文章目录 OCC 介绍Fast ScanFull chip ATPGPartition ATPGHierarchical ATPG OCC 介绍 OCC&am…...
自动驾驶-机器人-slam-定位面经和面试知识系列03之C++STL面试题(01)
这两天有点忙耽搁了,抱歉!!! 这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。…...
红狮金业解读:分析高价位黄金的后续投资吸引力
在全球经济格局不断变化的背景下,黄金作为传统的避险资产一直备受投资者关注。近期,金价持续走高,引发了市场对黄金是否仍然是优质资产配置的讨论。本文红狮启富将从长期需求、价格驱动因素的变化以及汇率影响三个角度,深入分析黄…...

LDR6020双盲插便携显示器应用
随着USB Type-C接口的普及,越来越多的手机和笔记本电脑都支持通过C接口输出视频。这个小巧而精密的接口,大有把传统的HDMI和DisplayPort接口取而代之的架势。特别是usb4的推出,更是为USB TYPE-C接口一统有线接口形态奠定了基础。 单USB-C接口…...
【HashMap源码学习】
HashMap的底层结构 HashMap是基于分离链表法解决散列冲突的动态散列表。 1、在jdk7中,使用的是“数组 链表”,发生散列冲突的时候键值对会用头插法添加到单链表中; 2、在jdk8中,使用的是“数组 链表 红黑树”,发…...
Git关联本地仓库和远程仓库
Step 1 添加远程仓库: git remote add <远程仓库别名><远程仓库地址> Step 2 git push -u <远程仓库名><分支名> 查看远程仓库: git remote -v 拉取远程仓库内容: 拉取服务器仓库过程中,如果本地和服务器有文件冲突,则会拉取失…...

【Django】在vscode中新建Django应用并新增路由
文章目录 打开一个终端输入新建app命令在app下的views.py内写一个视图app路由引入该视图项目路由引入app路由项目(settings.py)引入app(AntappConfig配置类)运行项目 打开一个终端 输入新建app命令 python manage.py startapp antapp在app下的views.py内…...

DT浏览器首页征集收录海内外网址
DT浏览器首页征集收录海内外网址,要求页面整洁,内容丰富,知识性和可读性强,符合大众价值观,不含恶意代码...
便携解码耳放
想象一下,你正在拥挤的地铁上,耳机里传来的音乐却仿佛带你置身于音乐厅,每一个音符都清晰、动人。这不是科幻小说,而是便携解码耳放(DAC/AMP)带给你的真实体验。无论你是在旅行、通勤还是在咖啡馆里工作&am…...
响应式编程框架Reactor之 Flux 和 Mono 的介绍和区别
Flux和Mono在Reactor框架中都是响应式编程模型的重要概念,它们在处理异步数据流时发挥着重要作用,两者之间也存在一些差异。 Mono的介绍 基本概念: Mono是Reactor中的一个类,它表示一个异步的单个值或零个值的结果。Mono可以看作是一个特殊的Publisher,用于产生数据流,…...
2.3 openCv 对矩阵执行掩码操作
在矩阵上进行掩模操作相当简单。其基本思想是根据一个掩模矩阵(也称为核)来重新计算图像中每个像素的值。这个掩模矩阵包含的值决定了邻近像素(以及当前像素本身)对新的像素值产生多少影响。从数学角度来看,我们使用指定的值来做一个加权平均。 具体而言,掩模操作通常涉…...

贪心算法(三) ---cmp_to_key, 力扣452,力扣179
目录 cmp_to_key 比较函数 键函数 cmp_to_key 的作用 使用 cmp_to_key 代码解释 力扣452 ---射气球 题目 分析 代码 力扣179 ---最大数 题目 分析 代码 cmp_to_key 在Python中,cmp_to_key 是一个函数,它将一个比较函数转换成一个键函数…...

学生信息管理系统详细设计文档
一、设计概述 学生信息管理系统是一个用于管理学生信息的软件系统,旨在提高学校对学生信息的管理效率。本系统主要包括学生信息管理、课程信息管理、成绩信息管理、班级信息管理等功能模块。详细设计阶段的目标是确定各个模块的实现算法,并精确地表达这…...

leetcode10 -- 正则表达式匹配
题目描述: 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 示例 1࿱…...

Binius-based zkVM:为Polygon AggLayer开发、FPGA加速的zkVM
1. 引言 近日,ZK硬件加速巨头Irreducible和Polygon团队宣布联合开发生产级的Binius-based zkVM,用于助力Polygon AggLayer,实现具有低开销、硬件加速的binary proofs。 Irreducible(曾用名为Ulvetanna)团队 Benjamin …...

基于 HTML+ECharts 实现的大数据可视化平台模板(含源码)
构建大数据可视化平台模板:基于 HTML 和 ECharts 的实现 大数据的可视化对于企业决策、市场分析和业务洞察至关重要。通过直观的数据展示,团队可以快速理解复杂的数据模式,发现潜在的业务机会。本文将详细介绍如何利用 HTML 和 ECharts 实现一…...
特征工程在机器学习中的重要性
特征工程在机器学习中的重要性 特征工程在机器学习中占据着至关重要的地位,它是连接原始数据与机器学习模型之间的桥梁。通过特征工程,我们可以将原始数据转换为机器学习算法能够有效利用的形式,从而提高模型的性能和准确性。以下是特征工程…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...