当前位置: 首页 > news >正文

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


文章目录

  • 一、路由器BGP路由的处理过程
    • 控制平面和转发平面
    • 选路工具
  • 二、BGP的选路顺序
    • 选路的前提
    • 选路顺序
  • 三、Wight属性选路原则
    • 规则9与规则11的潜移默化
    • 使用Weight值进行选路
      • 直接更改Weight值进行选路
      • 配合使用route-map进行选路
  • 四、BGP邻居建立配置

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

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

控制平面和转发平面

一、控制平面 :是从起点到目的地所使用的IGP,BGP等路由协议从而控制产生路由表,VPNV4路由表,标签转发表等

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

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 地址路由器通告的路由

这么多一串顺序我们将会逐一进行讲解,本文章所分享的是排位第一个的属性:Weight属性

三、Wight属性选路原则

1、Wight权重值,Cisco独有的属性,但是在锐捷和华为等一系列厂商设备里都有,其原因是Weight属性仅在本地有效,是传不出去给其它的BGP Peer的。

2、锐捷的Weight在本地默认值是32768,并且不可修改;Weight选路原则是Weight值越大越优先,BGP Peer学到的路由属性应该为0

规则9与规则11的潜移默化

如图3-1,当我们的将IP,bgp邻居等配置都完成后,其实我们的选路顺序已经生效了

文末提供配置过程

image-20250414114436327

图3-1

在我们没有进行配置属性的选路之前,BGP 路由已经自动产生了选路

如图3-2,从图中BGP 的路由表上可以看出来R4去往1.1.1.11.1.2.1的下一跳都是走2.2.2.2

这是因为我们在什么属性都相同的情况下,BGP 选路顺序的第9条和第11条就会自动生效

规则9优选BGP Router-ID长度较短的路由

规则11优选较小的Peer地址路由器通告的路由

对于R4而言,很明显,BGP Router-ID 较小的是R2这条路径,所以才自动进行了选路

在这里插入图片描述

图3-2

使用Weight值进行选路

直接更改Weight值进行选路

如果说我们想让R4走R3这条路呢?即去往1.1.1.1和1.1.2.1的下一跳是3.3.3.3

我们可以在R4通过直接针对R3,对他传来的路由进行修改。下述命令就是在R4上配置,使得R3传来的路由,R4认为其Weight值为10

如图3-3,很明显,与各个没有修改Weight值先比,现在的下一跳变成了3.3.3.3,说明了我们的目的达成了

R4(config)#router bgp 200			//进入BGP进程
R4(config-router)#nei 3.3.3.3 weight 10		//将BGP Peer 3.3.3.3发过来的路由的Weight值都改为10
R4(config-router)#ex

image-20250414122130122

图3-3

缺陷:但是这样使用命令直接修改有一个弊端,那就是只走R4-R3这条路的话,R4-R2那条路就已经完全的空闲了下来,只有R3出现了灾难的情况在启用R4-R2的路径

如图3-4,也就是说,我们这样做只起到了主备的作用,没有起到链路负载均衡的作用,非常地浪费带宽

这样的情况可以通过我们之前提到过的策略机,也就是route-map解决,起到链路负载均衡的作用

image-20250414133239797

图3-4

配合使用route-map进行选路

如图3-5,进行负载的分别结果是1.1.1.1–>R3–>R1,1.1.2.1–>R2–>R1

根据Weight值越大越优先的原则,我们可以将对于R2而言,在R4上修改1.1.2.1的Weight值为10

可以将对于R3而言,在R4上修改1.1.1.1的Weight值为10

image-20250414133907655

图3-5

在R4上增加配置命令如下

R4(config)#access-li 10 per 1.1.1.1 0.0.0.0		//匹配出1.1.1.1的感兴趣流
R4(config)#access-li 20 per 1.1.2.1 0.0.0.0		//匹配出1.1.2.1的感兴趣流
R4(config)#route-map to_R2 per 10			//创建route-map名为to_R2
R4(config-route-map)#mat ip add 20			//设置一个条件,匹配出ACL 20的流量,类似于编程里面的if语句
R4(config-route-map)#set weight 10			//当match的条件成立的时候,将weight值设为10,if成立后就执行什么的语句
R4(config-route-map)#ex
R4(config)#route-map to_R2 per 20
R4(config-route-map)#ex						//由于route-map末尾有一跳deny any,所以我们这里要写一个空route-map,用来匹配那几个感兴趣流之外的路由
R4(config)#route-map to_R3 per 10
R4(config-route-map)#mat ip add 10
R4(config-route-map)#set weight 10 
R4(config-route-map)#ex
R4(config)#route-map to_R3 per 20
R4(config-route-map)#ex
R4(config)#router bgp 200
R4(config-router)#nei 2.2.2.2 route-map to_R2 in			//将route-map应用到BGP进程中
R4(config-router)#nei 3.3.3.3 route-map to_R3 in
R4(config-router)#ex

Question:我们可以试想,如果没有那条空的route-map会这么样的?

Answer:那么将会出现R4上只收到1.1.1.1和1.1.2.1这两条路由,却把中间进行传输路由的路由条目给拒绝的,所以说,我们在配置route-map的时候,习惯性的还是需要加一条空路由

如图3-6,通过查看R4的BGP路由表可以知道,1.1.1.1和1.1.2.1的下一跳都发生了改变

并且也符合我们的预想,实现了链路上的负载均衡

image-20250414134534485

图3-6

四、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

相关文章:

  • 空间信息可视化——WebGIS前端实例(二)
  • Spark-SQL(一)
  • docker方式项目部署(安装容器组件+配置文件导入Nacos+dockerCompose文件创建管理多个容器+私有镜像仓库Harbor)
  • 循环神经网络 - 门控循环单元网络
  • LanDiff:赋能视频创作,语言与扩散模型的融合力量
  • 波束形成(BF)从算法仿真到工程源码实现-第八节-波束图
  • 【云平台监控】安装应用Ansible服务
  • 【Ansible自动化运维】六、ansible 实践案例与最佳实践:经验总结与分享
  • 未来七轴机器人会占据主流?深度解析具身智能方向当前六轴机器人和七轴机器人的区别,七轴力控机器人发展会加快吗?
  • AndroidStudio编译报错 Duplicate class kotlin
  • Uniapp: 修改启动时的端口号
  • 聊透多线程编程-线程池-9.C# 线程同步实现方式
  • Windows系统docker desktop安装(学习记录)
  • C++23 新特性:[[assume(expression)]] 属性
  • FileWriter 详细解析与记忆方法
  • 用 Deepseek 写的uniapp血型遗传查询工具
  • VRoid-Blender-Unity个人工作流笔记
  • 相机内外参
  • 苍穹外卖3
  • 某车企面试备忘
  • A股三大股指集体高开
  • 国内首例侵入式脑机接口系统前瞻性临床试验:受试者已能用意念玩游戏
  • 宜昌全域高质量发展:机制创新与产业重构的双向突围
  • “苏河超级管”调研:桥下公园“留白”很好,指引差点
  • 构建菌株有效降解有机污染物,上海交大科研成果登上《自然》
  • 乌克兰议会批准美乌矿产协议