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属性值。

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

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

相关文章

一款简而轻的项目运维监控软件,支持低侵入式在线构建、自动部署、日常运维(附源码)

前言 在当今快速发展的软件开发领域,开发团队经常面临一系列运维挑战。没有专业运维人员的支持,开发人员不得不承担构建和部署项目的任务。 面对不同项目的构建和部署命令,以及多环境的打包需求,开发人员需要一个能够简化这些流…

算法 day4 【双指针、快慢指针、环形链表】链表下

⚡刷题计划day4继续,可以点个免费的赞哦~ 下一期将会开启哈希表刷题专题,往期可看专栏,关注不迷路, 您的支持是我的最大动力🌹~ 目录 ⚡刷题计划day4继续,可以点个免费的赞哦~ 下一期将会开启哈希表刷题…

C# 匿名函数与Lambda表达式

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 1.匿名函数 在 C# 中,匿名函数是一种没有名称的函数,可以直接在代码中定义和使用 匿名函数主要有两种形式:匿名方法和Lambda 表…

Modbus转EtherCAT网关将Modbus协议的数据格式转换为EtherCAT协议

随着工业自动化技术的快速发展,不同通信协议之间的互操作性变得越来越重要。Modbus作为一种广泛使用的串行通信协议,与以太网为基础的EtherCAT协议之间的转换需求日益增长。本文将从网关功能、硬件设计、性能以及应用案例来介绍这款Modbus转EtherCAT网关…

TinaLinux ssh 环境搭建

adb shell passwd root #修改密码 vim /etc/ssh/sshd_config #编辑SSH配置文件/etc/ssh/sshd_config,根据需要配置如端口、允许登录的用户等 切换为英文输入法输入i,将下面PermitRootLogin和PasswordAuthentication改成yes PermitRootLogin yes…

华媒舍:6个媒体宣发套餐,快速突破传播界限

在当今信息爆炸的社会中,有效地传播自己的信息变得愈发困难。特别是对于媒体宣发来说,如何在市场竞争激烈的情况下突破传播界限,让自己的消息传达给更多的人,这是每个企业和个人都面临的难题。 为了解决这个问题,我们推…

MSPM0GXX单片机内部比较器深度解析

目录 0 前言1 简介1.1单片机简介1.2 比较器简介 2 比较器运行原理2.1 比较器配置2.2 比较器通道选择2.3 比较器输出2.4 输出滤波器2.5 采样输出模式2.6 消隐模式2.7 基准电压发生器2.8 窗口比较器模式2.9 比较器滞后 3 比较器的优势 0 前言 本文仅以TI公司生产的MSPM0GXX单片机…

【BUG】已解决:You are using pip version 10.0.1, however version 21.3.1 is available.

You are using pip version 10.0.1, however version 21.3.1 is available. 目录 You are using pip version 10.0.1, however version 21.3.1 is available. 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#…

【Django】 读取excel文件并在前端以网页形式显示-安装使用Pandas

文章目录 安装pandas写views写urls安装openpyxl重新调试 安装pandas Pandas是一个基于NumPy的Python数据分析库,可以从各种文件格式如CSV、JSON、SQL、Excel等导入数据,并支持多种数据运算操作,如归并、再成形、选择等。 更换pip源 pip co…

Word 导入导出

在实际的开发过程中,也会遇到导入导出的功能,今天就简单的做一下总结。 1.需求:将下面word 数据导入到数据库并进行存储 在Controller中 RequestMapping(value "/ImportWord")public RawResponseBodyObject ImportWord(HttpServl…

VBA技术资料MF178:将某个文件夹中的图片导入Word

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

基于微信小程序图书馆座位预约管理系统设计与实现

1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升级&#x…

开源模型也能强过闭源?Llama 3.1-405B数值对标GPT4!

Llama 3.1-405B引起AI浪潮:开源模型也能强过闭源? Llama 3.1 就这几天,只要你有在关注AI相关的事,你就会看见一群人在讨论 Meta 新出的 Llama 3.1。外网无数的业内大佬都在为之疯狂,因为 Llama3.1-405B 成为了目前开源…

CefSharp音视频编译与免费下载

注:Cefharp 音频和视频播放编译,生成相应的dll文件,从而支持项目开发。 建议编译至少 16G 的 RAM和至少 250G 的 SSD。该脚本以 E 盘为例,您需要在 E 盘上手动创建 cef 文件夹。禁止在转载后通过发布其他平台向用户收取下载费用。…

JavaEE - Spring Boot 简介

1.Maven 1.1 什么是Maven 翻译过来就是: Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通 过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。 可以理解为:Maven是一个项目管理工具…

MFC与QT中禁用Esc、Alt+F4、关闭图标

在业务中,我们需要按指定的方式才能关闭当前对话框。如下图需输入密码点击确认后,界面才能关闭。 1.禁用关闭按钮 在对话框初始化部分添加将关闭按钮禁用 //MFC CMenu *pSysMenu GetSystemMenu(FALSE); ASSERT(pSysMenu ! NULL); pSysMenu->EnableM…

【BUG】已解决:NameError: name ‘python‘ is not defined

NameError: name ‘python‘ is not defined 目录 NameError: name ‘python‘ is not defined 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于…

学习记录——day18 数据结构 树

树的存储 1、顺序存储 对于普通的二叉树,不适合存储普通的二叉树顶序存储,一般用于存储完全二叉树而言,如果使用顺序存储,会浪费大量的存储空间,因为需要给没有节点的位置留出空间,以便于后期的插入。 所以…

图书管理系统设计

设计一个图书管理系统时,我们需要考虑系统的基本功能、用户需求、技术选型以及数据的安全性和完整性。下面是一个基本的图书管理系统的设计概览: 1. 系统目标 管理图书信息:添加、删除、修改图书信息。借阅管理:处理借书、还书流…

Leetcode—297. 二叉树的序列化与反序列化【困难】

2024每日刷题(148) Leetcode—297. 二叉树的序列化与反序列化 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(…