BGP选路之AS-PATH

原理概述
当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由。首先要比较的属性是 Preferred Value,然后是Local Preference,再次是路由生成方式,如果在比较了这几个属性之后还是无法确定出最优路由,则将进行AS_Path属性的比较。
AS_Path属性顺序地记录了某条BGP路由所经过的AS信息.BGP路由器在向EBGP对等体通告路由时,会在该路由的AS_Path属性的最左端添加本地自治系统的AS编号。BGP在比较了AS_Path属性后,会优选AS_Path长度最短的那条路由。如果 AS_Path的长度相等,则 BGP会对下一个属性 Origin进行比较。另外,AS_Path还可以用来防止AS之间的路由环路。当路由器从EBGP邻居收到BGP路由时,如果该路由的AS_Path中包含了自己的AS编号,则该路由将会被直接丢弃。
类似于其他BGP路由属性,AS_Path属性也是可以被手动修改的。

实验目的
理解AS_Path属性的概念
理解通过AS_Path属性进行选路的机制掌握修改AS_Path属性的方法


实验内容
本实验模拟了一个运营商网络场景,所有路由器都运行 BGP协议,R1 的 Loopback 0 接口用来模拟某一个用户网络10.0.1.1/32,R2的Loopback 0接口用来模拟另一个用户网络10.0.2.2/32。两个用户网络需要进行互相通信,但由于AS 500 转发的流量太多,所以运营商要求10.0.1.1/32与10.0.2.2/32之间的通信只能使用经由 R3、R4 的路径;如果这条路径发生了故障,才能使用经由AS 500的路径。

 

 

 

1、基本配置
R1:
sys
sysname R1
int loop 0 
ip add 10.0.1.1 32
int g0/0/1
ip add 10.0.15.1 24
int g0/0/0
ip add 10.0.13.1 24
q
bgp 100peer 10.0.13.3 as-number 300peer 10.0.15.5 as-number 500#ipv4-family unicastundo synchronizationnetwork 10.0.1.1 255.255.255.255peer 10.0.13.3 enablepeer 10.0.15.5 enableR2:
sys
sysname R2
int loop 0
ip add 10.0.2.2 32
int g0/0/1
ip add 10.0.26.2 24
int g0/0/0
ip add 10.0.24.2 24
q
bgp 200peer 10.0.24.4 as-number 400peer 10.0.26.6 as-number 500#ipv4-family unicastundo synchronizationnetwork 10.0.2.2 255.255.255.255peer 10.0.24.4 enablepeer 10.0.26.6 enableR3:
sys
sysname R3
int g0/0/0
ip add 10.0.13.3 24
int g0/0/1
ip add 10.0.34.3 24
q
bgp 300peer 10.0.13.1 as-number 100peer 10.0.34.4 as-number 400#ipv4-family unicastundo synchronizationpeer 10.0.13.1 enablepeer 10.0.34.4 enableR4:
sys
sysname R4
int g0/0/0
ip add 10.0.24.4 24
int g0/0/1
ip add 10.0.34.4 24
q
bgp 400peer 10.0.24.2 as-number 200peer 10.0.34.3 as-number 300#ipv4-family unicastundo synchronizationpeer 10.0.24.2 enablepeer 10.0.34.3 enableR5:
sys
sysname R5
int g0/0/1
ip add 10.0.15.5 24
int g0/0/0
ip add 10.0.56.5 24
q
bgp 500peer 10.0.15.1 as-number 100peer 10.0.56.6 as-number 500#ipv4-family unicastundo synchronizationpeer 10.0.15.1 enablepeer 10.0.56.6 enablepeer 10.0.56.6 next-hop-localR6:
sys
sysname R6
int g0/0/0
ip add 10.0.56.6 24
int g0/0/1
ip add 10.0.26.6 24
q
bgp 500peer 10.0.26.2 as-number 200peer 10.0.56.5 as-number 500#ipv4-family unicastundo synchronizationpeer 10.0.26.2 enablepeer 10.0.56.5 enablepeer 10.0.56.5 next-hop-local

可以看到,R1的 BGP路由表中存在两条去往10.0.2.2/32的路由,下一跳分别为R5(10.0.15.5)和R3(10.0.13.3),但是优选的是下一跳为R5的路由。这两条路由的 PrefVal值均为0,LocPrf属性均为空,均不是本地生成的路由,但它们的 AS_Path属性不同。观察发现,下一跳为R5的路由的AS_Path属性为500 200,所以长度为2,而下一跳为R3的路由的AS_Path属性为300 400 200,所以长度为3,于是,R1最终选择了下一跳为R5的路由,因为它的AS_Path长度较小。

现在,假定R5和R6的流量负担太重,希望用户网络10.0.1.1/32与10.0.2.2/32之间的通信优先选用经由R3和R4的路径。
为了实现这个需求,最直接的做法是在Rl上拒绝接收来自AS 500的关于10.0.2.2/32的路由信息,以及在R2上拒绝接收来自AS 500的关于10.0.1.1/32的路由信息。但是,如此一来,R1和R2的BGP路由表中将不再有经由AS 500去往对方的路由信息,当经由R3和R4之间的链路发生故障时,两个用户网络的通信就会中断。为此,可以采用修改AS_Path的方法来更好地实现上述需求。
使用Route-Policy对R1接收的来自AS 500的关于10.0.2.2/32的路由信息中的AS Path属性讲行修改。

bgp 100peer 10.0.15.5 route-policy as import
#
route-policy as permit node 10if-match ip-prefix asapply as-path 500 500 additive
#
route-policy as permit node 20
#
ip ip-prefix as index 10 permit 10.0.2.2 32

 可以看到,现在R1优选了下一跳为10.0.13.3,即通过R3的路径,原因是现在经由R5的路由的AS_Path属性变为了500 500 500 200,长度为4。

 可以看到,从10.0.2.2/32去往10.0.1.1/32的报文依旧选用的是经由AS 500的路径。为了实现从10.0.2.2/32去往10.0.1.1/32的报文同样选用经由R4、R3的路径,可以在R2上修改来自AS 500的关于10.0.1.1/32的路由信息的AS_Path 属性。

bgp 200peer 10.0.26.6 route-policy as import
#
route-policy as permit node 10if-match ip-prefix asapply as-path 300 500 500 100 overwrite 
#
route-policy as permit node 20
#
ip ip-prefix as index 10 permit 10.0.1.1 32

 可以看到,现在R2去往10.0.1.1/32网络时,选用的是下一跳为10.0.24.4,即经由R4和R3的路径。经由R6的路由的AS_Path属性已被修改为300 500 500 100,长度为4。注意,选用overwrite关键字,路由策略会使用配置的AS编号序列替换原有的AS_Path属性。

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

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

相关文章

算法学习笔记:回溯法

回溯法有“通用的解题法”之称。用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一节点时&…

【Android Studio】整合okhttp发送get和post请求(提供Gitee源码)

前言:本篇博客教学大家如何使用okhttp发送同步/异步get请求和同步/异步post请求,这边博主把代码全部亲自测试过了一遍,需要源码的可以在文章最后自行拉取。 目录 一、导入依赖 二、开启外网访问权限 三、发送请求 3.1、发送同步get请求…

关于pycharm上push项目到gitee失败原因

版权声明:本文为博主原创文章,如需转载请贴上原博文链接:https://blog.csdn.net/u011628215/article/details/140577821?spm1001.2014.3001.5502 前言:最近新建项目push上gitee都没有问题,但是当在gitee网站进行了一个…

2024在线PHP加密网站源码

源码介绍 2024在线PHP加密网站源码 更新内容: 1.加强算法强度 2.优化模版UI 加密后的代码示例截图 源码下载 https://download.csdn.net/download/huayula/89568335

kafka集群搭建-使用zookeeper

1.环境准备: 使用如下3台主机搭建zookeeper集群,由于默认的9092客户端连接端口不在本次使用的云服务器开放端口范围内,故端口改为了8093。 172.2.1.69:8093 172.2.1.70:8093 172.2.1.71:8093 2.下载地址 去官网下载,或者使用如…

Mysql的主从复制(重要)和读写分离(理论重要实验不重要)

一、主从复制:架构一般是一主两从。 1.主从复制的模式: mysql默认模式为异步模式:主库在更新完事务之后会立即把结果返回给从服务器,并不关心从库是否接收到以及从库是否处理成功。缺点:网络问题没有同步、防火墙的等…

vue3-video-play 导入 以及解决报错

npm install vue3-video-play --save # 或者 yarn add vue3-video-play import Vue3VideoPlay from vue3-video-play; import vue3-video-play/dist/style.css; app.use(Vue3VideoPlay) <template><div id"main-container-part"><div class"al…

Meta发布最强AI模型,扎克伯格公开信解释为何支持开源?

凤凰网科技讯 北京时间7月24日&#xff0c;脸书母公司Meta周二发布了最新大语言模型Llama 3.1&#xff0c;这是该公司目前为止推出的最强大开源模型&#xff0c;号称能够比肩OpenAI等公司的私有大模型。与此同时&#xff0c;Meta CEO马克扎克伯格(Mark Zuckerberg)发表公开信&a…

opencv grabCut前景后景分割去除背景

参考&#xff1a; https://zhuanlan.zhihu.com/p/523954762 https://docs.opencv.org/3.4/d8/d83/tutorial_py_grabcut.html 环境本次&#xff1a; python 3.10 提取前景&#xff1a; 1、需要先把前景物体框出来 需要坐标信息&#xff0c;可以用windows自带的画图简单提取像素…

Concat() Function-SQL-字符串拼接函数

Concat() Function-SQL 在SQL中&#xff0c;CONCAT() 函数用于将两个或多个字符串连接在一起。 不同数据库管理系统可能有些许差异&#xff0c;但基本用法和语法通常是相似的。 语法 CONCAT(string1, string2, ...)string1, string2, …: 这些是需要连接的字符串参数。可以…

【时序约束】读懂用好Timing_report

一、静态时序分析&#xff1a; 静态时序分析&#xff08;Static Timing Analysis&#xff09;简称 STA&#xff0c;采用穷尽的分析方法来提取出整个电路存在的所有时序路径&#xff0c;计算信号在这些路径上的传播延时&#xff0c;检查信号的建立和保持时间是否满足时序要求&a…

定时器+外部中断实现NEC红外线协议解码

一、前言 1.1 功能介绍 随着科技的进步和人们生活水平的提高&#xff0c;红外遥控器已经成为了日常生活中不可或缺的电子设备之一&#xff0c;广泛应用于电视、空调、音响等多种家电产品中。 传统的红外遥控器通常只能实现预设的有限功能&#xff0c;无法满足用户对设备更加智…

TCP客户端connect断线重连

文章目录 TCP客户端connect断线重连1、为什么要断线重连2、实现代码 TCP客户端connect断线重连 1、为什么要断线重连 客户端会面临服务器崩溃的情况&#xff0c;我们可以试着写一个客户端重连的代码&#xff0c;模拟并理解一些客户端行为&#xff0c;比如游戏客户端等. 考虑到…

实战篇(十二):如何使用 Processing 创建一个多功能的简易吃豆人游戏

如何使用 Processing 创建一个多功能的简易吃豆人游戏 文章目录 如何使用 Processing 创建一个多功能的==简易==吃豆人游戏引言准备工作第一步:设置基本框架第二步:创建 Pacman 类第三步:创建 Obstacle 类第四步:添加分数系统第五步:运行游戏完整代码结论参考资料引言 吃…

STL常用算法——常用查找算法

自定义类型都要用仿函数判断 1.find() class Person { public:Person(string name,int age){this->m_Name name;this->m_Age age;}bool operator(const Person &p)//重载operator{if (this->m_Name p.m_Name && this->m_Age p.m_Age){return true;…

NVIDIA 全面转向开源 GPU 内核模块

NVIDIA 全面转向开源 GPU 内核模块 文章目录 NVIDIA 全面转向开源 GPU 内核模块支持的 GPU安装程序更改使用带有 CUDA 元包的包管理器 使用运行文件使用安装帮助脚本包管理器详细信息dnf&#xff1a;Red Hat Enterprise Linux、Fedora、Kylin、Amazon Linux 或 Rocky Linuxzypp…

网络安全等级保护:什么是网络安全等级保护?(非常详细)零基础入门到精通,收藏这一篇就够了

关键词&#xff1a; 网络安全等级保护 等级保护 网络 信息系统 旧话重提&#xff0c;一直以来&#xff0c;我们不断强调“等级保护”制度是我国的网络安全领域的基本制度、基本策略和基本方法&#xff0c;是促进信息化健康发展&#xff0c;维护国家安全、社会秩序和公共利益的…

数字图像处理中的常用特殊矩阵及MATLAB应用

一、前言 Matlab的名称来源于“矩阵实验室&#xff08;Matrix Laboratory&#xff09;”&#xff0c;其对矩阵的操作具有先天性的优势&#xff08;特别是相对于C语言的数组来说&#xff09;。在数字图像处理中&#xff0c;为了提高编程效率&#xff0c;我们可以使用多种方式来创…

Mysql数据库和Sql语句

数据库管理&#xff1a; sql语句&#xff1a;数据库用来增删改查的语句&#xff08;重要&#xff09; 备份&#xff1a;数据库的数据进行备份 主从复制、读写分离、高可用&#xff08;重要&#xff09; Mysql数据库和Sql语句 一、Mysql数据库 1、数据库&#xff1a;组织、…

Java基础(四) 内部类详解

Java 内部类详解 一. 内部类概述 内部类是嵌套在类内部进行定义的类&#xff0c;其外部的类则被称为外部类&#xff1b;按照内部类的定义位置&#xff0c;内部类可进一步划分为成员内部类、静态内部类、局部内部类和匿名内部类四种类型。内部类的出现实际上是进一步丰富了类的…