【路由交换方向IE认证】BGP选路原则之AS-Path属性

news2025/4/22 8:24:37

文章目录

  • 一、路由器BGP路由的处理过程
    • 控制平面和转发平面
    • 选路工具
  • 二、BGP的选路顺序
    • 选路的前提
    • 选路顺序
  • 三、AS-Path属性选路原则
    • AS-Path属性特性
    • AS-Path管进还是管出呢?
    • 使用AS-Path对进本AS的路由进行选路
    • 验证AS-Path不接收带本AS号的路由
  • 四、BGP邻居建立配置

一、路由器BGP路由的处理过程

路由器对BGP路由的处理过程,简单来说就是BGP中的选路过程

控制平面和转发平面

一、控制平面 :是从起点到目的地所使用的IGP,BGP等路由协议从而控制产生路由表,VPNV4路由表,标签转发表等,由这些表去控制我们的FIB表,也就是数据转发表

二、转发平面 :也叫做数据平面,根据刚刚产生的路由表,VPNV4路由表,标签转发表从而产生一个数据转发表(FIB表)去进行数据的从起点到目的地的转发,

如图1-1,

image-20250410211308046

图1-1

选路工具

在 BGP 选路中有两个重要的概念:

一、策略机 : 相当于route-map,能够对属性值进行修改,影响路由表的生成(在控制平面上:是一个过程),从而影响用户的数据转发

①输入策略机:路由进入本地时的route-map,我们可以理解为 in 方向,会影响自身和下游的路由器

②输出策略机:路由离开本地时的route-map,我们可以理解为 out 方向,只会影响下游的路由器,不会影响自身

二、路由决策 : 根据刚刚的策略机(route-map)选择出最佳的路径,并且将最佳的路径添加到路由表中,简单来说就是去哪里,哪条路比较方便或近

如图1-2,就是BGP路由的处理过程

image-20250410213600930

图1-2

二、BGP的选路顺序

选路的场景主要面对同一个目的网络存在多种去的方式

如图2-1,对于R3来说,去往192.168.10.0/24有去往R1或R2两条路可以选

image-20250410215455583

图2-1

选路的前提

我们选路的前提是路由的下一跳可达,如果说路由的下一跳不可达的话,那么选路将不具有任何意义

选路顺序

  1. 我们之前学过的那么多个BGP属性都是能够应用到BGP路由的选路当中的,但是也是存在依照属性进行选路的顺序的,并且如果较为前的属性已经选出最佳路径,那么后面的属性将不会影响到属性

  2. 例如:路由器已经依照Local Preference选出了最佳的路径,而MED值无论在怎么进行修改都是无济于事的

选路顺序如下

  1. 优选Weight值较高的;
  2. 优选Local Preference值较高的;
  3. 优选AS-Path长度较短的;
  4. 按照Origin属性为IGP、EGP、Incomplete类型的路由进行选路;(IGP > EGP > Incomplete)
  5. 优选MED值较小的路由
  6. 按照EBGP路由,接着是联盟EBGP路由,最后是IBGP路由的顺序
  7. 优越最近的IGP邻居通告的路由
  8. 执行等价负载均衡(默认是没有开启等价负载均衡的)
  9. 优选BGP Router-ID 小的 Peer 通告的路由
  10. 优选Cluster-list长度较短的路由
  11. 优选较小的 Peer 地址路由器通告的路由

这么多一串顺序我们将会逐一进行讲解,本文章所分享的是排位第三个的属性,AS-Path属性,该属性即可进行选路们还具有防环的作用

讲解Weight属性的文章:【路由交换方向IE认证】BGP选路原则之Weight属性-CSDN博客

讲解Local Preference属性的文章:【路由交换方向IE认证】BGP选路原则之Local Preference属性-CSDN博客

三、AS-Path属性选路原则

AS-Path属性特性

AS-Path优选原则,AS-Path长度越短越优先,在AS-Path选路当中,我们的策略机依然是使用route-map

如图3-1,由于AS-Path属性的不只含有选路这一个属性,还可以进行路由的防环

image-20250418144105691

图3-1

所以我们在调整AS-Path属性长度进行选路的时候,尽量地不要去减少AS-Path的长度,这样就产生了AS-Path的第一个调整原则,:只增不减

除此之外,AS-Path的route-map在使用时,in方向或是out方向,都会对结果造成不同

如图3-2,当route-map使用在in方向的时候,则 AS 号添加到原始AS号的左侧;当route-map使用在out方向的时候,则 AS 号添加到原始AS号的右侧

image-20250418151839267

图3-2

由于AS-Path的来源是经过的各个AS-Path,所以对于IBGP Peer和EBGP Peer之间传递的AS-Path是否发生改变是不一样的

结论是:IBGP Peer 之间传递路由的时候,由于AS-Path没有发生了变化,AS-Path值并不会发生改变;EBGP Peer 之间传递路由的时候,由于AS-Path发生了变化,所以相对应的AS-Path也会发生变化

如图3-3,当R1传递给R2路由时,由于是EBGP Peer 关系,所以路由中的AS-Path属性会发生变化;当R2传递路由给R4时,由于是IBGP Peer关系,所以传递的路由中AS-Path属性不会发生变化

image-20250418153448856

图3-3

在特殊的情况下,我们不想让AS-Path属性进行选路,而是只让其发挥防环的作用,可以通过下述命令来使AS-Path属性不参加选路

R1>en
R1#conf
R1(config)#router bgp 100
R1(config-router)#bgp bestpath as-path ignore    //使得AS-Path不参与选路
R1(config-router)#ex

AS-Path管进还是管出呢?

我们所说的管进还是管出,是相对于本AS来说的,仔细回想起来,我们的AS-Path属性是公认必遵属性,可以传播到BGP网络中的任意一个角落,相比于Local Preference,不需要考虑跨AS能否传递的问题,所以我们AS-Path属性是能够管进也能管出的

如图3-4与图3-5,分别是AS-Path进入本公司和AS-Path出本公司的选路示意图

image-20250418164346922

图3-4

image-20250418164401867

图3-5

使用AS-Path对进本AS的路由进行选路

在实际的生产环境中,由于我们能进行配置的只有本公司的设备,所以无法在R1上进行配置,我们的AS-Path选路需要在R2或者R3上进行

使用AS-Path进行选路需求: 控制R1进本公司的选路; 控制R1访问4.4.3.4走R3,控制R1访问4.4.4.4走R2(奇数走奇数,偶数走偶数);

思路:根据AS-Path长度越小越优先的原则,我们要让R3发出4.4.4.4路由中的AS-Path属性更长,让R2发出4.4.3.4路由中的AS-Path属性更长,如图3-7,调整AS-Path值如图所示

image-20250418190708110

图3-7

但我们回过头来一想,4.4.4.4是默认走的就是R2这条路径,所以,我们并不是非常低有必要去更改R2对于4.4.4.4向R1发出的AS-Path值,如图3-8

image-20250418191155594

图3-8

这就极大的减少了我们配置的工作量,现在只需要在R2上对于4.4.3.4向R1发出的 AS-Path值进行修改

如图3-9,prepend表示对整个路由的AS-Path值的增加,replace表示对整个路由的AS-Path值的替换

image-20250418193510869

图3-9

在R2上进行配置操作

R2(config)#access-li 10 per 4.4.4.4 0.0.0.0
R2(config)#route-map AS-P per 10
R2(config-route-map)#mat ip add 10
R2(config-route-map)#set as-path prepend 200
R2(config-route-map)#ex
R2(config)#route-map AS-P per 20
R2(config-route-map)#ex
R2(config)#router bgp 200
R2(config-router)#nei 12.1.1.1 route-map AS-P out 
R2(config-router)#ex

如图3-10,在R1上执行show ip bgp的命令,可以发现选路情况已经发生了变化,并且已经达到了预期;在标注处也显示AS-Path的长度修改成功

image-20250418194211679

图3-10

验证AS-Path不接收带本AS号的路由

如图3-11,我们可以在route-map中设置发出路由的AS 号中增加 AS 100,在R1上观察BGP路由表会发生什么变化

image-20250418195202505

图3-11

在R2上的配置如下

R2>en
R2#conf
R2(config)#route-map AS-P per 10
R2(config-route-map)#set as-path prepend 100
R2(config-route-map)#ex

在R1上执行show ip bgp的命令,观察BGP路由表,如图3-12,发现对于4.4.4.4这条路由来说,已经中断了与R2的邻居关系

image-20250418195313813

图3-12

四、BGP邻居建立配置

附上配置过程

R1

Router(config)#hos R1
R1(config)#int g0/0
R1(config-if-GigabitEthernet 0/0)#ip add 12.1.1.1 24
R1(config-if-GigabitEthernet 0/0)#ex
R1(config)#int g0/1
R1(config-if-GigabitEthernet 0/1)#ip add 12.1.2.1 24
R1(config-if-GigabitEthernet 0/1)#ex
R1(config)#int lo0
R1(config-if-Loopback 0)#ip add 1.1.1.1 32
R1(config-if-Loopback 0)#ex
R1(config)#int lo1
R1(config-if-Loopback 1)#ip add 1.1.2.1 32
R1(config-if-Loopback 1)#ip add 1.1.2.1 32
R1(config-if-Loopback 1)#ex
R1(config)#router bgp 100
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#nei 12.1.1.2 remote-as 200
R1(config-router)#nei 12.1.2.3 remote-as 200
R1(config-router)#netw 1.1.1.1 mask 255.255.255.255
R1(config-router)#netw 1.1.2.1 mask 255.255.255.255
R1(config-router)#ex

R2

R2>en
R2#conf
R2(config)#hos R2
R2(config)#int g0/0
R2(config-if-GigabitEthernet 0/0)#ip add 12.1.1.2 24
R2(config-if-GigabitEthernet 0/0)#ex
R2(config)#int g0/1
R2(config-if-GigabitEthernet 0/1)#ip add 12.1.3.2 24
R2(config-if-GigabitEthernet 0/1)#ex
R2(config)#int lo0
R2(config-if-Loopback 0)#ip add 2.2.2.2 32
R2(config-if-Loopback 0)#ex
R2(config)#router ospf 10
R2(config-router)#rou 2.2.2.2
Change router-id and update OSPF process! [yes/no]:yes
R2(config-router)#netw 2.2.2.2 0.0.0.0 area 0
R2(config-router)#netw 12.1.3.0 0.0.0.255 area 0
R2(config-router)#ex
R2(config)#router bgp 200
R2(config-router)#bgp router-id 2.2.2.2
R2(config-router)#nei 12.1.1.1 remote-as 100
R2(config-router)#nei 4.4.4.4 remote-as 200
R2(config-router)#nei 4.4.4.4 update-sou lo0
R2(config-router)#nei 4.4.4.4 next-hop-self
R2(config-router)#ex

R3

Router>en
Router#conf
Router(config)#hos R3
R3(config)#int g0/0
R3(config-if-GigabitEthernet 0/0)#ip add 12.1.2.3 24
R3(config-if-GigabitEthernet 0/0)#ex
R3(config)#int g0/1
R3(config-if-GigabitEthernet 0/1)#ip add 12.1.4.3 24
R3(config-if-GigabitEthernet 0/1)#ex
R3(config)#int lo0
R3(config-if-Loopback 0)#ip add 3.3.3.3 32
R3(config-if-Loopback 0)#ex
R3(config)#router ospf 10
R3(config-router)#rou 3.3.3.3
Change router-id and update OSPF process! [yes/no]:yes
R3(config-router)#netw 3.3.3.3 0.0.0.0 area 0
R3(config-router)#netw 12.1.4.0 0.0.0.255 area 0
R3(config-router)#ex
R3(config)#router bgp 200
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)#nei 12.1.2.1 remote-as 100
R3(config-router)#nei 4.4.4.4 remote-as 200
R3(config-router)#nei 4.4.4.4 update-sou lo0
R3(config-router)#nei 4.4.4.4 next-hop-self
R3(config-router)#ex

R4

R4>en
R4#conf
R4(config)#hos R4
R4(config)#int g0/0
R4(config-if-GigabitEthernet 0/0)#ip add 12.1.3.4 24
R4(config-if-GigabitEthernet 0/0)#ex
R4(config)#int g0/1
R4(config-if-GigabitEthernet 0/1)#ip add 12.1.4.4 24
R4(config-if-GigabitEthernet 0/1)#ex
R4(config)#int lo0
R4(config-if-Loopback 0)#ip add 4.4.4.4 32
R4(config-if-Loopback 0)#ex
R4(config)#int lo1
R4(config-if-Loopback 1)#ip add 4.4.3.4 32
R4(config-if-Loopback 1)#ex
R4(config)#router ospf 10
R4(config-router)#rou 4.4.4.4
Change router-id and update OSPF process! [yes/no]:yes
R4(config-router)#netw 4.4.4.4 0.0.0.0 area 0
R4(config-router)#netw 12.1.3.0 0.0.0.255 area 0
R4(config-router)#netw 12.1.4.0 0.0.0.255 area 0
R4(config-router)#ex
R4(config)#router bgp 200
R4(config-router)#nei 2.2.2.2 remote-as 200
R4(config-router)#nei 2.2.2.2 update-sou lo0
R4(config-router)#nei 3.3.3.3 remote-as 200
R4(config-router)#nei 3.3.3.3 update-sou lo0
R4(config-router)#netw 4.4.4.4 mask 255.255.255.255
R4(config-router)#net 4.4.3.4 mask 255.255.255.255
R4(config-router)#ex

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

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

相关文章

Linux系统下docker 安装 redis

docker安装最新版的redis 一、docker拉取最新版redis镜像 拉取镜像若没有指定版本,代表拉取最新版本 二、查询redis镜像 三、挂载配置文件 在docker容器内修改redis配置文件不方便,所以挂载配置文件,这样可以在外边修改redis配置 3.1 创建…

深度学习框架PyTorch——从入门到精通(3.3)YouTube系列——自动求导基础

这部分是 PyTorch介绍——YouTube系列的内容,每一节都对应一个youtube视频。(可能跟之前的有一定的重复) 我们需要Autograd做什么?一个简单示例训练中的自动求导开启和关闭自动求导自动求导与原地操作 自动求导分析器高级主题&…

【基础算法】二分算法详解

🎯 前言:二分不是找某个数,而是找一个满足条件的位置/值 所以最关键的是:找到单调性,写好 check() 函数,剩下交给模板! 什么是二分算法 二分算法是一种在有序区间中查找答案的方法,时间复杂度:O(log n)。核心思想是: 每次把搜索区间分成两半,只保留可能存在答案的…

mysql——基础知识

关键字大小写不敏感 查看表结构中的 desc describe 描述 降序中的 desc descend 1. 数据库的操作 1. 创建数据库 create database 数据库名;为防止创建的数据库重复 CREATE DATABASE IF NOT EXISTS 数据库名;手动设置数据库采用的字符集 character set 字符集名;chars…

OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比

OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比 目录 OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于OOA-CN…

PCIE Spec ---Base Address Registers

7.5.1.2.1 Base Address Registers (Offset 10h - 24h) 在 boot 到操作系统之前,系统软件需要生产一个内存映射的 address map ,用于告诉系统有多少内存资源,以及相应功能需要的内存空间,所以在设备的 PCI 内存空间中就有了这个 …

Spring如何通过XML注册Bean

在上一篇当中我们完成了对三种资源文件的读写 上篇内容:Spring是如何实现资源文件的加载 Test public void testClassPathResource() throws IOException { DefaultResourceLoader defaultResourceLoader new DefaultResourceLoader(); Resource resource …

基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战

目录 前言 一、需求介绍 1、指定宽度生成 2、指定列自适应生成 二、Java生成实现 1、公共方法 2、指定宽度生成 3、指定列自适应生成 三、总结 前言 在当今数字化与信息化飞速发展的时代,图像的生成与处理技术正日益成为众多领域关注的焦点。从创意设计到数…

【版本控制】idea中使用git

大家好,我是jstart千语。接下来继续对git的内容进行讲解。也是在开发中最常使用,最重要的部分,在idea中操作git。目录在右侧哦。 如果需要git命令的详解: 【版本控制】git命令使用大全-CSDN博客 一、配置git 要先关闭项目&#xf…

Linux——入门常用基础指令

文章目录 Linux入门常用基础指令使用工具介绍基础指令clear指令pwd指令ls指令cd指令Linux系统下的文件路径及文件存储结构文件结构家目录绝对路径和相对路径tree工具 stat指令which指令alias指令touch指令mkdir指令cat指令rm指令man指令cp指令通配符 * Linux入门常用基础指令 …

【技术追踪】Differential Transformer(ICLR-2025)

Differential Transformer:大语言模型新架构, 提出了 differential attention mechanism,Transformer 又多了一个小 trick~ 论文:Differential Transformer 代码:https://github.com/microsoft/unilm/tree/master/Diff…

【Linux网络】应用层自定义协议与序列化

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12891150.html 目录 应用层 再谈 "协议" 网络版计算器 序列化 和 反序列化 重新理解…

Vue接口平台学习十——接口用例页面2

效果图及简单说明 左边选择用例,右侧就显示该用例的详细信息。 使用el-collapse折叠组件,将请求到的用例详情数据展示到页面中。 所有数据内容,绑定到caseData中 // 页面绑定的用例编辑数据 const caseData reactive({title: "",…

目标检测中的损失函数(二) | BIoU RIoU α-IoU

BIoU来自发表在2018年CVPR上的文章:《Improving Object Localization With Fitness NMS and Bounded IoU Loss》 论文针对现有目标检测方法只关注“足够好”的定位,而非“最优”的框,提出了一种考虑定位质量的NMS策略和BIoU loss。 这里不赘…

Linux 入门十一:Linux 网络编程

一、概述 1. 网络编程基础 网络编程是通过网络应用编程接口(API)编写程序,实现不同主机上进程间的信息交互。它解决的核心问题是:如何让不同主机上的程序进行通信。 2. 网络模型:从 OSI 到 TCP/IP OSI 七层模型&…

沐渥氮气柜控制板温湿度氧含量氮气流量四显智控系统

氮气柜控制板通常用于实时监控和调节柜内环境参数,确保存储物品如电子元件、精密仪器、化学品等,处于低氧、干燥的稳定状态。以下是沐渥氮气柜控制板核心参数的详细介绍及控制逻辑: 一、控制板核心参数显示模块 1)‌温度显示‌&am…

[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

QtCreator的设计器、预览功能能看到程序图标,编译运行后图标消失

重新更换虚拟机(Vmware Kylin),重新编译和配置了很多第三方库后,将代码跑到新的这个虚拟机环境中,但是出现程序图标不可见,占位也消失,后来继续检查ui文件,ui文件图标也异常&#x…

面试常用基础算法

目录 快速排序归并排序堆排序 n n n皇后问题最大和子数组爬楼梯中心扩展法求最长回文子序列分割回文串动态规划求最长回文子序列最长回文子串单调栈双指针算法修改 分割回文串滑动窗口栈 快速排序 #include <iostream> #include <algorithm>using namespace std;…

悬空引用和之道、之禅-《分析模式》漫谈57

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第5章“对象引用”原文&#xff1a; Unless you can catch all such references, there is the risk of a dangling reference, which often has painful con…