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


文章目录

  • 一、路由器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博客

讲解AS-Path属性的文章:【路由交换方向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.mzph.cn/bicheng/77380.shtml

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

相关文章

2025年热门项目管理软件对比:20款工具详解

本文主要盘点的工具有:1. PingCode; 2. Worktile; 3. Jira; 4. Trello; 5. TAPD; 6. Monday.com; 7. 进度猫; 8. 猪齿鱼; 9. 简道云; 10. Tita项目管理等等20款项目管理软件(含免费)。 在如今竞争激烈的商业环境中,项目管理软件已…

yaffs_write_new_chunk()函数解析

yaffs_write_new_chunk() 是 YAFFS(Yet Another Flash File System)文件系统中用于将数据写入新物理块(chunk)的关键函数。以下是其详细解析: 函数原型 int yaffs_write_new_chunk(struct yaffs_dev *dev, const u8 *…

网络安全-Burp Suite基础篇

声明 本文主要用做技术分享,所有内容仅供参考。任何使用或者依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。 1 Burp Suite功能介绍 1.1 Burp Suite 简介 Burp Suite 是一款极为强大且广受欢迎的集成化 …

网络编程 - 2

目录 UDP 数据报套接字编程 API 介绍 DatagramSocket DatagramPacket 补充: 代码示例 - 回显服务器 服务器端: 客户端: 补充: 代码演示 梳理代码: 下面是一个大概的流程图~ 文字解释: 图文并…

【C++深入系列】:模版详解(上)

🔥 本文专栏:c 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 你不需要很厉害才能开始,但你需要开始才能很厉害。 ★★★ 本文前置知识: 类和对象(上) …

java 设计模式之策略模式

简介 策略模式:策略模式可以定制目标对象的行为,它通过传入不同的策略实现,来配置目标对象的行为。使用策略模式,就是为了定制目标对象在某个关键点的行为。 策略模式中的角色: 上下文类:持有一个策略类…

Perf学习

重要的能解决的问题是这些: perf_events is an event-oriented observability tool, which can help you solve advanced performance and troubleshooting functions. Questions that can be answered include: Why is the kernel on-CPU so much? What code-pa…

「仓颉编程语言」Demo

仓颉编程语言」Demo python 1)# 仓颉语言写字楼管理系统示例(虚构语法)# 语法规则:中文关键词 类Python逻辑定义 写字楼管理系统属性:租户库 列表.新建()报修队列 列表.新建()费用单价 5 # 元/平方米方法 添加租户(名称, 楼层, 面积):…

锁(Mutex)、信号量(Semaphore)与条件量(Condition Variable)

一、同步机制的核心意义 在多线程/多进程编程中,当多个执行流共享资源(如变量、内存、文件)时,可能因操作顺序不确定导致数据竞争(Data Race)。同步机制的作用是: 保证原子性:确保…

前端基础之《Vue(6)—组件基础(2)》

接上一篇。 七、v-model深入学习 <html> <head><title>组件基础-4</title><style>.score {display: inline-block;}.score>span {display: inline-block;width: 25px;height: 25px;background: url(./assets/star.png) center center / 25p…

SQL:聚合函数(Aggregate Functions)

目录 第一性原理出发思考 ——我们为什么需要聚合函数&#xff1f; 什么是聚合函数&#xff1f; 常见聚合函数 实例讲解 &#x1f538; 1. COUNT() —— 计数 &#x1f538; 2. MAX() / MIN() —— 最大 / 最小值 &#x1f538; 3. SUM() —— 求和 &#x1f538; 4. …

海关总署广东:广东外贸一季度进出口2.14万亿元 同期增长4.2%

大湾区经济网湾区财经报道&#xff0c;据海关总署广东分署统计&#xff0c;今年一季度&#xff0c;广东外贸进出口2.14万亿元&#xff0c;较去年同期&#xff08;下同&#xff09;增长4.2%&#xff0c;增速高于全国2.9个百分点。其中&#xff0c;出口1.34万亿元&#xff0c;增长…

MySQL中高级语法

Mysql高级语法 持续更新中… 1、EXISTS语法 一、基本语法结构 SELECT [列名] FROM [主表] WHERE [条件]AND EXISTS (SELECT 1 -- 子查询内容无关&#xff0c;仅需占位符&#xff08;如1、*、X等&#xff09;FROM [子查询表]WHERE [关联条件] -- 必须与外层查询关联&#xf…

SpringBoot 调用deepseek

个人学习心得&#xff0c;仅供参考 软件环境&#xff1a; JDK 17 你用JDK 11 无法支持SpringBoot 3SpringBoot 3 版本以上才支持spring aimavan 3.6.11.获取Deepseek官网的API-key 官网&#xff1a;https://platform.deepseek.com/api_keys 2.创建项目 这样创建 添加依赖…

性能测试面试题的详细解答

以下是性能测试面试题的详细解答&#xff1a; 1. 性能测试的流程是怎样的&#xff1f; 性能测试流程通常包括以下几个步骤&#xff1a; - **需求分析**&#xff1a;明确测试目标、性能指标&#xff08;如响应时间、吞吐量等&#xff09;。 - **环境搭建**&#xff1a;搭建测试环…

C++程序设计基础实验:C++对C的扩展特性与应用

C程序设计基础实验&#xff1a;C对C的扩展特性与应用 &#x1f525; 本文详细讲解C基础实验&#xff0c;包含C对C语言的扩充与增强特性&#xff0c;从零开始掌握函数重载、引用、指针等核心概念&#xff0c;附详细代码分析与运行结果。适合C初学者和有C语言基础想学习C的同学&a…

量子神经网络编译器开发指南:从理论突破到产业落地全景解析

本文深度剖析IBM Qiskit 5.0量子经典混合编译器的技术架构&#xff0c;详解如何基于含噪量子处理器实现MNIST手写数字分类任务&#xff08;准确率达89%&#xff09;。结合本源量子云、百度量子等国内平台免费配额政策&#xff0c;系统性阐述量子神经网络开发的技术路线与资源获…

ESP32之本地HTTP服务器OTA固件升级流程,基于VSCode环境下的ESP-IDF开发(附源码)

背景知识&#xff1a; 本实验利用编译链内Python内置的 HTTP 服务器&#xff0c;将升级包通过http发送给设备&#xff0c;实现OTA固件升级。 目录 背景知识&#xff1a; 1.创建工程 1.1 创建OTA基础工程 3.编写、修改代码 3.1 修改menuconfig配置文件 3.1.1 配置WiFi账…

BootStrap:进阶使用(其一)

今天我要讲述的是在BootStrap中进一步使用的方法与代码举例; 导航条 作为在应用或网站中作为导航页头的响应式基础组件。导航条在移动设备上可以折叠&#xff08;且可开可关&#xff09;&#xff0c;在视口&#xff08;viewport&#xff09;宽度增加时逐渐变为水平展开模式 …

ffmpeg无损转格式的命令行

将ffmpeg.exe拖入命令行窗口 c:\users\zhangsan>D:\ffmpeg-2025-03-11\bin\ffmpeg.exe -i happy.mp4 -c:v copy -c:a copy 格式转换后.mkv -c:v copy 仅做拷贝视频,不重新编码 -c:a copy 仅做拷贝音频 ,不重新编码